From efb9b6c1c381057d7c03eef4355c85a887d14f05 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 14 Apr 2012 12:02:39 +0000 Subject: [PATCH 001/158] libmv: bundle new upstream version of libmv from own branch Added modal solver module which is needed for tripod solving. For details of this solver read changelog of libmv. --- extern/libmv/CMakeLists.txt | 2 + extern/libmv/ChangeLog | 19 ++- extern/libmv/files.txt | 2 + .../libmv/simple_pipeline/modal_solver.cc | 130 ++++++++++++++++++ .../libmv/simple_pipeline/modal_solver.h | 48 +++++++ extern/libmv/third_party/ssba/README.libmv | 0 6 files changed, 195 insertions(+), 6 deletions(-) create mode 100644 extern/libmv/libmv/simple_pipeline/modal_solver.cc create mode 100644 extern/libmv/libmv/simple_pipeline/modal_solver.h mode change 100755 => 100644 extern/libmv/third_party/ssba/README.libmv diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt index 02723b64b62..6be813883ec 100644 --- a/extern/libmv/CMakeLists.txt +++ b/extern/libmv/CMakeLists.txt @@ -69,6 +69,7 @@ set(SRC libmv/simple_pipeline/detect.cc libmv/simple_pipeline/initialize_reconstruction.cc libmv/simple_pipeline/intersect.cc + libmv/simple_pipeline/modal_solver.cc libmv/simple_pipeline/pipeline.cc libmv/simple_pipeline/reconstruction.cc libmv/simple_pipeline/resect.cc @@ -126,6 +127,7 @@ set(SRC libmv/simple_pipeline/detect.h libmv/simple_pipeline/initialize_reconstruction.h libmv/simple_pipeline/intersect.h + libmv/simple_pipeline/modal_solver.h libmv/simple_pipeline/pipeline.h libmv/simple_pipeline/reconstruction.h libmv/simple_pipeline/resect.h diff --git a/extern/libmv/ChangeLog b/extern/libmv/ChangeLog index 33068bddf90..7248e4c9cd9 100644 --- a/extern/libmv/ChangeLog +++ b/extern/libmv/ChangeLog @@ -1,3 +1,16 @@ +commit a44312a7beb2963b8e3bf8015c516d2eff40cc3d +Author: Sergey Sharybin +Date: Thu Apr 12 13:56:02 2012 +0600 + + Added solver for modal camera motion, currently supports only tripod solving + + This solver is intended to deal with such camera motions as tripod and panning, + where it's impossible to reconstruct exact position of markers in 3d view. + + It projects markers onto sphere and uses rigid registration of rotation to + find rotation angles which makes bundles from previous and current frame be + as closest as it's possible. + commit fa3842e472e3b9c789e47bf6d8f592aa40a84f16 Author: Sergey Sharybin Date: Thu Apr 12 12:32:48 2012 +0600 @@ -520,9 +533,3 @@ Author: Matthias Fauconneau Date: Fri Aug 19 16:04:37 2011 +0200 MSVC compatibility: heap allocate pattern, explicit float cast. - -commit 702658d2f8616964a6eeb3743fd85e97ac7ff09d -Author: Matthias Fauconneau -Date: Fri Aug 19 14:59:24 2011 +0200 - - Expose regularization parameters (areaPenalty and conditionPenalty) in API. diff --git a/extern/libmv/files.txt b/extern/libmv/files.txt index 1e564d3a2f2..85d09ce05b8 100644 --- a/extern/libmv/files.txt +++ b/extern/libmv/files.txt @@ -42,6 +42,8 @@ libmv/simple_pipeline/initialize_reconstruction.cc libmv/simple_pipeline/initialize_reconstruction.h libmv/simple_pipeline/intersect.cc libmv/simple_pipeline/intersect.h +libmv/simple_pipeline/modal_solver.cc +libmv/simple_pipeline/modal_solver.h libmv/simple_pipeline/pipeline.cc libmv/simple_pipeline/pipeline.h libmv/simple_pipeline/reconstruction.cc diff --git a/extern/libmv/libmv/simple_pipeline/modal_solver.cc b/extern/libmv/libmv/simple_pipeline/modal_solver.cc new file mode 100644 index 00000000000..ede0071dc64 --- /dev/null +++ b/extern/libmv/libmv/simple_pipeline/modal_solver.cc @@ -0,0 +1,130 @@ +// Copyright (c) 2012 libmv authors. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +#include + +#include "libmv/logging/logging.h" +#include "libmv/simple_pipeline/modal_solver.h" +#include "libmv/simple_pipeline/rigid_registration.h" + +#ifdef _MSC_VER +# define snprintf _snprintf +#endif + +namespace libmv { + +static void ProjectMarkerOnSphere(Marker &marker, Vec3 &X) { + X(0) = marker.x; + X(1) = marker.y; + X(2) = 1.0; + + X *= 5.0 / X.norm(); +} + +static void ModalSolverLogProress(ProgressUpdateCallback *update_callback, + double progress) +{ + if (update_callback) { + char message[256]; + + snprintf(message, sizeof(message), "Solving progress %d%%", (int)(progress * 100)); + + update_callback->invoke(progress, message); + } +} + +void ModalSolver(Tracks &tracks, + EuclideanReconstruction *reconstruction, + ProgressUpdateCallback *update_callback) { + int max_image = tracks.MaxImage(); + int max_track = tracks.MaxTrack(); + + LG << "Max image: " << max_image; + LG << "Max track: " << max_track; + + Mat3 R = Mat3::Identity(); + + for (int image = 0; image <= max_image; ++image) { + vector all_markers = tracks.MarkersInImage(image); + + ModalSolverLogProress(update_callback, (float) image / max_image); + + // Skip empty frames without doing anything + if (all_markers.size() == 0) { + LG << "Skipping frame: " << image; + continue; + } + + vector points, reference_points; + + // Cnstruct pairs of markers from current and previous image, + // to reproject them and find rigid transformation between + // previous and current image + for (int track = 0; track <= max_track; ++track) { + EuclideanPoint *point = reconstruction->PointForTrack(track); + + if (point) { + Marker marker = tracks.MarkerInImageForTrack(image, track); + + if (marker.image == image) { + Vec3 X; + + LG << "Use track " << track << " for rigid registration between image " << + image - 1 << " and " << image; + + ProjectMarkerOnSphere(marker, X); + + points.push_back(R * point->X); + reference_points.push_back(X); + } + } + } + + if (points.size()) { + Mat3 dR = Mat3::Identity(); + + // Find rigid delta transformation from previous image to current image + RigidRegistration(reference_points, points, dR); + + R *= dR; + } + + reconstruction->InsertCamera(image, R, Vec3::Zero()); + + // Review if there's new tracks for which position might be reconstructed + for (int track = 0; track <= max_track; ++track) { + if (!reconstruction->PointForTrack(track)) { + Marker marker = tracks.MarkerInImageForTrack(image, track); + + if (marker.image == image) { + // New track appeared on this image, project it's position onto sphere + + LG << "Projecting track " << track << " at image " << image; + + Vec3 X; + ProjectMarkerOnSphere(marker, X); + reconstruction->InsertPoint(track, R.inverse() * X); + } + } + } + } +} + +} // namespace libmv diff --git a/extern/libmv/libmv/simple_pipeline/modal_solver.h b/extern/libmv/libmv/simple_pipeline/modal_solver.h new file mode 100644 index 00000000000..560b37c2987 --- /dev/null +++ b/extern/libmv/libmv/simple_pipeline/modal_solver.h @@ -0,0 +1,48 @@ +// Copyright (c) 2012 libmv authors. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +#ifndef LIBMV_SIMPLE_PIPELINE_MODAL_SOLVER_H_ +#define LIBMV_SIMPLE_PIPELINE_MODAL_SOLVER_H_ + +#include "libmv/simple_pipeline/tracks.h" +#include "libmv/simple_pipeline/reconstruction.h" +#include "libmv/simple_pipeline/callbacks.h" + +namespace libmv { + +/*! + This solver solves such camera motion as tripod rotation, reconstructing + only camera motion itself. Bundles are not reconstructing properly, they're + just getting projected onto sphere. + + Markers from tracks object would be used for recosntruction, and algorithm + assumes thir's positions are undistorted already and they're in nnormalized + space. + + Reconstructed cameras and projected bundles would be added to reconstruction + object. +*/ +void ModalSolver(Tracks &tracks, + EuclideanReconstruction *reconstruction, + ProgressUpdateCallback *update_callback = NULL); + +} // namespace libmv + +#endif // LIBMV_SIMPLE_PIPELINE_MODAL_SOLVER_H_ diff --git a/extern/libmv/third_party/ssba/README.libmv b/extern/libmv/third_party/ssba/README.libmv old mode 100755 new mode 100644 From f9d9b4635da01c5a27ef9adbd3d3171f5ceeb47d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 14 Apr 2012 12:02:47 +0000 Subject: [PATCH 002/158] Camera tracking: support of tripod motion solving Expose option into interface to use modal solver which currently supports only tripod motion. This solver requires two tracks at least to reconstruct motion. Using more tracks aren't improving solution in general, just adds instability into solution and slows down things a lot. Refirement of camera intrinsics is supported by this solver. To use this solver just activate "Tripod Motion" checkbox in solver panel. --- extern/libmv/libmv-capi.cpp | 84 +++++++++++++++---- extern/libmv/libmv-capi.h | 3 + release/scripts/startup/bl_ui/space_clip.py | 4 + source/blender/blenkernel/intern/tracking.c | 34 ++++++-- source/blender/makesdna/DNA_tracking_types.h | 11 ++- source/blender/makesrna/intern/rna_tracking.c | 6 ++ 6 files changed, 113 insertions(+), 29 deletions(-) diff --git a/extern/libmv/libmv-capi.cpp b/extern/libmv/libmv-capi.cpp index e4708e5907d..3f697d487b6 100644 --- a/extern/libmv/libmv-capi.cpp +++ b/extern/libmv/libmv-capi.cpp @@ -54,6 +54,7 @@ #include "libmv/simple_pipeline/pipeline.h" #include "libmv/simple_pipeline/camera_intrinsics.h" #include "libmv/simple_pipeline/rigid_registration.h" +#include "libmv/simple_pipeline/modal_solver.h" #include #include @@ -384,6 +385,31 @@ int libmv_refineParametersAreValid(int parameters) { LIBMV_REFINE_RADIAL_DISTORTION_K1)); } +void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntrinsics *intrinsics, + libmv::EuclideanReconstruction *reconstruction, int refine_intrinsics, + reconstruct_progress_update_cb progress_update_callback, void *callback_customdata) +{ + /* only a few combinations are supported but trust the caller */ + int libmv_refine_flags = 0; + + if (refine_intrinsics & LIBMV_REFINE_FOCAL_LENGTH) { + libmv_refine_flags |= libmv::BUNDLE_FOCAL_LENGTH; + } + if (refine_intrinsics & LIBMV_REFINE_PRINCIPAL_POINT) { + libmv_refine_flags |= libmv::BUNDLE_PRINCIPAL_POINT; + } + if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K1) { + libmv_refine_flags |= libmv::BUNDLE_RADIAL_K1; + } + if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K2) { + libmv_refine_flags |= libmv::BUNDLE_RADIAL_K2; + } + + progress_update_callback(callback_customdata, 1.0, "Refining solution"); + + libmv::EuclideanBundleCommonIntrinsics(*(libmv::Tracks *)tracks, libmv_refine_flags, + reconstruction, intrinsics); +} libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *tracks, int keyframe1, int keyframe2, int refine_intrinsics, double focal_length, double principal_x, double principal_y, double k1, double k2, double k3, @@ -423,24 +449,48 @@ libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *tracks, int keyfra libmv::EuclideanCompleteReconstruction(normalized_tracks, reconstruction, &update_callback); if (refine_intrinsics) { - /* only a few combinations are supported but trust the caller */ - int libmv_refine_flags = 0; - if (refine_intrinsics & LIBMV_REFINE_FOCAL_LENGTH) { - libmv_refine_flags |= libmv::BUNDLE_FOCAL_LENGTH; - } - if (refine_intrinsics & LIBMV_REFINE_PRINCIPAL_POINT) { - libmv_refine_flags |= libmv::BUNDLE_PRINCIPAL_POINT; - } - if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K1) { - libmv_refine_flags |= libmv::BUNDLE_RADIAL_K1; - } - if (refine_intrinsics & LIBMV_REFINE_RADIAL_DISTORTION_K2) { - libmv_refine_flags |= libmv::BUNDLE_RADIAL_K2; - } + libmv_solveRefineIntrinsics((libmv::Tracks *)tracks, intrinsics, reconstruction, + refine_intrinsics, progress_update_callback, callback_customdata); + } - progress_update_callback(callback_customdata, 1.0, "Refining solution"); - libmv::EuclideanBundleCommonIntrinsics(*(libmv::Tracks *)tracks, libmv_refine_flags, - reconstruction, intrinsics); + progress_update_callback(callback_customdata, 1.0, "Finishing solution"); + libmv_reconstruction->tracks = *(libmv::Tracks *)tracks; + libmv_reconstruction->error = libmv::EuclideanReprojectionError(*(libmv::Tracks *)tracks, *reconstruction, *intrinsics); + + return (libmv_Reconstruction *)libmv_reconstruction; +} + +struct libmv_Reconstruction *libmv_solveModal(struct libmv_Tracks *tracks, int refine_intrinsics, double focal_length, + double principal_x, double principal_y, double k1, double k2, double k3, + reconstruct_progress_update_cb progress_update_callback, void *callback_customdata) +{ + /* Invert the camera intrinsics. */ + libmv::vector markers = ((libmv::Tracks*)tracks)->AllMarkers(); + libmv_Reconstruction *libmv_reconstruction = new libmv_Reconstruction(); + libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction; + libmv::CameraIntrinsics *intrinsics = &libmv_reconstruction->intrinsics; + + ReconstructUpdateCallback update_callback = + ReconstructUpdateCallback(progress_update_callback, callback_customdata); + + intrinsics->SetFocalLength(focal_length, focal_length); + intrinsics->SetPrincipalPoint(principal_x, principal_y); + intrinsics->SetRadialDistortion(k1, k2, k3); + + for (int i = 0; i < markers.size(); ++i) { + intrinsics->InvertIntrinsics(markers[i].x, + markers[i].y, + &(markers[i].x), + &(markers[i].y)); + } + + libmv::Tracks normalized_tracks(markers); + + libmv::ModalSolver(normalized_tracks, reconstruction, &update_callback); + + if (refine_intrinsics) { + libmv_solveRefineIntrinsics((libmv::Tracks *)tracks, intrinsics, reconstruction, + refine_intrinsics, progress_update_callback, callback_customdata); } progress_update_callback(callback_customdata, 1.0, "Finishing solution"); diff --git a/extern/libmv/libmv-capi.h b/extern/libmv/libmv-capi.h index 01019832374..f72a72d494b 100644 --- a/extern/libmv/libmv-capi.h +++ b/extern/libmv/libmv-capi.h @@ -68,6 +68,9 @@ int libmv_refineParametersAreValid(int parameters); struct libmv_Reconstruction *libmv_solveReconstruction(struct libmv_Tracks *tracks, int keyframe1, int keyframe2, int refine_intrinsics, double focal_length, double principal_x, double principal_y, double k1, double k2, double k3, reconstruct_progress_update_cb progress_update_callback, void *callback_customdata); +struct libmv_Reconstruction *libmv_solveModal(struct libmv_Tracks *tracks, int refine_intrinsics, double focal_length, + double principal_x, double principal_y, double k1, double k2, double k3, + reconstruct_progress_update_cb progress_update_callback, void *callback_customdata); int libmv_reporojectionPointForTrack(struct libmv_Reconstruction *libmv_reconstruction, int track, double pos[3]); double libmv_reporojectionErrorForTrack(struct libmv_Reconstruction *libmv_reconstruction, int track); double libmv_reporojectionErrorForImage(struct libmv_Reconstruction *libmv_reconstruction, int image); diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index c7ab9de72ac..51a1751bb00 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -227,7 +227,11 @@ class CLIP_PT_tools_solve(Panel): else "Object Motion") col.operator("clip.clear_solution") + col = layout.column() + col.prop(settings, "use_tripod_solver") + col = layout.column(align=True) + col.active = not settings.use_tripod_solver col.prop(settings, "keyframe_a") col.prop(settings, "keyframe_b") diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 7654c361d14..9e3bc2648a5 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -1523,6 +1523,7 @@ typedef struct MovieReconstructContext { #endif char object_name[MAX_NAME]; int is_camera; + short motion_flag; float focal_length; float principal_point[2]; @@ -1752,7 +1753,11 @@ int BKE_tracking_can_reconstruct(MovieTracking *tracking, MovieTrackingObject *o #if WITH_LIBMV ListBase *tracksbase = BKE_tracking_object_tracks(tracking, object); - if (count_tracks_on_both_keyframes(tracking, tracksbase)<8) { + if (tracking->settings.motion_flag & TRACKING_MOTION_MODAL) { + /* TODO: check for number of tracks? */ + return TRUE; + } + else if (count_tracks_on_both_keyframes(tracking, tracksbase) < 8) { BLI_strncpy(error_msg, "At least 8 common tracks on both of keyframes are needed for reconstruction", error_size); return FALSE; @@ -1781,7 +1786,8 @@ MovieReconstructContext* BKE_tracking_reconstruction_context_new(MovieTracking * MovieTrackingTrack *track; BLI_strncpy(context->object_name, object->name, sizeof(context->object_name)); - context->is_camera = object->flag&TRACKING_OBJECT_CAMERA; + context->is_camera = object->flag & TRACKING_OBJECT_CAMERA; + context->motion_flag = tracking->settings.motion_flag; context->tracks_map = tracks_map_new(context->object_name, context->is_camera, num_tracks, 0); @@ -1894,13 +1900,23 @@ void BKE_tracking_solve_reconstruction(MovieReconstructContext *context, short * progressdata.stats_message = stats_message; progressdata.message_size = message_size; - context->reconstruction = libmv_solveReconstruction(context->tracks, - context->keyframe1, context->keyframe2, - context->refine_flags, - context->focal_length, - context->principal_point[0], context->principal_point[1], - context->k1, context->k2, context->k3, - solve_reconstruction_update_cb, &progressdata); + if (context->motion_flag & TRACKING_MOTION_MODAL) { + context->reconstruction = libmv_solveModal(context->tracks, + context->refine_flags, + context->focal_length, + context->principal_point[0], context->principal_point[1], + context->k1, context->k2, context->k3, + solve_reconstruction_update_cb, &progressdata); + } + else { + context->reconstruction = libmv_solveReconstruction(context->tracks, + context->keyframe1, context->keyframe2, + context->refine_flags, + context->focal_length, + context->principal_point[0], context->principal_point[1], + context->k1, context->k2, context->k3, + solve_reconstruction_update_cb, &progressdata); + } error = libmv_reprojectionError(context->reconstruction); diff --git a/source/blender/makesdna/DNA_tracking_types.h b/source/blender/makesdna/DNA_tracking_types.h index 9c0f63028c1..2f099ed59f5 100644 --- a/source/blender/makesdna/DNA_tracking_types.h +++ b/source/blender/makesdna/DNA_tracking_types.h @@ -123,7 +123,7 @@ typedef struct MovieTrackingSettings { short default_pattern_match; /* re-adjust every N frames */ short default_flag; /* default flags like color channels used by default */ - short pod; + short motion_flag; /* flags describes motion type */ /* ** common tracker settings ** */ short speed; /* speed of tracking */ @@ -131,8 +131,8 @@ typedef struct MovieTrackingSettings { /* ** reconstruction settings ** */ int keyframe1, keyframe2; /* two keyframes for reconstrution initialization */ - /* ** which camera intrinsics to refine. uses on the REFINE_* flags */ - short refine_camera_intrinsics, pad23; + /* which camera intrinsics to refine. uses on the REFINE_* flags */ + short refine_camera_intrinsics, pad2; /* ** tool settings ** */ @@ -243,6 +243,11 @@ enum { /* MovieTrackingSettings->flag */ #define TRACKING_SETTINGS_SHOW_DEFAULT_EXPANDED (1<<0) +/* MovieTrackingSettings->motion_flag */ +#define TRACKING_MOTION_TRIPOD (1<<0) + +#define TRACKING_MOTION_MODAL (TRACKING_MOTION_TRIPOD) + /* MovieTrackingSettings->speed */ #define TRACKING_SPEED_FASTEST 0 #define TRACKING_SPEED_REALTIME 1 diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index 56222c67a23..13948fde367 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -607,6 +607,12 @@ static void rna_def_trackingSettings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Show Expanded", "Show the expanded in the user interface"); RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); + /* solver settings */ + prop = RNA_def_property(srna, "use_tripod_solver", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_boolean_sdna(prop, NULL, "motion_flag", TRACKING_MOTION_TRIPOD); + RNA_def_property_ui_text(prop, "Tripod Motion", "Tracking footage is shooted by tripod camera and should use special sovler for this"); + /* limit frames */ prop = RNA_def_property(srna, "default_frames_limit", PROP_INT, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); From 339efd5e0158706f3e0cd6251ee65c7446fc96ed Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 14 Apr 2012 12:02:54 +0000 Subject: [PATCH 003/158] Camera tracking: if there's no image for current frame display default grid and allow to interact with tracks for operators which doesn't require image. --- source/blender/blenkernel/intern/movieclip.c | 4 +- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/screen/area.c | 60 ++++++++++++++++++ source/blender/editors/space_clip/clip_draw.c | 5 ++ .../blender/editors/space_clip/tracking_ops.c | 33 +++++++--- .../blender/editors/space_image/image_draw.c | 61 +------------------ .../editors/transform/transform_conversions.c | 5 +- 7 files changed, 99 insertions(+), 70 deletions(-) diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 9a640bcb8eb..9f8585675e3 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -925,8 +925,8 @@ void BKE_movieclip_get_size(MovieClip *clip, MovieClipUser *user, int *width, in real_ibuf_size(clip, user, ibuf, width, height); } else { - *width = 0; - *height = 0; + *width = clip->lastsize[0]; + *height = clip->lastsize[1]; } if (ibuf) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index f0fffb34b73..f62befdaa31 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -66,6 +66,7 @@ void ED_region_header(const struct bContext *C, struct ARegion *ar); void ED_region_toggle_hidden(struct bContext *C, struct ARegion *ar); void region_scissor_winrct(struct ARegion *ar, struct rcti *winrct); void ED_region_info_draw(struct ARegion *ar, const char *text, int block, float alpha); +void ED_region_grid_draw(struct ARegion *ar, float zoomx, float zoomy); /* spaces */ void ED_spacetypes_init(void); diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index bed17048ea1..d3da167cf72 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1813,3 +1813,63 @@ void ED_region_info_draw(ARegion *ar, const char *text, int block, float alpha) BLF_position(fontid, 12, rect.ymin + 5, 0.0f); BLF_draw(fontid, text, BLF_DRAW_STR_DUMMY_MAX); } + +void ED_region_grid_draw(ARegion *ar, float zoomx, float zoomy) +{ + float gridsize, gridstep = 1.0f / 32.0f; + float fac, blendfac; + int x1, y1, x2, y2; + + /* the image is located inside (0,0),(1, 1) as set by view2d */ + UI_ThemeColorShade(TH_BACK, 20); + + UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x1, &y1); + UI_view2d_to_region_no_clip(&ar->v2d, 1.0f, 1.0f, &x2, &y2); + glRectf(x1, y1, x2, y2); + + /* gridsize adapted to zoom level */ + gridsize = 0.5f * (zoomx + zoomy); + if (gridsize <= 0.0f) + return; + + if (gridsize < 1.0f) { + while (gridsize < 1.0f) { + gridsize *= 4.0f; + gridstep *= 4.0f; + } + } + else { + while (gridsize >= 4.0f) { + gridsize /= 4.0f; + gridstep /= 4.0f; + } + } + + /* the fine resolution level */ + blendfac = 0.25f * gridsize - floorf(0.25f * gridsize); + CLAMP(blendfac, 0.0f, 1.0f); + UI_ThemeColorShade(TH_BACK, (int)(20.0f * (1.0f - blendfac))); + + fac = 0.0f; + glBegin(GL_LINES); + while (fac < 1.0f) { + glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); + fac += gridstep; + } + + /* the large resolution level */ + UI_ThemeColor(TH_BACK); + + fac = 0.0f; + while (fac < 1.0f) { + glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); + fac += 4.0f * gridstep; + } + glEnd(); +} diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c index a553566ca69..418b72dc944 100644 --- a/source/blender/editors/space_clip/clip_draw.c +++ b/source/blender/editors/space_clip/clip_draw.c @@ -1400,7 +1400,12 @@ void clip_draw_main(SpaceClip *sc, ARegion *ar, Scene *scene) if (ibuf) { draw_movieclip_buffer(sc, ar, ibuf, width, height, zoomx, zoomy); IMB_freeImBuf(ibuf); + } + else { + ED_region_grid_draw(ar, zoomx, zoomy); + } + if (width && height) { draw_tracking_tracks(sc, ar, clip, width, height, zoomx, zoomy); draw_distortion(sc, ar, clip, width, height, zoomx, zoomy); } diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index 79569b82476..336ff07a1ad 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -92,6 +92,25 @@ static int space_clip_frame_poll(bContext *C) return FALSE; } +static int space_clip_size_poll(bContext *C) +{ + SpaceClip *sc = CTX_wm_space_clip(C); + + if (sc) { + MovieClip *clip = ED_space_clip(sc); + + if (clip) { + int width, height; + + BKE_movieclip_get_size(clip, &sc->user, &width, &height); + + return width > 0 && height > 0; + } + } + + return FALSE; +} + /********************** add marker operator *********************/ static void add_marker(SpaceClip *sc, float x, float y) @@ -156,7 +175,7 @@ void CLIP_OT_add_marker(wmOperatorType *ot) /* api callbacks */ ot->invoke = add_marker_invoke; ot->exec = add_marker_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -643,7 +662,7 @@ void CLIP_OT_slide_marker(wmOperatorType *ot) ot->idname = "CLIP_OT_slide_marker"; /* api callbacks */ - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; ot->invoke = slide_marker_invoke; ot->modal = slide_marker_modal; @@ -1200,7 +1219,7 @@ void CLIP_OT_select_grouped(wmOperatorType *ot) /* api callbacks */ ot->exec = select_groped_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2016,7 +2035,7 @@ static Object *get_orientation_object(bContext *C) static int set_orientation_poll(bContext *C) { - if (space_clip_frame_poll(C)) { + if (space_clip_size_poll(C)) { Scene *scene = CTX_data_scene(C); SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); @@ -2626,7 +2645,7 @@ void CLIP_OT_set_scale(wmOperatorType *ot) static int set_solution_scale_poll(bContext *C) { - if (space_clip_frame_poll(C)) { + if (space_clip_size_poll(C)) { SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); MovieTracking *tracking = &clip->tracking; @@ -2974,7 +2993,7 @@ void CLIP_OT_frame_jump(wmOperatorType *ot) /* api callbacks */ ot->exec = frame_jump_exec; - ot->poll = space_clip_frame_poll; + ot->poll = ED_space_clip_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -3031,7 +3050,7 @@ void CLIP_OT_join_tracks(wmOperatorType *ot) /* api callbacks */ ot->exec = join_tracks_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 29bd5f5117d..793e5712c8c 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -334,65 +334,6 @@ void ED_image_draw_info(ARegion *ar, int color_manage, int channels, int x, int /* image drawing */ -static void draw_image_grid(ARegion *ar, float zoomx, float zoomy) -{ - float gridsize, gridstep = 1.0f / 32.0f; - float fac, blendfac; - int x1, y1, x2, y2; - - /* the image is located inside (0,0),(1, 1) as set by view2d */ - UI_ThemeColorShade(TH_BACK, 20); - - UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x1, &y1); - UI_view2d_to_region_no_clip(&ar->v2d, 1.0f, 1.0f, &x2, &y2); - glRectf(x1, y1, x2, y2); - - /* gridsize adapted to zoom level */ - gridsize = 0.5f * (zoomx + zoomy); - if (gridsize <= 0.0f) return; - - if (gridsize < 1.0f) { - while (gridsize < 1.0f) { - gridsize *= 4.0f; - gridstep *= 4.0f; - } - } - else { - while (gridsize >= 4.0f) { - gridsize /= 4.0f; - gridstep /= 4.0f; - } - } - - /* the fine resolution level */ - blendfac = 0.25f * gridsize - floorf(0.25f * gridsize); - CLAMP(blendfac, 0.0f, 1.0f); - UI_ThemeColorShade(TH_BACK, (int)(20.0f * (1.0f - blendfac))); - - fac = 0.0f; - glBegin(GL_LINES); - while (fac < 1.0f) { - glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); - fac += gridstep; - } - - /* the large resolution level */ - UI_ThemeColor(TH_BACK); - - fac = 0.0f; - while (fac < 1.0f) { - glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); - fac += 4.0f * gridstep; - } - glEnd(); -} - static void sima_draw_alpha_pixels(float x1, float y1, int rectx, int recty, unsigned int *recti) { @@ -781,7 +722,7 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) /* draw the image or grid */ if (ibuf == NULL) - draw_image_grid(ar, zoomx, zoomy); + ED_region_grid_draw(ar, zoomx, zoomy); else if (sima->flag & SI_DRAW_TILE) draw_image_buffer_repeated(sima, ar, scene, ima, ibuf, zoomx, zoomy); else if (ima && (ima->tpageflag & IMA_TILES)) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index c273d6a5b4c..7b9e3adbc7b 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5753,10 +5753,13 @@ static void createTransTrackingData(bContext *C, TransInfo *t) ARegion *ar = CTX_wm_region(C); SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); + int width, height; t->total = 0; - if (!clip || !BKE_movieclip_has_frame(clip, &sc->user)) + BKE_movieclip_get_size(clip, &sc->user, &width, &height); + + if (!clip || width == 0 || height == 0) return; if (!ELEM(t->mode, TFM_RESIZE, TFM_TRANSLATION)) From f910abaddaec82dde3bd27ae3fa720b37f2359fc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 06:42:21 +0000 Subject: [PATCH 004/158] fix error in recent rip refactor, also add comment. --- source/blender/editors/mesh/editmesh_rip.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 37b12803962..c68d2a91460 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -658,13 +658,19 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) } } + if (!edbm_rip_call_edgesplit(em, op)) { + return OPERATOR_CANCELLED; + } + + /* note: the output of the bmesh operator is ignored, since we built + * the contiguous loop pairs to split already, its possibe that some + * edge did not split even though it was tagged which would not work + * as expected (but not crash), however there are checks to ensure + * tagged edges will split. So far its not been an issue. */ edbm_ripsel_deselect_helper(bm, eloop_pairs, ar, projectMat, fmval); MEM_freeN(eloop_pairs); - if (!edbm_rip_call_edgesplit(em, op)) { - return OPERATOR_CANCELLED; - } return OPERATOR_FINISHED; } From 96b024333edf31fb02881b1c2fbacaf556a49439 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 12:14:07 +0000 Subject: [PATCH 005/158] fix [#31047] ctrl+mouse select in edit-mode does not select external object fix [#30535] Shortest Path Select not working well in vertex mode. regression from after bmesh merge, Ctrl+Right mouse for selecting shortest path is meant for edge mode only. --- source/blender/editors/mesh/editmesh_rip.c | 2 +- source/blender/editors/mesh/editmesh_select.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index c68d2a91460..946eaf8d3c8 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -663,7 +663,7 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) } /* note: the output of the bmesh operator is ignored, since we built - * the contiguous loop pairs to split already, its possibe that some + * the contiguous loop pairs to split already, its possible that some * edge did not split even though it was tagged which would not work * as expected (but not crash), however there are checks to ensure * tagged edges will split. So far its not been an issue. */ diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index b6e162cb220..12fa5f66a69 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -1415,7 +1415,17 @@ static int edbm_shortest_path_select_invoke(bContext *C, wmOperator *UNUSED(op), return OPERATOR_FINISHED; } - + +static int edbm_shortest_path_select_poll(bContext *C) +{ + if(ED_operator_editmesh_region_view3d(C)) { + Object *obedit = CTX_data_edit_object(C); + BMEditMesh *em = BMEdit_FromObject(obedit); + return (em->selectmode & SCE_SELECT_EDGE) != 0; + } + return 0; +} + void MESH_OT_select_shortest_path(wmOperatorType *ot) { /* identifiers */ @@ -1425,7 +1435,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot) /* api callbacks */ ot->invoke = edbm_shortest_path_select_invoke; - ot->poll = ED_operator_editmesh; + ot->poll = edbm_shortest_path_select_poll; /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; From 6701933f5ce4598d2fc98bd27a5b8a4e58ca06e2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 12:51:47 +0000 Subject: [PATCH 006/158] style cleanup --- .../blender/blenkernel/intern/DerivedMesh.c | 4 ++-- source/blender/blenkernel/intern/action.c | 2 +- source/blender/blenkernel/intern/anim.c | 2 +- source/blender/blenkernel/intern/boids.c | 2 +- .../blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenkernel/intern/depsgraph.c | 2 +- .../blender/blenkernel/intern/dynamicpaint.c | 2 +- .../blenkernel/intern/editderivedmesh.c | 2 +- source/blender/blenkernel/intern/effect.c | 2 +- source/blender/blenkernel/intern/particle.c | 4 ++-- .../blenkernel/intern/particle_system.c | 4 ++-- source/blender/blenkernel/intern/sequencer.c | 7 ++++--- source/blender/blenkernel/intern/softbody.c | 6 +++--- source/blender/blenlib/intern/BLI_kdtree.c | 2 +- source/blender/blenlib/intern/fileops.c | 2 +- source/blender/blenlib/intern/math_geom.c | 8 ++++---- source/blender/blenlib/intern/pbvh.c | 2 +- source/blender/blenloader/intern/readfile.c | 10 +++++----- .../blender/editors/armature/meshlaplacian.c | 2 +- source/blender/editors/curve/editcurve.c | 6 +++--- .../editors/interface/interface_handlers.c | 4 ++-- source/blender/editors/mesh/editface.c | 4 ++-- source/blender/editors/mesh/editmesh_select.c | 4 ++-- source/blender/editors/mesh/editmesh_slide.c | 5 ++++- source/blender/editors/object/object_bake.c | 2 +- .../blender/editors/object/object_relations.c | 2 +- source/blender/editors/object/object_select.c | 4 ++-- .../blender/editors/render/render_preview.c | 2 +- .../editors/sculpt_paint/paint_vertex.c | 4 ++-- source/blender/editors/sculpt_paint/sculpt.c | 6 +++--- source/blender/editors/space_file/file_draw.c | 2 +- source/blender/editors/space_file/file_ops.c | 2 +- source/blender/editors/space_file/filelist.c | 2 +- source/blender/editors/space_file/filesel.c | 4 ++-- .../editors/space_image/image_buttons.c | 3 ++- .../blender/editors/space_image/space_image.c | 2 +- source/blender/editors/space_node/node_draw.c | 4 ++-- .../editors/space_outliner/outliner_tools.c | 2 +- .../space_sequencer/sequencer_scopes.c | 3 ++- .../blender/editors/space_view3d/drawobject.c | 6 +++--- .../editors/space_view3d/view3d_edit.c | 2 +- source/blender/editors/transform/transform.c | 4 ++-- .../editors/transform/transform_conversions.c | 2 +- .../editors/transform/transform_generics.c | 2 +- .../editors/uvedit/uvedit_parametrizer.c | 3 ++- .../editors/uvedit/uvedit_unwrap_ops.c | 4 ++-- source/blender/gpu/intern/gpu_codegen.c | 12 +++++------ source/blender/gpu/intern/gpu_material.c | 2 +- source/blender/imbuf/intern/util.c | 4 ++-- source/blender/makesdna/intern/makesdna.c | 2 +- source/blender/makesrna/intern/makesrna.c | 2 +- source/blender/makesrna/intern/rna_particle.c | 4 ++-- source/blender/modifiers/intern/MOD_array.c | 7 ++++--- .../composite/nodes/node_composite_math.c | 2 +- .../nodes/shader/nodes/node_shader_geom.c | 2 +- source/blender/python/intern/bpy.c | 2 +- source/blender/python/intern/bpy_interface.c | 2 +- .../render/intern/source/convertblender.c | 4 ++-- .../blender/render/intern/source/rayshade.c | 2 +- .../render/intern/source/render_texture.c | 2 +- .../render/intern/source/renderdatabase.c | 2 +- source/blender/render/intern/source/shadbuf.c | 20 +++++++++---------- .../render/intern/source/shadeoutput.c | 2 +- source/blender/render/intern/source/sss.c | 4 ++-- 64 files changed, 121 insertions(+), 113 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 94aed7c7a01..92eb696087d 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2769,7 +2769,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs, for (b = 0; b < gattribs->totlayer; b++) { if (gattribs->layer[b].type == CD_MTFACE) { /* uv coordinates */ - if(dm->type == DM_TYPE_EDITBMESH) { + if (dm->type == DM_TYPE_EDITBMESH) { /* exception .. */ CustomData *ldata = dm->getLoopDataLayout(dm); @@ -2806,7 +2806,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs, } } else if (gattribs->layer[b].type == CD_MCOL) { - if(dm->type == DM_TYPE_EDITBMESH) { + if (dm->type == DM_TYPE_EDITBMESH) { /* exception .. */ CustomData *ldata = dm->getLoopDataLayout(dm); diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index c77e384a264..93401a528ab 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -1561,7 +1561,7 @@ static void do_nla(Scene *scene, Object *ob, int blocktype) } } /* To handle repeat, we add 0.1 frame extra to make sure the last frame is included */ - else { + else { /* Mod to repeat */ if (strip->repeat!=1.0f) { diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index b547fedebb5..1ec9f7d8a10 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -635,7 +635,7 @@ int where_on_path(Object *ob, float ctime, float vec[4], float dir[3], float qua p3= pp + s3; /* note, commented out for follow constraint */ - //if(cu->flag & CU_FOLLOW) { + //if (cu->flag & CU_FOLLOW) { key_curve_tangent_weights(1.0f-fac, data, KEY_BSPLINE); diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c index a14988d78b1..a556c99dc7d 100644 --- a/source/blender/blenkernel/intern/boids.c +++ b/source/blender/blenkernel/intern/boids.c @@ -1254,7 +1254,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa) madd_v3_v3fl(pa->state.vel, acc, dtime); - //if(bpa->data.mode != eBoidMode_InAir) + //if (bpa->data.mode != eBoidMode_InAir) bpa->ground = boid_find_ground(bbd, pa, ground_co, ground_nor); /* change modes, constrain movement & keep track of down vector */ diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 2d764142d26..ee18c93b943 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -700,7 +700,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm, GPU_normal_setup( dm ); GPU_uv_setup( dm ); if ( col != NULL ) { - /*if( realcol && dm->drawObject->colType == CD_TEXTURE_MCOL ) { + /*if ( realcol && dm->drawObject->colType == CD_TEXTURE_MCOL ) { col = 0; } else if ( mcol && dm->drawObject->colType == CD_MCOL ) { diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 366e808d32c..ccaa03ad9d9 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1803,7 +1803,7 @@ void DAG_scene_sort(Main *bmain, Scene *sce) while (base) { BLI_remlink(&sce->base,base); BLI_addhead(&tempbase,base); - //if(G.debug & G_DEBUG) + //if (G.debug & G_DEBUG) printf("cyclic %s\n", base->object->id.name); base = sce->base.first; } diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index 872f678d456..6aad98d293e 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -3337,7 +3337,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, else if (brush->ray_dir == MOD_DPAINT_RAY_BRUSH_AVG) { copy_v3_v3(proj_ray, avg_brushNor); } - else { /* MOD_DPAINT_RAY_ZPLUS */ + else { /* MOD_DPAINT_RAY_ZPLUS */ proj_ray[2] = 1.0f; } hit.index = -1; diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index b6aebcddd4c..857f6e75e2c 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -1320,7 +1320,7 @@ static void emDM_getVert(DerivedMesh *dm, int index, MVert *vert_r) ev = BM_vert_at_index(bmdm->tc->bm, index); /* warning, does list loop, _not_ ideal */ bmvert_to_mvert(bmdm->tc->bm, ev, vert_r); - if(bmdm->vertexCos) + if (bmdm->vertexCos) copy_v3_v3(vert_r->co, bmdm->vertexCos[index]); } diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index cb8220c8fb3..4f320b41184 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -622,7 +622,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin ret = psys_get_particle_state(&sim, *efd->index, &state, 0); /* TODO */ - //if(eff->pd->forcefiled == PFIELD_HARMONIC && ret==0) { + //if (eff->pd->forcefiled == PFIELD_HARMONIC && ret==0) { // if (pa->dietime < eff->psys->cfra) // eff->flag |= PE_VELOCITY_TO_IMPULSE; //} diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index a851c440230..2eff664bc1a 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1695,7 +1695,7 @@ static int psys_map_index_on_dm(DerivedMesh *dm, int from, int index, int index_ *mapindex = index; } - else { /* FROM_FACE/FROM_VOLUME */ + else { /* FROM_FACE/FROM_VOLUME */ if (index >= dm->getNumTessFaces(dm)) return 0; @@ -1713,7 +1713,7 @@ static int psys_map_index_on_dm(DerivedMesh *dm, int from, int index, int index_ *mapindex = index_dmcache; } - else { /* FROM_FACE/FROM_VOLUME */ + else { /* FROM_FACE/FROM_VOLUME */ /* find a face on the derived mesh that uses this face */ MFace *mface; OrigSpaceFace *osface; diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index aadd9d675b0..b08c1e1edf3 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -1479,7 +1479,7 @@ void psys_threads_free(ParticleThread *threads) if (ctx->index) MEM_freeN(ctx->index); if (ctx->skip) MEM_freeN(ctx->skip); if (ctx->seams) MEM_freeN(ctx->seams); - //if(ctx->vertpart) MEM_freeN(ctx->vertpart); + //if (ctx->vertpart) MEM_freeN(ctx->vertpart); BLI_kdtree_free(ctx->tree); /* threads */ @@ -4125,7 +4125,7 @@ static void particles_fluid_step(ParticleSimulationData *sim, int UNUSED(cfra)) pa->dietime = sim->scene->r.efra + 1; pa->lifetime = sim->scene->r.efra; pa->alive = PARS_ALIVE; - //if(a<25) fprintf(stderr,"FSPARTICLE debug set %s , a%d = %f,%f,%f , life=%f\n", filename, a, pa->co[0],pa->co[1],pa->co[2], pa->lifetime ); + //if (a < 25) fprintf(stderr,"FSPARTICLE debug set %s , a%d = %f,%f,%f , life=%f\n", filename, a, pa->co[0],pa->co[1],pa->co[2], pa->lifetime ); } else { // skip... diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 99fc2242f9f..e27ff4ddeda 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1352,7 +1352,8 @@ static void seq_proxy_build_frame(SeqRenderData context, IMB_freeImBuf(ibuf); } -struct SeqIndexBuildContext *seq_proxy_rebuild_context(Main *bmain, Scene *scene, Sequence *seq){ +struct SeqIndexBuildContext *seq_proxy_rebuild_context(Main *bmain, Scene *scene, Sequence *seq) +{ SeqIndexBuildContext *context; Sequence *nseq; @@ -3778,7 +3779,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo sound = sound_new_file(CTX_data_main(C), seq_load->path); /* handles relative paths */ if (sound == NULL || sound->playback_handle == NULL) { - //if(op) + //if (op) // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); return NULL; } @@ -3787,7 +3788,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo if (info.specs.channels == AUD_CHANNELS_INVALID) { sound_delete(bmain, sound); - //if(op) + //if (op) // BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); return NULL; } diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index dc7a211a3c1..6e4f4db129b 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -1358,7 +1358,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) /*---edges intruding*/ /*+++ close vertices*/ - if (( bf->flag & BFF_INTERSECT)==0) { + if (( bf->flag & BFF_INTERSECT)==0) { bf->flag &= ~BFF_CLOSEVERT; tune = -1.0f; feedback[0]=feedback[1]=feedback[2]=0.0f; @@ -2190,7 +2190,7 @@ static int _softbody_calc_forces_slice_in_a_thread(Scene *scene, Object *ob, flo } /* debugerin */ - if (sb->totpoint < ifirst) { + if (sb->totpoint < ifirst) { printf("Aye 998"); return (998); } @@ -2960,7 +2960,7 @@ static void softbody_apply_forces(Object *ob, float forcetime, int mode, float * /* the freezer coming sooner or later */ /* - if ((dot_v3v3(dx,dx)force,bp->force)force,bp->force)frozen /=2; } else { diff --git a/source/blender/blenlib/intern/BLI_kdtree.c b/source/blender/blenlib/intern/BLI_kdtree.c index 388c61ec9dd..ee06f32a934 100644 --- a/source/blender/blenlib/intern/BLI_kdtree.c +++ b/source/blender/blenlib/intern/BLI_kdtree.c @@ -142,7 +142,7 @@ static float squared_distance(const float v2[3], const float v1[3], float *UNUSE dist = dot_v3v3(d, d); - //if(n1 && n2 && (dot_v3v3(n1, n2) < 0.0f)) + //if (n1 && n2 && (dot_v3v3(n1, n2) < 0.0f)) /* can someone explain why this is done?*/ if (n2 && (dot_v3v3(d, n2) < 0.0f)) { diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 93312f04692..5bbfd596ba7 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -222,7 +222,7 @@ gzFile BLI_gzopen(const char *filename, const char *mode) int i = 0; /* xxx Creates file before transcribing the path */ - if(mode[0] == 'w') + if (mode[0] == 'w') fclose(ufopen(filename,"a")); UTF16_ENCODE(filename); diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index e76431e981e..b92e5d39b4b 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1126,10 +1126,10 @@ int isect_axial_line_tri_v3(const int axis, const float p1[3], const float p2[3] //return isect_line_tri_v3(p1,p2,v0,v1,v2,lambda); ///* first a simple bounding box test */ - //if(MIN3(v0[a1],v1[a1],v2[a1]) > p1[a1]) return 0; - //if(MIN3(v0[a2],v1[a2],v2[a2]) > p1[a2]) return 0; - //if(MAX3(v0[a1],v1[a1],v2[a1]) < p1[a1]) return 0; - //if(MAX3(v0[a2],v1[a2],v2[a2]) < p1[a2]) return 0; + //if (MIN3(v0[a1],v1[a1],v2[a1]) > p1[a1]) return 0; + //if (MIN3(v0[a2],v1[a2],v2[a2]) > p1[a2]) return 0; + //if (MAX3(v0[a1],v1[a1],v2[a1]) < p1[a1]) return 0; + //if (MAX3(v0[a2],v1[a2],v2[a2]) < p1[a2]) return 0; ///* then a full intersection test */ diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index e1b7ff120f9..7a955cf6ed9 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1452,7 +1452,7 @@ static int ray_aabb_intersect(PBVHNode *node, void *data_v) // XXX jwilkins: tmax does not need to be updated since we don't use it // keeping this here for future reference - //if(tzmax < tmax) tmax = tzmax; + //if (tzmax < tmax) tmax = tzmax; node->tmin = tmin; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 4242b89c3e7..a49aca3c8dc 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -13255,9 +13255,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Object *ob; ModifierData *md; - for(ob = main->object.first; ob; ob = ob->id.next) { - for(md=ob->modifiers.first; md; md=md->next) { - if(md->type == eModifierType_Lattice) { + for (ob = main->object.first; ob; ob = ob->id.next) { + for (md=ob->modifiers.first; md; md=md->next) { + if (md->type == eModifierType_Lattice) { LatticeModifierData *lmd = (LatticeModifierData *)md; lmd->strength = 1.0f; } @@ -13275,11 +13275,11 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (md = ob->modifiers.first; md; md = md->next) { if (md->type == eModifierType_Fluidsim) { FluidsimModifierData *fmd = (FluidsimModifierData *)md; - if(fmd->fss->viscosityMode == 3) { + if (fmd->fss->viscosityMode == 3) { fmd->fss->viscosityValue = 5.0; fmd->fss->viscosityExponent = 5; } - else if(fmd->fss->viscosityMode == 4) { + else if (fmd->fss->viscosityMode == 4) { fmd->fss->viscosityValue = 2.0; fmd->fss->viscosityExponent = 3; } diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 4c1315e847e..59a7437e753 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -183,7 +183,7 @@ static void laplacian_triangle_area(LaplacianSystem *sys, int i1, int i2, int i3 t2= cotan_weight(v2, v3, v1); t3= cotan_weight(v3, v1, v2); - if (angle_v3v3v3(v2, v1, v3) > DEG2RADF(90.0f)) obtuse= 1; + if (angle_v3v3v3(v2, v1, v3) > DEG2RADF(90.0f)) obtuse= 1; else if (angle_v3v3v3(v1, v2, v3) > DEG2RADF(90.0f)) obtuse= 2; else if (angle_v3v3v3(v1, v3, v2) > DEG2RADF(90.0f)) obtuse= 3; diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 2e9aa8ec675..775b28bab5b 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -2892,7 +2892,7 @@ static void subdividenurb(Object *obedit, int number_cuts) calchandlesNurb(nu); } - } /* End of 'if(nu->type == CU_BEZIER)' */ + } /* End of 'if (nu->type == CU_BEZIER)' */ else if (nu->pntsv==1) { /* * All flat lines (ie. co-planar), except flat Nurbs. Flat NURB curves @@ -3085,7 +3085,7 @@ static void subdividenurb(Object *obedit, int number_cuts) nu->pntsv= (number_cuts+1)*nu->pntsv-number_cuts; nurbs_knot_calc_u(nu); nurbs_knot_calc_v(nu); - } /* End of 'if(sel== nu->pntsu*nu->pntsv)' (subdivide entire NURB) */ + } /* End of 'if (sel== nu->pntsu*nu->pntsv)' (subdivide entire NURB) */ else { /* subdivide in v direction? */ sel= 0; @@ -3177,7 +3177,7 @@ static void subdividenurb(Object *obedit, int number_cuts) MEM_freeN(usel); MEM_freeN(vsel); - } /* End of 'if(nu->type == CU_NURBS)' */ + } /* End of 'if (nu->type == CU_NURBS)' */ } } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index cce60d0c578..a7ff1565c3d 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1017,7 +1017,7 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut ui_apply_but_BLOCK(C, but, data); break; case COL: - if(data->cancel) + if (data->cancel) ui_apply_but_VEC(C, but, data); else ui_apply_but_BLOCK(C, but, data); @@ -2062,7 +2062,7 @@ static void ui_blockopen_begin(bContext *C, uiBut *but, uiHandleButtonData *data } /* this makes adjacent blocks auto open from now on */ - //if(but->block->auto_open==0) but->block->auto_open= 1; + //if (but->block->auto_open==0) but->block->auto_open= 1; } static void ui_blockopen_end(bContext *C, uiBut *but, uiHandleButtonData *data) diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index f38bdb1ebe3..294a39eddf8 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -735,8 +735,8 @@ typedef struct MirrTopoVert_t { static int mirrtopo_hash_sort(const void *l1, const void *l2) { - if ((MirrTopoHash_t)(intptr_t)l1 > (MirrTopoHash_t)(intptr_t)l2) return 1; - else if ((MirrTopoHash_t)(intptr_t)l1 < (MirrTopoHash_t)(intptr_t)l2) return -1; + if ((MirrTopoHash_t)(intptr_t)l1 > (MirrTopoHash_t)(intptr_t)l2) return 1; + else if ((MirrTopoHash_t)(intptr_t)l1 < (MirrTopoHash_t)(intptr_t)l2) return -1; return 0; } diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 12fa5f66a69..50dcaff6a97 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -1418,7 +1418,7 @@ static int edbm_shortest_path_select_invoke(bContext *C, wmOperator *UNUSED(op), static int edbm_shortest_path_select_poll(bContext *C) { - if(ED_operator_editmesh_region_view3d(C)) { + if (ED_operator_editmesh_region_view3d(C)) { Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); return (em->selectmode & SCE_SELECT_EDGE) != 0; @@ -1907,7 +1907,7 @@ static int edbm_select_linked_exec(bContext *C, wmOperator *op) } BMW_end(&walker); } - else { + else { BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(v, BM_ELEM_SELECT)) { BM_elem_flag_enable(v, BM_ELEM_TAG); diff --git a/source/blender/editors/mesh/editmesh_slide.c b/source/blender/editors/mesh/editmesh_slide.c index 6534210601c..0d49356d9d9 100644 --- a/source/blender/editors/mesh/editmesh_slide.c +++ b/source/blender/editors/mesh/editmesh_slide.c @@ -685,7 +685,10 @@ static int edbm_vertex_slide_exec(bContext *C, wmOperator *op) start_vert = (BMVert *)ese->ele; /* Prepare operator */ - if (!EDBM_op_init(em, &bmop, op, "vertex_slide vert=%e edge=%hev distance_t=%f", start_vert, BM_ELEM_SELECT, distance_t)) { + if (!EDBM_op_init(em, &bmop, op, + "vertex_slide vert=%e edge=%hev distance_t=%f", + start_vert, BM_ELEM_SELECT, distance_t)) + { return OPERATOR_CANCELLED; } /* Execute operator */ diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index deefcfd6989..1f012c6f0be 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -345,7 +345,7 @@ static void bake_rasterize(const MBakeRast *bake_rast, const float st0_in[2], co yhi_beg= (int) ceilf(tmi); yhi= (int) ceilf(thi); - /*if(fTmi>ceilf(fTlo))*/ + /*if (fTmi>ceilf(fTlo))*/ rasterize_half(bake_rast, slo, tlo, smi, tmi, slo, tlo, shi, thi, ylo, yhi_beg, is_mid_right); rasterize_half(bake_rast, smi, tmi, shi, thi, slo, tlo, shi, thi, yhi_beg, yhi, is_mid_right); } diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 7ee57dd78d3..be26007e25a 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1479,7 +1479,7 @@ static void single_obdata_users(Main *bmain, Scene *scene, int flag) case OB_MESH: ob->data= copy_mesh(ob->data); //me= ob->data; - //if(me && me->key) + //if (me && me->key) // ipo_idnew(me->key->ipo); /* drivers */ break; case OB_MBALL: diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 53726d70cf9..388766f5fa3 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -233,7 +233,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) if (nr==1) { // XXX old animation system //ipo= ob->ipo; - //if(ipo==0) return OPERATOR_CANCELLED; + //if (ipo==0) return OPERATOR_CANCELLED; return OPERATOR_CANCELLED; } else if (nr==2) { @@ -266,7 +266,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, visible_bases) { if (nr==1) { // XXX old animation system - //if(base->object->ipo==ipo) base->flag |= SELECT; + //if (base->object->ipo==ipo) base->flag |= SELECT; //changed = 1; } else if (nr==2) { diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 67ece561c98..230917519e3 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -706,7 +706,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs } else { /* validate owner */ - //if(ri->rect==NULL) + //if (ri->rect==NULL) // ri->rect= MEM_mallocN(sizeof(int)*ri->pr_rectx*ri->pr_recty, "BIF_previewrender"); //RE_ResultGet32(re, ri->rect); } diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index aad0a778d4b..bd448cc8288 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -360,7 +360,7 @@ static void make_vertexcol(Object *ob) /* single ob */ } } - //if(shade) + //if (shade) // shadeMeshMCol(scene, ob, me); //else @@ -822,7 +822,7 @@ static int sample_backbuf_area(ViewContext *vc, int *indexar, int totface, int x /* brecht: disabled this because it obviously fails for * brushes with size > 64, why is this here? */ - /*if(size > 64.0) size = 64.0;*/ + /*if (size > 64.0) size = 64.0;*/ ibuf = view3d_read_backbuf(vc, x - size, y - size, x + size, y + size); if (ibuf) { diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index baf4e17b584..bee4f0b754d 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -3082,9 +3082,9 @@ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, Object *ob, { copy_v2_v2(cache->tex_mouse, cache->mouse); - if ( (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) && - (brush->flag & BRUSH_RANDOM_ROTATION) && - !(brush->flag & BRUSH_RAKE)) + if ((brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) && + (brush->flag & BRUSH_RANDOM_ROTATION) && + !(brush->flag & BRUSH_RAKE)) { cache->special_rotation = 2.0f * (float)M_PI * BLI_frand(); } diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 516f6532c4a..87f32fe4eb8 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -503,7 +503,7 @@ void file_draw_list(const bContext *C, ARegion *ar) if (!(file->selflag & EDITING_FILE)) { - if ((params->active_file == i) || (file->selflag & HILITED_FILE) || (file->selflag & SELECTED_FILE) ) { + if ((params->active_file == i) || (file->selflag & HILITED_FILE) || (file->selflag & SELECTED_FILE)) { int colorid = (file->selflag & SELECTED_FILE) ? TH_HILITE : TH_BACK; int shade = (params->active_file == i) || (file->selflag & HILITED_FILE) ? 20 : 0; draw_tile(sx, sy-1, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid, shade); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index eb706dcca75..7d1981a5a3b 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -191,7 +191,7 @@ static FileSelect file_select_do(bContext* C, int selected_idx) retval = FILE_SELECT_DIR; } } - else { + else { if (file->relname) { BLI_strncpy(params->file, file->relname, FILE_MAXFILE); } diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index a48fc6b23f6..d7c4056431f 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -641,7 +641,7 @@ struct ImBuf * filelist_geticon(struct FileList* filelist, int index) if ( strcmp(filelist->filelist[fidx].relname, "..") == 0) { ibuf = gSpecialFileImages[SPECIAL_IMG_PARENT]; } - else if ( strcmp(filelist->filelist[fidx].relname, ".") == 0) { + else if (strcmp(filelist->filelist[fidx].relname, ".") == 0) { ibuf = gSpecialFileImages[SPECIAL_IMG_REFRESH]; } else { diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index a7197cb31e6..31695ddd776 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -308,7 +308,7 @@ FileSelection ED_fileselect_layout_offset_rect(FileLayout* layout, const rcti* r CLAMP(rowmax, 0, layout->rows-1); } - if ( (colmin > layout->columns-1) || (rowmin > layout->rows-1) ) { + if ((colmin > layout->columns-1) || (rowmin > layout->rows-1)) { sel.first = -1; } else { @@ -317,7 +317,7 @@ FileSelection ED_fileselect_layout_offset_rect(FileLayout* layout, const rcti* r else sel.first = colmin + layout->columns*rowmin; } - if ( (colmax > layout->columns-1) || (rowmax > layout->rows-1) ) { + if ((colmax > layout->columns-1) || (rowmax > layout->rows-1)) { sel.last = -1; } else { diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index f116a246d72..9832cfb3227 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -154,7 +154,8 @@ static void image_info(Scene *scene, ImageUser *iuser, Image *ima, ImBuf *ibuf, } /* gets active viewer user */ -struct ImageUser *ntree_get_active_iuser(bNodeTree *ntree){ +struct ImageUser *ntree_get_active_iuser(bNodeTree *ntree) +{ bNode *node; if (ntree) diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 3c1c8ac9941..6d0f0c9323f 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -546,7 +546,7 @@ static void image_keymap(struct wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "toggle", TRUE); /* fast switch to render slots */ - for(i = 0; i < MAX2(IMA_MAX_RENDER_SLOT, 9); i++) { + for (i = 0; i < MAX2(IMA_MAX_RENDER_SLOT, 9); i++) { kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY+i, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "data_path", "space_data.image.render_slot"); RNA_int_set(kmi->ptr, "value", i); diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 23b700e5b64..040f921b6ac 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -672,7 +672,7 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN BLI_strncpy(showname, nodeLabel(node), sizeof(showname)); - //if(node->flag & NODE_MUTED) + //if (node->flag & NODE_MUTED) // BLI_snprintf(showname, sizeof(showname), "[%s]", showname); // XXX - don't print into self! uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(rct->ymax-NODE_DY), @@ -830,7 +830,7 @@ static void node_draw_hidden(const bContext *C, ARegion *ar, SpaceNode *snode, b if (node->miniwidth>0.0f) { BLI_strncpy(showname, nodeLabel(node), sizeof(showname)); - //if(node->flag & NODE_MUTED) + //if (node->flag & NODE_MUTED) // BLI_snprintf(showname, sizeof(showname), "[%s]", showname); // XXX - don't print into self! uiDefBut(node->block, LABEL, 0, showname, (short)(rct->xmin+15), (short)(centy-10), diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index c4fe337ba58..ba3637a88af 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -1200,7 +1200,7 @@ static int do_outliner_operation_event(bContext *C, Scene *scene, ARegion *ar, S set_operation_types(soops, &soops->tree, &scenelevel, &objectlevel, &idlevel, &datalevel); if (scenelevel) { - //if(objectlevel || datalevel || idlevel) error("Mixed selection"); + //if (objectlevel || datalevel || idlevel) error("Mixed selection"); //else pupmenu("Scene Operations%t|Delete"); } else if (objectlevel) { diff --git a/source/blender/editors/space_sequencer/sequencer_scopes.c b/source/blender/editors/space_sequencer/sequencer_scopes.c index 1d81d4bb68b..6b71591c471 100644 --- a/source/blender/editors/space_sequencer/sequencer_scopes.c +++ b/source/blender/editors/space_sequencer/sequencer_scopes.c @@ -247,7 +247,8 @@ ImBuf *make_waveform_view_from_ibuf(ImBuf *ibuf) } -static ImBuf *make_sep_waveform_view_from_ibuf_byte(ImBuf *ibuf){ +static ImBuf *make_sep_waveform_view_from_ibuf_byte(ImBuf *ibuf) +{ ImBuf *rval = IMB_allocImBuf( ibuf->x + 3, 515, 32, IB_rect); int x, y; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7a1d9b8604f..7ccf4b6c81a 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -182,11 +182,11 @@ static void draw_empty_cone(float size); static int check_object_draw_texture(Scene *scene, View3D *v3d, int drawtype) { /* texture and material draw modes */ - if(ELEM(v3d->drawtype, OB_TEXTURE, OB_MATERIAL) && drawtype > OB_SOLID) + if (ELEM(v3d->drawtype, OB_TEXTURE, OB_MATERIAL) && drawtype > OB_SOLID) return TRUE; /* textured solid */ - if(v3d->drawtype == OB_SOLID && (v3d->flag2 & V3D_SOLID_TEX) && !scene_use_new_shading_nodes(scene)) + if (v3d->drawtype == OB_SOLID && (v3d->flag2 & V3D_SOLID_TEX) && !scene_use_new_shading_nodes(scene)) return TRUE; return FALSE; @@ -6526,7 +6526,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) zbufoff = 1; dt = OB_SOLID; } - else if(ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) + else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) dt = OB_PAINT; glEnable(GL_DEPTH_TEST); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 50eaa3b7ccc..082e7676daa 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2987,7 +2987,7 @@ static int viewpan_exec(bContext *C, wmOperator *op) initgrabz(rv3d, 0.0, 0.0, 0.0); if (pandir == V3D_VIEW_PANRIGHT) { mval_f[0] = -32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } else if (pandir == V3D_VIEW_PANLEFT) { mval_f[0] = 32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } - else if (pandir == V3D_VIEW_PANUP) { mval_f[1] = -25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } + else if (pandir == V3D_VIEW_PANUP) { mval_f[1] = -25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } else if (pandir == V3D_VIEW_PANDOWN) { mval_f[1] = 25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } add_v3_v3(rv3d->ofs, vec); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 59626349ac5..d1dbdbb09c7 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4706,12 +4706,12 @@ void projectSVData(TransInfo *t, int final) if (!em) return; - if(!(t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) + if (!(t->settings->uvcalc_flag & UVCALC_TRANSFORM_CORRECT)) return; /* don't do this at all for non-basis shape keys, too easy to accidentally break uv maps or vertex colors then */ - if(em->bm->shapenr > 1) + if (em->bm->shapenr > 1) return; BLI_smallhash_init(&visit); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index ba720ea8087..77573dbee4c 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1984,7 +1984,7 @@ static void get_edge_center(float cent_r[3], BMVert *eve) static void VertsToTransData(TransInfo *t, TransData *td, BMEditMesh *em, BMVert *eve, float *bweight) { td->flag = 0; - //if(key) + //if (key) // td->loc = key->co; //else td->loc = eve->co; diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index a7f58373e41..bf6a47ed06c 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -921,7 +921,7 @@ void drawLine(TransInfo *t, float *center, float *dir, char axis, short options) glPushMatrix(); - //if(t->obedit) glLoadMatrixf(t->obedit->obmat); // sets opengl viewing + //if (t->obedit) glLoadMatrixf(t->obedit->obmat); // sets opengl viewing copy_v3_v3(v3, dir); diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c index c99d6e992b7..c1abfe69cc1 100644 --- a/source/blender/editors/uvedit/uvedit_parametrizer.c +++ b/source/blender/editors/uvedit/uvedit_parametrizer.c @@ -4131,8 +4131,9 @@ void param_face_add(ParamHandle *handle, ParamKey key, int nverts, p_face_add_construct(phandle, key, vkeys, co, uv, 1, 2, 3, pin, select); } } - else if(!p_face_exists(phandle, vkeys, 0, 1, 2)) + else if (!p_face_exists(phandle, vkeys, 0, 1, 2)) { p_face_add_construct(phandle, key, vkeys, co, uv, 0, 1, 2, pin, select); + } } void param_edge_set_seam(ParamHandle *handle, ParamKey *vkeys) diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index ad78a5b6643..387b138cbfb 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -243,7 +243,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, key = (ParamKey)efa; - if(efa->len == 3 || efa->len == 4) { + if (efa->len == 3 || efa->len == 4) { /* for quads let parametrize split, it can make better decisions about which split is best for unwrapping than scanfill */ i = 0; @@ -294,7 +294,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, ls[1] = sefa->v2->tmp.p; ls[2] = sefa->v3->tmp.p; - for(i = 0; i < 3; i++) { + for (i = 0; i < 3; i++) { MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, ls[i]->head.data, CD_MLOOPUV); vkeys[i] = (ParamKey)BM_elem_index_get(ls[i]->v); co[i] = ls[i]->v->co; diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index 14d6428bf50..a40452adfe7 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -263,11 +263,11 @@ void GPU_codegen_exit(void) glsl_material_library = NULL; } - /*if(FUNCTION_PROTOTYPES) { + /*if (FUNCTION_PROTOTYPES) { MEM_freeN(FUNCTION_PROTOTYPES); FUNCTION_PROTOTYPES = NULL; }*/ - /*if(FUNCTION_LIB) { + /*if (FUNCTION_LIB) { GPU_shader_free(FUNCTION_LIB); FUNCTION_LIB = NULL; }*/ @@ -587,7 +587,7 @@ static char *code_generate_fragment(ListBase *nodes, GPUOutput *output, const ch codegen_set_unique_ids(nodes); codegen_print_uniforms_functions(ds, nodes); - //if(G.debug & G_DEBUG) + //if (G.debug & G_DEBUG) // BLI_dynstr_appendf(ds, "/* %s */\n", name); BLI_dynstr_append(ds, "void main(void)\n"); @@ -602,7 +602,7 @@ static char *code_generate_fragment(ListBase *nodes, GPUOutput *output, const ch code = BLI_dynstr_get_cstring(ds); BLI_dynstr_free(ds); - //if(G.debug & G_DEBUG) printf("%s\n", code); + //if (G.debug & G_DEBUG) printf("%s\n", code); return code; } @@ -645,7 +645,7 @@ static char *code_generate_vertex(ListBase *nodes) BLI_dynstr_free(ds); - //if(G.debug & G_DEBUG) printf("%s\n", code); + //if (G.debug & G_DEBUG) printf("%s\n", code); return code; } @@ -1319,7 +1319,7 @@ GPUPass *GPU_generate_pass(ListBase *nodes, GPUNodeLink *outlink, GPUVertexAttri GPUPass *pass; char *vertexcode, *fragmentcode; - /*if(!FUNCTION_LIB) { + /*if (!FUNCTION_LIB) { GPU_nodes_free(nodes); return NULL; }*/ diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 906856cc64c..56bee29e436 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -631,7 +631,7 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la visifac= lamp_get_visibility(mat, lamp, &lv, &dist); - /*if(ma->mode & MA_TANGENT_V) + /*if (ma->mode & MA_TANGENT_V) GPU_link(mat, "shade_tangent_v", lv, GPU_attribute(CD_TANGENT, ""), &vn);*/ GPU_link(mat, "shade_inp", vn, lv, &inp); diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c index 9c5b39e180d..1d629876727 100644 --- a/source/blender/imbuf/intern/util.c +++ b/source/blender/imbuf/intern/util.c @@ -188,7 +188,7 @@ int IMB_ispic(const char *filename) ) { return IMB_ispic_name(filename); } - else { + else { return FALSE; } } @@ -392,7 +392,7 @@ int IMB_isanim(const char *filename) || BLI_testextensie(filename, ".mv")) { type = imb_get_anim_type(filename); } - else { + else { return(FALSE); } } diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index deb3b88a910..5a38bcbef04 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -1094,7 +1094,7 @@ static int make_structDNA(char *baseDirectory, FILE *file) sp += firststruct; for (a=firststruct; aprop == func->c_ret) fprintf(f, "\t_retdata= _data;\n"); - else { + else { const char *data_str; if (cptr || (flag & PROP_DYNAMIC)) { ptrstr = "**"; diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index c80ac4380fa..dd591ea7343 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -412,7 +412,7 @@ static void rna_PartSettings_start_set(struct PointerRNA *ptr, float value) if (value > settings->end) value = settings->end; - /*if(settings->type==PART_REACTOR && value < 1.0) */ + /*if (settings->type==PART_REACTOR && value < 1.0) */ /* value = 1.0; */ /*else */ if (value < MINAFRAMEF) @@ -723,7 +723,7 @@ static void rna_ParticleDupliWeight_name_get(PointerRNA *ptr, char *str) static EnumPropertyItem *rna_Particle_from_itemf(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *UNUSED(free)) { - /*if(part->type==PART_REACTOR) */ + /*if (part->type==PART_REACTOR) */ /* return part_reactor_from_items; */ /*else */ return part_from_items; diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 8c90c62884e..c271292c601 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -453,9 +453,10 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, v2 = _E(geom_slot, indexMap[i]-1); /* check in case the target vertex (v2) is already marked - for merging */ - while((v3 = BMO_slot_map_ptr_get(em->bm, &weld_op, "targetmap", v2))) + * for merging */ + while ((v3 = BMO_slot_map_ptr_get(em->bm, &weld_op, "targetmap", v2))) { v2 = v3; + } BMO_slot_map_ptr_insert(em->bm, &weld_op, "targetmap", v, v2); } @@ -551,7 +552,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, result = arrayModifier_doArray(amd, md->scene, ob, dm, 0); - //if(result != dm) + //if (result != dm) // CDDM_calc_normals_mapping(result); return result; diff --git a/source/blender/nodes/composite/nodes/node_composite_math.c b/source/blender/nodes/composite/nodes/node_composite_math.c index 6f3d2f6baaf..8362df1b691 100644 --- a/source/blender/nodes/composite/nodes/node_composite_math.c +++ b/source/blender/nodes/composite/nodes/node_composite_math.c @@ -187,7 +187,7 @@ static void node_composit_exec_math(void *UNUSED(data), bNode *node, bNodeStack } /* and if it doesn't exist use the second input since we know that one of them must exist at this point*/ - else { + else { stackbuf=alloc_compbuf(cbuf2->x, cbuf2->y, CB_VAL, 1); } diff --git a/source/blender/nodes/shader/nodes/node_shader_geom.c b/source/blender/nodes/shader/nodes/node_shader_geom.c index 37ab8ac3f5b..5e302390329 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geom.c +++ b/source/blender/nodes/shader/nodes/node_shader_geom.c @@ -95,7 +95,7 @@ static void node_shader_exec_geom(void *data, bNode *node, bNodeStack **UNUSED(i out[GEOM_OUT_VCOL]->vec[3]= scol->col[3]; out[GEOM_OUT_VCOL_ALPHA]->vec[0]= scol->col[3]; } - else { + else { memcpy(out[GEOM_OUT_VCOL]->vec, defaultvcol, sizeof(defaultvcol)); out[GEOM_OUT_VCOL_ALPHA]->vec[0]= 1.0f; } diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 1e2e2bf6b2b..834ca1227b5 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -195,7 +195,7 @@ static PyObject *bpy_resource_path(PyObject *UNUSED(self), PyObject *args, PyObj return NULL; /* stupid string compare */ - if (!strcmp(type, "USER")) folder_id = BLENDER_RESOURCE_PATH_USER; + if (!strcmp(type, "USER")) folder_id = BLENDER_RESOURCE_PATH_USER; else if (!strcmp(type, "LOCAL")) folder_id = BLENDER_RESOURCE_PATH_LOCAL; else if (!strcmp(type, "SYSTEM")) folder_id = BLENDER_RESOURCE_PATH_SYSTEM; else { diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index f370c06194a..074f03654bc 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -101,7 +101,7 @@ void bpy_context_update(bContext *C) /* don't do this from a non-main (e.g. render) thread, it can cause a race condition on C->data.recursion. ideal solution would be to disable context entirely from non-main threads, but that's more complicated */ - if(!BLI_thread_is_main()) + if (!BLI_thread_is_main()) return; BPy_SetContext(C); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 11895eae441..f7f1efd63dc 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2483,7 +2483,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) ver->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn; ver->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn; normalize_v3(ver->n); - //if(ob->transflag & OB_NEG_SCALE) negate_v3(ver->n); + //if (ob->transflag & OB_NEG_SCALE) negate_v3(ver->n); if (need_orco) { ver->orco= orco; @@ -5514,7 +5514,7 @@ static int load_fluidsimspeedvectors(Render *re, ObjectInstanceRen *obi, float * // set both to the same value speed[0]= speed[2]= zco[0]; speed[1]= speed[3]= zco[1]; - //if(a<20) fprintf(stderr,"speed %d %f,%f | camco %f,%f,%f | hoco %f,%f,%f,%f\n", a, speed[0], speed[1], camco[0],camco[1], camco[2], hoco[0],hoco[1], hoco[2],hoco[3]); // NT DEBUG + //if (a < 20) fprintf(stderr,"speed %d %f,%f | camco %f,%f,%f | hoco %f,%f,%f,%f\n", a, speed[0], speed[1], camco[0],camco[1], camco[2], hoco[0],hoco[1], hoco[2],hoco[3]); // NT DEBUG } return 1; diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index 1222dd121a7..0c735c18c57 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -102,7 +102,7 @@ static RayObject* RE_rayobject_create(Render *re, int type, int size) if (type == R_RAYSTRUCTURE_AUTO) { //TODO - //if(detect_simd()) + //if (detect_simd()) #ifdef __SSE__ type = BLI_cpu_support_sse2()? R_RAYSTRUCTURE_SIMD_SVBVH: R_RAYSTRUCTURE_VBVH; #else diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index 453bb0aeeb6..fedbce89058 100644 --- a/source/blender/render/intern/source/render_texture.c +++ b/source/blender/render/intern/source/render_texture.c @@ -1647,7 +1647,7 @@ static void texco_mapping(ShadeInput* shi, Tex* tex, MTex* mtex, float* co, floa } } if (tex->extend == TEX_REPEAT && (tex->flag & TEX_REPEAT_YMIR)) { - if (tex->texfilter == TXF_BOX) + if (tex->texfilter == TXF_BOX) texvec[1] -= floorf(texvec[1]); else if (texvec[1] < 0.f || texvec[1] > 1.f) { const float ty = 0.5f*texvec[1]; diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c index d238087cfb1..6a0c8e3526f 100644 --- a/source/blender/render/intern/source/renderdatabase.c +++ b/source/blender/render/intern/source/renderdatabase.c @@ -1189,7 +1189,7 @@ HaloRen *RE_inithalo_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Mater har->add = 255.0f*add; } /* now what on earth is this good for?? */ - //if(mtex->texco & 16) { + //if (mtex->texco & 16) { // har->alfa= tin; //} } diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c index 742d28d89b7..7b17c782590 100644 --- a/source/blender/render/intern/source/shadbuf.c +++ b/source/blender/render/intern/source/shadbuf.c @@ -114,7 +114,7 @@ static int sizeoflampbuf(ShadBuf *shb) cp= shb->cbuf; num= (shb->size*shb->size)/256; - while(num--) count+= *(cp++); + while (num--) count+= *(cp++); return 256*count; } @@ -446,7 +446,7 @@ static void compress_deepshadowbuf(Render *re, ShadBuf *shb, APixstr *apixbuf, A /* merge buffers */ dsb= shsample->deepbuf[a]; - while(1) { + while (1) { minz= 0; found= 0; @@ -829,7 +829,7 @@ static void *do_shadow_thread(void *re_v) lar->thread_ready= 1; BLI_unlock_thread(LOCK_CUSTOM1); } - } while(lar && !re->test_break(re->tbh)); + } while (lar && !re->test_break(re->tbh)); return NULL; } @@ -894,7 +894,7 @@ void threaded_makeshadowbufs(Render *re) if (lar->shb && !lar->thread_ready) break; BLI_unlock_thread(LOCK_CUSTOM1); - } while(lar); + } while (lar); BLI_end_threads(&threads); @@ -1371,7 +1371,7 @@ float shadow_halo(LampRen *lar, const float p1[3], const float p2[3]) /* printf("start %x %x \n", (int)(0x7FFFFFFF*zf1), (int)(0x7FFFFFFF*zf2)); */ - while(1) { + while (1) { labdao= labda; if (labdax==labday) { @@ -1613,7 +1613,7 @@ static int isb_bsp_insert(ISBBranch *root, MemArena *memarena, ISBSample *sample root->totsamp++; /* going over branches until last one found */ - while(bspn->left) { + while (bspn->left) { if (zco[bspn->index] <= bspn->divider[bspn->index]) bspn= bspn->left; else @@ -2244,7 +2244,7 @@ static void isb_make_buffer(RenderPart *pa, LampRen *lar) PixStr *ps= (PixStr *)(*rd); int mask= (1<mask & mask) break; ps= ps->next; @@ -2315,7 +2315,7 @@ static void isb_make_buffer(RenderPart *pa, LampRen *lar) if (*rd) { PixStr *ps= (PixStr *)(*rd); - while(ps) { + while (ps) { if (ps->shadfac) isb_add_shadfac(isbsa, isbdata->memarena, ps->obi, ps->facenr, ps->shadfac, count_mask(ps->mask)); ps= ps->next; @@ -2382,7 +2382,7 @@ static int isb_add_samples_transp(RenderPart *pa, ISBBranch *root, MemArena *mem int x= xcos[xi]; samp1= *(samp + y*pa->rectx + x); - while(samp1) { + while (samp1) { bsp_err |= isb_bsp_insert(root, memarena, (ISBSample *)samp1); samp1= samp1->next; } @@ -2572,7 +2572,7 @@ float ISB_getshadow(ShadeInput *shi, ShadBuf *shb) int obi= shi->obi - R.objectinstance; ISBShadfacA *isbsa= *(isbdata->shadfaca + sindex); - while(isbsa) { + while (isbsa) { if (isbsa->facenr==shi->facenr+1 && isbsa->obi==obi) return isbsa->shadfac>=1.0f?0.0f:1.0f - isbsa->shadfac; isbsa= isbsa->next; diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index 7f8b0ac80ed..dcc3bee7730 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1152,7 +1152,7 @@ float lamp_get_visibility(LampRen *lar, const float co[3], float lv[3], float *d /* area type has no quad or sphere option */ if (lar->type==LA_AREA) { /* area is single sided */ - //if(dot_v3v3(lv, lar->vec) > 0.0f) + //if (dot_v3v3(lv, lar->vec) > 0.0f) // visifac= 1.0f; //else // visifac= 0.0f; diff --git a/source/blender/render/intern/source/sss.c b/source/blender/render/intern/source/sss.c index dd1bddc5020..b6eccc3e10f 100644 --- a/source/blender/render/intern/source/sss.c +++ b/source/blender/render/intern/source/sss.c @@ -285,12 +285,12 @@ static void build_Rd_table(ScatterSettings *ss) for (i= 0; i < size; i++) { r= i*(RD_TABLE_RANGE/RD_TABLE_SIZE); - /*if(r < ss->invsigma_t_*ss->invsigma_t_) + /*if (r < ss->invsigma_t_*ss->invsigma_t_) r= ss->invsigma_t_*ss->invsigma_t_;*/ ss->tableRd[i]= Rd(ss, sqrt(r)); r= i*(RD_TABLE_RANGE_2/RD_TABLE_SIZE); - /*if(r < ss->invsigma_t_) + /*if (r < ss->invsigma_t_) r= ss->invsigma_t_;*/ ss->tableRd2[i]= Rd(ss, r); } From 7e7d28e3ad433285c205c4f44218b5b4c862c9ef Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 13:08:26 +0000 Subject: [PATCH 007/158] fix [#31048] converting curve object to mesh makes object disapper from 3D view --- .../blender/blenkernel/intern/cdderivedmesh.c | 5 +++-- source/blender/blenkernel/intern/mesh.c | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index ee18c93b943..2dc95effdd7 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -412,8 +412,9 @@ static void cdDM_drawEdges(DerivedMesh *dm, int drawLooseEdges, int drawAllEdges DEBUG_VBO( "Using legacy code. cdDM_drawEdges\n" ); glBegin(GL_LINES); for (i = 0; i < dm->numEdgeData; i++, medge++) { - if ((drawAllEdges || (medge->flag&ME_EDGEDRAW)) - && (drawLooseEdges || !(medge->flag&ME_LOOSEEDGE))) { + if ((drawAllEdges || (medge->flag & ME_EDGEDRAW)) && + (drawLooseEdges || !(medge->flag & ME_LOOSEEDGE))) + { glVertex3fv(mvert[medge->v1].co); glVertex3fv(mvert[medge->v2].co); } diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index b7b9f6b21f4..b80b15e57f3 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1224,7 +1224,10 @@ int nurbs_to_mdata(Object *ob, MVert **allvert, int *totvert, int *totloop, int *totpoly) { return nurbs_to_mdata_customdb(ob, &ob->disp, - allvert, totvert, alledge, totedge, allloop, allpoly, totloop, totpoly); + allvert, totvert, + alledge, totedge, + allloop, allpoly, + totloop, totpoly); } /* BMESH: this doesn't calculate all edges from polygons, @@ -1232,9 +1235,11 @@ int nurbs_to_mdata(Object *ob, MVert **allvert, int *totvert, /* Initialize mverts, medges and, faces for converting nurbs to mesh and derived mesh */ /* use specified dispbase */ -int nurbs_to_mdata_customdb(Object *ob, ListBase *dispbase, MVert **allvert, int *_totvert, - MEdge **alledge, int *_totedge, MLoop **allloop, MPoly **allpoly, - int *_totloop, int *_totpoly) +int nurbs_to_mdata_customdb(Object *ob, ListBase *dispbase, + MVert **allvert, int *_totvert, + MEdge **alledge, int *_totedge, + MLoop **allloop, MPoly **allpoly, + int *_totloop, int *_totpoly) { DispList *dl; Curve *cu; @@ -1316,7 +1321,7 @@ int nurbs_to_mdata_customdb(Object *ob, ListBase *dispbase, MVert **allvert, int for (b=1; bnr; b++) { medge->v1= startvert+ofs+b-1; medge->v2= startvert+ofs+b; - medge->flag = ME_LOOSEEDGE|ME_EDGERENDER; + medge->flag = ME_LOOSEEDGE | ME_EDGERENDER | ME_EDGEDRAW; medge++; } @@ -1341,7 +1346,7 @@ int nurbs_to_mdata_customdb(Object *ob, ListBase *dispbase, MVert **allvert, int medge->v1= startvert+ofs+b; if (b==dl->nr-1) medge->v2= startvert+ofs; else medge->v2= startvert+ofs+b+1; - medge->flag = ME_LOOSEEDGE|ME_EDGERENDER; + medge->flag = ME_LOOSEEDGE | ME_EDGERENDER | ME_EDGEDRAW; medge++; } } @@ -1466,7 +1471,7 @@ void nurbs_to_mesh(Object *ob) cu= ob->data; if (dm == NULL) { - if (nurbs_to_mdata (ob, &allvert, &totvert, &alledge, &totedge, &allloop, &allpoly, &totloop, &totpoly) != 0) { + if (nurbs_to_mdata(ob, &allvert, &totvert, &alledge, &totedge, &allloop, &allpoly, &totloop, &totpoly) != 0) { /* Error initializing */ return; } From d02aed6c6474eafbcc312156d1debfccb230a00f Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Sat, 21 Apr 2012 13:36:57 +0000 Subject: [PATCH 008/158] Fix for image node: has to check the number of actual node sockets before accessing the output data stack, to avoid reading uninitialized memory. --- .../nodes/composite/nodes/node_composite_image.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 323767b64b1..6a156c390a7 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -461,6 +461,8 @@ static void node_composit_exec_image(void *data, bNode *node, bNodeStack **UNUSE else { CompBuf *stackbuf = node_composit_get_image(rd, ima, iuser); if (stackbuf) { + int num_outputs = BLI_countlist(&node->outputs); + /*respect image premul option*/ if (stackbuf->type==CB_RGBA && ima->flag & IMA_DO_PREMUL) { int i; @@ -483,15 +485,16 @@ static void node_composit_exec_image(void *data, bNode *node, bNodeStack **UNUSE } } - /* put image on stack */ - out[0]->data= stackbuf; + /* put image on stack */ + if (num_outputs > 0) + out[0]->data= stackbuf; /* alpha output */ - if (out[1]->hasoutput) + if (num_outputs > 1 && out[1]->hasoutput) out[1]->data= valbuf_from_rgbabuf(stackbuf, CHAN_A); /* Z output */ - if (out[2]->hasoutput) + if (num_outputs > 2 && out[2]->hasoutput) out[2]->data= node_composit_get_zimage(node, rd); /* preview */ From 1615b46963f79e90621c155a5d85925a4b5171a3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 13:37:26 +0000 Subject: [PATCH 009/158] style cleanup --- source/blender/blenkernel/BKE_particle.h | 6 +++--- source/blender/blenkernel/BKE_pointcache.h | 2 +- source/blender/blenkernel/intern/DerivedMesh.c | 2 +- source/blender/blenkernel/intern/customdata.c | 2 +- source/blender/blenkernel/intern/particle_system.c | 3 ++- source/blender/blenkernel/intern/softbody.c | 14 +++++++------- source/blender/editors/sculpt_paint/sculpt_uv.c | 10 +++++----- .../blender/editors/uvedit/uvedit_smart_stitch.c | 6 +++--- source/blender/imbuf/intern/bmp.c | 2 +- source/blender/imbuf/intern/jp2.c | 4 ++-- source/blender/imbuf/intern/png.c | 2 +- source/gameengine/Ketsji/KX_ObstacleSimulation.h | 2 +- source/gameengine/Rasterizer/RAS_FramingManager.h | 6 +++--- source/gameengine/SceneGraph/SG_ParentRelation.h | 2 +- 14 files changed, 32 insertions(+), 31 deletions(-) diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h index 3e0180a84aa..67dba6fd7a7 100644 --- a/source/blender/blenkernel/BKE_particle.h +++ b/source/blender/blenkernel/BKE_particle.h @@ -85,7 +85,7 @@ typedef struct ParticleSimulationData { float courant_num; } ParticleSimulationData; -typedef struct ParticleTexture{ +typedef struct ParticleTexture { float ivel; /* used in reset */ float time, life, exist, size; /* used in init */ float damp, gravity, field; /* used in physics */ @@ -93,13 +93,13 @@ typedef struct ParticleTexture{ float rough1, rough2, roughe; /* used in path caching */ } ParticleTexture; -typedef struct ParticleSeam{ +typedef struct ParticleSeam { float v0[3], v1[3]; float nor[3], dir[3], tan[3]; float length2; } ParticleSeam; -typedef struct ParticleCacheKey{ +typedef struct ParticleCacheKey { float co[3]; float vel[3]; float rot[4]; diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h index eba5c117199..d7d7324dd56 100644 --- a/source/blender/blenkernel/BKE_pointcache.h +++ b/source/blender/blenkernel/BKE_pointcache.h @@ -187,7 +187,7 @@ typedef struct PTCacheBaker { #define PEK_HIDE 4 #define PEK_USE_WCO 8 -typedef struct PTCacheEditKey{ +typedef struct PTCacheEditKey { float *co; float *vel; float *rot; diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 92eb696087d..294518458bf 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -274,7 +274,7 @@ void DM_init_funcs(DerivedMesh *dm) } void DM_init(DerivedMesh *dm, DerivedMeshType type, int numVerts, int numEdges, - int numTessFaces, int numLoops, int numPolys) + int numTessFaces, int numLoops, int numPolys) { dm->type = type; dm->numVertData = numVerts; diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 536d4d9c823..29eea3bb576 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -2056,7 +2056,7 @@ void CustomData_set(const CustomData *data, int index, int type, void *source) /*Bmesh functions*/ /*needed to convert to/from different face reps*/ void CustomData_to_bmeshpoly(CustomData *fdata, CustomData *pdata, CustomData *ldata, - int totloop, int totpoly) + int totloop, int totpoly) { int i; for (i=0; i < fdata->totlayer; i++) { diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index b08c1e1edf3..ee19b38e02b 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -2375,6 +2375,7 @@ typedef struct SPHRangeData float massfac; int use_size; } SPHRangeData; + typedef struct SPHData { ParticleSystem *psys[10]; ParticleData *pa; @@ -2390,7 +2391,7 @@ typedef struct SPHData { /* Integrator callbacks. This allows different SPH implementations. */ void (*force_cb) (void *sphdata_v, ParticleKey *state, float *force, float *impulse); void (*density_cb) (void *rangedata_v, int index, float squared_dist); -}SPHData; +} SPHData; static void sph_density_accum_cb(void *userdata, int index, float squared_dist) { diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 6e4f4db129b..01930cc28da 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -113,7 +113,7 @@ typedef struct ReferenceVert { typedef struct ReferenceState { float com[3]; /* center of mass*/ ReferenceVert *ivert; /* list of intial values */ -}ReferenceState; +} ReferenceState; /*private scratch pad for caching and other data only needed when alive*/ @@ -125,7 +125,7 @@ typedef struct SBScratch { int totface; float aabbmin[3],aabbmax[3]; ReferenceState Ref; -}SBScratch; +} SBScratch; typedef struct SB_thread_context { Scene *scene; @@ -140,7 +140,7 @@ typedef struct SB_thread_context { float windfactor; int nr; int tot; -}SB_thread_context; +} SB_thread_context; #define NLF_BUILD 1 #define NLF_SOLVE 2 @@ -267,9 +267,9 @@ float operations still */ static const int CCD_SAVETY = 190561; -typedef struct ccdf_minmax{ -float minx,miny,minz,maxx,maxy,maxz; -}ccdf_minmax; +typedef struct ccdf_minmax { + float minx, miny, minz, maxx, maxy, maxz; +} ccdf_minmax; @@ -283,7 +283,7 @@ typedef struct ccd_Mesh { /* Axis Aligned Bounding Box AABB */ float bbmin[3]; float bbmax[3]; -}ccd_Mesh; +} ccd_Mesh; diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c index 4b866c3c9c3..b4f8f689a6a 100644 --- a/source/blender/editors/sculpt_paint/sculpt_uv.c +++ b/source/blender/editors/sculpt_paint/sculpt_uv.c @@ -84,7 +84,7 @@ typedef struct UvEdge { unsigned int uv2; /* general use flag (Used to check if edge is boundary here, and propagates to adjacency elements) */ char flag; -}UvEdge; +} UvEdge; typedef struct UVInitialStrokeElement { /* index to unique uv */ @@ -95,7 +95,7 @@ typedef struct UVInitialStrokeElement { /* initial uv position */ float initial_uv[2]; -}UVInitialStrokeElement; +} UVInitialStrokeElement; typedef struct UVInitialStroke { /* Initial Selection,for grab brushes for instance */ @@ -106,7 +106,7 @@ typedef struct UVInitialStroke { /* initial mouse coordinates */ float init_coord[2]; -}UVInitialStroke; +} UVInitialStroke; /* custom data for uv smoothing brush */ @@ -142,7 +142,7 @@ typedef struct UvSculptData { /* store invert flag here */ char invert; -}UvSculptData; +} UvSculptData; /*********** Improved Laplacian Relaxation Operator ************************/ /* original code by Raul Fernandez Hernandez "farsthary" * @@ -152,7 +152,7 @@ typedef struct UvSculptData { typedef struct Temp_UvData { float sum_co[2], p[2], b[2], sum_b[2]; int ncounter; -}Temp_UVData; +} Temp_UVData; diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c index 53572f114d2..448072ebb72 100644 --- a/source/blender/editors/uvedit/uvedit_smart_stitch.c +++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c @@ -87,7 +87,7 @@ typedef struct IslandStitchData { char stitchableCandidate; /* if edge rotation is used, flag so that vertex rotation is not used */ char use_edge_rotation; -}IslandStitchData; +} IslandStitchData; /* just for averaging UVs */ typedef struct UVVertAverage { @@ -103,7 +103,7 @@ typedef struct UvEdge { char flag; /* element that guarantees element->face has the face on element->tfindex and element->tfindex+1 is the second uv */ UvElement *element; -}UvEdge; +} UvEdge; /* stitch state object */ @@ -146,7 +146,7 @@ typedef struct StitchState { typedef struct PreviewPosition { int data_position; int polycount_position; -}PreviewPosition; +} PreviewPosition; /* * defines for UvElement flags */ diff --git a/source/blender/imbuf/intern/bmp.c b/source/blender/imbuf/intern/bmp.c index 768aa518742..06e1d75c5d0 100644 --- a/source/blender/imbuf/intern/bmp.c +++ b/source/blender/imbuf/intern/bmp.c @@ -44,7 +44,7 @@ * http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0197/mfcp1/mfcp1.htm&nav=/msj/0197/newnav.htm */ -typedef struct BMPINFOHEADER{ +typedef struct BMPINFOHEADER { unsigned int biSize; unsigned int biWidth; unsigned int biHeight; diff --git a/source/blender/imbuf/intern/jp2.c b/source/blender/imbuf/intern/jp2.c index 275d19d518c..749d46d3a98 100644 --- a/source/blender/imbuf/intern/jp2.c +++ b/source/blender/imbuf/intern/jp2.c @@ -43,7 +43,7 @@ static char JP2_HEAD[]= {0x0, 0x0, 0x0, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A}; /* We only need this because of how the presets are set */ -typedef struct img_folder{ +typedef struct img_folder { /** The directory path of the folder containing input images*/ char *imgdirpath; /** Output format*/ @@ -54,7 +54,7 @@ typedef struct img_folder{ char set_out_format; /** User specified rate stored in case of cinema option*/ float *rates; -}img_fol_t; +} img_fol_t; static int check_jp2(unsigned char *mem) /* J2K_CFMT */ { diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c index de935c7cc42..74e1a4084c2 100644 --- a/source/blender/imbuf/intern/png.c +++ b/source/blender/imbuf/intern/png.c @@ -49,7 +49,7 @@ typedef struct PNGReadStruct { unsigned char *data; unsigned int size; unsigned int seek; -}PNGReadStruct; +} PNGReadStruct; static void ReadData( png_structp png_ptr, png_bytep data, png_size_t length); static void WriteData( png_structp png_ptr, png_bytep data, png_size_t length); diff --git a/source/gameengine/Ketsji/KX_ObstacleSimulation.h b/source/gameengine/Ketsji/KX_ObstacleSimulation.h index d9bda34f112..5b359fc031e 100644 --- a/source/gameengine/Ketsji/KX_ObstacleSimulation.h +++ b/source/gameengine/Ketsji/KX_ObstacleSimulation.h @@ -90,7 +90,7 @@ public: virtual void AdjustObstacleVelocity(KX_Obstacle* activeObst, KX_NavMeshObject* activeNavMeshObj, MT_Vector3& velocity, MT_Scalar maxDeltaSpeed,MT_Scalar maxDeltaAngle); -}; +}; class KX_ObstacleSimulationTOI: public KX_ObstacleSimulation { protected: diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.h b/source/gameengine/Rasterizer/RAS_FramingManager.h index ddf889aeb37..fc5adc97657 100644 --- a/source/gameengine/Rasterizer/RAS_FramingManager.h +++ b/source/gameengine/Rasterizer/RAS_FramingManager.h @@ -174,7 +174,7 @@ struct RAS_FrameFrustum float camnear,camfar; float x1,y1; float x2,y2; -}; +}; /* must match R_CULLING_... from DNA_scene_types.h */ enum RAS_CullingMode @@ -307,7 +307,7 @@ public: void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:RAS_FramingManager"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif -}; - +}; + #endif diff --git a/source/gameengine/SceneGraph/SG_ParentRelation.h b/source/gameengine/SceneGraph/SG_ParentRelation.h index 77172256ef9..689ada84edd 100644 --- a/source/gameengine/SceneGraph/SG_ParentRelation.h +++ b/source/gameengine/SceneGraph/SG_ParentRelation.h @@ -136,7 +136,7 @@ public: void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:SG_ParentRelation"); } void operator delete( void *mem ) { MEM_freeN(mem); } #endif -}; +}; #endif From 1c54eaecd89ba30500e7b83adaf1c1a8a85c0b43 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 13:58:29 +0000 Subject: [PATCH 010/158] fix [#31049] New Faces (F) always solid shaded --- source/blender/bmesh/intern/bmesh_opdefines.c | 10 ++++--- source/blender/bmesh/operators/bmo_create.c | 19 ++++++++++--- source/blender/editors/mesh/editmesh_tools.c | 27 +++++++++++++++++-- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c index 98d2b31e57c..f850f6aa46a 100644 --- a/source/blender/bmesh/intern/bmesh_opdefines.c +++ b/source/blender/bmesh/intern/bmesh_opdefines.c @@ -404,8 +404,9 @@ static BMOpDefine bmo_join_triangles_def = { static BMOpDefine bmo_contextual_create_def = { "contextual_create", {{BMO_OP_SLOT_ELEMENT_BUF, "geom"}, //input geometry. - {BMO_OP_SLOT_ELEMENT_BUF, "faceout"}, //newly-made face(s) - {BMO_OP_SLOT_INT, "mat_nr"}, /* material to use */ + {BMO_OP_SLOT_ELEMENT_BUF, "faceout"}, /* newly-made face(s) */ + {BMO_OP_SLOT_INT, "mat_nr"}, /* material to use */ + {BMO_OP_SLOT_BOOL, "use_smooth"}, /* material to use */ {0, /* null-terminating sentinel */}}, bmo_contextual_create_exec, BMO_OP_FLAG_UNTAN_MULTIRES, @@ -431,8 +432,9 @@ static BMOpDefine bmo_edgenet_fill_def = { {BMO_OP_SLOT_BOOL, "use_fill_check"}, {BMO_OP_SLOT_ELEMENT_BUF, "excludefaces"}, /* list of faces to ignore for manifold check */ {BMO_OP_SLOT_MAPPING, "faceout_groupmap"}, /* maps new faces to the group numbers they came fro */ - {BMO_OP_SLOT_ELEMENT_BUF, "faceout"}, /* new face */ - {BMO_OP_SLOT_INT, "mat_nr"}, /* material to use */ + {BMO_OP_SLOT_ELEMENT_BUF, "faceout"}, /* new face */ + {BMO_OP_SLOT_INT, "mat_nr"}, /* material to use */ + {BMO_OP_SLOT_BOOL, "use_smooth"}, /* material to use */ {0, /* null-terminating sentinel */}}, bmo_edgenet_fill_exec, 0, diff --git a/source/blender/bmesh/operators/bmo_create.c b/source/blender/bmesh/operators/bmo_create.c index 6272c43d0c5..f2ba110b43d 100644 --- a/source/blender/bmesh/operators/bmo_create.c +++ b/source/blender/bmesh/operators/bmo_create.c @@ -896,9 +896,10 @@ void bmo_edgenet_fill_exec(BMesh *bm, BMOperator *op) BMEdge **edges = NULL; PathBase *pathbase; BLI_array_declare(edges); - int use_restrict = BMO_slot_bool_get(op, "use_restrict"); - int use_fill_check = BMO_slot_bool_get(op, "use_fill_check"); - const short mat_nr = BMO_slot_int_get(op, "mat_nr"); + int use_restrict = BMO_slot_bool_get(op, "use_restrict"); + int use_fill_check = BMO_slot_bool_get(op, "use_fill_check"); + const short mat_nr = BMO_slot_int_get(op, "mat_nr"); + const short use_smooth = BMO_slot_bool_get(op, "use_smooth"); int i, j, group = 0; unsigned int winding[2]; /* accumulte winding directions for each edge which has a face */ @@ -1049,6 +1050,9 @@ void bmo_edgenet_fill_exec(BMesh *bm, BMOperator *op) if (f && !BMO_elem_flag_test(bm, f, ELE_ORIG)) { BMO_elem_flag_enable(bm, f, FACE_NEW); f->mat_nr = mat_nr; + if (use_smooth) { + BM_elem_flag_enable(f, BM_ELEM_SMOOTH); + } } if (use_restrict) { @@ -1278,6 +1282,7 @@ void bmo_contextual_create_exec(BMesh *bm, BMOperator *op) BMFace *f; int totv = 0, tote = 0, totf = 0, amount; const short mat_nr = BMO_slot_int_get(op, "mat_nr"); + const short use_smooth = BMO_slot_bool_get(op, "use_smooth"); /* count number of each element type we were passe */ BMO_ITER (h, &oiter, bm, op, "geom", BM_VERT|BM_EDGE|BM_FACE) { @@ -1365,7 +1370,10 @@ void bmo_contextual_create_exec(BMesh *bm, BMOperator *op) BMO_slot_buffer_flag_enable(bm, &op2, "edgeout", BM_EDGE, ELE_NEW); BMO_op_finish(bm, &op2); - BMO_op_initf(bm, &op2, "edgenet_fill edges=%fe use_fill_check=%b mat_nr=%i", ELE_NEW, TRUE, mat_nr); + BMO_op_initf(bm, &op2, + "edgenet_fill edges=%fe use_fill_check=%b mat_nr=%i use_smooth=%b", + ELE_NEW, TRUE, mat_nr, use_smooth); + BMO_op_exec(bm, &op2); /* return if edge net create did something */ @@ -1469,6 +1477,9 @@ void bmo_contextual_create_exec(BMesh *bm, BMOperator *op) if (f) { BMO_elem_flag_enable(bm, f, ELE_OUT); f->mat_nr = mat_nr; + if (use_smooth) { + BM_elem_flag_enable(f, BM_ELEM_SMOOTH); + } } MEM_freeN(vert_arr); diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index a0fcae860f6..4b064d8bcc6 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -1020,14 +1020,37 @@ void MESH_OT_edge_collapse_loop(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } +static int edbm_add_edge_face__smooth_get(BMesh *bm) +{ + BMEdge *e; + BMIter iter; + + unsigned int vote_on_smooth[2] = {0, 0}; + + BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { + if (BM_elem_flag_test(e, BM_ELEM_SELECT) && e->l) + { + vote_on_smooth[BM_elem_flag_test_bool(e->l->f, BM_ELEM_SMOOTH)]++; + } + } + + return (vote_on_smooth[0] < vote_on_smooth[1]); +} + static int edbm_add_edge_face_exec(bContext *C, wmOperator *op) { BMOperator bmop; Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); - - if (!EDBM_op_init(em, &bmop, op, "contextual_create geom=%hfev mat_nr=%i", BM_ELEM_SELECT, em->mat_nr)) + const short use_smooth = edbm_add_edge_face__smooth_get(em->bm); + /* when this is used to dissolve we could avoid this, but checking isnt too slow */ + + if (!EDBM_op_init(em, &bmop, op, + "contextual_create geom=%hfev mat_nr=%i use_smooth=%b", + BM_ELEM_SELECT, em->mat_nr, use_smooth)) + { return OPERATOR_CANCELLED; + } BMO_op_exec(em->bm, &bmop); BMO_slot_buffer_hflag_enable(em->bm, &bmop, "faceout", BM_FACE, BM_ELEM_SELECT, TRUE); From 8765dfccf725770007e3b4e6b24199fe8377df71 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 14:14:58 +0000 Subject: [PATCH 011/158] style cleanup: correct typos --- source/blender/blenkernel/intern/mesh_validate.c | 4 ++-- source/blender/blenlib/intern/math_color_inline.c | 2 +- source/blender/blenlib/intern/scanfill.c | 2 +- source/blender/bmesh/intern/bmesh_marking.c | 2 +- source/blender/bmesh/intern/bmesh_mesh.c | 2 +- source/blender/bmesh/operators/bmo_dissolve.c | 2 +- source/blender/bmesh/operators/bmo_extrude.c | 2 +- source/blender/bmesh/operators/bmo_inset.c | 2 +- source/blender/bmesh/operators/bmo_utils.c | 2 +- source/blender/editors/curve/editcurve.c | 2 +- source/blender/editors/interface/view2d.c | 2 +- source/blender/editors/mesh/editmesh_rip.c | 2 +- source/blender/editors/mesh/editmesh_tools.c | 2 +- source/blender/editors/screen/screen_edit.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 2 +- source/blender/editors/util/undo.c | 2 +- source/blender/editors/uvedit/uvedit_ops.c | 2 +- source/blender/gpu/intern/gpu_extensions.c | 2 +- source/blender/gpu/intern/gpu_material.c | 4 ++-- source/blender/makesdna/DNA_key_types.h | 2 +- source/blender/makesdna/DNA_meshdata_types.h | 2 +- source/blender/makesrna/intern/rna_mesh.c | 4 ---- source/blender/windowmanager/intern/wm_operators.c | 2 +- 23 files changed, 24 insertions(+), 28 deletions(-) diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index c5c2060d5c0..aebbcd4208d 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -309,7 +309,7 @@ int BKE_mesh_validate_arrays(Mesh *mesh, prev_v = v; } } - if (v - prev_v > 1) { /* Don’t forget final verts! */ + if (v - prev_v > 1) { /* Don't forget final verts! */ PRINT(" poly %u is invalid, it multi-uses vertex %u (%u times)\n", sp->index, *prev_v, (int)(v - prev_v)); sp->invalid = TRUE; @@ -420,7 +420,7 @@ int BKE_mesh_validate_arrays(Mesh *mesh, /* DO NOT REMOVE ITS LOOPS!!! * As already invalid polys are at the end of the SortPoly list, the loops they * were the only users have already been tagged as "to remove" during previous - * iterations, and we don’t want to remove some loops that may be used by + * iterations, and we don't want to remove some loops that may be used by * another valid poly! */ } } diff --git a/source/blender/blenlib/intern/math_color_inline.c b/source/blender/blenlib/intern/math_color_inline.c index 1aebd8bda11..243e9fc8a57 100644 --- a/source/blender/blenlib/intern/math_color_inline.c +++ b/source/blender/blenlib/intern/math_color_inline.c @@ -78,7 +78,7 @@ MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[ F4TOCHAR4(srgb_f, srgb); } -/* predivide versions to work on associated/premultipled alpha. if this should +/* predivide versions to work on associated/pre-multipled alpha. if this should * be done or not depends on the background the image will be composited over, * ideally you would never do color space conversion on an image with alpha * because it is ill defined */ diff --git a/source/blender/blenlib/intern/scanfill.c b/source/blender/blenlib/intern/scanfill.c index 20dbf29f6bc..25850e14ae7 100644 --- a/source/blender/blenlib/intern/scanfill.c +++ b/source/blender/blenlib/intern/scanfill.c @@ -897,7 +897,7 @@ int BLI_edgefill_ex(ScanFillContext *sf_ctx, const short do_quad_tri_speedup, co /* get first vertex with no poly number */ if (eve->poly_nr == 0) { poly++; - /* now a sortof select connected */ + /* now a sort of select connected */ ok = 1; eve->poly_nr = poly; diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index 7b6d562658e..b0a39326fe8 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -854,7 +854,7 @@ void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hfla /* note, better not attempt a fast path for selection as done with de-select * because hidden geometry and different selection modes can give different results, - * we could ofcourse check for no hiddent faces and then use quicker method but its not worth it. */ + * we could of course check for no hiddent faces and then use quicker method but its not worth it. */ for (i = 0; i < 3; i++) { if (htype & flag_types[i]) { diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 454ab58d720..0a5e3bab804 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -718,7 +718,7 @@ void BM_mesh_remap(BMesh *bm, int *vert_idx, int *edge_idx, int *face_idx) } } - /* Edges' pointers, only vert pointers (as we don’t mess with loops!)... */ + /* Edges' pointers, only vert pointers (as we don't mess with loops!)... */ if (vptr_map) { BM_ITER_MESH (ed, &iter, bm, BM_EDGES_OF_MESH) { /* printf("Edge v1: %p -> %p\n", ed->v1, BLI_ghash_lookup(vptr_map, (const void*)ed->v1));*/ diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c index f0e8ad81d07..a6d9d26f7ae 100644 --- a/source/blender/bmesh/operators/bmo_dissolve.c +++ b/source/blender/bmesh/operators/bmo_dissolve.c @@ -294,7 +294,7 @@ static int test_extra_verts(BMesh *bm, BMVert *v) BMEdge *e; int found; - /* test faces around verts for verts that would be wronly killed + /* test faces around verts for verts that would be wrongly killed * by dissolve faces. */ f = BM_iter_new(&iter, bm, BM_FACES_OF_VERT, v); for ( ; f; f = BM_iter_step(&iter)) { diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c index 73997c774af..db665c06f82 100644 --- a/source/blender/bmesh/operators/bmo_extrude.c +++ b/source/blender/bmesh/operators/bmo_extrude.c @@ -134,7 +134,7 @@ static void bm_extrude_copy_face_loop_attributes(BMesh *bm, BMFace *f, BMEdge *e BMLoop *l_dst_a = BM_face_edge_share_loop(f, e_a); BMLoop *l_dst_b = BM_face_edge_share_loop(f, e_b); /* we could only have a face on one-or the other edges, - * chech if either side of the face has an adjacent face */ + * check if either side of the face has an adjacent face */ BMLoop *l_src_1; BMLoop *l_src_2; diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index c6fc173148f..1e131fa4b7b 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -362,7 +362,7 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) * | | * * note, the fact we are doing location comparisons on verts that are moved about - * doesn’t matter because the direction will remain the same in this case. + * doesn't matter because the direction will remain the same in this case. */ BMEdge *e_other; diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index 87aba98836d..818eedffc00 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -461,7 +461,7 @@ void bmo_vertexsmooth_exec(BMesh *bm, BMOperator *op) /* * compute the fake surface of an ngon * This is done by decomposing the ngon into triangles who share the centroid of the ngon - * while this method is far from being exact, it should garantee an invariance. + * while this method is far from being exact, it should guarantee an invariance. * * NOTE: This should probably go to bmesh_polygon.c */ diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 775b28bab5b..4262b3d67d4 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -4395,7 +4395,7 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) newnu= (Nurb*)MEM_callocN(sizeof(Nurb), "addvert_Nurb newnu"); if (!nu) { - /* no selected sement -- create new one which is BEZIER tpye + /* no selected segment -- create new one which is BEZIER type * type couldn't be determined from Curve bt could be changed * in the future, so shouldn't make much headache */ newnu->type= CU_BEZIER; diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index 7eac3050b97..ed010dc973a 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -159,7 +159,7 @@ static void view2d_masks(View2D *v2d) /* Initialize all relevant View2D data (including view rects if first time) and/or refresh mask sizes after view resize * - for some of these presets, it is expected that the region will have defined some - * additional settings necessary for the customisation of the 2D viewport to its requirements + * additional settings necessary for the customization of the 2D viewport to its requirements * - this function should only be called from region init() callbacks, where it is expected that * this is called before UI_view2d_size_update(), as this one checks that the rects are properly initialized. */ diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 946eaf8d3c8..fbbe376a18f 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -635,7 +635,7 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) BMLoop *l_a = e2->l; BMLoop *l_b = l_a->radial_next; - /* find the best face to follow, this wat the edge won't point away from + /* find the best face to follow, this what the edge won't point away from * the mouse when there are more then 4 (takes the shortest face fan around) */ l = (edbm_rip_edge_side_measure(e2, l_a, ar, projectMat, fmval) < edbm_rip_edge_side_measure(e2, l_b, ar, projectMat, fmval)) ? l_a : l_b; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 4b064d8bcc6..e40a60203af 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -3624,7 +3624,7 @@ void MESH_OT_select_mirror(wmOperatorType *ot) /* qsort routines. not sure how to make these * work, since we aren't using linked lists for - * geometry anymore. might need a sortof "swap" + * geometry anymore. might need a sort of "swap" * function for bmesh elements. */ /* TODO All this section could probably use a refresh... diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 1b56feb09d1..03d8b3d3e9c 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1827,7 +1827,7 @@ void ED_update_for_newframe(Main *bmain, Scene *scene, bScreen *screen, int UNUS //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ /* update animated image textures for gpu, etc, - * call before scene_update_for_newframe so modifiers with textuers don't lag 1 frame */ + * call before scene_update_for_newframe so modifiers with textures don't lag 1 frame */ ED_image_update_frame(bmain, scene->r.cfra); ED_clip_update_frame(bmain, scene->r.cfra); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index bee4f0b754d..5a64c30b79d 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -3041,7 +3041,7 @@ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, Object *ob, cache->pen_flip = RNA_boolean_get(ptr, "pen_flip"); RNA_float_get_array(ptr, "mouse", cache->mouse); - /* XXX: Use preassure value from first brush step for brushes which don't + /* XXX: Use pressure value from first brush step for brushes which don't * support strokes (grab, thumb). They depends on initial state and * brush coord/pressure/etc. * It's more an events design issue, which doesn't split coordinate/pressure/angle diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index 5f0fc9d105c..a43d549cba1 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -459,7 +459,7 @@ static EnumPropertyItem *rna_undo_itemf(bContext *C, int undosys, int *totitem) if (name) { item_tmp.identifier = name; - /* XXX This won’t work with non-default contexts (e.g. operators) :/ */ + /* XXX This won't work with non-default contexts (e.g. operators) :/ */ item_tmp.name = IFACE_(name); if (active) item_tmp.icon = ICON_RESTRICT_VIEW_OFF; diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 969fa684c80..a53a42b616b 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -1510,7 +1510,7 @@ static void weld_align_uv(bContext *C, int tool) /* Projection of point (x, y) over line (x1, y1, x2, y2) along X axis: * new_y = (y2 - y1) / (x2 - x1) * (x - x1) + y1 * Maybe this should be a BLI func? Or is it already existing? - * Could use interp_v2_v2v2, but not sure it’s worth it here...*/ + * Could use interp_v2_v2v2, but not sure it's worth it here...*/ if (tool == 't') luv->uv[0] = a * (luv->uv[1] - uv_start[1]) + uv_start[0]; else if (tool == 'u') diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 605b2d8901e..6c30c95f355 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -59,7 +59,7 @@ /* extensions used: * - texture border clamp: 1.3 core - * - fragement shader: 2.0 core + * - fragment shader: 2.0 core * - framebuffer object: ext specification * - multitexture 1.3 core * - arb non power of two: 2.0 core diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 56bee29e436..ab5f2040175 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -1830,8 +1830,8 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma) } } - // now link fragement shader with library shader - // TBD: remove the function that are not used in the main function + /* now link fragment shader with library shader */ + /* TBD: remove the function that are not used in the main function */ liblen = (pass->libcode) ? strlen(pass->libcode) : 0; fraglen = strlen(pass->fragmentcode); shader->fragment = (char *)MEM_mallocN(liblen+fraglen+1, "GPUFragShader"); diff --git a/source/blender/makesdna/DNA_key_types.h b/source/blender/makesdna/DNA_key_types.h index 847d0b2cbbe..8494e663fbe 100644 --- a/source/blender/makesdna/DNA_key_types.h +++ b/source/blender/makesdna/DNA_key_types.h @@ -52,7 +52,7 @@ typedef struct KeyBlock { short relative; /* relative == 0 means first key is reference, otherwise the index of Key->blocks */ short flag; - int totelem; /* total number if items in the keyblock (compare with mesh/curve verts to chech we match) */ + int totelem; /* total number if items in the keyblock (compare with mesh/curve verts to check we match) */ int uid; /* for meshes only, match the unique number with the customdata layer */ void *data; /* array of shape key values, size is (Key->elemsize * KeyBlock->totelem) */ diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index 2de89a31ab0..9891469c29b 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -257,7 +257,7 @@ typedef struct MRecast { /* medge->flag (1=SELECT)*/ #define ME_EDGEDRAW (1<<1) #define ME_SEAM (1<<2) -#define ME_FGON (1<<3) +/* #define ME_FGON (1<<3) */ /* no longer used (now we have ngons) */ /* reserve 16 for ME_HIDE */ #define ME_EDGERENDER (1<<5) #define ME_LOOSEEDGE (1<<7) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 8e1457499ca..d6c240b29c1 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1433,10 +1433,6 @@ static void rna_def_medge(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_LOOSEEDGE); RNA_def_property_ui_text(prop, "Loose", "Loose edge"); - prop = RNA_def_property(srna, "is_fgon", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FGON); - RNA_def_property_ui_text(prop, "Fgon", "Fgon edge"); - prop = RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_int_funcs(prop, "rna_MeshEdge_index_get", NULL, NULL); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 028f7b5c41f..70feccad94a 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -2240,7 +2240,7 @@ static int wm_console_toggle_op(bContext *UNUSED(C), wmOperator *UNUSED(op)) static void WM_OT_console_toggle(wmOperatorType *ot) { /* XXX Have to mark these for xgettext, as under linux they do not exists... - * And even worth, have to give the context as text, as xgettext doesn’t expand macros. :( */ + * And even worth, have to give the context as text, as xgettext doesn't expand macros. :( */ ot->name = CTX_N_("Operator"/* BLF_I18NCONTEXT_OPERATOR_DEFAULT */, "Toggle System Console"); ot->idname = "WM_OT_console_toggle"; ot->description = N_("Toggle System Console"); From b56aabf815dd60827da81574501ea1d12ce3a38b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 15:11:03 +0000 Subject: [PATCH 012/158] style cleanup: multi-line if statements. --- .../blender/blenkernel/intern/cdderivedmesh.c | 16 +++++------ source/blender/blenkernel/intern/cloth.c | 10 +++---- source/blender/blenkernel/intern/collision.c | 4 +-- source/blender/blenkernel/intern/customdata.c | 20 ++++++------- .../blender/blenkernel/intern/dynamicpaint.c | 6 ++-- source/blender/blenkernel/intern/image.c | 5 ++-- source/blender/blenkernel/intern/implicit.c | 4 +-- source/blender/blenkernel/intern/modifier.c | 2 +- source/blender/blenkernel/intern/object.c | 12 +++++--- source/blender/blenkernel/intern/particle.c | 18 ++++++++---- .../blenkernel/intern/particle_system.c | 26 ++++++++++------- source/blender/blenkernel/intern/pointcache.c | 9 ++++-- source/blender/blenkernel/intern/seqeffects.c | 5 ++-- source/blender/blenkernel/intern/sequencer.c | 8 +++--- source/blender/blenkernel/intern/shrinkwrap.c | 4 +-- .../blenkernel/intern/writeframeserver.c | 3 +- source/blender/blenlib/intern/BLI_kdopbvh.c | 10 ++++--- source/blender/blenlib/intern/rand.c | 2 +- source/blender/blenloader/intern/readfile.c | 6 ++-- source/blender/editors/curve/editcurve.c | 9 ++++-- .../editors/interface/interface_templates.c | 4 +-- .../blender/editors/physics/particle_edit.c | 3 +- source/blender/editors/render/render_opengl.c | 2 +- .../editors/sculpt_paint/paint_image.c | 4 +-- .../blender/editors/sculpt_paint/sculpt_uv.c | 5 ++-- source/blender/editors/space_file/file_draw.c | 3 +- source/blender/editors/space_file/filelist.c | 28 +++++++++++-------- .../editors/space_logic/logic_window.c | 12 ++++---- source/blender/editors/space_node/node_edit.c | 17 +++++++---- .../space_sequencer/sequencer_select.c | 8 ++++-- .../blender/editors/space_view3d/drawobject.c | 4 +-- .../editors/space_view3d/view3d_header.c | 5 +--- .../editors/transform/transform_conversions.c | 3 +- .../editors/transform/transform_generics.c | 3 +- source/blender/imbuf/intern/anim_movie.c | 14 ++++++---- source/blender/imbuf/intern/util.c | 28 ++++++++++--------- source/blender/makesdna/intern/makesdna.c | 5 ++-- source/blender/modifiers/intern/MOD_array.c | 3 +- source/blender/modifiers/intern/MOD_explode.c | 8 +++--- .../blender/modifiers/intern/MOD_shrinkwrap.c | 8 ++++-- .../modifiers/intern/MOD_weightvg_util.c | 8 +++--- .../blender/render/intern/source/shadeinput.c | 6 ++-- .../render/intern/source/shadeoutput.c | 5 ++-- source/blender/render/intern/source/strand.c | 12 ++++++-- .../render/intern/source/volume_precache.c | 4 +-- 45 files changed, 213 insertions(+), 168 deletions(-) diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 2dc95effdd7..4a852bb0233 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -424,17 +424,18 @@ static void cdDM_drawEdges(DerivedMesh *dm, int drawLooseEdges, int drawAllEdges else { /* use OpenGL VBOs or Vertex Arrays instead for better, faster rendering */ int prevstart = 0; int prevdraw = 1; - int draw = 1; + int draw = TRUE; GPU_edge_setup(dm); - if ( !GPU_buffer_legacy(dm) ) { + if (!GPU_buffer_legacy(dm)) { for (i = 0; i < dm->numEdgeData; i++, medge++) { - if ((drawAllEdges || (medge->flag&ME_EDGEDRAW)) - && (drawLooseEdges || !(medge->flag&ME_LOOSEEDGE))) { - draw = 1; + if ((drawAllEdges || (medge->flag & ME_EDGEDRAW)) && + (drawLooseEdges || !(medge->flag & ME_LOOSEEDGE))) + { + draw = TRUE; } else { - draw = 0; + draw = FALSE; } if ( prevdraw != draw ) { if ( prevdraw > 0 && (i-prevstart) > 0 ) { @@ -539,8 +540,7 @@ static void cdDM_drawFacesSolid(DerivedMesh *dm, new_matnr = mface->mat_nr + 1; new_shademodel = (mface->flag & ME_SMOOTH)?GL_SMOOTH:GL_FLAT; - if (new_glmode != glmode || new_matnr != matnr - || new_shademodel != shademodel) { + if (new_glmode != glmode || new_matnr != matnr || new_shademodel != shademodel) { glEnd(); drawCurrentMat = setMaterial(matnr = new_matnr, NULL); diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 7dedd71b2e0..a0c273cf962 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -446,9 +446,9 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived BKE_ptcache_id_time(&pid, scene, framenr, &startframe, &endframe, ×cale); clmd->sim_parms->timescale= timescale; - if (clmd->sim_parms->reset - || (framenr == (startframe - clmd->sim_parms->preroll) && clmd->sim_parms->preroll != 0) - || (clmd->clothObject && dm->getNumVerts(dm) != clmd->clothObject->numverts)) + if (clmd->sim_parms->reset || + (framenr == (startframe - clmd->sim_parms->preroll) && clmd->sim_parms->preroll != 0) || + (clmd->clothObject && dm->getNumVerts(dm) != clmd->clothObject->numverts)) { clmd->sim_parms->reset = 0; cache->flag |= PTCACHE_OUTDATED; @@ -1176,8 +1176,8 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) // check for existing spring // check also if startpoint is equal to endpoint - if ( !BLI_edgehash_haskey ( edgehash, MIN2(tspring2->ij, index2), MAX2(tspring2->ij, index2) ) - && ( index2!=tspring2->ij ) ) + if (!BLI_edgehash_haskey(edgehash, MIN2(tspring2->ij, index2), MAX2(tspring2->ij, index2)) && + (index2 != tspring2->ij)) { spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index f6a6ef068d6..7195fb9c425 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -2502,8 +2502,8 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL ) { - if ( ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED ) - && ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) ) + if ( ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED ) && + ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) ) { continue; } diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 29eea3bb576..7cc7a82df66 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -1810,9 +1810,9 @@ void CustomData_copy_data(const CustomData *source, CustomData *dest, /* find the first dest layer with type >= the source type * (this should work because layers are ordered by type) */ - while (dest_i < dest->totlayer - && dest->layers[dest_i].type < source->layers[src_i].type) + while (dest_i < dest->totlayer && dest->layers[dest_i].type < source->layers[src_i].type) { ++dest_i; + } /* if there are no more dest layers, we're done */ if (dest_i >= dest->totlayer) return; @@ -1901,9 +1901,9 @@ void CustomData_interp(const CustomData *source, CustomData *dest, /* find the first dest layer with type >= the source type * (this should work because layers are ordered by type) */ - while (dest_i < dest->totlayer - && dest->layers[dest_i].type < source->layers[src_i].type) + while (dest_i < dest->totlayer && dest->layers[dest_i].type < source->layers[src_i].type) { ++dest_i; + } /* if there are no more dest layers, we're done */ if (dest_i >= dest->totlayer) return; @@ -2272,9 +2272,9 @@ void CustomData_bmesh_copy_data(const CustomData *source, CustomData *dest, /* find the first dest layer with type >= the source type * (this should work because layers are ordered by type) */ - while (dest_i < dest->totlayer - && dest->layers[dest_i].type < source->layers[src_i].type) + while (dest_i < dest->totlayer && dest->layers[dest_i].type < source->layers[src_i].type) { ++dest_i; + } /* if there are no more dest layers, we're done */ if (dest_i >= dest->totlayer) return; @@ -2504,9 +2504,9 @@ void CustomData_to_bmesh_block(const CustomData *source, CustomData *dest, /* find the first dest layer with type >= the source type * (this should work because layers are ordered by type) */ - while (dest_i < dest->totlayer - && dest->layers[dest_i].type < source->layers[src_i].type) + while (dest_i < dest->totlayer && dest->layers[dest_i].type < source->layers[src_i].type) { ++dest_i; + } /* if there are no more dest layers, we're done */ if (dest_i >= dest->totlayer) return; @@ -2547,9 +2547,9 @@ void CustomData_from_bmesh_block(const CustomData *source, CustomData *dest, /* find the first dest layer with type >= the source type * (this should work because layers are ordered by type) */ - while (dest_i < dest->totlayer - && dest->layers[dest_i].type < source->layers[src_i].type) + while (dest_i < dest->totlayer && dest->layers[dest_i].type < source->layers[src_i].type) { ++dest_i; + } /* if there are no more dest layers, we're done */ if (dest_i >= dest->totlayer) return; diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index 6aad98d293e..943c8a20990 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -1844,8 +1844,7 @@ static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, Scene *scene BKE_ptcache_id_time(&pid, scene, (float)scene->r.cfra, NULL, NULL, NULL); /* reset non-baked cache at first frame */ - if ((int)scene->r.cfra == surface->start_frame && !(cache->flag & PTCACHE_BAKED)) - { + if ((int)scene->r.cfra == surface->start_frame && !(cache->flag & PTCACHE_BAKED)) { cache->flag |= PTCACHE_REDO_NEEDED; BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); cache->flag &= ~PTCACHE_REDO_NEEDED; @@ -1856,8 +1855,7 @@ static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, Scene *scene BKE_ptcache_validate(cache, (int)scene->r.cfra); } /* if read failed and we're on surface range do recalculate */ - else if ((int)scene->r.cfra == current_frame - && !(cache->flag & PTCACHE_BAKED)) { + else if ((int)scene->r.cfra == current_frame && !(cache->flag & PTCACHE_BAKED)) { /* calculate surface frame */ canvas->flags |= MOD_DPAINT_BAKING; dynamicPaint_calculateFrame(surface, scene, ob, current_frame); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 3b91afbc126..27779ef8107 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1148,8 +1148,9 @@ int BKE_add_image_extension(char *string, const char imtype) if (extension) { /* prefer this in many cases to avoid .png.tga, but in certain cases it breaks */ /* remove any other known image extension */ - if (BLI_testextensie_array(string, imb_ext_image) - || (G.have_quicktime && BLI_testextensie_array(string, imb_ext_image_qt))) { + if (BLI_testextensie_array(string, imb_ext_image) || + (G.have_quicktime && BLI_testextensie_array(string, imb_ext_image_qt))) + { return BLI_replace_extension(string, FILE_MAX, extension); } else { diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c index 23aa03b0331..0bb9426730e 100644 --- a/source/blender/blenkernel/intern/implicit.c +++ b/source/blender/blenkernel/intern/implicit.c @@ -1260,8 +1260,8 @@ DO_INLINE void cloth_calc_spring_force(ClothModifierData *clmd, ClothSpring *s, /* if (length>L) { - if ((clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED) - && ((((length-L)*100.0f/L) > clmd->sim_parms->maxspringlen))) // cut spring! + if ((clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED) && + ((((length-L)*100.0f/L) > clmd->sim_parms->maxspringlen))) // cut spring! { s->flags |= CSPRING_FLAG_DEACTIVATE; return; diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 6c855b8f242..12aa6232cb0 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -76,7 +76,7 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type) types_init= 0; } - /* type unsigned, no need to chech < 0 */ + /* type unsigned, no need to check < 0 */ if (type < NUM_MODIFIER_TYPES && types[type]->name[0] != '\0') { return types[type]; } diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 3271a623584..bc9411b7e02 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2631,9 +2631,11 @@ void object_handle_update(Scene *scene, Object *ob) if (psys_check_enabled(ob, psys)) { /* check use of dupli objects here */ if (psys->part && (psys->part->draw_as == PART_DRAW_REND || G.rendering) && - ((psys->part->ren_as == PART_DRAW_OB && psys->part->dup_ob) - || (psys->part->ren_as == PART_DRAW_GR && psys->part->dup_group))) + ((psys->part->ren_as == PART_DRAW_OB && psys->part->dup_ob) || + (psys->part->ren_as == PART_DRAW_GR && psys->part->dup_group))) + { ob->transflag |= OB_DUPLIPARTS; + } particle_system_update(scene, ob, psys); psys= psys->next; @@ -2664,9 +2666,11 @@ void object_handle_update(Scene *scene, Object *ob) BKE_ptcache_ids_from_object(&pidlist, ob, scene, MAX_DUPLI_RECUR); for (pid=pidlist.first; pid; pid=pid->next) { - if ((pid->cache->flag & PTCACHE_BAKED) - || (pid->cache->flag & PTCACHE_QUICK_CACHE)==0) + if ((pid->cache->flag & PTCACHE_BAKED) || + (pid->cache->flag & PTCACHE_QUICK_CACHE) == 0) + { continue; + } if (pid->cache->flag & PTCACHE_OUTDATED || (pid->cache->flag & PTCACHE_SIMULATION_VALID)==0) { scene->physics_settings.quick_cache_step = diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 2eff664bc1a..414677bfc6e 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -4276,10 +4276,13 @@ int psys_get_particle_state(ParticleSimulationData *sim, int p, ParticleKey *sta state->time = psys_get_child_time(psys, cpa, cfra, NULL, NULL); - if (!always) - if ((state->time < 0.0f && !(part->flag & PART_UNBORN)) - || (state->time > 1.0f && !(part->flag & PART_DIED))) + if (!always) { + if ((state->time < 0.0f && !(part->flag & PART_UNBORN)) || + (state->time > 1.0f && !(part->flag & PART_DIED))) + { return 0; + } + } state->time= (cfra - (part->sta + (part->end - part->sta) * PSYS_FRAND(p + 23))) / (part->lifetime * PSYS_FRAND(p + 24)); @@ -4296,10 +4299,13 @@ int psys_get_particle_state(ParticleSimulationData *sim, int p, ParticleKey *sta } if (pa) { - if (!always) - if ((cfra < pa->time && (part->flag & PART_UNBORN)==0) - || (cfra > pa->dietime && (part->flag & PART_DIED)==0)) + if (!always) { + if ((cfra < pa->time && (part->flag & PART_UNBORN) == 0) || + (cfra > pa->dietime && (part->flag & PART_DIED) == 0)) + { return 0; + } + } cfra = MIN2(cfra, pa->dietime); } diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index ee19b38e02b..4ce24953c89 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -126,10 +126,12 @@ static int psys_get_current_display_percentage(ParticleSystem *psys) { ParticleSettings *part=psys->part; - if ((psys->renderdata && !particles_are_dynamic(psys)) /* non-dynamic particles can be rendered fully */ - || (part->child_nbr && part->childtype) /* display percentage applies to children */ - || (psys->pointcache->flag & PTCACHE_BAKING)) /* baking is always done with full amount */ + if ((psys->renderdata && !particles_are_dynamic(psys)) || /* non-dynamic particles can be rendered fully */ + (part->child_nbr && part->childtype) || /* display percentage applies to children */ + (psys->pointcache->flag & PTCACHE_BAKING)) /* baking is always done with full amount */ + { return 100; + } return psys->part->disp; } @@ -1862,9 +1864,11 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime, /* and gravity in r_ve */ bpa->gravity[0] = bpa->gravity[1] = 0.0f; bpa->gravity[2] = -1.0f; - if ((sim->scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY) - && sim->scene->physics_settings.gravity[2]!=0.0f) + if ((sim->scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY) && + (sim->scene->physics_settings.gravity[2] != 0.0f)) + { bpa->gravity[2] = sim->scene->physics_settings.gravity[2]; + } bpa->data.health = part->boids->health; bpa->data.mode = eBoidMode_InAir; @@ -2683,9 +2687,10 @@ static void basic_integrate(ParticleSimulationData *sim, int p, float dfra, floa efdata.sim = sim; /* add global acceleration (gravitation) */ - if (psys_uses_gravity(sim) + if (psys_uses_gravity(sim) && /* normal gravity is too strong for hair so it's disabled by default */ - && (part->type != PART_HAIR || part->effector_weights->flag & EFF_WEIGHT_DO_HAIR)) { + (part->type != PART_HAIR || part->effector_weights->flag & EFF_WEIGHT_DO_HAIR)) + { zero_v3(gr); madd_v3_v3fl(gr, sim->scene->physics_settings.gravity, part->effector_weights->global_gravity * efdata.ptex.gravity); gravity = gr; @@ -3892,11 +3897,12 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) } /* only reset unborn particles if they're shown or if the particle is born soon*/ - if (pa->alive==PARS_UNBORN - && (part->flag & PART_UNBORN || cfra + psys->pointcache->step > pa->time)) + if (pa->alive==PARS_UNBORN && (part->flag & PART_UNBORN || (cfra + psys->pointcache->step > pa->time))) { reset_particle(sim, pa, dtime, cfra); - else if (part->phystype == PART_PHYS_NO) + } + else if (part->phystype == PART_PHYS_NO) { reset_particle(sim, pa, dtime, cfra); + } if (ELEM(pa->alive, PARS_ALIVE, PARS_DYING)==0 || (pa->flag & (PARS_UNEXIST|PARS_NO_DISP))) pa->state.time = -1.f; diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 100bd485c36..dbcef9ad4c8 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -821,9 +821,12 @@ void BKE_ptcache_id_from_particles(PTCacheID *pid, Object *ob, ParticleSystem *p if (psys->part->flag & PART_ROTATIONS) { pid->data_types|= (1<part->rotmode!=PART_ROT_VEL - || psys->part->avemode==PART_AVE_RAND || psys->part->avefac!=0.0f) - pid->data_types|= (1<part->rotmode != PART_ROT_VEL || + psys->part->avemode == PART_AVE_RAND || + psys->part->avefac != 0.0f) + { + pid->data_types |= (1 << BPHYS_DATA_AVELOCITY); + } } pid->info_types= (1<flag & SEQ_USE_EFFECT_DEFAULT_FADE) { - if (seq->seq1->enddisp != seq->seq1->start - && seq->seq1->len != 0) { + if ((seq->seq1->enddisp != seq->seq1->start) && + (seq->seq1->len != 0)) + { fallback_fac = (float) seq->seq1->len / (float) (seq->seq1->enddisp - seq->seq1->start); flags = SEQ_SPEED_INTEGRATE; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e27ff4ddeda..97edba7d9ef 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3067,10 +3067,10 @@ void seq_tx_set_final_right(Sequence *seq, int val) * since they work a bit differently to normal image seq's (during transform) */ int seq_single_check(Sequence *seq) { - return (seq->len == 1 && ( - seq->type == SEQ_IMAGE - || ((seq->type & SEQ_EFFECT) && - get_sequence_effect_num_inputs(seq->type) == 0))); + return ((seq->len == 1) && + (seq->type == SEQ_IMAGE || + ((seq->type & SEQ_EFFECT) && + get_sequence_effect_num_inputs(seq->type) == 0))); } /* check if the selected seq's reference unselected seq's */ diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c index 6513399c962..4006837efd6 100644 --- a/source/blender/blenkernel/intern/shrinkwrap.c +++ b/source/blender/blenkernel/intern/shrinkwrap.c @@ -325,8 +325,8 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) } //After sucessufuly build the trees, start projection vertexs - if ( bvhtree_from_mesh_faces(&treeData, calc->target, 0.0, 4, 6) - && (auxMesh == NULL || bvhtree_from_mesh_faces(&auxData, auxMesh, 0.0, 4, 6))) + if (bvhtree_from_mesh_faces(&treeData, calc->target, 0.0, 4, 6) && + (auxMesh == NULL || bvhtree_from_mesh_faces(&auxData, auxMesh, 0.0, 4, 6))) { #ifndef __APPLE__ diff --git a/source/blender/blenkernel/intern/writeframeserver.c b/source/blender/blenkernel/intern/writeframeserver.c index 4bb9c497980..62e921f3311 100644 --- a/source/blender/blenkernel/intern/writeframeserver.c +++ b/source/blender/blenkernel/intern/writeframeserver.c @@ -206,8 +206,7 @@ static int handle_request(RenderData *rd, char * req) *p = 0; - if (strcmp(path, "/index.html") == 0 - || strcmp(path, "/") == 0) { + if (strcmp(path, "/index.html") == 0 || strcmp(path, "/") == 0) { safe_puts(index_page); return -1; } diff --git a/source/blender/blenlib/intern/BLI_kdopbvh.c b/source/blender/blenlib/intern/BLI_kdopbvh.c index d43f8ae735b..2cc67b3f0aa 100644 --- a/source/blender/blenlib/intern/BLI_kdopbvh.c +++ b/source/blender/blenlib/intern/BLI_kdopbvh.c @@ -1328,8 +1328,8 @@ static void bfs_find_nearest(BVHNearestData *data, BVHNode *node) else { //adjust heap size - if (heap_size >= max_heap_size - && ADJUST_MEMORY(default_heap, (void**)&heap, heap_size+1, &max_heap_size, sizeof(heap[0])) == FALSE) + if ((heap_size >= max_heap_size) && + ADJUST_MEMORY(default_heap, (void**)&heap, heap_size+1, &max_heap_size, sizeof(heap[0])) == FALSE) { printf("WARNING: bvh_find_nearest got out of memory\n"); @@ -1429,9 +1429,11 @@ static float ray_nearest_hit(BVHRayCastData *data, float *bv) if (data->ray_dot_axis[i] == 0.0f) { //axis aligned ray - if (data->ray.origin[i] < bv[0] - data->ray.radius - || data->ray.origin[i] > bv[1] + data->ray.radius) + if (data->ray.origin[i] < bv[0] - data->ray.radius || + data->ray.origin[i] > bv[1] + data->ray.radius) + { return FLT_MAX; + } } else { diff --git a/source/blender/blenlib/intern/rand.c b/source/blender/blenlib/intern/rand.c index 2e722c2a135..b2e6cabec57 100644 --- a/source/blender/blenlib/intern/rand.c +++ b/source/blender/blenlib/intern/rand.c @@ -119,7 +119,7 @@ void rng_shuffleArray(RNG *rng, void *data, int elemSize, int numElems) temp = malloc(elemSize); - /* XXX Shouldn’t it rather be "while (i--) {" ? + /* XXX Shouldn't it rather be "while (i--) {" ? * Else we have no guaranty first (0) element has a chance to be shuffled... --mont29 */ while (--i) { int j = rng_getInt(rng)%numElems; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a49aca3c8dc..74988546a42 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11231,9 +11231,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* Add default gravity to scenes */ for (sce= main->scene.first; sce; sce= sce->id.next) { - if ((sce->physics_settings.flag & PHYS_GLOBAL_GRAVITY) == 0 - && len_v3(sce->physics_settings.gravity) == 0.0f) { - + if ((sce->physics_settings.flag & PHYS_GLOBAL_GRAVITY) == 0 && + len_v3(sce->physics_settings.gravity) == 0.0f) + { sce->physics_settings.gravity[0] = sce->physics_settings.gravity[1] = 0.0f; sce->physics_settings.gravity[2] = -9.81f; sce->physics_settings.flag = PHYS_GLOBAL_GRAVITY; diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 4262b3d67d4..c19041b817e 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -2580,9 +2580,12 @@ static short nurb_has_selected_cps(ListBase *editnurb) bezt= nu->bezt; while (a--) { if (bezt->hide==0) { - if ((bezt->f1 & SELECT) - || (bezt->f2 & SELECT) - || (bezt->f3 & SELECT)) return 1; + if ((bezt->f1 & SELECT) || + (bezt->f2 & SELECT) || + (bezt->f3 & SELECT)) + { + return 1; + } } bezt++; } diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 9a02b858731..d0f760d16fb 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -763,8 +763,8 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, /* mode enabling buttons */ uiBlockBeginAlign(block); /* Softbody not allowed in this situation, enforce! */ - if ( ((md->type != eModifierType_Softbody && md->type != eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) - && (md->type != eModifierType_Surface) ) + if (((md->type != eModifierType_Softbody && md->type != eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && + (md->type != eModifierType_Surface) ) { uiItemR(row, &ptr, "show_render", 0, "", ICON_NONE); uiItemR(row, &ptr, "show_viewport", 0, "", ICON_NONE); diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 15b7294440a..5f22165176b 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3471,8 +3471,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) pset->flag &= ~PE_LOCK_FIRST; if (((pset->brushtype == PE_BRUSH_ADD) ? - (sqrt(dx * dx + dy * dy) > pset->brush[PE_BRUSH_ADD].step) : (dx != 0 || dy != 0)) - || bedit->first) { + (sqrt(dx * dx + dy * dy) > pset->brush[PE_BRUSH_ADD].step) : (dx != 0 || dy != 0)) || bedit->first) { PEData data= bedit->data; view3d_operator_needs_opengl(C); diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 2467d4327ed..f9737b02a01 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -471,7 +471,7 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) Object *camera = NULL; /* update animated image textures for gpu, etc, - * call before scene_update_for_newframe so modifiers with textuers don't lag 1 frame */ + * call before scene_update_for_newframe so modifiers with textures don't lag 1 frame */ ED_image_update_frame(bmain, scene->r.cfra); /* go to next frame */ diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 9f7cc7a75b1..d381aa5b536 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -5217,8 +5217,8 @@ static void brush_drawcursor(bContext *C, int x, int y, void *UNUSED(customdata) float alpha = 0.5f; ts = scene->toolsettings; - use_zoom = get_imapaint_zoom(C, &zoomx, &zoomy) - && !(ts->use_uv_sculpt && (scene->basact->object->mode == OB_MODE_EDIT)); + use_zoom = get_imapaint_zoom(C, &zoomx, &zoomy) && + !(ts->use_uv_sculpt && (scene->basact->object->mode == OB_MODE_EDIT)); if (use_zoom) { pixel_size = MAX2(size * zoomx, size * zoomy); diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c index b4f8f689a6a..fd1c6984346 100644 --- a/source/blender/editors/sculpt_paint/sculpt_uv.c +++ b/source/blender/editors/sculpt_paint/sculpt_uv.c @@ -537,8 +537,9 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, wmEvent /* Count 'unique' uvs */ for (i = 0; i < data->elementMap->totalUVs; i++) { - if (data->elementMap->buf[i].separate - && (!do_island_optimization || data->elementMap->buf[i].island == island_index)) { + if (data->elementMap->buf[i].separate && + (!do_island_optimization || data->elementMap->buf[i].island == island_index)) + { counter++; } } diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 87f32fe4eb8..193fa2d2c65 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -155,8 +155,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) btn_margin + UI_GetStringWidth(params->title)); } - if (available_w <= loadbutton + separator + input_minw - || params->title[0] == 0) { + if (available_w <= loadbutton + separator + input_minw || params->title[0] == 0) { loadbutton = 0; } else { diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index d7c4056431f..45a271cc7e9 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -767,16 +767,18 @@ static int file_extension_type(const char *relname) else if (BLI_testextensie(relname, ".py")) { return PYSCRIPTFILE; } - else if (BLI_testextensie(relname, ".txt") - || BLI_testextensie(relname, ".glsl") - || BLI_testextensie(relname, ".data")) { + else if (BLI_testextensie(relname, ".txt") || + BLI_testextensie(relname, ".glsl") || + BLI_testextensie(relname, ".data")) + { return TEXTFILE; } - else if ( BLI_testextensie(relname, ".ttf") - || BLI_testextensie(relname, ".ttc") - || BLI_testextensie(relname, ".pfb") - || BLI_testextensie(relname, ".otf") - || BLI_testextensie(relname, ".otc")) { + else if (BLI_testextensie(relname, ".ttf") || + BLI_testextensie(relname, ".ttc") || + BLI_testextensie(relname, ".pfb") || + BLI_testextensie(relname, ".otf") || + BLI_testextensie(relname, ".otc")) + { return FTFONTFILE; } else if (BLI_testextensie(relname, ".btx")) { @@ -785,8 +787,9 @@ static int file_extension_type(const char *relname) else if (BLI_testextensie(relname, ".dae")) { return COLLADAFILE; } - else if (BLI_testextensie_array(relname, imb_ext_image) - || (G.have_quicktime && BLI_testextensie_array(relname, imb_ext_image_qt))) { + else if (BLI_testextensie_array(relname, imb_ext_image) || + (G.have_quicktime && BLI_testextensie_array(relname, imb_ext_image_qt))) + { return IMAGEFILE; } else if (BLI_testextensie_array(relname, imb_ext_movie)) { @@ -838,8 +841,9 @@ static void filelist_setfiletypes(struct FileList* filelist) } file->flags = file_extension_type(file->relname); - if (filelist->filter_glob - && BLI_testextensie_glob(file->relname, filelist->filter_glob)) { + if (filelist->filter_glob && + BLI_testextensie_glob(file->relname, filelist->filter_glob)) + { file->flags= OPERATORFILE; } diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 0467579d0f2..f7c69c80067 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -3228,8 +3228,8 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo } sub= uiLayoutRow(row, 0); - uiLayoutSetActive(sub, ((RNA_boolean_get(logic_ptr, "show_sensors_active_states") - && RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin"))); + uiLayoutSetActive(sub, ((RNA_boolean_get(logic_ptr, "show_sensors_active_states") && + RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin"))); uiItemR(sub, ptr, "pin", UI_ITEM_R_NO_BG, "", ICON_NONE); if (RNA_boolean_get(ptr, "show_expanded")==0) { @@ -3253,8 +3253,8 @@ static void draw_sensor_internal_header(uiLayout *layout, PointerRNA *ptr) uiItemR(row, ptr, "use_pulse_false_level", 0, "", ICON_DOTSDOWN); sub=uiLayoutRow(row, 0); - uiLayoutSetActive(sub, (RNA_boolean_get(ptr, "use_pulse_true_level") - || RNA_boolean_get(ptr, "use_pulse_false_level"))); + uiLayoutSetActive(sub, (RNA_boolean_get(ptr, "use_pulse_true_level") || + RNA_boolean_get(ptr, "use_pulse_false_level"))); uiItemR(sub, ptr, "frequency", 0, "Freq", ICON_NONE); row= uiLayoutRow(split, 1); @@ -3677,8 +3677,8 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA * } sub= uiLayoutRow(row, 0); - uiLayoutSetActive(sub, ((RNA_boolean_get(logic_ptr, "show_actuators_active_states") - && RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin"))); + uiLayoutSetActive(sub, ((RNA_boolean_get(logic_ptr, "show_actuators_active_states") && + RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin"))); uiItemR(sub, ptr, "pin", UI_ITEM_R_NO_BG, "", ICON_NONE); if (RNA_boolean_get(ptr, "show_expanded")==0) { diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index c41cb2b6211..dda06267237 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -695,8 +695,10 @@ void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node) static int inside_rctf(rctf *bounds, rctf *rect) { - return (bounds->xmin <= rect->xmin && bounds->xmax >= rect->xmax - && bounds->ymin <= rect->ymin && bounds->ymax >= rect->ymax); + return (bounds->xmin <= rect->xmin && + bounds->xmax >= rect->xmax && + bounds->ymin <= rect->ymin && + bounds->ymax >= rect->ymax); } static void node_frame_attach_nodes(bNodeTree *UNUSED(ntree), bNode *frame) @@ -1893,8 +1895,10 @@ static int outside_group_rect(SpaceNode *snode) { bNode *gnode= node_tree_get_editgroup(snode->nodetree); if (gnode) { - return (snode->mx < gnode->totr.xmin || snode->mx >= gnode->totr.xmax - || snode->my < gnode->totr.ymin || snode->my >= gnode->totr.ymax); + return (snode->mx < gnode->totr.xmin || + snode->mx >= gnode->totr.xmax || + snode->my < gnode->totr.ymin || + snode->my >= gnode->totr.ymax); } return 0; } @@ -2192,8 +2196,9 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) /* This creates new links between copied nodes. * If keep_inputs is set, also copies input links from unselected (when fromnode==NULL)! */ - if (link->tonode && (link->tonode->flag & NODE_SELECT) - && (keep_inputs || (link->fromnode && (link->fromnode->flag & NODE_SELECT)))) { + if (link->tonode && (link->tonode->flag & NODE_SELECT) && + (keep_inputs || (link->fromnode && (link->fromnode->flag & NODE_SELECT)))) + { newlink = MEM_callocN(sizeof(bNodeLink), "bNodeLink"); newlink->flag = link->flag; newlink->tonode = link->tonode->new_node; diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index b8fc66cd3c3..2447ca6cfbe 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -1096,10 +1096,12 @@ static short select_grouped_effect_link(Editing *ed, Sequence *actseq) /* Ignore all seqs already selected! */ /* Ignore all seqs not sharing some time with active one. */ /* Ignore all seqs of incompatible types (audio vs video). */ - if ((seq->flag & SELECT) || (seq->startdisp >= enddisp) || (seq->enddisp < startdisp) - || (!is_audio && SEQ_IS_SOUND(seq)) - || (is_audio && !((seq->type == SEQ_META) || SEQ_IS_SOUND(seq)))) + if ((seq->flag & SELECT) || (seq->startdisp >= enddisp) || (seq->enddisp < startdisp) || + (!is_audio && SEQ_IS_SOUND(seq)) || + (is_audio && !((seq->type == SEQ_META) || SEQ_IS_SOUND(seq)))) + { continue; + } /* If the seq is an effect one, we need extra cheking! */ if (SEQ_IS_EFFECT(seq) && ((seq->seq1 && seq->seq1->tmp) || diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 7ccf4b6c81a..c6172492025 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -4341,8 +4341,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv normalize_v3(imat[1]); } - if (ELEM3(draw_as, PART_DRAW_DOT, PART_DRAW_CROSS, PART_DRAW_LINE) - && part->draw_col > PART_DRAW_COL_MAT) + if (ELEM3(draw_as, PART_DRAW_DOT, PART_DRAW_CROSS, PART_DRAW_LINE) && + (part->draw_col > PART_DRAW_COL_MAT)) { create_cdata = 1; } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index a3031bc3cfa..ab4eca2e303 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -294,10 +294,7 @@ static char *view3d_modeselect_pup(Scene *scene) if (!((ID *)ob->data)->lib) { /* if active object is editable */ - if ( ((ob->type == OB_MESH) - || (ob->type == OB_CURVE) || (ob->type == OB_SURF) || (ob->type == OB_FONT) - || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) { - + if (ELEM6(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE)) { str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT); } else if (ob->type == OB_ARMATURE) { diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 77573dbee4c..fecd32c06a0 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -6005,8 +6005,7 @@ void createTransData(bContext *C, TransInfo *t) } } - else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT) - && PE_start_edit(PE_get_current(scene, ob))) { + else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_start_edit(PE_get_current(scene, ob))) { createTransParticleVerts(C, t); t->flag |= T_POINTS; diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index bf6a47ed06c..0af4830e3c6 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1629,7 +1629,8 @@ void calculatePropRatio(TransInfo *t) (td->flag & TD_NOTCONNECTED || td->dist > t->prop_size)) || (connected == 0 && - td->rdist > t->prop_size)) { + td->rdist > t->prop_size)) + { /* * The elements are sorted according to their dist member in the array, * that means we can stop when it finds one element outside of the propsize. diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index 01a9a0a7303..0c8f932db6a 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -636,8 +636,9 @@ static void ffmpeg_postprocess(struct anim * anim) /* This means the data wasnt read properly, * this check stops crashing */ - if (input->data[0]==0 && input->data[1]==0 - && input->data[2]==0 && input->data[3]==0) { + if (input->data[0]==0 && input->data[1]==0 && + input->data[2]==0 && input->data[3]==0) + { fprintf(stderr, "ffmpeg_fetchibuf: " "data not read properly...\n"); return; @@ -945,10 +946,11 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position, return anim->last_frame; } - if (position > anim->curposition + 1 - && anim->preseek - && !tc_index - && position - (anim->curposition + 1) < anim->preseek) { + if (position > anim->curposition + 1 && + anim->preseek && + !tc_index && + position - (anim->curposition + 1) < anim->preseek) + { av_log(anim->pFormatCtx, AV_LOG_DEBUG, "FETCH: within preseek interval (no index)\n"); diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c index 1d629876727..85a2fd3dd91 100644 --- a/source/blender/imbuf/intern/util.c +++ b/source/blender/imbuf/intern/util.c @@ -372,24 +372,26 @@ int IMB_isanim(const char *filename) if (U.uiflag & USER_FILTERFILEEXTS) { if (G.have_quicktime) { - if ( BLI_testextensie(filename, ".avi") - || BLI_testextensie(filename, ".flc") - || BLI_testextensie(filename, ".dv") - || BLI_testextensie(filename, ".r3d") - || BLI_testextensie(filename, ".mov") - || BLI_testextensie(filename, ".movie") - || BLI_testextensie(filename, ".mv")) { + if (BLI_testextensie(filename, ".avi") || + BLI_testextensie(filename, ".flc") || + BLI_testextensie(filename, ".dv") || + BLI_testextensie(filename, ".r3d") || + BLI_testextensie(filename, ".mov") || + BLI_testextensie(filename, ".movie") || + BLI_testextensie(filename, ".mv")) + { type = imb_get_anim_type(filename); } else { return(FALSE); } } - else { // no quicktime - if ( BLI_testextensie(filename, ".avi") - || BLI_testextensie(filename, ".dv") - || BLI_testextensie(filename, ".r3d") - || BLI_testextensie(filename, ".mv")) { + else { /* no quicktime */ + if (BLI_testextensie(filename, ".avi") || + BLI_testextensie(filename, ".dv") || + BLI_testextensie(filename, ".r3d") || + BLI_testextensie(filename, ".mv")) + { type = imb_get_anim_type(filename); } else { @@ -397,7 +399,7 @@ int IMB_isanim(const char *filename) } } } - else { // no FILTERFILEEXTS + else { /* no FILTERFILEEXTS */ type = imb_get_anim_type(filename); } diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index 5a38bcbef04..f67fff460f1 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -360,8 +360,9 @@ static int add_name(const char *str) * */ buf[i] = 0; if (debugSDNA > 3) printf("Name before chomping: %s\n", buf); - if ( (strncmp(buf,"(*headdraw", 10) == 0) - || (strncmp(buf,"(*windraw", 9) == 0) ) { + if ((strncmp(buf,"(*headdraw", 10) == 0) || + (strncmp(buf,"(*windraw", 9) == 0) ) + { buf[i] = ')'; buf[i+1] = '('; buf[i+2] = 'v'; diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index c271292c601..b2a25086af9 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -370,8 +370,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, /* calculate the maximum number of copies which will fit within the * prescribed length */ - if (amd->fit_type == MOD_ARR_FITLENGTH - || amd->fit_type == MOD_ARR_FITCURVE) { + if (amd->fit_type == MOD_ARR_FITLENGTH || amd->fit_type == MOD_ARR_FITCURVE) { float dist = sqrt(dot_v3v3(offset[3], offset[3])); if (dist > 1e-6f) diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c index 32d88fe28bc..a1dc69918c2 100644 --- a/source/blender/modifiers/intern/MOD_explode.c +++ b/source/blender/modifiers/intern/MOD_explode.c @@ -1007,10 +1007,10 @@ static DerivedMesh * applyModifier(ModifierData *md, Object *ob, if (psmd->dm==NULL) return derivedData; /* 1. find faces to be exploded if needed */ - if (emd->facepa == NULL - || psmd->flag&eParticleSystemFlag_Pars - || emd->flag&eExplodeFlag_CalcFaces - || MEM_allocN_len(emd->facepa)/sizeof(int) != dm->getNumTessFaces(dm)) + if (emd->facepa == NULL || + psmd->flag&eParticleSystemFlag_Pars || + emd->flag&eExplodeFlag_CalcFaces || + MEM_allocN_len(emd->facepa) / sizeof(int) != dm->getNumTessFaces(dm)) { if (psmd->flag & eParticleSystemFlag_Pars) psmd->flag &= ~eParticleSystemFlag_Pars; diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c index 33736b7e426..ae8ca267b86 100644 --- a/source/blender/modifiers/intern/MOD_shrinkwrap.c +++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c @@ -86,10 +86,12 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) if (smd->vgroup_name[0]) dataMask |= CD_MASK_MDEFORMVERT; - if (smd->shrinkType == MOD_SHRINKWRAP_PROJECT - && smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) + if ((smd->shrinkType == MOD_SHRINKWRAP_PROJECT) && + (smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)) + { dataMask |= CD_MASK_MVERT; - + } + return dataMask; } diff --git a/source/blender/modifiers/intern/MOD_weightvg_util.c b/source/blender/modifiers/intern/MOD_weightvg_util.c index fad83286d8e..5ce435a7ca5 100644 --- a/source/blender/modifiers/intern/MOD_weightvg_util.c +++ b/source/blender/modifiers/intern/MOD_weightvg_util.c @@ -65,10 +65,10 @@ void weightvg_do_map(int num, float *new_w, short falloff_type, CurveMapping *cm /* Return immediately, if we have nothing to do! */ /* Also security checks... */ - if (((falloff_type == MOD_WVG_MAPPING_CURVE) && (cmap == NULL)) - || !ELEM7(falloff_type, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_SHARP, MOD_WVG_MAPPING_SMOOTH, - MOD_WVG_MAPPING_ROOT, MOD_WVG_MAPPING_SPHERE, MOD_WVG_MAPPING_RANDOM, - MOD_WVG_MAPPING_STEP)) + if (((falloff_type == MOD_WVG_MAPPING_CURVE) && (cmap == NULL)) || + !ELEM7(falloff_type, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_SHARP, MOD_WVG_MAPPING_SMOOTH, + MOD_WVG_MAPPING_ROOT, MOD_WVG_MAPPING_SPHERE, MOD_WVG_MAPPING_RANDOM, + MOD_WVG_MAPPING_STEP)) return; /* Map each weight (vertex) to its new value, accordingly to the chosen mode. */ diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 611c21cf0f2..038394b47dc 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -1376,11 +1376,13 @@ void shade_samples_do_AO(ShadeSample *ssamp) ShadeInput *shi= &ssamp->shi[0]; int sample; - if (((shi->passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) - || (shi->passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) + if (((shi->passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) || + (shi->passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) + { for (sample=0; sampletot; shi++, sample++) if (!(shi->mode & MA_SHLESS)) ambient_occlusion(shi); /* stores in shi->ao[] */ + } } } diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index dcc3bee7730..cf688982eda 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1731,8 +1731,9 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) /* AO pass */ if (R.wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) { - if (((passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) - || (passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) { + if (((passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) || + (passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) + { if (R.r.mode & R_SHADOW) { /* AO was calculated for scanline already */ if (shi->depth || shi->volume_depth) diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c index e29623aee22..ea6b099996d 100644 --- a/source/blender/render/intern/source/strand.c +++ b/source/blender/render/intern/source/strand.c @@ -976,10 +976,16 @@ StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm, totvert= dm->getNumVerts(dm); totface= dm->getNumTessFaces(dm); - for (mesh=re->strandsurface.first; mesh; mesh=mesh->next) - if (mesh->obr.ob == obr->ob && mesh->obr.par == obr->par - && mesh->obr.index == obr->index && mesh->totvert==totvert && mesh->totface==totface) + for (mesh = re->strandsurface.first; mesh; mesh = mesh->next) { + if ((mesh->obr.ob == obr->ob) && + (mesh->obr.par == obr->par) && + (mesh->obr.index == obr->index) && + (mesh->totvert == totvert) && + (mesh->totface == totface)) + { break; + } + } if (!mesh) { mesh= MEM_callocN(sizeof(StrandSurface), "StrandSurface"); diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index 759bc622bc2..8b059d4a564 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -783,8 +783,8 @@ static void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *o static int using_lightcache(Material *ma) { - return (((ma->vol.shadeflag & MA_VOL_PRECACHESHADING) && (ma->vol.shade_type == MA_VOL_SHADE_SHADED)) - || (ELEM(ma->vol.shade_type, MA_VOL_SHADE_MULTIPLE, MA_VOL_SHADE_SHADEDPLUSMULTIPLE))); + return (((ma->vol.shadeflag & MA_VOL_PRECACHESHADING) && (ma->vol.shade_type == MA_VOL_SHADE_SHADED)) || + (ELEM(ma->vol.shade_type, MA_VOL_SHADE_MULTIPLE, MA_VOL_SHADE_SHADEDPLUSMULTIPLE))); } /* loop through all objects (and their associated materials) From 64fe7139ec10531972ceec7137eaa7fdec7cfef7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 21 Apr 2012 15:56:50 +0000 Subject: [PATCH 013/158] fix [#31045] the blender game engine could reference a freed texface or mcolor array. --- .../gameengine/Ketsji/KX_PolygonMaterial.cpp | 32 +++++++++++++------ source/gameengine/Ketsji/KX_PolygonMaterial.h | 11 ++++--- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp index a85ba488fbc..2e39190f4f9 100644 --- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp +++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp @@ -60,14 +60,14 @@ KX_PolygonMaterial::KX_PolygonMaterial() : PyObjectPlus(), RAS_IPolyMaterial(), - m_tface(NULL), - m_mcol(NULL), m_material(NULL), #ifdef WITH_PYTHON m_pymaterial(NULL), #endif m_pass(0) { + memset(&m_tface, 0, sizeof(m_tface)); + memset(&m_mcol, 0, sizeof(m_mcol)); } void KX_PolygonMaterial::Initialize( @@ -98,8 +98,20 @@ void KX_PolygonMaterial::Initialize( light, (texname && texname != ""?true:false), /* if we have a texture we have image */ ma?&ma->game:NULL); - m_tface = tface; - m_mcol = mcol; + + if (tface) { + m_tface = *tface; + } + else { + memset(&m_tface, 0, sizeof(m_tface)); + } + if (mcol) { + m_mcol = *mcol; + } + else { + memset(&m_mcol, 0, sizeof(m_mcol)); + } + m_material = ma; #ifdef WITH_PYTHON m_pymaterial = 0; @@ -119,7 +131,7 @@ KX_PolygonMaterial::~KX_PolygonMaterial() Image *KX_PolygonMaterial::GetBlenderImage() const { - return (m_tface) ? m_tface->tpage : NULL; + return m_tface.tpage; } bool KX_PolygonMaterial::Activate(RAS_IRasterizer* rasty, TCachingInfo& cachingInfo) const @@ -175,9 +187,9 @@ void KX_PolygonMaterial::DefaultActivate(RAS_IRasterizer* rasty, TCachingInfo& c if ((m_drawingmode & RAS_IRasterizer::KX_TEX)&& (rasty->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED)) { - Image *ima = (Image*)m_tface->tpage; + Image *ima = m_tface.tpage; GPU_update_image_time(ima, rasty->GetTime()); - GPU_set_tpage(m_tface, 1, m_alphablend); + GPU_set_tpage(&m_tface, 1, m_alphablend); } else GPU_set_tpage(NULL, 0, 0); @@ -359,15 +371,15 @@ PyObject* KX_PolygonMaterial::pyattr_get_material(void *self_v, const KX_PYATTRI PyObject* KX_PolygonMaterial::pyattr_get_tface(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { KX_PolygonMaterial* self= static_cast(self_v); - return PyCapsule_New(self->m_tface, KX_POLYGONMATERIAL_CAPSULE_ID, NULL); + return PyCapsule_New(&self->m_tface, KX_POLYGONMATERIAL_CAPSULE_ID, NULL); } PyObject* KX_PolygonMaterial::pyattr_get_gl_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef) { KX_PolygonMaterial* self= static_cast(self_v); int bindcode= 0; - if (self->m_tface && self->m_tface->tpage) - bindcode= self->m_tface->tpage->bindcode; + if (self->m_tface.tpage) + bindcode= self->m_tface.tpage->bindcode; return PyLong_FromSsize_t(bindcode); } diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.h b/source/gameengine/Ketsji/KX_PolygonMaterial.h index 1af8a72c1fd..f7ad3973212 100644 --- a/source/gameengine/Ketsji/KX_PolygonMaterial.h +++ b/source/gameengine/Ketsji/KX_PolygonMaterial.h @@ -37,6 +37,7 @@ #include "RAS_MaterialBucket.h" #include "RAS_IRasterizer.h" #include "DNA_ID.h" +#include "DNA_meshdata_types.h" #ifdef WITH_CXX_GUARDEDALLOC #include "MEM_guardedalloc.h" @@ -58,9 +59,9 @@ class KX_PolygonMaterial : public PyObjectPlus, public RAS_IPolyMaterial Py_Header private: /** Blender texture face structure. */ - MTFace* m_tface; - unsigned int* m_mcol; - Material* m_material; + mutable MTFace m_tface; + mutable unsigned int m_mcol; + Material* m_material; #ifdef WITH_PYTHON PyObject* m_pymaterial; @@ -119,12 +120,12 @@ public: */ MTFace* GetMTFace(void) const { - return m_tface; + return &m_tface; } unsigned int* GetMCol(void) const { - return m_mcol; + return &m_mcol; } virtual void GetMaterialRGBAColor(unsigned char *rgba) const; From 21f6bac0a33d6613b0a8033be6fcb6befd419cc9 Mon Sep 17 00:00:00 2001 From: Daniel Genrich Date: Sat, 21 Apr 2012 22:09:09 +0000 Subject: [PATCH 014/158] Fix [#30954] Fluid obstacle checkbox has no effect Note: Supporting obstacles which can be enabled/disabled as animated propoerty is not likely to happen. So I marked this as "Won't fix"/TODO. I also reverted last commit on this bug because it didn't work and disabled the property from UI to avoid confusion. --- intern/elbeem/intern/solver_init.cpp | 4 +--- release/scripts/startup/bl_ui/properties_physics_fluid.py | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/intern/elbeem/intern/solver_init.cpp b/intern/elbeem/intern/solver_init.cpp index 58f45e4fbfb..7e9f5e7f420 100644 --- a/intern/elbeem/intern/solver_init.cpp +++ b/intern/elbeem/intern/solver_init.cpp @@ -1453,9 +1453,7 @@ void LbmFsgrSolver::initMovingObstacles(bool staticInit) { //errMsg("GEOACTT"," obj "<getName()<<" a:"<getGeoInitType()); continue; } - /* DG: only inflows/outlfows could be activated/deactivated, test new code that everything can be activated - if((!active) && (otype&(CFMbndOutflow|CFMbndInflow)) ) continue; */ - if((!active) /* && (otype&(CFMbndOutflow|CFMbndInflow)) */ ) continue; + if((!active) && (otype&(CFMbndOutflow|CFMbndInflow)) ) continue; // copied from recalculateObjectSpeeds mObjectSpeeds[OId] = vec2L(mpParam->calculateLattVelocityFromRw( vec2P( (*mpGiObjects)[OId]->getInitialVelocity(mSimulationTime) ))); diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index cec4bf125ee..beb525bbd07 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -55,11 +55,11 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): return col.prop(fluid, "type") - if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID'}: + if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID', 'OBSTACLE'}: col.prop(fluid, "use") layout = layout.column() - if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID'}: + if fluid.type not in {'NONE', 'DOMAIN', 'PARTICLE', 'FLUID', 'OBSTACLE'}: layout.active = fluid.use if fluid.type == 'DOMAIN': From 126f766b4cefd360e5f760875af34a0827dc2b4b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 00:20:58 +0000 Subject: [PATCH 015/158] style cleanup --- source/blender/blenkernel/intern/CCGSubSurf.c | 559 ++++---- .../blender/blenkernel/intern/subsurf_ccg.c | 1137 ++++++++--------- 2 files changed, 849 insertions(+), 847 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 9b55785d1a4..07cedc50bce 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -27,7 +27,7 @@ /***/ -typedef unsigned char byte; +typedef unsigned char byte; /***/ @@ -50,10 +50,13 @@ typedef struct _EHash { CCGAllocatorHDL allocator; } EHash; -#define EHASH_alloc(eh, nb) ((eh)->allocatorIFC.alloc((eh)->allocator, nb)) -#define EHASH_free(eh, ptr) ((eh)->allocatorIFC.free((eh)->allocator, ptr)) +#define EHASH_alloc(eh, nb) ((eh)->allocatorIFC.alloc((eh)->allocator, nb)) +#define EHASH_free(eh, ptr) ((eh)->allocatorIFC.free((eh)->allocator, ptr)) -#define EHASH_hash(eh, item) (((uintptr_t) (item))%((unsigned int) (eh)->curSize)) +#define EHASH_hash(eh, item) (((uintptr_t) (item)) % ((unsigned int) (eh)->curSize)) + +static void ccgSubSurf__sync(CCGSubSurf *ss); +static int _edge_isBoundary(const CCGEdge *e); static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator) { @@ -107,7 +110,7 @@ static void _ehash_insert(EHash *eh, EHEntry *entry) memset(eh->buckets, 0, eh->curSize * sizeof(*eh->buckets)); while (numBuckets--) { - for (entry = oldBuckets[numBuckets]; entry;) { + for (entry = oldBuckets[numBuckets]; entry; ) { EHEntry *next = entry->next; hash = EHASH_hash(eh, entry->key); @@ -125,12 +128,12 @@ static void _ehash_insert(EHash *eh, EHEntry *entry) static void *_ehash_lookupWithPrev(EHash *eh, void *key, void ***prevp_r) { int hash = EHASH_hash(eh, key); - void **prevp = (void**) &eh->buckets[hash]; + void **prevp = (void **) &eh->buckets[hash]; EHEntry *entry; - for (; (entry = *prevp); prevp = (void**) &entry->next) { + for (; (entry = *prevp); prevp = (void **) &entry->next) { if (entry->key == key) { - *prevp_r = (void**) prevp; + *prevp_r = (void **) prevp; return entry; } } @@ -279,7 +282,7 @@ static int VertDataEqual(const float *a, const float *b) #define VertDataCopy(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] = _b[0]; _a[1] = _b[1]; _a[2] = _b[2]; } #define VertDataAdd(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] += _b[0]; _a[1] += _b[1]; _a[2] += _b[2]; } #define VertDataSub(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] -= _b[0]; _a[1] -= _b[1]; _a[2] -= _b[2]; } -#define VertDataMulN(av, n) { float *_a = (float *)av; _a[0]*=n; _a[1]*=n; _a[2] *=n; } +#define VertDataMulN(av, n) { float *_a = (float *)av; _a[0] *= n; _a[1] *= n; _a[2] *= n; } #define VertDataAvg4(tv, av, bv, cv, dv) \ { \ float *_t = (float *) tv, *_a = (float *) av, *_b = (float *) bv, *_c = (float *) cv, *_d = (float *) dv; \ @@ -291,9 +294,6 @@ static int VertDataEqual(const float *a, const float *b) #define NormCopy(av, bv) { float *_a = (float *) av, *_b = (float *) bv; _a[0] = _b[0]; _a[1] = _b[1]; _a[2] = _b[2]; } #define NormAdd(av, bv) { float *_a = (float *) av, *_b = (float *) bv; _a[0] += _b[0]; _a[1] += _b[1]; _a[2] += _b[2]; } - -static int _edge_isBoundary(const CCGEdge *e); - /***/ enum { @@ -309,8 +309,8 @@ enum { } /*FaceFlags*/; struct CCGVert { - CCGVert *next; /* EHData.next */ - CCGVertHDL vHDL; /* EHData.key */ + CCGVert *next; /* EHData.next */ + CCGVertHDL vHDL; /* EHData.key */ short numEdges, numFaces, flags, pad; @@ -322,17 +322,17 @@ struct CCGVert { static CCG_INLINE byte *VERT_getLevelData(CCGVert *v) { - return (byte*)(&(v)[1]); + return (byte *)(&(v)[1]); } struct CCGEdge { - CCGEdge *next; /* EHData.next */ - CCGEdgeHDL eHDL; /* EHData.key */ + CCGEdge *next; /* EHData.next */ + CCGEdgeHDL eHDL; /* EHData.key */ short numFaces, flags; float crease; - CCGVert *v0,*v1; + CCGVert *v0, *v1; CCGFace **faces; // byte *levelData; @@ -341,12 +341,12 @@ struct CCGEdge { static CCG_INLINE byte *EDGE_getLevelData(CCGEdge *e) { - return (byte*)(&(e)[1]); + return (byte *)(&(e)[1]); } struct CCGFace { - CCGFace *next; /* EHData.next */ - CCGFaceHDL fHDL; /* EHData.key */ + CCGFace *next; /* EHData.next */ + CCGFaceHDL fHDL; /* EHData.key */ short numVerts, flags, pad1, pad2; @@ -359,17 +359,17 @@ struct CCGFace { static CCG_INLINE CCGVert **FACE_getVerts(CCGFace *f) { - return (CCGVert**)(&f[1]); + return (CCGVert **)(&f[1]); } static CCG_INLINE CCGEdge **FACE_getEdges(CCGFace *f) { - return (CCGEdge**)(&(FACE_getVerts(f)[f->numVerts])); + return (CCGEdge **)(&(FACE_getVerts(f)[f->numVerts])); } static CCG_INLINE byte *FACE_getCenterData(CCGFace *f) { - return (byte*)(&(FACE_getEdges(f)[(f)->numVerts])); + return (byte *)(&(FACE_getEdges(f)[(f)->numVerts])); } typedef enum { @@ -381,9 +381,9 @@ typedef enum { } SyncState; struct CCGSubSurf { - EHash *vMap; /* map of CCGVertHDL -> Vert */ - EHash *eMap; /* map of CCGEdgeHDL -> Edge */ - EHash *fMap; /* map of CCGFaceHDL -> Face */ + EHash *vMap; /* map of CCGVertHDL -> Vert */ + EHash *eMap; /* map of CCGEdgeHDL -> Edge */ + EHash *fMap; /* map of CCGFaceHDL -> Face */ CCGMeshIFC meshIFC; @@ -398,18 +398,18 @@ struct CCGSubSurf { void *q, *r; - // data for calc vert normals + /* data for calc vert normals */ int calcVertNormals; int normalDataOffset; - // data for age'ing (to debug sync) + /* data for age'ing (to debug sync) */ int currentAge; int useAgeCounts; int vertUserAgeOffset; int edgeUserAgeOffset; int faceUserAgeOffset; - // data used during syncing + /* data used during syncing */ SyncState syncState; EHash *oldVMap, *oldEMap, *oldFMap; @@ -418,9 +418,9 @@ struct CCGSubSurf { CCGEdge **tempEdges; }; -#define CCGSUBSURF_alloc(ss, nb) ((ss)->allocatorIFC.alloc((ss)->allocator, nb)) -#define CCGSUBSURF_realloc(ss, ptr, nb, ob) ((ss)->allocatorIFC.realloc((ss)->allocator, ptr, nb, ob)) -#define CCGSUBSURF_free(ss, ptr) ((ss)->allocatorIFC.free((ss)->allocator, ptr)) +#define CCGSUBSURF_alloc(ss, nb) ((ss)->allocatorIFC.alloc((ss)->allocator, nb)) +#define CCGSUBSURF_realloc(ss, ptr, nb, ob) ((ss)->allocatorIFC.realloc((ss)->allocator, ptr, nb, ob)) +#define CCGSUBSURF_free(ss, ptr) ((ss)->allocatorIFC.free((ss)->allocator, ptr)) /***/ @@ -428,9 +428,9 @@ static CCGVert *_vert_new(CCGVertHDL vHDL, CCGSubSurf *ss) { int num_vert_data = ss->subdivLevels + 1; CCGVert *v = CCGSUBSURF_alloc(ss, - sizeof(CCGVert) + - ss->meshIFC.vertDataSize * num_vert_data + - ss->meshIFC.vertUserSize); + sizeof(CCGVert) + + ss->meshIFC.vertDataSize * num_vert_data + + ss->meshIFC.vertUserSize); byte *userData; v->vHDL = vHDL; @@ -441,7 +441,7 @@ static CCGVert *_vert_new(CCGVertHDL vHDL, CCGSubSurf *ss) userData = ccgSubSurf_getVertUserData(ss, v); memset(userData, 0, ss->meshIFC.vertUserSize); - if (ss->useAgeCounts) *((int*) &userData[ss->vertUserAgeOffset]) = ss->currentAge; + if (ss->useAgeCounts) *((int *) &userData[ss->vertUserAgeOffset]) = ss->currentAge; return v; } @@ -541,7 +541,7 @@ static CCGEdge *_edge_new(CCGEdgeHDL eHDL, CCGVert *v0, CCGVert *v1, float creas userData = ccgSubSurf_getEdgeUserData(ss, e); memset(userData, 0, ss->meshIFC.edgeUserSize); - if (ss->useAgeCounts) *((int*) &userData[ss->edgeUserAgeOffset]) = ss->currentAge; + if (ss->useAgeCounts) *((int *) &userData[ss->edgeUserAgeOffset]) = ss->currentAge; return e; } @@ -562,7 +562,7 @@ static void _edge_addFace(CCGEdge *e, CCGFace *f, CCGSubSurf *ss) } static int _edge_isBoundary(const CCGEdge *e) { - return e->numFaces<2; + return e->numFaces < 2; } static CCGVert *_edge_getOtherVert(CCGEdge *e, CCGVert *vQ) @@ -626,11 +626,11 @@ static CCGFace *_face_new(CCGFaceHDL fHDL, CCGVert **verts, CCGEdge **edges, int { int maxGridSize = ccg_gridsize(ss->subdivLevels); int num_face_data = (numVerts * maxGridSize + - numVerts * maxGridSize * maxGridSize + 1); + numVerts * maxGridSize * maxGridSize + 1); CCGFace *f = CCGSUBSURF_alloc(ss, sizeof(CCGFace) + - sizeof(CCGVert*) * numVerts + - sizeof(CCGEdge*) * numVerts + + sizeof(CCGVert *) * numVerts + + sizeof(CCGEdge *) * numVerts + ss->meshIFC.vertDataSize * num_face_data + ss->meshIFC.faceUserSize); byte *userData; @@ -649,7 +649,7 @@ static CCGFace *_face_new(CCGFaceHDL fHDL, CCGVert **verts, CCGEdge **edges, int userData = ccgSubSurf_getFaceUserData(ss, f); memset(userData, 0, ss->meshIFC.faceUserSize); - if (ss->useAgeCounts) *((int*) &userData[ss->faceUserAgeOffset]) = ss->currentAge; + if (ss->useAgeCounts) *((int *) &userData[ss->faceUserAgeOffset]) = ss->currentAge; return f; } @@ -702,12 +702,12 @@ static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int e eX = eX * spacing; eY = eY * spacing; - if (e->v0!=FACE_getVerts(f)[S]) { + if (e->v0 != FACE_getVerts(f)[S]) { eX = (maxGridSize * 2 - 1) - 1 - eX; } y = maxGridSize - 1 - eX; x = maxGridSize - 1 - eY; - if (x<0) { + if (x < 0) { S = (S + f->numVerts - 1) % f->numVerts; cx = y; cy = -x; @@ -733,8 +733,8 @@ static void _face_calcIFNo(CCGFace *f, int lvl, int S, int x, int y, float *no, float *b = _face_getIFCo(f, lvl, S, x + 1, y + 0, levels, dataSize); float *c = _face_getIFCo(f, lvl, S, x + 1, y + 1, levels, dataSize); float *d = _face_getIFCo(f, lvl, S, x + 0, y + 1, levels, dataSize); - float a_cX = c[0]-a[0], a_cY = c[1]-a[1], a_cZ = c[2]-a[2]; - float b_dX = d[0]-b[0], b_dY = d[1]-b[1], b_dZ = d[2]-b[2]; + float a_cX = c[0] - a[0], a_cY = c[1] - a[1], a_cZ = c[2] - a[2]; + float b_dX = d[0] - b[0], b_dY = d[1] - b[1], b_dZ = d[2] - b[2]; float length; no[0] = b_dY * a_cZ - b_dZ * a_cY; @@ -779,7 +779,7 @@ CCGSubSurf *ccgSubSurf_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *a allocator = NULL; } - if (subdivLevels<1) { + if (subdivLevels < 1) { return NULL; } else { @@ -881,10 +881,10 @@ void ccgSubSurf_getAllowEdgeCreation(CCGSubSurf *ss, int *allowEdgeCreation_r, f CCGError ccgSubSurf_setSubdivisionLevels(CCGSubSurf *ss, int subdivisionLevels) { - if (subdivisionLevels<=0) { + if (subdivisionLevels <= 0) { return eCCGError_InvalidValue; } - else if (subdivisionLevels!=ss->subdivLevels) { + else if (subdivisionLevels != ss->subdivLevels) { ss->numGrids = 0; ss->subdivLevels = subdivisionLevels; _ehash_free(ss->vMap, (EHEntryFreeFP) _vert_free, ss); @@ -934,7 +934,7 @@ CCGError ccgSubSurf_setUseAgeCounts(CCGSubSurf *ss, int useAgeCounts, int vertUs CCGError ccgSubSurf_setCalcVertexNormals(CCGSubSurf *ss, int useVertNormals, int normalDataOffset) { if (useVertNormals) { - if (normalDataOffset<0 || normalDataOffset + 12>ss->meshIFC.vertDataSize) { + if (normalDataOffset < 0 || normalDataOffset + 12 > ss->meshIFC.vertDataSize) { return eCCGError_InvalidValue; } else { @@ -954,7 +954,7 @@ CCGError ccgSubSurf_setCalcVertexNormals(CCGSubSurf *ss, int useVertNormals, int CCGError ccgSubSurf_initFullSync(CCGSubSurf *ss) { - if (ss->syncState!=eSyncState_None) { + if (ss->syncState != eSyncState_None) { return eCCGError_InvalidSyncState; } @@ -981,7 +981,7 @@ CCGError ccgSubSurf_initFullSync(CCGSubSurf *ss) CCGError ccgSubSurf_initPartialSync(CCGSubSurf *ss) { - if (ss->syncState!=eSyncState_None) { + if (ss->syncState != eSyncState_None) { return eCCGError_InvalidSyncState; } @@ -994,7 +994,7 @@ CCGError ccgSubSurf_initPartialSync(CCGSubSurf *ss) CCGError ccgSubSurf_syncVertDel(CCGSubSurf *ss, CCGVertHDL vHDL) { - if (ss->syncState!=eSyncState_Partial) { + if (ss->syncState != eSyncState_Partial) { return eCCGError_InvalidSyncState; } else { @@ -1015,7 +1015,7 @@ CCGError ccgSubSurf_syncVertDel(CCGSubSurf *ss, CCGVertHDL vHDL) CCGError ccgSubSurf_syncEdgeDel(CCGSubSurf *ss, CCGEdgeHDL eHDL) { - if (ss->syncState!=eSyncState_Partial) { + if (ss->syncState != eSyncState_Partial) { return eCCGError_InvalidSyncState; } else { @@ -1036,7 +1036,7 @@ CCGError ccgSubSurf_syncEdgeDel(CCGSubSurf *ss, CCGEdgeHDL eHDL) CCGError ccgSubSurf_syncFaceDel(CCGSubSurf *ss, CCGFaceHDL fHDL) { - if (ss->syncState!=eSyncState_Partial) { + if (ss->syncState != eSyncState_Partial) { return eCCGError_InvalidSyncState; } else { @@ -1059,21 +1059,21 @@ CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertDa { void **prevp; CCGVert *v = NULL; - short seamflag = (seam)? Vert_eSeam: 0; + short seamflag = (seam) ? Vert_eSeam : 0; if (ss->syncState == eSyncState_Partial) { v = _ehash_lookupWithPrev(ss->vMap, vHDL, &prevp); if (!v) { v = _vert_new(vHDL, ss); - VertDataCopy(_vert_getCo(v,0,ss->meshIFC.vertDataSize), vertData); - _ehash_insert(ss->vMap, (EHEntry*) v); - v->flags = Vert_eEffected|seamflag; + VertDataCopy(_vert_getCo(v, 0, ss->meshIFC.vertDataSize), vertData); + _ehash_insert(ss->vMap, (EHEntry *) v); + v->flags = Vert_eEffected | seamflag; } else if (!VertDataEqual(vertData, _vert_getCo(v, 0, ss->meshIFC.vertDataSize)) || ((v->flags & Vert_eSeam) != seamflag)) { int i, j; - VertDataCopy(_vert_getCo(v,0,ss->meshIFC.vertDataSize), vertData); - v->flags = Vert_eEffected|seamflag; + VertDataCopy(_vert_getCo(v, 0, ss->meshIFC.vertDataSize), vertData); + v->flags = Vert_eEffected | seamflag; for (i = 0; i < v->numEdges; i++) { CCGEdge *e = v->edges[i]; @@ -1089,26 +1089,26 @@ CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertDa } } else { - if (ss->syncState!=eSyncState_Vert) { + if (ss->syncState != eSyncState_Vert) { return eCCGError_InvalidSyncState; } v = _ehash_lookupWithPrev(ss->oldVMap, vHDL, &prevp); if (!v) { v = _vert_new(vHDL, ss); - VertDataCopy(_vert_getCo(v,0,ss->meshIFC.vertDataSize), vertData); - _ehash_insert(ss->vMap, (EHEntry*) v); - v->flags = Vert_eEffected|seamflag; + VertDataCopy(_vert_getCo(v, 0, ss->meshIFC.vertDataSize), vertData); + _ehash_insert(ss->vMap, (EHEntry *) v); + v->flags = Vert_eEffected | seamflag; } else if (!VertDataEqual(vertData, _vert_getCo(v, 0, ss->meshIFC.vertDataSize)) || ((v->flags & Vert_eSeam) != seamflag)) { *prevp = v->next; - _ehash_insert(ss->vMap, (EHEntry*) v); - VertDataCopy(_vert_getCo(v,0,ss->meshIFC.vertDataSize), vertData); - v->flags = Vert_eEffected|Vert_eChanged|seamflag; + _ehash_insert(ss->vMap, (EHEntry *) v); + VertDataCopy(_vert_getCo(v, 0, ss->meshIFC.vertDataSize), vertData); + v->flags = Vert_eEffected | Vert_eChanged | seamflag; } else { *prevp = v->next; - _ehash_insert(ss->vMap, (EHEntry*) v); + _ehash_insert(ss->vMap, (EHEntry *) v); v->flags = 0; } } @@ -1124,7 +1124,7 @@ CCGError ccgSubSurf_syncEdge(CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0 if (ss->syncState == eSyncState_Partial) { e = _ehash_lookupWithPrev(ss->eMap, eHDL, &prevp); - if (!e || e->v0->vHDL!=e_vHDL0 || e->v1->vHDL!=e_vHDL1 || crease!=e->crease) { + if (!e || e->v0->vHDL != e_vHDL0 || e->v1->vHDL != e_vHDL1 || crease != e->crease) { CCGVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0); CCGVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1); @@ -1137,7 +1137,7 @@ CCGError ccgSubSurf_syncEdge(CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0 _edge_unlinkMarkAndFree(e, ss); } else { - _ehash_insert(ss->eMap, (EHEntry*) eNew); + _ehash_insert(ss->eMap, (EHEntry *) eNew); } eNew->v0->flags |= Vert_eEffected; @@ -1148,24 +1148,24 @@ CCGError ccgSubSurf_syncEdge(CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0 if (ss->syncState == eSyncState_Vert) { ss->syncState = eSyncState_Edge; } - else if (ss->syncState!=eSyncState_Edge) { + else if (ss->syncState != eSyncState_Edge) { return eCCGError_InvalidSyncState; } e = _ehash_lookupWithPrev(ss->oldEMap, eHDL, &prevp); - if (!e || e->v0->vHDL!=e_vHDL0 || e->v1->vHDL!=e_vHDL1|| e->crease!=crease) { + if (!e || e->v0->vHDL != e_vHDL0 || e->v1->vHDL != e_vHDL1 || e->crease != crease) { CCGVert *v0 = _ehash_lookup(ss->vMap, e_vHDL0); CCGVert *v1 = _ehash_lookup(ss->vMap, e_vHDL1); e = _edge_new(eHDL, v0, v1, crease, ss); - _ehash_insert(ss->eMap, (EHEntry*) e); + _ehash_insert(ss->eMap, (EHEntry *) e); e->v0->flags |= Vert_eEffected; e->v1->flags |= Vert_eEffected; } else { *prevp = e->next; - _ehash_insert(ss->eMap, (EHEntry*) e); + _ehash_insert(ss->eMap, (EHEntry *) e); e->flags = 0; - if ((e->v0->flags|e->v1->flags)&Vert_eChanged) { + if ((e->v0->flags | e->v1->flags) & Vert_eChanged) { e->v0->flags |= Vert_eEffected; e->v1->flags |= Vert_eEffected; } @@ -1199,10 +1199,12 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV } if (f) { - if ( f->numVerts!=numVerts || - memcmp(FACE_getVerts(f), ss->tempVerts, sizeof(*ss->tempVerts) * numVerts) || - memcmp(FACE_getEdges(f), ss->tempEdges, sizeof(*ss->tempEdges) * numVerts)) + if (f->numVerts != numVerts || + memcmp(FACE_getVerts(f), ss->tempVerts, sizeof(*ss->tempVerts) * numVerts) || + memcmp(FACE_getEdges(f), ss->tempEdges, sizeof(*ss->tempEdges) * numVerts)) + { topologyChanged = 1; + } } if (!f || topologyChanged) { @@ -1218,7 +1220,7 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV } else { ss->numGrids += numVerts; - _ehash_insert(ss->fMap, (EHEntry*) fNew); + _ehash_insert(ss->fMap, (EHEntry *) fNew); } for (k = 0; k < numVerts; k++) @@ -1229,7 +1231,7 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV if (ss->syncState == eSyncState_Vert || ss->syncState == eSyncState_Edge) { ss->syncState = eSyncState_Face; } - else if (ss->syncState!=eSyncState_Face) { + else if (ss->syncState != eSyncState_Face) { return eCCGError_InvalidSyncState; } @@ -1246,8 +1248,8 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV if (!ss->tempEdges[k]) { if (ss->allowEdgeCreation) { - CCGEdge *e = ss->tempEdges[k] = _edge_new((CCGEdgeHDL) -1, ss->tempVerts[k], ss->tempVerts[(k + 1) % numVerts], ss->defaultCreaseValue, ss); - _ehash_insert(ss->eMap, (EHEntry*) e); + CCGEdge *e = ss->tempEdges[k] = _edge_new((CCGEdgeHDL) - 1, ss->tempVerts[k], ss->tempVerts[(k + 1) % numVerts], ss->defaultCreaseValue, ss); + _ehash_insert(ss->eMap, (EHEntry *) e); e->v0->flags |= Vert_eEffected; e->v1->flags |= Vert_eEffected; if (ss->meshIFC.edgeUserSize) { @@ -1261,15 +1263,15 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV } if (f) { - if ( f->numVerts!=numVerts || - memcmp(FACE_getVerts(f), ss->tempVerts, sizeof(*ss->tempVerts) * numVerts) || - memcmp(FACE_getEdges(f), ss->tempEdges, sizeof(*ss->tempEdges) * numVerts)) + if (f->numVerts != numVerts || + memcmp(FACE_getVerts(f), ss->tempVerts, sizeof(*ss->tempVerts) * numVerts) || + memcmp(FACE_getEdges(f), ss->tempEdges, sizeof(*ss->tempEdges) * numVerts)) topologyChanged = 1; } if (!f || topologyChanged) { f = _face_new(fHDL, ss->tempVerts, ss->tempEdges, numVerts, ss); - _ehash_insert(ss->fMap, (EHEntry*) f); + _ehash_insert(ss->fMap, (EHEntry *) f); ss->numGrids += numVerts; for (k = 0; k < numVerts; k++) @@ -1277,7 +1279,7 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV } else { *prevp = f->next; - _ehash_insert(ss->fMap, (EHEntry*) f); + _ehash_insert(ss->fMap, (EHEntry *) f); f->flags = 0; ss->numGrids += f->numVerts; @@ -1295,7 +1297,6 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV return eCCGError_None; } -static void ccgSubSurf__sync(CCGSubSurf *ss); CCGError ccgSubSurf_processSync(CCGSubSurf *ss) { if (ss->syncState == eSyncState_Partial) { @@ -1327,15 +1328,17 @@ CCGError ccgSubSurf_processSync(CCGSubSurf *ss) return eCCGError_None; } -#define VERT_getNo(e, lvl) _vert_getNo(e, lvl, vertDataSize, normalDataOffset) -#define EDGE_getNo(e, lvl, x) _edge_getNo(e, lvl, x, vertDataSize, normalDataOffset) -#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset) -#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) -#define FACE_getIENo(f, lvl, S, x) _face_getIENo(f, lvl, S, x, subdivLevels, vertDataSize, normalDataOffset) +#define VERT_getNo(e, lvl) _vert_getNo(e, lvl, vertDataSize, normalDataOffset) +#define EDGE_getNo(e, lvl, x) _edge_getNo(e, lvl, x, vertDataSize, normalDataOffset) +#define FACE_getIFNo(f, lvl, S, x, y) _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset) +#define FACE_calcIFNo(f, lvl, S, x, y, no) _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize) +#define FACE_getIENo(f, lvl, S, x) _face_getIENo(f, lvl, S, x, subdivLevels, vertDataSize, normalDataOffset) + static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, - CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, - int numEffectedV, int numEffectedE, int numEffectedF) { - int i,ptrIdx; + CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, + int numEffectedV, int numEffectedE, int numEffectedF) +{ + int i, ptrIdx; int subdivLevels = ss->subdivLevels; int lvl = ss->subdivLevels; int edgeSize = ccg_edgesize(lvl); @@ -1345,7 +1348,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, #pragma omp parallel for private(ptrIdx) if (numEffectedF * edgeSize * edgeSize * 4 >= CCG_OMP_LIMIT) for (ptrIdx = 0; ptrIdx < numEffectedF; ptrIdx++) { - CCGFace *f = (CCGFace*) effectedF[ptrIdx]; + CCGFace *f = (CCGFace *) effectedF[ptrIdx]; int S, x, y; float no[3]; @@ -1354,19 +1357,19 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (x = 0; x < gridSize - 1; x++) NormZero(FACE_getIFNo(f, lvl, S, x, y)); - if (FACE_getEdges(f)[(S - 1+f->numVerts)%f->numVerts]->flags&Edge_eEffected) + if (FACE_getEdges(f)[(S - 1 + f->numVerts) % f->numVerts]->flags & Edge_eEffected) for (x = 0; x < gridSize - 1; x++) NormZero(FACE_getIFNo(f, lvl, S, x, gridSize - 1)); - if (FACE_getEdges(f)[S]->flags&Edge_eEffected) + if (FACE_getEdges(f)[S]->flags & Edge_eEffected) for (y = 0; y < gridSize - 1; y++) NormZero(FACE_getIFNo(f, lvl, S, gridSize - 1, y)); - if (FACE_getVerts(f)[S]->flags&Vert_eEffected) + if (FACE_getVerts(f)[S]->flags & Vert_eEffected) NormZero(FACE_getIFNo(f, lvl, S, gridSize - 1, gridSize - 1)); } for (S = 0; S < f->numVerts; S++) { int yLimit = !(FACE_getEdges(f)[(S - 1 + f->numVerts) % f->numVerts]->flags & Edge_eEffected); - int xLimit = !(FACE_getEdges(f)[S]->flags&Edge_eEffected); + int xLimit = !(FACE_getEdges(f)[S]->flags & Edge_eEffected); int yLimitNext = xLimit; int xLimitPrev = yLimit; @@ -1391,13 +1394,13 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, if (x == 0 && y == 0) { int K; - if (!yLimitNext || 1numVerts, 0, 1), no); - if (!xLimitPrev || 1numVerts) % f->numVerts, 1, 0), no); for (K = 0; K < f->numVerts; K++) { - if (K!=S) { + if (K != S) { NormAdd(FACE_getIFNo(f, lvl, K, 0, 0), no); } } @@ -1416,22 +1419,22 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, } } } - // XXX can I reduce the number of normalisations here? + /* XXX can I reduce the number of normalisations here? */ for (ptrIdx = 0; ptrIdx < numEffectedV; ptrIdx++) { - CCGVert *v = (CCGVert*) effectedV[ptrIdx]; + CCGVert *v = (CCGVert *) effectedV[ptrIdx]; float length, *no = _vert_getNo(v, lvl, vertDataSize, normalDataOffset); NormZero(no); for (i = 0; i < v->numFaces; i++) { CCGFace *f = v->faces[i]; - NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize - 1, gridSize - 1)); + NormAdd(no, FACE_getIFNo(f, lvl, _face_getVertIndex(f, v), gridSize - 1, gridSize - 1)); } length = sqrtf(no[0] * no[0] + no[1] * no[1] + no[2] * no[2]); if (length > EPSILON) { - float invLength = 1.0f/length; + float invLength = 1.0f / length; no[0] *= invLength; no[1] *= invLength; no[2] *= invLength; @@ -1442,11 +1445,11 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (i = 0; i < v->numFaces; i++) { CCGFace *f = v->faces[i]; - NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f,v), gridSize - 1, gridSize - 1), no); + NormCopy(FACE_getIFNo(f, lvl, _face_getVertIndex(f, v), gridSize - 1, gridSize - 1), no); } } for (ptrIdx = 0; ptrIdx < numEffectedE; ptrIdx++) { - CCGEdge *e = (CCGEdge*) effectedE[ptrIdx]; + CCGEdge *e = (CCGEdge *) effectedE[ptrIdx]; if (e->numFaces) { CCGFace *fLast = e->faces[e->numFaces - 1]; @@ -1457,7 +1460,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (x = 1; x < edgeSize - 1; x++) { NormAdd(_face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), - _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } } @@ -1466,7 +1469,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (x = 1; x < edgeSize - 1; x++) { NormCopy(_face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), - _face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + _face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } } } @@ -1474,7 +1477,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, #pragma omp parallel for private(ptrIdx) if (numEffectedF * edgeSize * edgeSize * 4 >= CCG_OMP_LIMIT) for (ptrIdx = 0; ptrIdx < numEffectedF; ptrIdx++) { - CCGFace *f = (CCGFace*) effectedF[ptrIdx]; + CCGFace *f = (CCGFace *) effectedF[ptrIdx]; int S, x, y; for (S = 0; S < f->numVerts; S++) { @@ -1489,7 +1492,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, float length = sqrtf(no[0] * no[0] + no[1] * no[1] + no[2] * no[2]); if (length > EPSILON) { - float invLength = 1.0f/length; + float invLength = 1.0f / length; no[0] *= invLength; no[1] *= invLength; no[2] *= invLength; @@ -1501,16 +1504,16 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, } VertDataCopy((float *)((byte *)FACE_getCenterData(f) + normalDataOffset), - FACE_getIFNo(f, lvl, S, 0, 0)); + FACE_getIFNo(f, lvl, S, 0, 0)); for (x = 1; x < gridSize - 1; x++) NormCopy(FACE_getIENo(f, lvl, S, x), - FACE_getIFNo(f, lvl, S, x, 0)); + FACE_getIFNo(f, lvl, S, x, 0)); } } for (ptrIdx = 0; ptrIdx < numEffectedE; ptrIdx++) { - CCGEdge *e = (CCGEdge*) effectedE[ptrIdx]; + CCGEdge *e = (CCGEdge *) effectedE[ptrIdx]; if (e->numFaces) { CCGFace *f = e->faces[0]; @@ -1518,7 +1521,7 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (x = 0; x < edgeSize; x++) NormCopy(EDGE_getNo(e, lvl, x), - _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } else { /* set to zero here otherwise the normals are uninitialized memory @@ -1535,10 +1538,10 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, } #undef FACE_getIFNo -#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize) -#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize) -#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize) -#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize) +#define VERT_getCo(v, lvl) _vert_getCo(v, lvl, vertDataSize) +#define EDGE_getCo(e, lvl, x) _edge_getCo(e, lvl, x, vertDataSize) +#define FACE_getIECo(f, lvl, S, x) _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize) +#define FACE_getIFCo(f, lvl, S, x, y) _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize) static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, @@ -1554,17 +1557,17 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, #pragma omp parallel for private(ptrIdx) if (numEffectedF * edgeSize * edgeSize * 4 >= CCG_OMP_LIMIT) for (ptrIdx = 0; ptrIdx < numEffectedF; ptrIdx++) { - CCGFace *f = (CCGFace*) effectedF[ptrIdx]; + CCGFace *f = (CCGFace *) effectedF[ptrIdx]; int S, x, y; - /* interior face midpoints - * o old interior face points - */ + /* interior face midpoints + * - old interior face points + */ for (S = 0; S < f->numVerts; S++) { for (y = 0; y < gridSize - 1; y++) { for (x = 0; x < gridSize - 1; x++) { - int fx = 1 + 2*x; - int fy = 1 + 2*y; + int fx = 1 + 2 * x; + int fy = 1 + 2 * y; void *co0 = FACE_getIFCo(f, curLvl, S, x + 0, y + 0); void *co1 = FACE_getIFCo(f, curLvl, S, x + 1, y + 0); void *co2 = FACE_getIFCo(f, curLvl, S, x + 1, y + 1); @@ -1576,10 +1579,10 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* interior edge midpoints - * o old interior edge points - * o new interior face midpoints - */ + /* interior edge midpoints + * - old interior edge points + * - new interior face midpoints + */ for (S = 0; S < f->numVerts; S++) { for (x = 0; x < gridSize - 1; x++) { int fx = x * 2 + 1; @@ -1592,12 +1595,12 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataAvg4(co, co0, co1, co2, co3); } - /* interior face interior edge midpoints - * o old interior face points - * o new interior face midpoints - */ + /* interior face interior edge midpoints + * - old interior face points + * - new interior face midpoints + */ - /* vertical */ + /* vertical */ for (x = 1; x < gridSize - 1; x++) { for (y = 0; y < gridSize - 1; y++) { int fx = x * 2; @@ -1612,7 +1615,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* horizontal */ + /* horizontal */ for (y = 1; y < gridSize - 1; y++) { for (x = 0; x < gridSize - 1; x++) { int fx = x * 2 + 1; @@ -1629,12 +1632,12 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* exterior edge midpoints - * o old exterior edge points - * o new interior face midpoints - */ + /* exterior edge midpoints + * - old exterior edge points + * - new interior face midpoints + */ for (ptrIdx = 0; ptrIdx < numEffectedE; ptrIdx++) { - CCGEdge *e = (CCGEdge*) effectedE[ptrIdx]; + CCGEdge *e = (CCGEdge *) effectedE[ptrIdx]; float sharpness = EDGE_getSharpness(e, curLvl); int x, j; @@ -1681,13 +1684,13 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* exterior vertex shift - * o old vertex points (shifting) - * o old exterior edge points - * o new interior face midpoints - */ + /* exterior vertex shift + * - old vertex points (shifting) + * - old exterior edge points + * - new interior face midpoints + */ for (ptrIdx = 0; ptrIdx < numEffectedV; ptrIdx++) { - CCGVert *v = (CCGVert*) effectedV[ptrIdx]; + CCGVert *v = (CCGVert *) effectedV[ptrIdx]; void *co = VERT_getCo(v, curLvl); void *nCo = VERT_getCo(v, nextLvl); int sharpCount = 0, allSharp = 1; @@ -1701,7 +1704,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, if (seam && _edge_isBoundary(e)) seamEdges++; - if (sharpness!=0.0f) { + if (sharpness != 0.0f) { sharpCount++; avgSharpness += sharpness; } @@ -1737,7 +1740,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataCopy(nCo, co); VertDataMulN(nCo, 0.75f); - VertDataMulN(r, 0.25f/numBoundary); + VertDataMulN(r, 0.25f / numBoundary); VertDataAdd(nCo, r); } else { @@ -1747,26 +1750,26 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataZero(q); for (j = 0; j < v->numFaces; j++) { CCGFace *f = v->faces[j]; - VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f,v), cornerIdx, cornerIdx)); + VertDataAdd(q, FACE_getIFCo(f, nextLvl, _face_getVertIndex(f, v), cornerIdx, cornerIdx)); numFaces++; } - VertDataMulN(q, 1.0f/numFaces); + VertDataMulN(q, 1.0f / numFaces); VertDataZero(r); for (j = 0; j < v->numEdges; j++) { CCGEdge *e = v->edges[j]; - VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1,vertDataSize)); + VertDataAdd(r, _edge_getCoVert(e, v, curLvl, 1, vertDataSize)); numEdges++; } - VertDataMulN(r, 1.0f/numEdges); + VertDataMulN(r, 1.0f / numEdges); VertDataCopy(nCo, co); VertDataMulN(nCo, numEdges - 2.0f); VertDataAdd(nCo, q); VertDataAdd(nCo, r); - VertDataMulN(nCo, 1.0f/numEdges); + VertDataMulN(nCo, 1.0f / numEdges); } - if ((sharpCount>1 && v->numFaces) || seam) { + if ((sharpCount > 1 && v->numFaces) || seam) { VertDataZero(q); if (seam) { @@ -1788,42 +1791,42 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - VertDataMulN(q, (float) 1/sharpCount); + VertDataMulN(q, (float) 1 / sharpCount); - if (sharpCount!=2 || allSharp) { - // q = q + (co-q) * avgSharpness + if (sharpCount != 2 || allSharp) { + /* q = q + (co - q) * avgSharpness */ VertDataCopy(r, co); VertDataSub(r, q); VertDataMulN(r, avgSharpness); VertDataAdd(q, r); } - // r = co*.75 + q*.25 + /* r = co * 0.75 + q * 0.25 */ VertDataCopy(r, co); VertDataMulN(r, .75f); VertDataMulN(q, .25f); VertDataAdd(r, q); - // nCo = nCo + (r-nCo) * avgSharpness + /* nCo = nCo + (r - nCo) * avgSharpness */ VertDataSub(r, nCo); VertDataMulN(r, avgSharpness); VertDataAdd(nCo, r); } } - /* exterior edge interior shift - * o old exterior edge midpoints (shifting) - * o old exterior edge midpoints - * o new interior face midpoints - */ + /* exterior edge interior shift + * - old exterior edge midpoints (shifting) + * - old exterior edge midpoints + * - new interior face midpoints + */ for (ptrIdx = 0; ptrIdx < numEffectedE; ptrIdx++) { - CCGEdge *e = (CCGEdge*) effectedE[ptrIdx]; + CCGEdge *e = (CCGEdge *) effectedE[ptrIdx]; float sharpness = EDGE_getSharpness(e, curLvl); int sharpCount = 0; float avgSharpness = 0.0; int x, j; - if (sharpness!=0.0f) { + if (sharpness != 0.0f) { sharpCount = 2; avgSharpness += sharpness; @@ -1836,7 +1839,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, avgSharpness = 0; } - if (_edge_isBoundary(e) && (!e->numFaces || sharpCount<2)) { + if (_edge_isBoundary(e) && (!e->numFaces || sharpCount < 2)) { for (x = 1; x < edgeSize - 1; x++) { int fx = x * 2; void *co = EDGE_getCo(e, curLvl, x); @@ -1883,7 +1886,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataMulN(q, 6.0f); VertDataAdd(q, EDGE_getCo(e, curLvl, x - 1)); VertDataAdd(q, EDGE_getCo(e, curLvl, x + 1)); - VertDataMulN(q, 1/8.0f); + VertDataMulN(q, 1 / 8.0f); VertDataSub(q, nCo); VertDataMulN(q, avgSharpness); @@ -1905,36 +1908,36 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, #pragma omp for schedule(static) for (ptrIdx = 0; ptrIdx < numEffectedF; ptrIdx++) { - CCGFace *f = (CCGFace*) effectedF[ptrIdx]; + CCGFace *f = (CCGFace *) effectedF[ptrIdx]; int S, x, y; - /* interior center point shift - * o old face center point (shifting) - * o old interior edge points - * o new interior face midpoints - */ + /* interior center point shift + * - old face center point (shifting) + * - old interior edge points + * - new interior face midpoints + */ VertDataZero(q); for (S = 0; S < f->numVerts; S++) { VertDataAdd(q, FACE_getIFCo(f, nextLvl, S, 1, 1)); } - VertDataMulN(q, 1.0f/f->numVerts); + VertDataMulN(q, 1.0f / f->numVerts); VertDataZero(r); for (S = 0; S < f->numVerts; S++) { VertDataAdd(r, FACE_getIECo(f, curLvl, S, 1)); } - VertDataMulN(r, 1.0f/f->numVerts); + VertDataMulN(r, 1.0f / f->numVerts); VertDataMulN(FACE_getCenterData(f), f->numVerts - 2.0f); VertDataAdd(FACE_getCenterData(f), q); VertDataAdd(FACE_getCenterData(f), r); - VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); + VertDataMulN(FACE_getCenterData(f), 1.0f / f->numVerts); for (S = 0; S < f->numVerts; S++) { - /* interior face shift - * o old interior face point (shifting) - * o new interior edge midpoints - * o new interior face midpoints - */ + /* interior face shift + * - old interior face point (shifting) + * - new interior edge midpoints + * - new interior face midpoints + */ for (x = 1; x < gridSize - 1; x++) { for (y = 1; y < gridSize - 1; y++) { int fx = x * 2; @@ -1961,11 +1964,11 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* interior edge interior shift - * o old interior edge point (shifting) - * o new interior edge midpoints - * o new interior face midpoints - */ + /* interior edge interior shift + * - old interior edge point (shifting) + * - new interior edge midpoints + * - new interior face midpoints + */ for (x = 1; x < gridSize - 1; x++) { int fx = x * 2; void *co = FACE_getIECo(f, curLvl, S, x); @@ -1974,8 +1977,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataAvg4(q, FACE_getIFCo(f, nextLvl, (S + 1) % f->numVerts, 1, fx - 1), FACE_getIFCo(f, nextLvl, (S + 1) % f->numVerts, 1, fx + 1), - FACE_getIFCo(f, nextLvl, S, fx + 1, + 1), - FACE_getIFCo(f, nextLvl, S, fx - 1, + 1)); + FACE_getIFCo(f, nextLvl, S, fx + 1, +1), + FACE_getIFCo(f, nextLvl, S, fx - 1, +1)); VertDataAvg4(r, FACE_getIECo(f, nextLvl, S, fx - 1), @@ -1998,7 +2001,7 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } } - /* copy down */ + /* copy down */ edgeSize = ccg_edgesize(nextLvl); gridSize = ccg_gridsize(nextLvl); cornerIdx = gridSize - 1; @@ -2030,8 +2033,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, } for (x = 0; x < gridSize - 1; x++) { int eI = gridSize - 1 - x; - VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize)); - VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], nextLvl, eI,vertDataSize)); + VertDataCopy(FACE_getIFCo(f, nextLvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], nextLvl, eI, vertDataSize)); + VertDataCopy(FACE_getIFCo(f, nextLvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], nextLvl, eI, vertDataSize)); } } } @@ -2055,14 +2058,14 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) effectedF = MEM_mallocN(sizeof(*effectedF) * ss->fMap->numEntries, "CCGSubsurf effectedF"); numEffectedV = numEffectedE = numEffectedF = 0; for (i = 0; i < ss->vMap->curSize; i++) { - CCGVert *v = (CCGVert*) ss->vMap->buckets[i]; + CCGVert *v = (CCGVert *) ss->vMap->buckets[i]; for (; v; v = v->next) { - if (v->flags&Vert_eEffected) { + if (v->flags & Vert_eEffected) { effectedV[numEffectedV++] = v; for (j = 0; j < v->numEdges; j++) { CCGEdge *e = v->edges[j]; - if (!(e->flags&Edge_eEffected)) { + if (!(e->flags & Edge_eEffected)) { effectedE[numEffectedE++] = e; e->flags |= Edge_eEffected; } @@ -2070,7 +2073,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) for (j = 0; j < v->numFaces; j++) { CCGFace *f = v->faces[j]; - if (!(f->flags&Face_eEffected)) { + if (!(f->flags & Face_eEffected)) { effectedF[numEffectedF++] = f; f->flags |= Face_eEffected; } @@ -2089,7 +2092,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) for (i = 0; i < f->numVerts; i++) { VertDataAdd(co, VERT_getCo(FACE_getVerts(f)[i], curLvl)); } - VertDataMulN(co, 1.0f/f->numVerts); + VertDataMulN(co, 1.0f / f->numVerts); f->flags = 0; } @@ -2141,7 +2144,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) if (seam && _edge_isBoundary(e)) seamEdges++; - if (sharpness!=0.0f) { + if (sharpness != 0.0f) { sharpCount++; avgSharpness += sharpness; } @@ -2176,7 +2179,7 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) } VertDataCopy(nCo, co); VertDataMulN(nCo, 0.75f); - VertDataMulN(r, 0.25f/numBoundary); + VertDataMulN(r, 0.25f / numBoundary); VertDataAdd(nCo, r); } else { @@ -2188,23 +2191,23 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) VertDataAdd(q, FACE_getCenterData(f)); numFaces++; } - VertDataMulN(q, 1.0f/numFaces); + VertDataMulN(q, 1.0f / numFaces); VertDataZero(r); for (i = 0; i < v->numEdges; i++) { CCGEdge *e = v->edges[i]; VertDataAdd(r, VERT_getCo(_edge_getOtherVert(e, v), curLvl)); numEdges++; } - VertDataMulN(r, 1.0f/numEdges); + VertDataMulN(r, 1.0f / numEdges); VertDataCopy(nCo, co); VertDataMulN(nCo, numEdges - 2.0f); VertDataAdd(nCo, q); VertDataAdd(nCo, r); - VertDataMulN(nCo, 1.0f/numEdges); + VertDataMulN(nCo, 1.0f / numEdges); } - if (sharpCount>1 || seam) { + if (sharpCount > 1 || seam) { VertDataZero(q); if (seam) { @@ -2229,23 +2232,23 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) } } - VertDataMulN(q, (float) 1/sharpCount); + VertDataMulN(q, (float) 1 / sharpCount); - if (sharpCount!=2 || allSharp) { - // q = q + (co-q) * avgSharpness + if (sharpCount != 2 || allSharp) { + /* q = q + (co - q) * avgSharpness */ VertDataCopy(r, co); VertDataSub(r, q); VertDataMulN(r, avgSharpness); VertDataAdd(q, r); } - // r = co*.75 + q*.25 + /* r = co * 0.75 + q * 0.25 */ VertDataCopy(r, co); VertDataMulN(r, 0.75f); VertDataMulN(q, 0.25f); VertDataAdd(r, q); - // nCo = nCo + (r-nCo) * avgSharpness + /* nCo = nCo + (r - nCo) * avgSharpness */ VertDataSub(r, nCo); VertDataMulN(r, avgSharpness); VertDataAdd(nCo, r); @@ -2258,19 +2261,19 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) for (i = 0; i < numEffectedV; i++) { CCGVert *v = effectedV[i]; byte *userData = ccgSubSurf_getVertUserData(ss, v); - *((int*) &userData[ss->vertUserAgeOffset]) = ss->currentAge; + *((int *) &userData[ss->vertUserAgeOffset]) = ss->currentAge; } for (i = 0; i < numEffectedE; i++) { CCGEdge *e = effectedE[i]; byte *userData = ccgSubSurf_getEdgeUserData(ss, e); - *((int*) &userData[ss->edgeUserAgeOffset]) = ss->currentAge; + *((int *) &userData[ss->edgeUserAgeOffset]) = ss->currentAge; } for (i = 0; i < numEffectedF; i++) { CCGFace *f = effectedF[i]; byte *userData = ccgSubSurf_getFaceUserData(ss, f); - *((int*) &userData[ss->faceUserAgeOffset]) = ss->currentAge; + *((int *) &userData[ss->faceUserAgeOffset]) = ss->currentAge; } } @@ -2297,14 +2300,14 @@ static void ccgSubSurf__sync(CCGSubSurf *ss) for (curLvl = 1; curLvl < subdivLevels; curLvl++) { ccgSubSurf__calcSubdivLevel(ss, - effectedV, effectedE, effectedF, - numEffectedV, numEffectedE, numEffectedF, curLvl); + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF, curLvl); } if (ss->calcVertNormals) ccgSubSurf__calcVertNormals(ss, - effectedV, effectedE, effectedF, - numEffectedV, numEffectedE, numEffectedF); + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF); for (ptrIdx = 0; ptrIdx < numEffectedV; ptrIdx++) { CCGVert *v = effectedV[ptrIdx]; @@ -2329,7 +2332,7 @@ static void ccgSubSurf__allFaces(CCGSubSurf *ss, CCGFace ***faces, int *numFaces array = MEM_mallocN(sizeof(*array) * ss->fMap->numEntries, "CCGSubsurf allFaces"); num = 0; for (i = 0; i < ss->fMap->curSize; i++) { - CCGFace *f = (CCGFace*) ss->fMap->buckets[i]; + CCGFace *f = (CCGFace *) ss->fMap->buckets[i]; for (; f; f = f->next) array[num++] = f; @@ -2360,7 +2363,7 @@ static void ccgSubSurf__effectedFaceNeighbours(CCGSubSurf *ss, CCGFace **faces, } for (i = 0; i < ss->vMap->curSize; i++) { - CCGVert *v = (CCGVert*) ss->vMap->buckets[i]; + CCGVert *v = (CCGVert *) ss->vMap->buckets[i]; for (; v; v = v->next) { for (j = 0; j < v->numFaces; j++) @@ -2375,7 +2378,7 @@ static void ccgSubSurf__effectedFaceNeighbours(CCGSubSurf *ss, CCGFace **faces, } for (i = 0; i < ss->eMap->curSize; i++) { - CCGEdge *e = (CCGEdge*) ss->eMap->buckets[i]; + CCGEdge *e = (CCGEdge *) ss->eMap->buckets[i]; for (; e; e = e->next) { for (j = 0; j < e->numFaces; j++) @@ -2402,7 +2405,7 @@ CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF int vertDataSize = ss->meshIFC.vertDataSize, freeF; subdivLevels = ss->subdivLevels; - lvl = (lvl)? lvl: subdivLevels; + lvl = (lvl) ? lvl : subdivLevels; gridSize = ccg_gridsize(lvl); cornerIdx = gridSize - 1; @@ -2423,8 +2426,8 @@ CCGError ccgSubSurf_updateFromFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF for (x = 0; x < gridSize; x++) { int eI = gridSize - 1 - x; - VertDataCopy(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x)); - VertDataCopy(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx)); + VertDataCopy(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI, vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x)); + VertDataCopy(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI, vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx)); } } } @@ -2441,7 +2444,7 @@ CCGError ccgSubSurf_updateToFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, int vertDataSize = ss->meshIFC.vertDataSize, freeF; subdivLevels = ss->subdivLevels; - lvl = (lvl)? lvl: subdivLevels; + lvl = (lvl) ? lvl : subdivLevels; gridSize = ccg_gridsize(lvl); cornerIdx = gridSize - 1; @@ -2457,8 +2460,8 @@ CCGError ccgSubSurf_updateToFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, for (x = 0; x < gridSize; x++) { int eI = gridSize - 1 - x; - VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize)); - VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize)); + VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI, vertDataSize)); + VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI, vertDataSize)); } for (x = 1; x < gridSize - 1; x++) { @@ -2487,14 +2490,14 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in int vertDataSize = ss->meshIFC.vertDataSize; subdivLevels = ss->subdivLevels; - lvl = (lvl)? lvl: subdivLevels; + lvl = (lvl) ? lvl : subdivLevels; gridSize = ccg_gridsize(lvl); edgeSize = ccg_edgesize(lvl); cornerIdx = gridSize - 1; ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF, - &effectedV, &numEffectedV, &effectedE, &numEffectedE); + &effectedV, &numEffectedV, &effectedE, &numEffectedE); /* zero */ for (i = 0; i < numEffectedV; i++) { @@ -2527,7 +2530,7 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in CCGEdge *prevE = FACE_getEdges(f)[prevS]; VertDataAdd(FACE_getCenterData(f), FACE_getIFCo(f, lvl, S, 0, 0)); - if (FACE_getVerts(f)[S]->flags&Vert_eEffected) + if (FACE_getVerts(f)[S]->flags & Vert_eEffected) VertDataAdd(VERT_getCo(FACE_getVerts(f)[S], lvl), FACE_getIFCo(f, lvl, S, cornerIdx, cornerIdx)); for (x = 1; x < gridSize - 1; x++) { @@ -2537,11 +2540,11 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in for (x = 0; x < gridSize - 1; x++) { int eI = gridSize - 1 - x; - if (FACE_getEdges(f)[S]->flags&Edge_eEffected) - VertDataAdd(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x)); - if (FACE_getEdges(f)[prevS]->flags&Edge_eEffected) + if (FACE_getEdges(f)[S]->flags & Edge_eEffected) + VertDataAdd(_edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI, vertDataSize), FACE_getIFCo(f, lvl, S, cornerIdx, x)); + if (FACE_getEdges(f)[prevS]->flags & Edge_eEffected) if (x != 0) - VertDataAdd(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx)); + VertDataAdd(_edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI, vertDataSize), FACE_getIFCo(f, lvl, S, x, cornerIdx)); } } } @@ -2550,7 +2553,7 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in for (i = 0; i < numEffectedV; i++) { CCGVert *v = effectedV[i]; if (v->numFaces) - VertDataMulN(VERT_getCo(v, lvl), 1.0f/v->numFaces); + VertDataMulN(VERT_getCo(v, lvl), 1.0f / v->numFaces); } for (i = 0; i < numEffectedE; i++) { @@ -2561,14 +2564,14 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in if (e->numFaces) for (x = 1; x < edgeSize - 1; x++) - VertDataMulN(EDGE_getCo(e, lvl, x), 1.0f/e->numFaces); + VertDataMulN(EDGE_getCo(e, lvl, x), 1.0f / e->numFaces); } /* copy */ for (i = 0; i < numEffectedF; i++) { CCGFace *f = effectedF[i]; - VertDataMulN(FACE_getCenterData(f), 1.0f/f->numVerts); + VertDataMulN(FACE_getCenterData(f), 1.0f / f->numVerts); for (S = 0; S < f->numVerts; S++) for (x = 1; x < gridSize - 1; x++) @@ -2589,8 +2592,8 @@ CCGError ccgSubSurf_stitchFaces(CCGSubSurf *ss, int lvl, CCGFace **effectedF, in for (x = 0; x < gridSize - 1; x++) { int eI = gridSize - 1 - x; - VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI,vertDataSize)); - VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI,vertDataSize)); + VertDataCopy(FACE_getIFCo(f, lvl, S, cornerIdx, x), _edge_getCoVert(e, FACE_getVerts(f)[S], lvl, eI, vertDataSize)); + VertDataCopy(FACE_getIFCo(f, lvl, S, x, cornerIdx), _edge_getCoVert(prevE, FACE_getVerts(f)[S], lvl, eI, vertDataSize)); } VertDataCopy(FACE_getIECo(f, lvl, S, 0), FACE_getCenterData(f)); @@ -2621,12 +2624,12 @@ CCGError ccgSubSurf_updateNormals(CCGSubSurf *ss, CCGFace **effectedF, int numEf ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF, - &effectedV, &numEffectedV, &effectedE, &numEffectedE); + &effectedV, &numEffectedV, &effectedE, &numEffectedE); if (ss->calcVertNormals) ccgSubSurf__calcVertNormals(ss, - effectedV, effectedE, effectedF, - numEffectedV, numEffectedE, numEffectedF); + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF); for (i = 0; i < numEffectedV; i++) effectedV[i]->flags = 0; @@ -2654,12 +2657,12 @@ CCGError ccgSubSurf_updateLevels(CCGSubSurf *ss, int lvl, CCGFace **effectedF, i ccgSubSurf__allFaces(ss, &effectedF, &numEffectedF, &freeF); ccgSubSurf__effectedFaceNeighbours(ss, effectedF, numEffectedF, - &effectedV, &numEffectedV, &effectedE, &numEffectedE); + &effectedV, &numEffectedV, &effectedE, &numEffectedE); for (curLvl = lvl; curLvl < subdivLevels; curLvl++) { ccgSubSurf__calcSubdivLevel(ss, - effectedV, effectedE, effectedF, - numEffectedV, numEffectedE, numEffectedF, curLvl); + effectedV, effectedE, effectedF, + numEffectedV, numEffectedE, numEffectedF, curLvl); } for (i = 0; i < numEffectedV; i++) @@ -2698,15 +2701,15 @@ int ccgSubSurf_getNumFaces(const CCGSubSurf *ss) CCGVert *ccgSubSurf_getVert(CCGSubSurf *ss, CCGVertHDL v) { - return (CCGVert*) _ehash_lookup(ss->vMap, v); + return (CCGVert *) _ehash_lookup(ss->vMap, v); } CCGEdge *ccgSubSurf_getEdge(CCGSubSurf *ss, CCGEdgeHDL e) { - return (CCGEdge*) _ehash_lookup(ss->eMap, e); + return (CCGEdge *) _ehash_lookup(ss->eMap, e); } CCGFace *ccgSubSurf_getFace(CCGSubSurf *ss, CCGFaceHDL f) { - return (CCGFace*) _ehash_lookup(ss->fMap, f); + return (CCGFace *) _ehash_lookup(ss->fMap, f); } int ccgSubSurf_getSubdivisionLevels(const CCGSubSurf *ss) @@ -2719,7 +2722,7 @@ int ccgSubSurf_getEdgeSize(const CCGSubSurf *ss) } int ccgSubSurf_getEdgeLevelSize(const CCGSubSurf *ss, int level) { - if (level<1 || level > ss->subdivLevels) { + if (level < 1 || level > ss->subdivLevels) { return -1; } else { @@ -2732,7 +2735,7 @@ int ccgSubSurf_getGridSize(const CCGSubSurf *ss) } int ccgSubSurf_getGridLevelSize(const CCGSubSurf *ss, int level) { - if (level<1 || level > ss->subdivLevels) { + if (level < 1 || level > ss->subdivLevels) { return -1; } else { @@ -2750,7 +2753,7 @@ int ccgSubSurf_getVertAge(CCGSubSurf *ss, CCGVert *v) { if (ss->useAgeCounts) { byte *userData = ccgSubSurf_getVertUserData(ss, v); - return ss->currentAge - *((int*) &userData[ss->vertUserAgeOffset]); + return ss->currentAge - *((int *) &userData[ss->vertUserAgeOffset]); } else { return 0; @@ -2766,7 +2769,7 @@ int ccgSubSurf_getVertNumFaces(CCGVert *v) } CCGFace *ccgSubSurf_getVertFace(CCGVert *v, int index) { - if (index<0 || index>=v->numFaces) { + if (index < 0 || index >= v->numFaces) { return NULL; } else { @@ -2779,7 +2782,7 @@ int ccgSubSurf_getVertNumEdges(CCGVert *v) } CCGEdge *ccgSubSurf_getVertEdge(CCGVert *v, int index) { - if (index<0 || index>=v->numEdges) { + if (index < 0 || index >= v->numEdges) { return NULL; } else { @@ -2792,7 +2795,7 @@ void *ccgSubSurf_getVertData(CCGSubSurf *ss, CCGVert *v) } void *ccgSubSurf_getVertLevelData(CCGSubSurf *ss, CCGVert *v, int level) { - if (level<0 || level > ss->subdivLevels) { + if (level < 0 || level > ss->subdivLevels) { return NULL; } else { @@ -2810,7 +2813,7 @@ int ccgSubSurf_getEdgeAge(CCGSubSurf *ss, CCGEdge *e) { if (ss->useAgeCounts) { byte *userData = ccgSubSurf_getEdgeUserData(ss, e); - return ss->currentAge - *((int*) &userData[ss->edgeUserAgeOffset]); + return ss->currentAge - *((int *) &userData[ss->edgeUserAgeOffset]); } else { return 0; @@ -2819,7 +2822,7 @@ int ccgSubSurf_getEdgeAge(CCGSubSurf *ss, CCGEdge *e) void *ccgSubSurf_getEdgeUserData(CCGSubSurf *ss, CCGEdge *e) { return (EDGE_getLevelData(e) + - ss->meshIFC.vertDataSize * ccg_edgebase(ss->subdivLevels + 1)); + ss->meshIFC.vertDataSize * ccg_edgebase(ss->subdivLevels + 1)); } int ccgSubSurf_getEdgeNumFaces(CCGEdge *e) { @@ -2827,7 +2830,7 @@ int ccgSubSurf_getEdgeNumFaces(CCGEdge *e) } CCGFace *ccgSubSurf_getEdgeFace(CCGEdge *e, int index) { - if (index<0 || index>=e->numFaces) { + if (index < 0 || index >= e->numFaces) { return NULL; } else { @@ -2852,7 +2855,7 @@ void *ccgSubSurf_getEdgeData(CCGSubSurf *ss, CCGEdge *e, int x) } void *ccgSubSurf_getEdgeLevelData(CCGSubSurf *ss, CCGEdge *e, int x, int level) { - if (level<0 || level > ss->subdivLevels) { + if (level < 0 || level > ss->subdivLevels) { return NULL; } else { @@ -2874,7 +2877,7 @@ int ccgSubSurf_getFaceAge(CCGSubSurf *ss, CCGFace *f) { if (ss->useAgeCounts) { byte *userData = ccgSubSurf_getFaceUserData(ss, f); - return ss->currentAge - *((int*) &userData[ss->faceUserAgeOffset]); + return ss->currentAge - *((int *) &userData[ss->faceUserAgeOffset]); } else { return 0; @@ -2891,7 +2894,7 @@ int ccgSubSurf_getFaceNumVerts(CCGFace *f) } CCGVert *ccgSubSurf_getFaceVert(CCGFace *f, int index) { - if (index<0 || index>=f->numVerts) { + if (index < 0 || index >= f->numVerts) { return NULL; } else { @@ -2900,7 +2903,7 @@ CCGVert *ccgSubSurf_getFaceVert(CCGFace *f, int index) } CCGEdge *ccgSubSurf_getFaceEdge(CCGFace *f, int index) { - if (index<0 || index>=f->numVerts) { + if (index < 0 || index >= f->numVerts) { return NULL; } else { @@ -2943,66 +2946,66 @@ void *ccgSubSurf_getFaceGridData(CCGSubSurf *ss, CCGFace *f, int gridIndex, int CCGVertIterator *ccgSubSurf_getVertIterator(CCGSubSurf *ss) { - return (CCGVertIterator*) _ehashIterator_new(ss->vMap); + return (CCGVertIterator *) _ehashIterator_new(ss->vMap); } CCGEdgeIterator *ccgSubSurf_getEdgeIterator(CCGSubSurf *ss) { - return (CCGEdgeIterator*) _ehashIterator_new(ss->eMap); + return (CCGEdgeIterator *) _ehashIterator_new(ss->eMap); } CCGFaceIterator *ccgSubSurf_getFaceIterator(CCGSubSurf *ss) { - return (CCGFaceIterator*) _ehashIterator_new(ss->fMap); + return (CCGFaceIterator *) _ehashIterator_new(ss->fMap); } CCGVert *ccgVertIterator_getCurrent(CCGVertIterator *vi) { - return (CCGVert*) _ehashIterator_getCurrent((EHashIterator*) vi); + return (CCGVert *) _ehashIterator_getCurrent((EHashIterator *) vi); } int ccgVertIterator_isStopped(CCGVertIterator *vi) { - return _ehashIterator_isStopped((EHashIterator*) vi); + return _ehashIterator_isStopped((EHashIterator *) vi); } void ccgVertIterator_next(CCGVertIterator *vi) { - _ehashIterator_next((EHashIterator*) vi); + _ehashIterator_next((EHashIterator *) vi); } void ccgVertIterator_free(CCGVertIterator *vi) { - _ehashIterator_free((EHashIterator*) vi); + _ehashIterator_free((EHashIterator *) vi); } CCGEdge *ccgEdgeIterator_getCurrent(CCGEdgeIterator *vi) { - return (CCGEdge*) _ehashIterator_getCurrent((EHashIterator*) vi); + return (CCGEdge *) _ehashIterator_getCurrent((EHashIterator *) vi); } int ccgEdgeIterator_isStopped(CCGEdgeIterator *vi) { - return _ehashIterator_isStopped((EHashIterator*) vi); + return _ehashIterator_isStopped((EHashIterator *) vi); } void ccgEdgeIterator_next(CCGEdgeIterator *vi) { - _ehashIterator_next((EHashIterator*) vi); + _ehashIterator_next((EHashIterator *) vi); } void ccgEdgeIterator_free(CCGEdgeIterator *vi) { - _ehashIterator_free((EHashIterator*) vi); + _ehashIterator_free((EHashIterator *) vi); } CCGFace *ccgFaceIterator_getCurrent(CCGFaceIterator *vi) { - return (CCGFace*) _ehashIterator_getCurrent((EHashIterator*) vi); + return (CCGFace *) _ehashIterator_getCurrent((EHashIterator *) vi); } int ccgFaceIterator_isStopped(CCGFaceIterator *vi) { - return _ehashIterator_isStopped((EHashIterator*) vi); + return _ehashIterator_isStopped((EHashIterator *) vi); } void ccgFaceIterator_next(CCGFaceIterator *vi) { - _ehashIterator_next((EHashIterator*) vi); + _ehashIterator_next((EHashIterator *) vi); } void ccgFaceIterator_free(CCGFaceIterator *vi) { - _ehashIterator_free((EHashIterator*) vi); + _ehashIterator_free((EHashIterator *) vi); } /*** Extern API final vert/edge/face interface ***/ diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index fdbc45ebfb4..a4f7a9697bf 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -120,7 +120,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, CCGFlags fl int useAging = !!(flags & CCG_USE_AGING); int useArena = flags & CCG_USE_ARENA; - /* subdivLevels==0 is not allowed */ + /* subdivLevels==0 is not allowed */ subdivLevels = MAX2(subdivLevels, 1); if (prevSS) { @@ -128,7 +128,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, CCGFlags fl ccgSubSurf_getUseAgeCounts(prevSS, &oldUseAging, NULL, NULL, NULL); - if (oldUseAging!=useAging) { + if (oldUseAging != useAging) { ccgSubSurf_free(prevSS); } else { @@ -148,7 +148,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, CCGFlags fl if (useArena) { CCGAllocatorIFC allocatorIFC; - CCGAllocatorHDL allocator = BLI_memarena_new((1<<16), "subsurf arena"); + CCGAllocatorHDL allocator = BLI_memarena_new((1 << 16), "subsurf arena"); allocatorIFC.alloc = arena_alloc; allocatorIFC.realloc = arena_realloc; @@ -177,81 +177,81 @@ static int getEdgeIndex(CCGSubSurf *ss, CCGEdge *e, int x, int edgeSize) { CCGVert *v0 = ccgSubSurf_getEdgeVert0(e); CCGVert *v1 = ccgSubSurf_getEdgeVert1(e); - int v0idx = *((int*) ccgSubSurf_getVertUserData(ss, v0)); - int v1idx = *((int*) ccgSubSurf_getVertUserData(ss, v1)); - int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e)); + int v0idx = *((int *) ccgSubSurf_getVertUserData(ss, v0)); + int v1idx = *((int *) ccgSubSurf_getVertUserData(ss, v1)); + int edgeBase = *((int *) ccgSubSurf_getEdgeUserData(ss, e)); - if (x==0) { + if (x == 0) { return v0idx; } - else if (x==edgeSize-1) { + else if (x == edgeSize - 1) { return v1idx; } else { - return edgeBase + x-1; + return edgeBase + x - 1; } } static int getFaceIndex(CCGSubSurf *ss, CCGFace *f, int S, int x, int y, int edgeSize, int gridSize) { - int faceBase = *((int*) ccgSubSurf_getFaceUserData(ss, f)); + int faceBase = *((int *) ccgSubSurf_getFaceUserData(ss, f)); int numVerts = ccgSubSurf_getFaceNumVerts(f); - if (x==gridSize-1 && y==gridSize-1) { + if (x == gridSize - 1 && y == gridSize - 1) { CCGVert *v = ccgSubSurf_getFaceVert(f, S); - return *((int*) ccgSubSurf_getVertUserData(ss, v)); + return *((int *) ccgSubSurf_getVertUserData(ss, v)); } - else if (x==gridSize-1) { + else if (x == gridSize - 1) { CCGVert *v = ccgSubSurf_getFaceVert(f, S); CCGEdge *e = ccgSubSurf_getFaceEdge(f, S); - int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e)); - if (v==ccgSubSurf_getEdgeVert0(e)) { - return edgeBase + (gridSize-1-y)-1; + int edgeBase = *((int *) ccgSubSurf_getEdgeUserData(ss, e)); + if (v == ccgSubSurf_getEdgeVert0(e)) { + return edgeBase + (gridSize - 1 - y) - 1; } else { - return edgeBase + (edgeSize-2-1)-((gridSize-1-y)-1); + return edgeBase + (edgeSize - 2 - 1) - ((gridSize - 1 - y) - 1); } } - else if (y==gridSize-1) { + else if (y == gridSize - 1) { CCGVert *v = ccgSubSurf_getFaceVert(f, S); - CCGEdge *e = ccgSubSurf_getFaceEdge(f, (S+numVerts-1)%numVerts); - int edgeBase = *((int*) ccgSubSurf_getEdgeUserData(ss, e)); - if (v==ccgSubSurf_getEdgeVert0(e)) { - return edgeBase + (gridSize-1-x)-1; + CCGEdge *e = ccgSubSurf_getFaceEdge(f, (S + numVerts - 1) % numVerts); + int edgeBase = *((int *) ccgSubSurf_getEdgeUserData(ss, e)); + if (v == ccgSubSurf_getEdgeVert0(e)) { + return edgeBase + (gridSize - 1 - x) - 1; } else { - return edgeBase + (edgeSize-2-1)-((gridSize-1-x)-1); + return edgeBase + (edgeSize - 2 - 1) - ((gridSize - 1 - x) - 1); } } - else if (x==0 && y==0) { + else if (x == 0 && y == 0) { return faceBase; } - else if (x==0) { - S = (S+numVerts-1)%numVerts; - return faceBase + 1 + (gridSize-2)*S + (y-1); + else if (x == 0) { + S = (S + numVerts - 1) % numVerts; + return faceBase + 1 + (gridSize - 2) * S + (y - 1); } - else if (y==0) { - return faceBase + 1 + (gridSize-2)*S + (x-1); + else if (y == 0) { + return faceBase + 1 + (gridSize - 2) * S + (x - 1); } else { - return faceBase + 1 + (gridSize-2)*numVerts + S*(gridSize-2)*(gridSize-2) + (y-1)*(gridSize-2) + (x-1); + return faceBase + 1 + (gridSize - 2) * numVerts + S * (gridSize - 2) * (gridSize - 2) + (y - 1) * (gridSize - 2) + (x - 1); } } static void get_face_uv_map_vert(UvVertMap *vmap, struct MPoly *mpoly, struct MLoop *ml, int fi, CCGVertHDL *fverts) { UvMapVert *v, *nv; - int j, nverts= mpoly[fi].totloop; + int j, nverts = mpoly[fi].totloop; - for (j=0; jnext) { + for (j = 0; j < nverts; j++) { + for (nv = v = get_uv_map_vert(vmap, ml[j].v); v; v = v->next) { if (v->separate) - nv= v; + nv = v; if (v->f == fi) break; } - fverts[j]= SET_INT_IN_POINTER(mpoly[nv->f].loopstart + nv->tfindex); + fverts[j] = SET_INT_IN_POINTER(mpoly[nv->f].loopstart + nv->tfindex); } } @@ -266,31 +266,31 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, UvMapVert *v; UvVertMap *vmap; float limit[2]; - CCGVertHDL *fverts= NULL; + CCGVertHDL *fverts = NULL; BLI_array_declare(fverts); EdgeHash *ehash; float creaseFactor = (float)ccgSubSurf_getSubdivisionLevels(ss); - float uv[3]= {0.0f, 0.0f, 0.0f}; /* only first 2 values are written into */ + float uv[3] = {0.0f, 0.0f, 0.0f}; /* only first 2 values are written into */ - limit[0]= limit[1]= STD_UV_CONNECT_LIMIT; - vmap= make_uv_vert_map(mpoly, mloop, mloopuv, totface, totvert, 0, limit); + limit[0] = limit[1] = STD_UV_CONNECT_LIMIT; + vmap = make_uv_vert_map(mpoly, mloop, mloopuv, totface, totvert, 0, limit); if (!vmap) return 0; ccgSubSurf_initFullSync(ss); /* create vertices */ - for (i=0; inext; v; v=v->next) + for (v = get_uv_map_vert(vmap, i)->next; v; v = v->next) if (v->separate) break; - seam = (v != NULL) || ((mvert+i)->flag & ME_VERT_MERGED); + seam = (v != NULL) || ((mvert + i)->flag & ME_VERT_MERGED); - for (v=get_uv_map_vert(vmap, i); v; v=v->next) { + for (v = get_uv_map_vert(vmap, i); v; v = v->next) { if (v->separate) { CCGVert *ssv; int loopid = mpoly[v->f].loopstart + v->tfindex; @@ -306,35 +306,35 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, /* create edges */ ehash = BLI_edgehash_new(); - for (i=0; itotloop; - CCGFace *origf= ccgSubSurf_getFace(origss, SET_INT_IN_POINTER(i)); + for (i = 0; i < totface; i++) { + MPoly *mp = &((MPoly *) mpoly)[i]; + int nverts = mp->totloop; + CCGFace *origf = ccgSubSurf_getFace(origss, SET_INT_IN_POINTER(i)); /* unsigned int *fv = &mp->v1; */ - MLoop *ml= mloop + mp->loopstart; + MLoop *ml = mloop + mp->loopstart; BLI_array_empty(fverts); BLI_array_growitems(fverts, nverts); get_face_uv_map_vert(vmap, mpoly, ml, i, fverts); - for (j=0; jloopstart + j); + CCGEdge *e, *orige = ccgSubSurf_getFaceEdge(origf, j); + CCGEdgeHDL ehdl = SET_INT_IN_POINTER(mp->loopstart + j); float crease; - if ((mv0->flag&mv1->flag) & ME_VERT_MERGED) + if ((mv0->flag & mv1->flag) & ME_VERT_MERGED) crease = creaseFactor; else crease = ccgSubSurf_getEdgeCrease(orige); - ccgSubSurf_syncEdge(ss, ehdl, fverts[j], fverts[(j+1)%nverts], crease, &e); + ccgSubSurf_syncEdge(ss, ehdl, fverts[j], fverts[(j + 1) % nverts], crease, &e); BLI_edgehash_insert(ehash, v0, v1, NULL); } } @@ -343,10 +343,10 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, BLI_edgehash_free(ehash, NULL); /* create faces */ - for (i=0; iloopstart]; - int nverts= mp->totloop; + MLoop *ml = &mloop[mp->loopstart]; + int nverts = mp->totloop; CCGFace *f; BLI_array_empty(fverts); @@ -396,7 +396,7 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, gridFaces = gridSize - 1; /* make a map from original faces to CCGFaces */ - faceMap = MEM_mallocN(totface*sizeof(*faceMap), "facemapuv"); + faceMap = MEM_mallocN(totface * sizeof(*faceMap), "facemapuv"); fi = ccgSubSurf_getFaceIterator(uvss); for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { @@ -406,22 +406,22 @@ static void set_subsurf_uv(CCGSubSurf *ss, DerivedMesh *dm, DerivedMesh *result, ccgFaceIterator_free(fi); /* load coordinates from uvss into tface */ - tf= tface; - mluv= mloopuv; + tf = tface; + mluv = mloopuv; for (index = 0; index < totface; index++) { CCGFace *f = faceMap[index]; int numVerts = ccgSubSurf_getFaceNumVerts(f); - for (S=0; Suv[0], a); @@ -466,41 +466,41 @@ static float *get_ss_weights(WeightTable *wtable, int gridCuts, int faceLen) float *w, w1, w2, w4, fac, fac2, fx, fy; if (wtable->len <= faceLen) { - void *tmp = MEM_callocN(sizeof(FaceVertWeightEntry)*(faceLen+1), "weight table alloc 2"); + void *tmp = MEM_callocN(sizeof(FaceVertWeightEntry) * (faceLen + 1), "weight table alloc 2"); if (wtable->len) { - memcpy(tmp, wtable->weight_table, sizeof(FaceVertWeightEntry)*wtable->len); + memcpy(tmp, wtable->weight_table, sizeof(FaceVertWeightEntry) * wtable->len); MEM_freeN(wtable->weight_table); } wtable->weight_table = tmp; - wtable->len = faceLen+1; + wtable->len = faceLen + 1; } if (!wtable->weight_table[faceLen].valid) { wtable->weight_table[faceLen].valid = 1; - wtable->weight_table[faceLen].w = w = MEM_callocN(sizeof(float)*faceLen*faceLen*(gridCuts+2)*(gridCuts+2), "weight table alloc"); + wtable->weight_table[faceLen].w = w = MEM_callocN(sizeof(float) * faceLen * faceLen * (gridCuts + 2) * (gridCuts + 2), "weight table alloc"); fac = 1.0f / (float)faceLen; - for (i=0; ilen; i++) { + for (i = 0; i < wtable->len; i++) { if (wtable->weight_table[i].valid) MEM_freeN(wtable->weight_table[i].w); } @@ -525,7 +525,7 @@ static void free_ss_weights(WeightTable *wtable) } static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, - float (*vertexCos)[3], int useFlatSubdiv) + float (*vertexCos)[3], int useFlatSubdiv) { float creaseFactor = (float) ccgSubSurf_getSubdivisionLevels(ss); CCGVertHDL *fVerts = NULL; @@ -559,7 +559,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, ccgSubSurf_syncVert(ss, SET_INT_IN_POINTER(i), mv->co, 0, &v); } - ((int*)ccgSubSurf_getVertUserData(ss, v))[1] = (index)? *index++: i; + ((int *)ccgSubSurf_getVertUserData(ss, v))[1] = (index) ? *index++ : i; } me = medge; @@ -569,24 +569,24 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, float crease; crease = useFlatSubdiv ? creaseFactor : - me->crease * creaseFactor / 255.0f; + me->crease * creaseFactor / 255.0f; ccgSubSurf_syncEdge(ss, SET_INT_IN_POINTER(i), SET_INT_IN_POINTER(me->v1), - SET_INT_IN_POINTER(me->v2), crease, &e); + SET_INT_IN_POINTER(me->v2), crease, &e); - ((int*)ccgSubSurf_getEdgeUserData(ss, e))[1] = (index)? *index++: i; + ((int *)ccgSubSurf_getEdgeUserData(ss, e))[1] = (index) ? *index++ : i; } mp = mpoly; index = DM_get_poly_data_layer(dm, CD_ORIGINDEX); - for (i=0; inumPolyData; i++, mp++) { + for (i = 0; i < dm->numPolyData; i++, mp++) { CCGFace *f; BLI_array_empty(fVerts); BLI_array_growitems(fVerts, mp->totloop); ml = mloop + mp->loopstart; - for (j=0; jtotloop; j++, ml++) { + for (j = 0; j < mp->totloop; j++, ml++) { fVerts[j] = SET_INT_IN_POINTER(ml->v); } @@ -595,7 +595,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, * other parts of code significantly to handle missing faces. * since this really shouldn't even be possible we just bail.*/ if (ccgSubSurf_syncFace(ss, SET_INT_IN_POINTER(i), mp->totloop, - fVerts, &f) == eCCGError_InvalidValue) { + fVerts, &f) == eCCGError_InvalidValue) { static int hasGivenError = 0; if (!hasGivenError) { @@ -608,7 +608,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, return; } - ((int*)ccgSubSurf_getFaceUserData(ss, f))[1] = (index)? *index++: i; + ((int *)ccgSubSurf_getFaceUserData(ss, f))[1] = (index) ? *index++ : i; } ccgSubSurf_processSync(ss); @@ -620,22 +620,22 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, static int ccgDM_getVertMapIndex(CCGSubSurf *ss, CCGVert *v) { - return ((int*) ccgSubSurf_getVertUserData(ss, v))[1]; + return ((int *) ccgSubSurf_getVertUserData(ss, v))[1]; } static int ccgDM_getEdgeMapIndex(CCGSubSurf *ss, CCGEdge *e) { - return ((int*) ccgSubSurf_getEdgeUserData(ss, e))[1]; + return ((int *) ccgSubSurf_getEdgeUserData(ss, e))[1]; } static int ccgDM_getFaceMapIndex(CCGSubSurf *ss, CCGFace *f) { - return ((int*) ccgSubSurf_getFaceUserData(ss, f))[1]; + return ((int *) ccgSubSurf_getFaceUserData(ss, f))[1]; } static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; CCGVertIterator *vi = ccgSubSurf_getVertIterator(ss); CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); @@ -657,7 +657,7 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3]) CCGEdge *e = ccgEdgeIterator_getCurrent(ei); DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); - for (i=0; iss); } static int ccgDM_getNumEdges(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; return ccgSubSurf_getNumFinalEdges(ccgdm->ss); } static int ccgDM_getNumTessFaces(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; return ccgSubSurf_getNumFinalFaces(ccgdm->ss); } static int ccgDM_getNumLoops(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; /* All subsurf faces are quads */ return 4 * ccgSubSurf_getNumFinalFaces(ccgdm->ss); @@ -710,7 +710,7 @@ static int ccgDM_getNumLoops(DerivedMesh *dm) static void ccgDM_getFinalVert(DerivedMesh *dm, int vertNum, MVert *mv) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; DMGridData *vd; int i; @@ -814,7 +814,7 @@ static void ccgDM_getFinalVertNo(DerivedMesh *dm, int vertNum, float no_r[3]) static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int i; @@ -833,39 +833,39 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) /* code added in bmesh but works correctly without, commenting - campbell */ #if 0 - int lasti, previ; + int lasti, previ; + i = lastface; + lasti = 0; + while (1) { + previ = i; + if (ccgdm->faceMap[i].startEdge >= edgeNum) { + i -= fabsf(i - lasti) / 2.0f; + } + else if (ccgdm->faceMap[i].startEdge < edgeNum) { + i += fabsf(i - lasti) / 2.0f; + } + else { + break; + } + + if (i < 0) { + i = 0; + break; + } + + if (i > lastface) { i = lastface; - lasti = 0; - while (1) { - previ = i; - if (ccgdm->faceMap[i].startEdge >= edgeNum) { - i -= fabsf(i-lasti)/2.0f; - } - else if (ccgdm->faceMap[i].startEdge < edgeNum) { - i += fabsf(i-lasti)/2.0f; - } - else { - break; - } + break; - if (i < 0) { - i = 0; - break; - } + } - if (i > lastface) { - i = lastface; - break; + if (i == lasti) + break; - } + lasti = previ; + } - if (i == lasti) - break; - - lasti = previ; - } - - i = i > 0 ? i - 1 : i; + i = i > 0 ? i - 1 : i; #endif i = 0; @@ -885,7 +885,7 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) if (offset < gridSideEdges) { x = offset; med->v1 = getFaceIndex(ss, f, grid, x, 0, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, grid, x+1, 0, edgeSize, gridSize); + med->v2 = getFaceIndex(ss, f, grid, x + 1, 0, edgeSize, gridSize); } else { offset -= gridSideEdges; @@ -893,11 +893,11 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) y = (offset / 2) % gridSideEdges; if (offset % 2 == 0) { med->v1 = getFaceIndex(ss, f, grid, x, y, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, grid, x, y+1, edgeSize, gridSize); + med->v2 = getFaceIndex(ss, f, grid, x, y + 1, edgeSize, gridSize); } else { med->v1 = getFaceIndex(ss, f, grid, y, x, edgeSize, gridSize); - med->v2 = getFaceIndex(ss, f, grid, y+1, x, edgeSize, gridSize); + med->v2 = getFaceIndex(ss, f, grid, y + 1, x, edgeSize, gridSize); } } } @@ -918,12 +918,11 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) x = edgeNum - ccgdm->edgeMap[i].startEdge; med->v1 = getEdgeIndex(ss, e, x, edgeSize); - med->v2 = getEdgeIndex(ss, e, x+1, edgeSize); + med->v2 = getEdgeIndex(ss, e, x + 1, edgeSize); - edgeFlag = (ccgdm->edgeFlags)? &ccgdm->edgeFlags[i]: NULL; + edgeFlag = (ccgdm->edgeFlags) ? &ccgdm->edgeFlags[i] : NULL; if (edgeFlag) - flags |= (*edgeFlag & (ME_SEAM | ME_SHARP)) - | ME_EDGEDRAW | ME_EDGERENDER; + flags |= (*edgeFlag & (ME_SEAM | ME_SHARP)) | ME_EDGEDRAW | ME_EDGERENDER; else flags |= ME_EDGEDRAW | ME_EDGERENDER; @@ -933,7 +932,7 @@ static void ccgDM_getFinalEdge(DerivedMesh *dm, int edgeNum, MEdge *med) static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int gridSize = ccgSubSurf_getGridSize(ss); int edgeSize = ccgSubSurf_getEdgeSize(ss); @@ -963,10 +962,10 @@ static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) y = offset / gridSideEdges; x = offset % gridSideEdges; - mf->v1 = getFaceIndex(ss, f, grid, x+0, y+0, edgeSize, gridSize); - mf->v2 = getFaceIndex(ss, f, grid, x+0, y+1, edgeSize, gridSize); - mf->v3 = getFaceIndex(ss, f, grid, x+1, y+1, edgeSize, gridSize); - mf->v4 = getFaceIndex(ss, f, grid, x+1, y+0, edgeSize, gridSize); + mf->v1 = getFaceIndex(ss, f, grid, x + 0, y + 0, edgeSize, gridSize); + mf->v2 = getFaceIndex(ss, f, grid, x + 0, y + 1, edgeSize, gridSize); + mf->v3 = getFaceIndex(ss, f, grid, x + 1, y + 1, edgeSize, gridSize); + mf->v4 = getFaceIndex(ss, f, grid, x + 1, y + 0, edgeSize, gridSize); if (faceFlags) { mf->flag = faceFlags[i].flag; @@ -978,9 +977,9 @@ static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) /* Translate GridHidden into the ME_HIDE flag for MVerts. Assumes vertices are in the order output by ccgDM_copyFinalVertArray. */ void subsurf_copy_grid_hidden(DerivedMesh *dm, const MPoly *mpoly, - MVert *mvert, const MDisps *mdisps) + MVert *mvert, const MDisps *mdisps) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; CCGSubSurf *ss = ccgdm->ss; int level = ccgSubSurf_getSubdivisionLevels(ss); int gridSize = ccgSubSurf_getGridSize(ss); @@ -1004,7 +1003,7 @@ void subsurf_copy_grid_hidden(DerivedMesh *dm, const MPoly *mpoly, int vndx, offset; vndx = getFaceIndex(ss, f, j, x, y, edgeSize, gridSize); - offset = (y*factor) * hidden_gridsize + (x*factor); + offset = (y * factor) * hidden_gridsize + (x * factor); if (BLI_BITMAP_GET(md->hidden, offset)) mvert[vndx].flag |= ME_HIDE; } @@ -1015,7 +1014,7 @@ void subsurf_copy_grid_hidden(DerivedMesh *dm, const MPoly *mpoly, static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; DMGridData *vd; int index; @@ -1029,14 +1028,14 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) CCGFace *f = ccgdm->faceMap[index].face; int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); - vd= ccgSubSurf_getFaceCenterData(f); + vd = ccgSubSurf_getFaceCenterData(f); copy_v3_v3(mvert[i].co, vd->co); normal_float_to_short_v3(mvert[i].no, vd->no); i++; for (S = 0; S < numVerts; S++) { for (x = 1; x < gridSize - 1; x++, i++) { - vd= ccgSubSurf_getFaceGridEdgeData(ss, f, S, x); + vd = ccgSubSurf_getFaceGridEdgeData(ss, f, S, x); copy_v3_v3(mvert[i].co, vd->co); normal_float_to_short_v3(mvert[i].no, vd->no); } @@ -1045,7 +1044,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) for (S = 0; S < numVerts; S++) { for (y = 1; y < gridSize - 1; y++) { for (x = 1; x < gridSize - 1; x++, i++) { - vd= ccgSubSurf_getFaceGridData(ss, f, S, x, y); + vd = ccgSubSurf_getFaceGridData(ss, f, S, x, y); copy_v3_v3(mvert[i].co, vd->co); normal_float_to_short_v3(mvert[i].no, vd->no); } @@ -1059,7 +1058,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) int x; for (x = 1; x < edgeSize - 1; x++, i++) { - vd= ccgSubSurf_getEdgeData(ss, e, x); + vd = ccgSubSurf_getEdgeData(ss, e, x); copy_v3_v3(mvert[i].co, vd->co); /* This gives errors with -debug-fpe * the normals don't seem to be unit length. @@ -1074,7 +1073,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) for (index = 0; index < totvert; index++) { CCGVert *v = ccgdm->vertMap[index].vert; - vd= ccgSubSurf_getVertData(ss, v); + vd = ccgSubSurf_getVertData(ss, v); copy_v3_v3(mvert[i].co, vd->co); normal_float_to_short_v3(mvert[i].no, vd->no); i++; @@ -1083,7 +1082,7 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int index; int totedge, totface; @@ -1116,18 +1115,18 @@ static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) if (ccgdm->drawInteriorEdges) med->flag = ME_EDGEDRAW | ME_EDGERENDER; med->v1 = getFaceIndex(ss, f, S, x, y, - edgeSize, gridSize); + edgeSize, gridSize); med->v2 = getFaceIndex(ss, f, S, x, y + 1, - edgeSize, gridSize); + edgeSize, gridSize); i++; med = &medge[i]; if (ccgdm->drawInteriorEdges) med->flag = ME_EDGEDRAW | ME_EDGERENDER; med->v1 = getFaceIndex(ss, f, S, y, x, - edgeSize, gridSize); + edgeSize, gridSize); med->v2 = getFaceIndex(ss, f, S, y + 1, x, - edgeSize, gridSize); + edgeSize, gridSize); i++; } } @@ -1146,7 +1145,7 @@ static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) if (edgeFlags) { if (edgeIdx != -1) { flags |= (edgeFlags[index] & (ME_SEAM | ME_SHARP)) - | ME_EDGEDRAW | ME_EDGERENDER; + | ME_EDGEDRAW | ME_EDGERENDER; } } else { @@ -1165,7 +1164,7 @@ static void ccgDM_copyFinalEdgeArray(DerivedMesh *dm, MEdge *medge) static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int index; int totface; @@ -1179,21 +1178,21 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) CCGFace *f = ccgdm->faceMap[index].face; int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); /* keep types in sync with MFace, avoid many conversions */ - char flag = (faceFlags)? faceFlags[index].flag: ME_SMOOTH; - short mat_nr = (faceFlags)? faceFlags[index].mat_nr: 0; + char flag = (faceFlags) ? faceFlags[index].flag : ME_SMOOTH; + short mat_nr = (faceFlags) ? faceFlags[index].mat_nr : 0; for (S = 0; S < numVerts; S++) { for (y = 0; y < gridSize - 1; y++) { for (x = 0; x < gridSize - 1; x++) { MFace *mf = &mface[i]; mf->v1 = getFaceIndex(ss, f, S, x + 0, y + 0, - edgeSize, gridSize); + edgeSize, gridSize); mf->v2 = getFaceIndex(ss, f, S, x + 0, y + 1, - edgeSize, gridSize); + edgeSize, gridSize); mf->v3 = getFaceIndex(ss, f, S, x + 1, y + 1, - edgeSize, gridSize); + edgeSize, gridSize); mf->v4 = getFaceIndex(ss, f, S, x + 1, y + 0, - edgeSize, gridSize); + edgeSize, gridSize); mf->mat_nr = mat_nr; mf->flag = flag; @@ -1206,7 +1205,7 @@ static void ccgDM_copyFinalFaceArray(DerivedMesh *dm, MFace *mface) static void ccgDM_copyFinalLoopArray(DerivedMesh *dm, MLoop *mloop) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int index; int totface; @@ -1220,9 +1219,9 @@ static void ccgDM_copyFinalLoopArray(DerivedMesh *dm, MLoop *mloop) MEdge *medge; ccgdm->ehash = BLI_edgehash_new(); - medge = ccgdm->dm.getEdgeArray((DerivedMesh*)ccgdm); + medge = ccgdm->dm.getEdgeArray((DerivedMesh *)ccgdm); - for (i=0; idm.numEdgeData; i++) { + for (i = 0; i < ccgdm->dm.numEdgeData; i++) { BLI_edgehash_insert(ccgdm->ehash, medge[i].v1, medge[i].v2, SET_INT_IN_POINTER(i)); } } @@ -1241,14 +1240,14 @@ static void ccgDM_copyFinalLoopArray(DerivedMesh *dm, MLoop *mloop) int v1, v2, v3, v4; v1 = getFaceIndex(ss, f, S, x + 0, y + 0, - edgeSize, gridSize); + edgeSize, gridSize); v2 = getFaceIndex(ss, f, S, x + 0, y + 1, - edgeSize, gridSize); + edgeSize, gridSize); v3 = getFaceIndex(ss, f, S, x + 1, y + 1, - edgeSize, gridSize); + edgeSize, gridSize); v4 = getFaceIndex(ss, f, S, x + 1, y + 0, - edgeSize, gridSize); + edgeSize, gridSize); mv->v = v1; mv->e = GET_INT_FROM_POINTER(BLI_edgehash_lookup(ccgdm->ehash, v1, v2)); @@ -1273,7 +1272,7 @@ static void ccgDM_copyFinalLoopArray(DerivedMesh *dm, MLoop *mloop) static void ccgDM_copyFinalPolyArray(DerivedMesh *dm, MPoly *mpoly) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int index; int totface; @@ -1286,8 +1285,8 @@ static void ccgDM_copyFinalPolyArray(DerivedMesh *dm, MPoly *mpoly) for (index = 0; index < totface; index++) { CCGFace *f = ccgdm->faceMap[index].face; int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f); - int flag = (faceFlags)? faceFlags[index].flag: ME_SMOOTH; - int mat_nr = (faceFlags)? faceFlags[index].mat_nr: 0; + int flag = (faceFlags) ? faceFlags[index].flag : ME_SMOOTH; + int mat_nr = (faceFlags) ? faceFlags[index].mat_nr : 0; for (S = 0; S < numVerts; S++) { for (y = 0; y < gridSize - 1; y++) { @@ -1309,7 +1308,7 @@ static void ccgDM_copyFinalPolyArray(DerivedMesh *dm, MPoly *mpoly) static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int edgeSize = ccgSubSurf_getEdgeSize(ss); int gridSize = ccgSubSurf_getGridSize(ss); @@ -1323,7 +1322,7 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) int index, totvert, totedge, totface; totvert = ccgSubSurf_getNumVerts(ss); - vertMap2 = MEM_mallocN(totvert*sizeof(*vertMap2), "vertmap"); + vertMap2 = MEM_mallocN(totvert * sizeof(*vertMap2), "vertmap"); vi = ccgSubSurf_getVertIterator(ss); for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { CCGVert *v = ccgVertIterator_getCurrent(vi); @@ -1333,16 +1332,16 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) ccgVertIterator_free(vi); totedge = ccgSubSurf_getNumEdges(ss); - edgeMap2 = MEM_mallocN(totedge*sizeof(*edgeMap2), "edgemap"); + edgeMap2 = MEM_mallocN(totedge * sizeof(*edgeMap2), "edgemap"); ei = ccgSubSurf_getEdgeIterator(ss); - for (i=0; !ccgEdgeIterator_isStopped(ei); i++,ccgEdgeIterator_next(ei)) { + for (i = 0; !ccgEdgeIterator_isStopped(ei); i++, ccgEdgeIterator_next(ei)) { CCGEdge *e = ccgEdgeIterator_getCurrent(ei); edgeMap2[GET_INT_FROM_POINTER(ccgSubSurf_getEdgeEdgeHandle(e))] = e; } totface = ccgSubSurf_getNumFaces(ss); - faceMap2 = MEM_mallocN(totface*sizeof(*faceMap2), "facemap"); + faceMap2 = MEM_mallocN(totface * sizeof(*faceMap2), "facemap"); fi = ccgSubSurf_getFaceIterator(ss); for (; !ccgFaceIterator_isStopped(fi); ccgFaceIterator_next(fi)) { CCGFace *f = ccgFaceIterator_getCurrent(fi); @@ -1352,37 +1351,37 @@ static void ccgdm_getVertCos(DerivedMesh *dm, float (*cos)[3]) ccgFaceIterator_free(fi); i = 0; - for (index=0; indexss); for (; !ccgVertIterator_isStopped(vi); ccgVertIterator_next(vi)) { @@ -1405,7 +1404,7 @@ static void ccgDM_foreachMappedVert( DMGridData *vd = ccgSubSurf_getVertData(ccgdm->ss, v); int index = ccgDM_getVertMapIndex(ccgdm->ss, v); - if (index!=-1) + if (index != -1) func(userData, index, vd->co, vd->no, NULL); } @@ -1413,11 +1412,11 @@ static void ccgDM_foreachMappedVert( } static void ccgDM_foreachMappedEdge( - DerivedMesh *dm, - void (*func)(void *userData, int index, const float v0co[3], const float v1co[3]), - void *userData) + DerivedMesh *dm, + void (*func)(void *userData, int index, const float v0co[3], const float v1co[3]), + void *userData) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); int i, edgeSize = ccgSubSurf_getEdgeSize(ss); @@ -1427,9 +1426,9 @@ static void ccgDM_foreachMappedEdge( DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); int index = ccgDM_getEdgeMapIndex(ss, e); - if (index!=-1) { - for (i=0; iss; int edgeSize = ccgSubSurf_getEdgeSize(ss); int gridSize = ccgSubSurf_getGridSize(ss); @@ -1459,7 +1458,7 @@ static void ccgDM_drawVerts(DerivedMesh *dm) CCGEdge *e = ccgEdgeIterator_getCurrent(ei); int x; - for (x=1; xpbvh, 1, (void***)&faces, &totface); + BLI_pbvh_get_grid_updates(ccgdm->pbvh, 1, (void ***)&faces, &totface); if (totface) { ccgSubSurf_updateFromFaces(ccgdm->ss, 0, faces, totface); ccgSubSurf_updateNormals(ccgdm->ss, faces, totface); @@ -1499,7 +1498,7 @@ static void ccgdm_pbvh_update(CCGDerivedMesh *ccgdm) static void ccgDM_drawEdges(DerivedMesh *dm, int drawLooseEdges, int drawAllEdges) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; int i, j, edgeSize = ccgSubSurf_getEdgeSize(ss); int totedge = ccgSubSurf_getNumEdges(ss); @@ -1510,7 +1509,7 @@ static void ccgDM_drawEdges(DerivedMesh *dm, int drawLooseEdges, int drawAllEdge ccgSubSurf_getUseAgeCounts(ss, &useAging, NULL, NULL, NULL); - for (j=0; j< totedge; j++) { + for (j = 0; j < totedge; j++) { CCGEdge *e = ccgdm->edgeMap[j].edge; DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); @@ -1520,20 +1519,20 @@ static void ccgDM_drawEdges(DerivedMesh *dm, int drawLooseEdges, int drawAllEdge if (!drawAllEdges && ccgdm->edgeFlags && !(ccgdm->edgeFlags[j] & ME_EDGEDRAW)) continue; - if (useAging && !(G.f&G_BACKBUFSEL)) { - int ageCol = 255-ccgSubSurf_getEdgeAge(ss, e)*4; - glColor3ub(0, ageCol>0?ageCol:0, 0); + if (useAging && !(G.f & G_BACKBUFSEL)) { + int ageCol = 255 - ccgSubSurf_getEdgeAge(ss, e) * 4; + glColor3ub(0, ageCol > 0 ? ageCol : 0, 0); } glBegin(GL_LINE_STRIP); - for (i=0; ifaceMap[j].face; int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); - for (S=0; Sss; int totedge = ccgSubSurf_getNumEdges(ss); int i, j, edgeSize = ccgSubSurf_getEdgeSize(ss); - for (j=0; j< totedge; j++) { + for (j = 0; j < totedge; j++) { CCGEdge *e = ccgdm->edgeMap[j].edge; DMGridData *edgeData = ccgSubSurf_getEdgeDataArray(ss, e); if (!ccgSubSurf_getEdgeNumFaces(e)) { glBegin(GL_LINE_STRIP); - for (i=0; iss; int gridSize = ccgSubSurf_getGridSize(ss); DMFlagMat *faceFlags = ccgdm->faceFlags; - int step = (fast)? gridSize-1: 1; + int step = (fast) ? gridSize - 1 : 1; int i, totface = ccgSubSurf_getNumFaces(ss); int drawcurrent = 0, matnr = -1, shademodel = -1; @@ -1633,19 +1632,19 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) int new_matnr, new_shademodel; if (faceFlags) { - new_shademodel = (faceFlags[index].flag & ME_SMOOTH)? GL_SMOOTH: GL_FLAT; - new_matnr= faceFlags[index].mat_nr; + new_shademodel = (faceFlags[index].flag & ME_SMOOTH) ? GL_SMOOTH : GL_FLAT; + new_matnr = faceFlags[index].mat_nr; } else { new_shademodel = GL_SMOOTH; - new_matnr= 0; + new_matnr = 0; } if (shademodel != new_shademodel || matnr != new_matnr) { - matnr= new_matnr; - shademodel= new_shademodel; + matnr = new_matnr; + shademodel = new_shademodel; - drawcurrent= setMaterial(matnr+1, NULL); + drawcurrent = setMaterial(matnr + 1, NULL); glShadeModel(shademodel); } @@ -1653,15 +1652,15 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) if (!drawcurrent) continue; - for (S=0; Sno); glVertex3fv(a->co); @@ -1673,12 +1672,12 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes) } else { glBegin(GL_QUADS); - for (y=0; yss; GPUVertexAttribs gattribs; - DMVertexAttribs attribs= {{{NULL}}}; + DMVertexAttribs attribs = {{{NULL}}}; /* MTFace *tf = dm->getTessFaceDataArray(dm, CD_MTFACE); */ /* UNUSED */ int gridSize = ccgSubSurf_getGridSize(ss); int gridFaces = gridSize - 1; @@ -1716,25 +1715,25 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, doDraw = 0; matnr = -1; -#define PASSATTRIB(dx, dy, vert) { \ - if (attribs.totorco) { \ - index = getFaceIndex(ss, f, S, x+dx, y+dy, edgeSize, gridSize); \ - glVertexAttrib3fvARB(attribs.orco.glIndex, attribs.orco.array[index]); \ - } \ - for (b = 0; b < attribs.tottface; b++) { \ - MTFace *tf = &attribs.tface[b].array[a]; \ - glVertexAttrib2fvARB(attribs.tface[b].glIndex, tf->uv[vert]); \ - } \ - for (b = 0; b < attribs.totmcol; b++) { \ - MCol *cp = &attribs.mcol[b].array[a*4 + vert]; \ - GLubyte col[4]; \ - col[0]= cp->b; col[1]= cp->g; col[2]= cp->r; col[3]= cp->a; \ - glVertexAttrib4ubvARB(attribs.mcol[b].glIndex, col); \ - } \ - if (attribs.tottang) { \ - float *tang = attribs.tang.array[a*4 + vert]; \ - glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \ - } \ +#define PASSATTRIB(dx, dy, vert) { \ + if (attribs.totorco) { \ + index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ + glVertexAttrib3fvARB(attribs.orco.glIndex, attribs.orco.array[index]); \ + } \ + for (b = 0; b < attribs.tottface; b++) { \ + MTFace *tf = &attribs.tface[b].array[a]; \ + glVertexAttrib2fvARB(attribs.tface[b].glIndex, tf->uv[vert]); \ + } \ + for (b = 0; b < attribs.totmcol; b++) { \ + MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ + GLubyte col[4]; \ + col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ + glVertexAttrib4ubvARB(attribs.mcol[b].glIndex, col); \ + } \ + if (attribs.tottang) { \ + float *tang = attribs.tang.array[a * 4 + vert]; \ + glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \ + } \ } totface = ccgSubSurf_getNumFaces(ss); @@ -1748,11 +1747,11 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, if (faceFlags) { drawSmooth = (faceFlags[index].flag & ME_SMOOTH); - new_matnr= faceFlags[index].mat_nr + 1; + new_matnr = faceFlags[index].mat_nr + 1; } else { drawSmooth = 1; - new_matnr= 1; + new_matnr = 1; } if (new_matnr != matnr) { @@ -1762,22 +1761,23 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, } if (!doDraw || (setDrawOptions && (origIndex != ORIGINDEX_NONE) && - (setDrawOptions(userData, origIndex) == DM_DRAW_OPTION_SKIP))) { - a += gridFaces*gridFaces*numVerts; + (setDrawOptions(userData, origIndex) == DM_DRAW_OPTION_SKIP))) + { + a += gridFaces * gridFaces * numVerts; continue; } - glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT); - for (S=0; Sno); @@ -1787,12 +1787,12 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, glNormal3fv(vdb->no); glVertex3fv(vdb->co); - if (x != gridFaces-1) + if (x != gridFaces - 1) a++; } - vda = &faceGridData[(y+0)*gridSize + x]; - vdb = &faceGridData[(y+1)*gridSize + x]; + vda = &faceGridData[(y + 0) * gridSize + x]; + vdb = &faceGridData[(y + 1) * gridSize + x]; PASSATTRIB(0, 0, 3); glNormal3fv(vda->no); @@ -1809,12 +1809,12 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, } else { glBegin(GL_QUADS); - for (y=0; ydrawMappedFacesGLSL(dm, setMaterial, NULL, NULL); } - /* Only used by non-editmesh types */ +/* Only used by non-editmesh types */ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void *userData, int, void *attribs), int (*setFace)(void *userData, int index), void *userData) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; GPUVertexAttribs gattribs; - DMVertexAttribs attribs= {{{NULL}}}; + DMVertexAttribs attribs = {{{NULL}}}; int gridSize = ccgSubSurf_getGridSize(ss); int gridFaces = gridSize - 1; int edgeSize = ccgSubSurf_getEdgeSize(ss); @@ -1860,31 +1860,31 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * matnr = -1; -#define PASSATTRIB(dx, dy, vert) { \ - if (attribs.totorco) { \ - index = getFaceIndex(ss, f, S, x+dx, y+dy, edgeSize, gridSize); \ - if (attribs.orco.glTexco) \ - glTexCoord3fv(attribs.orco.array[index]); \ - else \ - glVertexAttrib3fvARB(attribs.orco.glIndex, attribs.orco.array[index]); \ - } \ - for (b = 0; b < attribs.tottface; b++) { \ - MTFace *tf = &attribs.tface[b].array[a]; \ - if (attribs.tface[b].glTexco) \ - glTexCoord2fv(tf->uv[vert]); \ - else \ - glVertexAttrib2fvARB(attribs.tface[b].glIndex, tf->uv[vert]); \ - } \ - for (b = 0; b < attribs.totmcol; b++) { \ - MCol *cp = &attribs.mcol[b].array[a*4 + vert]; \ - GLubyte col[4]; \ - col[0]= cp->b; col[1]= cp->g; col[2]= cp->r; col[3]= cp->a; \ - glVertexAttrib4ubvARB(attribs.mcol[b].glIndex, col); \ - } \ - if (attribs.tottang) { \ - float *tang = attribs.tang.array[a*4 + vert]; \ - glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \ - } \ +#define PASSATTRIB(dx, dy, vert) { \ + if (attribs.totorco) { \ + index = getFaceIndex(ss, f, S, x + dx, y + dy, edgeSize, gridSize); \ + if (attribs.orco.glTexco) \ + glTexCoord3fv(attribs.orco.array[index]); \ + else \ + glVertexAttrib3fvARB(attribs.orco.glIndex, attribs.orco.array[index]); \ + } \ + for (b = 0; b < attribs.tottface; b++) { \ + MTFace *tf = &attribs.tface[b].array[a]; \ + if (attribs.tface[b].glTexco) \ + glTexCoord2fv(tf->uv[vert]); \ + else \ + glVertexAttrib2fvARB(attribs.tface[b].glIndex, tf->uv[vert]); \ + } \ + for (b = 0; b < attribs.totmcol; b++) { \ + MCol *cp = &attribs.mcol[b].array[a * 4 + vert]; \ + GLubyte col[4]; \ + col[0] = cp->b; col[1] = cp->g; col[2] = cp->r; col[3] = cp->a; \ + glVertexAttrib4ubvARB(attribs.mcol[b].glIndex, col); \ + } \ + if (attribs.tottang) { \ + float *tang = attribs.tang.array[a * 4 + vert]; \ + glVertexAttrib4fvARB(attribs.tang.glIndex, tang); \ + } \ } totface = ccgSubSurf_getNumFaces(ss); @@ -1899,11 +1899,11 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * /* get flags */ if (faceFlags) { drawSmooth = (faceFlags[index].flag & ME_SMOOTH); - new_matnr= faceFlags[index].mat_nr + 1; + new_matnr = faceFlags[index].mat_nr + 1; } else { drawSmooth = 1; - new_matnr= 1; + new_matnr = 1; } /* material */ @@ -1914,22 +1914,22 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * /* face hiding */ if ((setFace && (origIndex != ORIGINDEX_NONE) && !setFace(userData, origIndex))) { - a += gridFaces*gridFaces*numVerts; + a += gridFaces * gridFaces * numVerts; continue; } /* draw face*/ - glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT); - for (S=0; Sno); @@ -1939,12 +1939,12 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * glNormal3fv(vdb->no); glVertex3fv(vdb->co); - if (x != gridFaces-1) + if (x != gridFaces - 1) a++; } - vda = &faceGridData[(y+0)*gridSize + x]; - vdb = &faceGridData[(y+1)*gridSize + x]; + vda = &faceGridData[(y + 0) * gridSize + x]; + vdb = &faceGridData[(y + 1) * gridSize + x]; PASSATTRIB(0, 0, 3); glNormal3fv(vda->no); @@ -1961,12 +1961,12 @@ static void ccgDM_drawMappedFacesMat(DerivedMesh *dm, void (*setMaterial)(void * } else { glBegin(GL_QUADS); - for (y=0; yss; MCol *mcol = dm->getTessFaceDataArray(dm, CD_PREVIEW_MCOL); MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE); @@ -2021,50 +2021,50 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); int drawSmooth, index = ccgDM_getFaceMapIndex(ss, f); int origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f)); - unsigned char *cp= NULL; + unsigned char *cp = NULL; int mat_nr; if (faceFlags) { drawSmooth = (faceFlags[origIndex].flag & ME_SMOOTH); - mat_nr= faceFlags[origIndex].mat_nr; + mat_nr = faceFlags[origIndex].mat_nr; } else { drawSmooth = 1; - mat_nr= 0; + mat_nr = 0; } if (drawParams) draw_option = drawParams(tf, (mcol != NULL), mat_nr); else if (index != ORIGINDEX_NONE) - draw_option= (drawParamsMapped)? drawParamsMapped(userData, index): DM_DRAW_OPTION_NORMAL; + draw_option = (drawParamsMapped) ? drawParamsMapped(userData, index) : DM_DRAW_OPTION_NORMAL; else - draw_option= GPU_enable_material(mat_nr, NULL) ? DM_DRAW_OPTION_NORMAL : DM_DRAW_OPTION_SKIP; + draw_option = GPU_enable_material(mat_nr, NULL) ? DM_DRAW_OPTION_NORMAL : DM_DRAW_OPTION_SKIP; if (draw_option == DM_DRAW_OPTION_SKIP) { - if (tf) tf += gridFaces*gridFaces*numVerts; - if (mcol) mcol += gridFaces*gridFaces*numVerts*4; + if (tf) tf += gridFaces * gridFaces * numVerts; + if (mcol) mcol += gridFaces * gridFaces * numVerts * 4; continue; } /* flag 1 == use vertex colors */ if (mcol) { if (draw_option != DM_DRAW_OPTION_NO_MCOL) - cp= (unsigned char*)mcol; - mcol += gridFaces*gridFaces*numVerts*4; + cp = (unsigned char *)mcol; + mcol += gridFaces * gridFaces * numVerts * 4; } - for (S=0; Suv[0]); if (cp) glColor3ub(cp[3], cp[2], cp[1]); @@ -2076,14 +2076,14 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, glNormal3fv(b->no); glVertex3fv(b->co); - if (x != gridFaces-1) { + if (x != gridFaces - 1) { if (tf) tf++; if (cp) cp += 16; } } - a = &faceGridData[(y+0)*gridSize + x]; - b = &faceGridData[(y+1)*gridSize + x]; + a = &faceGridData[(y + 0) * gridSize + x]; + b = &faceGridData[(y + 1) * gridSize + x]; if (tf) glTexCoord2fv(tf->uv[3]); if (cp) glColor3ub(cp[15], cp[14], cp[13]); @@ -2104,12 +2104,12 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm, else { glShadeModel(GL_FLAT); glBegin(GL_QUADS); - for (y=0; ynumTessFaceData; i++, mf++, tf++) { - if (!(mf->flag&ME_HIDE)) { + if (!(mf->flag & ME_HIDE)) { glVertex2fv(tf->uv[0]); glVertex2fv(tf->uv[1]); @@ -2190,14 +2190,14 @@ static void ccgDM_drawUVEdges(DerivedMesh *dm) } static void ccgDM_drawMappedFaces(DerivedMesh *dm, - DMSetDrawOptions setDrawOptions, - DMSetMaterial setMaterial, - DMCompareDrawOptions compareDrawOptions, - void *userData, DMDrawFlag flag) + DMSetDrawOptions setDrawOptions, + DMSetMaterial setMaterial, + DMCompareDrawOptions compareDrawOptions, + void *userData, DMDrawFlag flag) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; - MCol *mcol= NULL; + MCol *mcol = NULL; int i, gridSize = ccgSubSurf_getGridSize(ss); DMFlagMat *faceFlags = ccgdm->faceFlags; int useColors = flag & DM_DRAW_USE_COLORS; @@ -2218,7 +2218,7 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f); int drawSmooth, index = ccgDM_getFaceMapIndex(ss, f); int origIndex; - unsigned char *cp= NULL; + unsigned char *cp = NULL; origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f)); @@ -2227,37 +2227,37 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, else drawSmooth = 1; if (mcol) { - cp= (unsigned char*)mcol; - mcol += gridFaces*gridFaces*numVerts*4; + cp = (unsigned char *)mcol; + mcol += gridFaces * gridFaces * numVerts * 4; } { - DMDrawOption draw_option= DM_DRAW_OPTION_NORMAL; + DMDrawOption draw_option = DM_DRAW_OPTION_NORMAL; if (index == ORIGINDEX_NONE) - draw_option= setMaterial(faceFlags ? faceFlags[origIndex].mat_nr + 1: 1, NULL); /* XXX, no faceFlags no material */ + draw_option = setMaterial(faceFlags ? faceFlags[origIndex].mat_nr + 1 : 1, NULL); /* XXX, no faceFlags no material */ else if (setDrawOptions) - draw_option= setDrawOptions(userData, index); + draw_option = setDrawOptions(userData, index); if (draw_option != DM_DRAW_OPTION_SKIP) { if (draw_option == DM_DRAW_OPTION_STIPPLE) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); + glEnable(GL_POLYGON_STIPPLE); + glPolygonStipple(stipple_quarttone); } /* no need to set shading mode to flat because * normals are already used to change shading */ glShadeModel(GL_SMOOTH); - for (S=0; Sno); @@ -2266,13 +2266,13 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, glNormal3fv(b->no); glVertex3fv(b->co); - if (x != gridFaces-1) { + if (x != gridFaces - 1) { if (cp) cp += 16; } } - a = &faceGridData[(y+0)*gridSize + x]; - b = &faceGridData[(y+1)*gridSize + x]; + a = &faceGridData[(y + 0) * gridSize + x]; + b = &faceGridData[(y + 1) * gridSize + x]; if (cp) glColor3ub(cp[15], cp[14], cp[13]); glNormal3fv(a->no); @@ -2288,12 +2288,12 @@ static void ccgDM_drawMappedFaces(DerivedMesh *dm, } else { glBegin(GL_QUADS); - for (y=0; yss; CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); @@ -2336,15 +2336,15 @@ static void ccgDM_drawMappedEdges(DerivedMesh *dm, int index = ccgDM_getEdgeMapIndex(ss, e); glBegin(GL_LINE_STRIP); - if (index!=-1 && (!setDrawOptions || (setDrawOptions(userData, index) != DM_DRAW_OPTION_SKIP))) { - if (useAging && !(G.f&G_BACKBUFSEL)) { - int ageCol = 255-ccgSubSurf_getEdgeAge(ss, e)*4; - glColor3ub(0, ageCol>0?ageCol:0, 0); + if (index != -1 && (!setDrawOptions || (setDrawOptions(userData, index) != DM_DRAW_OPTION_SKIP))) { + if (useAging && !(G.f & G_BACKBUFSEL)) { + int ageCol = 255 - ccgSubSurf_getEdgeAge(ss, e) * 4; + glColor3ub(0, ageCol > 0 ? ageCol : 0, 0); } - for (i=0; iss; CCGEdgeIterator *ei = ccgSubSurf_getEdgeIterator(ss); int i, useAging, edgeSize = ccgSubSurf_getEdgeSize(ss); @@ -2371,13 +2371,13 @@ static void ccgDM_drawMappedEdgesInterp(DerivedMesh *dm, int index = ccgDM_getEdgeMapIndex(ss, e); glBegin(GL_LINE_STRIP); - if (index!=-1 && (!setDrawOptions || (setDrawOptions(userData, index) != DM_DRAW_OPTION_SKIP))) { - for (i=0; i0?ageCol:0, 0); + if (useAging && !(G.f & G_BACKBUFSEL)) { + int ageCol = 255 - ccgSubSurf_getEdgeAge(ss, e) * 4; + glColor3ub(0, ageCol > 0 ? ageCol : 0, 0); } glVertex3fv(edgeData[i].co); @@ -2390,11 +2390,11 @@ static void ccgDM_drawMappedEdgesInterp(DerivedMesh *dm, } static void ccgDM_foreachMappedFaceCenter( - DerivedMesh *dm, - void (*func)(void *userData, int index, const float co[3], const float no[3]), - void *userData) + DerivedMesh *dm, + void (*func)(void *userData, int index, const float co[3], const float no[3]), + void *userData) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; CCGSubSurf *ss = ccgdm->ss; CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss); @@ -2402,8 +2402,8 @@ static void ccgDM_foreachMappedFaceCenter( CCGFace *f = ccgFaceIterator_getCurrent(fi); int index = ccgDM_getFaceMapIndex(ss, f); - if (index!=-1) { - /* Face center data normal isn't updated atm. */ + if (index != -1) { + /* Face center data normal isn't updated atm. */ DMGridData *vd = ccgSubSurf_getFaceGridData(ss, f, 0, 0, 0); func(userData, index, vd->co, vd->no); @@ -2415,14 +2415,14 @@ static void ccgDM_foreachMappedFaceCenter( static void ccgDM_release(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *) dm; if (DM_release(dm)) { /* Before freeing, need to update the displacement map */ if (ccgdm->multires.modified_flags) { /* Check that mmd still exists */ if (!ccgdm->multires.local_mmd && - BLI_findindex(&ccgdm->multires.ob->modifiers, ccgdm->multires.mmd) < 0) + BLI_findindex(&ccgdm->multires.ob->modifiers, ccgdm->multires.mmd) < 0) ccgdm->multires.mmd = NULL; if (ccgdm->multires.mmd) { @@ -2473,23 +2473,23 @@ static void ccg_loops_to_corners(CustomData *fdata, CustomData *ldata, MLoopUV *mloopuv; int i, j; - for (i=0; i < numTex; i++) { + for (i = 0; i < numTex; i++) { texface = CustomData_get_n(fdata, CD_MTFACE, findex, i); texpoly = CustomData_get_n(pdata, CD_MTEXPOLY, polyindex, i); ME_MTEXFACE_CPY(texface, texpoly); mloopuv = CustomData_get_n(ldata, CD_MLOOPUV, loopstart, i); - for (j=0; j<4; j++, mloopuv++) { + for (j = 0; j < 4; j++, mloopuv++) { copy_v2_v2(texface->uv[j], mloopuv->uv); } } - for (i=0; i < numCol; i++) { + for (i = 0; i < numCol; i++) { mloopcol = CustomData_get_n(ldata, CD_MLOOPCOL, loopstart, i); mcol = CustomData_get_n(fdata, CD_MCOL, findex, i); - for (j=0; j<4; j++, mloopcol++) { + for (j = 0; j < 4; j++, mloopcol++) { MESH_MLOOPCOL_TO_MCOL(mloopcol, &mcol[j]); } } @@ -2498,7 +2498,7 @@ static void ccg_loops_to_corners(CustomData *fdata, CustomData *ldata, mloopcol = CustomData_get(ldata, loopstart, CD_PREVIEW_MLOOPCOL); mcol = CustomData_get(fdata, findex, CD_PREVIEW_MCOL); - for (j=0; j<4; j++, mloopcol++) { + for (j = 0; j < 4; j++, mloopcol++) { MESH_MLOOPCOL_TO_MCOL(mloopcol, &mcol[j]); } } @@ -2508,7 +2508,7 @@ static void ccg_loops_to_corners(CustomData *fdata, CustomData *ldata, OrigSpaceLoop *lof; lof = CustomData_get(ldata, loopstart, CD_ORIGSPACE_MLOOP); - for (j=0; j<4; j++, lof++) { + for (j = 0; j < 4; j++, lof++) { copy_v2_v2(of->uv[j], lof->uv); } } @@ -2518,8 +2518,8 @@ static void *ccgDM_get_vert_data_layer(DerivedMesh *dm, int type) { if (type == CD_ORIGINDEX) { /* create origindex on demand to save memory */ - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; - CCGSubSurf *ss= ccgdm->ss; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; + CCGSubSurf *ss = ccgdm->ss; int *origindex; int a, index, totnone, totorig; @@ -2530,16 +2530,16 @@ static void *ccgDM_get_vert_data_layer(DerivedMesh *dm, int type) } DM_add_vert_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); - origindex= DM_get_vert_data_layer(dm, CD_ORIGINDEX); + origindex = DM_get_vert_data_layer(dm, CD_ORIGINDEX); totorig = ccgSubSurf_getNumVerts(ss); - totnone= dm->numVertData - totorig; + totnone = dm->numVertData - totorig; /* original vertices are at the end */ - for (a=0; avertMap[index].vert; origindex[a] = ccgDM_getVertMapIndex(ccgdm->ss, v); } @@ -2554,11 +2554,11 @@ static void *ccgDM_get_edge_data_layer(DerivedMesh *dm, int type) { if (type == CD_ORIGINDEX) { /* create origindex on demand to save memory */ - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; - CCGSubSurf *ss= ccgdm->ss; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; + CCGSubSurf *ss = ccgdm->ss; int *origindex; int a, i, index, totnone, totorig, totedge; - int edgeSize= ccgSubSurf_getEdgeSize(ss); + int edgeSize = ccgSubSurf_getEdgeSize(ss); /* Avoid re-creation if the layer exists already */ origindex = DM_get_edge_data_layer(dm, CD_ORIGINDEX); @@ -2567,22 +2567,22 @@ static void *ccgDM_get_edge_data_layer(DerivedMesh *dm, int type) } DM_add_edge_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); - origindex= DM_get_edge_data_layer(dm, CD_ORIGINDEX); + origindex = DM_get_edge_data_layer(dm, CD_ORIGINDEX); - totedge= ccgSubSurf_getNumEdges(ss); - totorig= totedge*(edgeSize - 1); - totnone= dm->numEdgeData - totorig; + totedge = ccgSubSurf_getNumEdges(ss); + totorig = totedge * (edgeSize - 1); + totnone = dm->numEdgeData - totorig; /* original edges are at the end */ - for (a=0; aedgeMap[index].edge; - int mapIndex= ccgDM_getEdgeMapIndex(ss, e); + for (index = 0; index < totedge; index++) { + CCGEdge *e = ccgdm->edgeMap[index].edge; + int mapIndex = ccgDM_getEdgeMapIndex(ss, e); for (i = 0; i < edgeSize - 1; i++, a++) - origindex[a]= mapIndex; + origindex[a] = mapIndex; } return origindex; @@ -2595,8 +2595,8 @@ static void *ccgDM_get_tessface_data_layer(DerivedMesh *dm, int type) { if (type == CD_ORIGINDEX) { /* create origindex on demand to save memory */ - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; - CCGSubSurf *ss= ccgdm->ss; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; + CCGSubSurf *ss = ccgdm->ss; int *origindex; int a, i, index, totface; int gridFaces = ccgSubSurf_getGridSize(ss) - 1; @@ -2608,17 +2608,17 @@ static void *ccgDM_get_tessface_data_layer(DerivedMesh *dm, int type) } DM_add_tessface_layer(dm, CD_ORIGINDEX, CD_CALLOC, NULL); - origindex= DM_get_tessface_data_layer(dm, CD_ORIGINDEX); + origindex = DM_get_tessface_data_layer(dm, CD_ORIGINDEX); - totface= ccgSubSurf_getNumFaces(ss); + totface = ccgSubSurf_getNumFaces(ss); - for (a=0, index=0; indexfaceMap[index].face; int numVerts = ccgSubSurf_getFaceNumVerts(f); int mapIndex = ccgDM_getFaceMapIndex(ss, f); - for (i=0; iss); - numGrids= 0; + numFaces = ccgSubSurf_getNumFaces(ccgdm->ss); + numGrids = 0; - for (index=0; indexfaceMap[index].face; numGrids += ccgSubSurf_getFaceNumVerts(f); } @@ -2675,7 +2675,7 @@ static int ccgDM_getNumGrids(DerivedMesh *dm) static int ccgDM_getGridSize(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; return ccgSubSurf_getGridSize(ccgdm->ss); } @@ -2683,7 +2683,7 @@ static int ccgdm_adjacent_grid(int *gridOffset, CCGFace *f, int S, int offset) { CCGFace *adjf; CCGEdge *e; - int i, j= 0, numFaces, fIndex, numEdges= 0; + int i, j = 0, numFaces, fIndex, numEdges = 0; e = ccgSubSurf_getFaceEdge(f, S); numFaces = ccgSubSurf_getEdgeNumFaces(e); @@ -2710,13 +2710,13 @@ static int ccgdm_adjacent_grid(int *gridOffset, CCGFace *f, int S, int offset) fIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(adjf)); - return gridOffset[fIndex] + (j + offset)%numEdges; + return gridOffset[fIndex] + (j + offset) % numEdges; } static void ccgdm_create_grids(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; - CCGSubSurf *ss= ccgdm->ss; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; + CCGSubSurf *ss = ccgdm->ss; DMGridData **gridData; DMGridAdjacency *gridAdjacency, *adj; DMFlagMat *gridFlagMats; @@ -2732,7 +2732,7 @@ static void ccgdm_create_grids(DerivedMesh *dm) /*gridSize = ccgDM_getGridSize(dm);*/ /*UNUSED*/ /* compute offset into grid array for each face */ - gridOffset = MEM_mallocN(sizeof(int)*numFaces, "ccgdm.gridOffset"); + gridOffset = MEM_mallocN(sizeof(int) * numFaces, "ccgdm.gridOffset"); for (gIndex = 0, index = 0; index < numFaces; index++) { CCGFace *f = ccgdm->faceMap[index].face; @@ -2743,12 +2743,12 @@ static void ccgdm_create_grids(DerivedMesh *dm) } /* compute grid data */ - gridData = MEM_mallocN(sizeof(DMGridData*)*numGrids, "ccgdm.gridData"); - gridAdjacency = MEM_mallocN(sizeof(DMGridAdjacency)*numGrids, "ccgdm.gridAdjacency"); - gridFaces = MEM_mallocN(sizeof(CCGFace*)*numGrids, "ccgdm.gridFaces"); - gridFlagMats = MEM_mallocN(sizeof(DMFlagMat)*numGrids, "ccgdm.gridFlagMats"); + gridData = MEM_mallocN(sizeof(DMGridData *) * numGrids, "ccgdm.gridData"); + gridAdjacency = MEM_mallocN(sizeof(DMGridAdjacency) * numGrids, "ccgdm.gridAdjacency"); + gridFaces = MEM_mallocN(sizeof(CCGFace *) * numGrids, "ccgdm.gridFaces"); + gridFlagMats = MEM_mallocN(sizeof(DMFlagMat) * numGrids, "ccgdm.gridFlagMats"); - ccgdm->gridHidden = MEM_callocN(sizeof(BLI_bitmap)*numGrids, "ccgdm.gridHidden"); + ccgdm->gridHidden = MEM_callocN(sizeof(BLI_bitmap) * numGrids, "ccgdm.gridHidden"); for (gIndex = 0, index = 0; index < numFaces; index++) { CCGFace *f = ccgdm->faceMap[index].face; @@ -2784,7 +2784,7 @@ static void ccgdm_create_grids(DerivedMesh *dm) static DMGridData **ccgDM_getGridData(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; ccgdm_create_grids(dm); return ccgdm->gridData; @@ -2792,7 +2792,7 @@ static DMGridData **ccgDM_getGridData(DerivedMesh *dm) static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; ccgdm_create_grids(dm); return ccgdm->gridAdjacency; @@ -2800,7 +2800,7 @@ static DMGridAdjacency *ccgDM_getGridAdjacency(DerivedMesh *dm) static int *ccgDM_getGridOffset(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; ccgdm_create_grids(dm); return ccgdm->gridOffset; @@ -2808,7 +2808,7 @@ static int *ccgDM_getGridOffset(DerivedMesh *dm) static DMFlagMat *ccgDM_getGridFlagMats(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; ccgdm_create_grids(dm); return ccgdm->gridFlagMats; @@ -2816,7 +2816,7 @@ static DMFlagMat *ccgDM_getGridFlagMats(DerivedMesh *dm) static BLI_bitmap *ccgDM_getGridHidden(DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; ccgdm_create_grids(dm); return ccgdm->gridHidden; @@ -2824,10 +2824,10 @@ static BLI_bitmap *ccgDM_getGridHidden(DerivedMesh *dm) static const MeshElemMap *ccgDM_getPolyMap(Object *ob, DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; if (!ccgdm->multires.mmd && !ccgdm->pmap && ob->type == OB_MESH) { - Mesh *me= ob->data; + Mesh *me = ob->data; create_vert_poly_map(&ccgdm->pmap, &ccgdm->pmap_mem, me->mpoly, me->mloop, @@ -2839,7 +2839,7 @@ static const MeshElemMap *ccgDM_getPolyMap(Object *ob, DerivedMesh *dm) static int ccgDM_use_grid_pbvh(CCGDerivedMesh *ccgdm) { - MultiresModifierData *mmd= ccgdm->multires.mmd; + MultiresModifierData *mmd = ccgdm->multires.mmd; /* both of multires and subsurf modifiers are CCG, but * grids should only be used when sculpting on multires */ @@ -2851,18 +2851,18 @@ static int ccgDM_use_grid_pbvh(CCGDerivedMesh *ccgdm) static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) { - CCGDerivedMesh *ccgdm= (CCGDerivedMesh*)dm; + CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm; int gridSize, numGrids, grid_pbvh; if (!ob) { - ccgdm->pbvh= NULL; + ccgdm->pbvh = NULL; return NULL; } if (!ob->sculpt) return NULL; - grid_pbvh= ccgDM_use_grid_pbvh(ccgdm); + grid_pbvh = ccgDM_use_grid_pbvh(ccgdm); if (ob->sculpt->pbvh) { if (grid_pbvh) { @@ -2871,7 +2871,7 @@ static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) * when the ccgdm gets remade, the assumption is that the topology * does not change. */ ccgdm_create_grids(dm); - BLI_pbvh_grids_update(ob->sculpt->pbvh, ccgdm->gridData, ccgdm->gridAdjacency, (void**)ccgdm->gridFaces); + BLI_pbvh_grids_update(ob->sculpt->pbvh, ccgdm->gridData, ccgdm->gridAdjacency, (void **)ccgdm->gridFaces); } ccgdm->pbvh = ob->sculpt->pbvh; @@ -2889,16 +2889,16 @@ static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm) gridSize = ccgDM_getGridSize(dm); numGrids = ccgDM_getNumGrids(dm); - ob->sculpt->pbvh= ccgdm->pbvh = BLI_pbvh_new(); + ob->sculpt->pbvh = ccgdm->pbvh = BLI_pbvh_new(); BLI_pbvh_build_grids(ccgdm->pbvh, ccgdm->gridData, ccgdm->gridAdjacency, - numGrids, gridSize, (void**)ccgdm->gridFaces, ccgdm->gridFlagMats, ccgdm->gridHidden); + numGrids, gridSize, (void **)ccgdm->gridFaces, ccgdm->gridFlagMats, ccgdm->gridHidden); } else if (ob->type == OB_MESH) { - Mesh *me= ob->data; - ob->sculpt->pbvh= ccgdm->pbvh = BLI_pbvh_new(); + Mesh *me = ob->data; + ob->sculpt->pbvh = ccgdm->pbvh = BLI_pbvh_new(); BLI_assert(!(me->mface == NULL && me->mpoly != NULL)); /* BMESH ONLY complain if mpoly is valid but not mface */ BLI_pbvh_build_mesh(ccgdm->pbvh, me->mface, me->mvert, - me->totface, me->totvert); + me->totface, me->totvert); } return ccgdm->pbvh; @@ -2915,9 +2915,9 @@ static void ccgDM_calcNormals(DerivedMesh *UNUSED(dm)) } static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, - int drawInteriorEdges, - int useSubsurfUv, - DerivedMesh *dm) + int drawInteriorEdges, + int useSubsurfUv, + DerivedMesh *dm) { CCGDerivedMesh *ccgdm = MEM_callocN(sizeof(*ccgdm), "ccgdm"); CCGVertIterator *vi; @@ -2949,14 +2949,14 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, MPoly *mpoly = NULL; DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM, - ccgSubSurf_getNumFinalVerts(ss), - ccgSubSurf_getNumFinalEdges(ss), - ccgSubSurf_getNumFinalFaces(ss), - ccgSubSurf_getNumFinalFaces(ss)*4, - ccgSubSurf_getNumFinalFaces(ss)); + ccgSubSurf_getNumFinalVerts(ss), + ccgSubSurf_getNumFinalEdges(ss), + ccgSubSurf_getNumFinalFaces(ss), + ccgSubSurf_getNumFinalFaces(ss) * 4, + ccgSubSurf_getNumFinalFaces(ss)); CustomData_free_layer_active(&ccgdm->dm.polyData, CD_NORMAL, - ccgdm->dm.numPolyData); + ccgdm->dm.numPolyData); numTex = CustomData_number_of_layers(&ccgdm->dm.loopData, CD_MLOOPUV); numCol = CustomData_number_of_layers(&ccgdm->dm.loopData, CD_MLOOPCOL); @@ -2964,10 +2964,10 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, hasOrigSpace = CustomData_has_layer(&ccgdm->dm.loopData, CD_ORIGSPACE_MLOOP); if ( - (numTex && CustomData_number_of_layers(&ccgdm->dm.faceData, CD_MTFACE) != numTex) || - (numCol && CustomData_number_of_layers(&ccgdm->dm.faceData, CD_MCOL) != numCol) || - (hasPCol && !CustomData_has_layer(&ccgdm->dm.faceData, CD_PREVIEW_MCOL)) || - (hasOrigSpace && !CustomData_has_layer(&ccgdm->dm.faceData, CD_ORIGSPACE)) ) + (numTex && CustomData_number_of_layers(&ccgdm->dm.faceData, CD_MTFACE) != numTex) || + (numCol && CustomData_number_of_layers(&ccgdm->dm.faceData, CD_MCOL) != numCol) || + (hasPCol && !CustomData_has_layer(&ccgdm->dm.faceData, CD_PREVIEW_MCOL)) || + (hasOrigSpace && !CustomData_has_layer(&ccgdm->dm.faceData, CD_ORIGSPACE)) ) { CustomData_from_bmeshpoly(&ccgdm->dm.faceData, &ccgdm->dm.polyData, @@ -3080,7 +3080,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, } ccgFaceIterator_free(fi); - ccgdm->reverseFaceMap = MEM_callocN(sizeof(int)*ccgSubSurf_getNumFinalFaces(ss), "reverseFaceMap"); + ccgdm->reverseFaceMap = MEM_callocN(sizeof(int) * ccgSubSurf_getNumFinalFaces(ss), "reverseFaceMap"); edgeSize = ccgSubSurf_getEdgeSize(ss); gridSize = ccgSubSurf_getGridSize(ss); @@ -3102,8 +3102,8 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, base_polyOrigIndex = CustomData_get_layer(&dm->polyData, CD_ORIGINDEX); /*CDDM hack*/ - edgeFlags = ccgdm->edgeFlags = MEM_callocN(sizeof(short)*totedge, "edgeFlags"); - faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(DMFlagMat)*totface, "faceFlags"); + edgeFlags = ccgdm->edgeFlags = MEM_callocN(sizeof(short) * totedge, "edgeFlags"); + faceFlags = ccgdm->faceFlags = MEM_callocN(sizeof(DMFlagMat) * totface, "faceFlags"); vertOrigIndex = DM_get_vert_data_layer(&ccgdm->dm, CD_ORIGINDEX); /*edgeOrigIndex = DM_get_edge_data_layer(&ccgdm->dm, CD_ORIGINDEX);*/ @@ -3128,7 +3128,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, int numVerts = ccgSubSurf_getFaceNumVerts(f); int numFinalEdges = numVerts * (gridSideEdges + gridInternalEdges); int origIndex = GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(f)); - int g2_wid = gridCuts+2; + int g2_wid = gridCuts + 2; float *w2; int s, x, y; @@ -3145,7 +3145,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, faceFlags++; /* set the face base vert */ - *((int*)ccgSubSurf_getFaceUserData(ss, f)) = vertNum; + *((int *)ccgSubSurf_getFaceUserData(ss, f)) = vertNum; BLI_array_empty(loopidx); BLI_array_growitems(loopidx, numVerts); @@ -3175,9 +3175,9 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, /*interpolate per-vert data*/ for (s = 0; s < numVerts; s++) { for (x = 1; x < gridFaces; x++) { - w2 = w + s*numVerts*g2_wid*g2_wid + x*numVerts; + w2 = w + s * numVerts * g2_wid * g2_wid + x * numVerts; DM_interp_vert_data(dm, &ccgdm->dm, vertidx, w2, - numVerts, vertNum); + numVerts, vertNum); if (vertOrigIndex) { *vertOrigIndex = ORIGINDEX_NONE; @@ -3192,9 +3192,9 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, for (s = 0; s < numVerts; s++) { for (y = 1; y < gridFaces; y++) { for (x = 1; x < gridFaces; x++) { - w2 = w + s*numVerts*g2_wid*g2_wid + (y*g2_wid+x)*numVerts; + w2 = w + s * numVerts * g2_wid * g2_wid + (y * g2_wid + x) * numVerts; DM_interp_vert_data(dm, &ccgdm->dm, vertidx, w2, - numVerts, vertNum); + numVerts, vertNum); if (vertOrigIndex) { *vertOrigIndex = ORIGINDEX_NONE; @@ -3209,29 +3209,29 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, if (has_edge_origindex) { for (i = 0; i < numFinalEdges; ++i) *(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i, - CD_ORIGINDEX) = ORIGINDEX_NONE; + CD_ORIGINDEX) = ORIGINDEX_NONE; } - for (s=0; sloopData, &ccgdm->dm.loopData, loopidx, w2, NULL, numVerts, loopindex2); loopindex2++; - w2 = w + s*numVerts*g2_wid*g2_wid + ((y+1)*g2_wid+(x))*numVerts; + w2 = w + s * numVerts * g2_wid * g2_wid + ((y + 1) * g2_wid + (x)) * numVerts; CustomData_interp(&dm->loopData, &ccgdm->dm.loopData, loopidx, w2, NULL, numVerts, loopindex2); loopindex2++; - w2 = w + s*numVerts*g2_wid*g2_wid + ((y+1)*g2_wid+(x+1))*numVerts; + w2 = w + s * numVerts * g2_wid * g2_wid + ((y + 1) * g2_wid + (x + 1)) * numVerts; CustomData_interp(&dm->loopData, &ccgdm->dm.loopData, loopidx, w2, NULL, numVerts, loopindex2); loopindex2++; - w2 = w + s*numVerts*g2_wid*g2_wid + ((y)*g2_wid+(x+1))*numVerts; + w2 = w + s * numVerts * g2_wid * g2_wid + ((y) * g2_wid + (x + 1)) * numVerts; CustomData_interp(&dm->loopData, &ccgdm->dm.loopData, loopidx, w2, NULL, numVerts, loopindex2); loopindex2++; @@ -3241,7 +3241,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, /*generate tessellated face data used for drawing*/ ccg_loops_to_corners(&ccgdm->dm.faceData, &ccgdm->dm.loopData, - &ccgdm->dm.polyData, loopindex2-4, faceNum, faceNum, + &ccgdm->dm.polyData, loopindex2 - 4, faceNum, faceNum, numTex, numCol, hasPCol, hasOrigSpace); /*set original index data*/ @@ -3288,7 +3288,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, edgeFlags[edgeIdx] = medge[edgeIdx].flag; /* set the edge base vert */ - *((int*)ccgSubSurf_getEdgeUserData(ss, e)) = vertNum; + *((int *)ccgSubSurf_getEdgeUserData(ss, e)) = vertNum; for (x = 1; x < edgeSize - 1; x++) { float w[2]; @@ -3304,8 +3304,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, for (i = 0; i < numFinalEdges; ++i) { if (has_edge_origindex) { - *(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i, - CD_ORIGINDEX) = mapIndex; + *(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i, CD_ORIGINDEX) = mapIndex; } } @@ -3318,7 +3317,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, int numlayer = CustomData_number_of_layers(ldata, CD_MLOOPUV); int dmnumlayer = CustomData_number_of_layers(dmldata, CD_MLOOPUV); - for (i=0; idm, i); } @@ -3332,7 +3331,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, ccgdm->vertMap[index].startVert = vertNum; /* set the vert base vert */ - *((int*) ccgSubSurf_getVertUserData(ss, v)) = vertNum; + *((int *) ccgSubSurf_getVertUserData(ss, v)) = vertNum; DM_copy_vert_data(dm, &ccgdm->dm, vertIdx, vertNum, 1); @@ -3362,10 +3361,10 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, /***/ struct DerivedMesh *subsurf_make_derived_from_derived( - struct DerivedMesh *dm, - struct SubsurfModifierData *smd, - int useRenderParams, float (*vertCos)[3], - int isFinalCalc, int forEditMode, int inEditMode) + struct DerivedMesh *dm, + struct SubsurfModifierData *smd, + int useRenderParams, float (*vertCos)[3], + int isFinalCalc, int forEditMode, int inEditMode) { int useSimple = smd->subdivType == ME_SIMPLE_SUBSURF; CCGFlags useAging = smd->flags & eSubsurfModifierFlag_DebugIncr ? CCG_USE_AGING : 0; @@ -3374,35 +3373,35 @@ struct DerivedMesh *subsurf_make_derived_from_derived( CCGDerivedMesh *result; if (forEditMode) { - int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels; + int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels) : smd->levels; - smd->emCache = _getSubSurf(smd->emCache, levels, useAging|CCG_CALC_NORMALS); + smd->emCache = _getSubSurf(smd->emCache, levels, useAging | CCG_CALC_NORMALS); ss_sync_from_derivedmesh(smd->emCache, dm, vertCos, useSimple); result = getCCGDerivedMesh(smd->emCache, - drawInteriorEdges, - useSubsurfUv, dm); + drawInteriorEdges, + useSubsurfUv, dm); } else if (useRenderParams) { /* Do not use cache in render mode. */ CCGSubSurf *ss; - int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels): smd->renderLevels; + int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels) : smd->renderLevels; if (levels == 0) return dm; - ss = _getSubSurf(NULL, levels, CCG_USE_ARENA|CCG_CALC_NORMALS); + ss = _getSubSurf(NULL, levels, CCG_USE_ARENA | CCG_CALC_NORMALS); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); result = getCCGDerivedMesh(ss, - drawInteriorEdges, useSubsurfUv, dm); + drawInteriorEdges, useSubsurfUv, dm); result->freeSS = 1; } else { int useIncremental = (smd->flags & eSubsurfModifierFlag_Incremental); - int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels; + int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels) : smd->levels; CCGSubSurf *ss; /* It is quite possible there is a much better place to do this. It @@ -3422,13 +3421,13 @@ struct DerivedMesh *subsurf_make_derived_from_derived( } if (useIncremental && isFinalCalc) { - smd->mCache = ss = _getSubSurf(smd->mCache, levels, useAging|CCG_CALC_NORMALS); + smd->mCache = ss = _getSubSurf(smd->mCache, levels, useAging | CCG_CALC_NORMALS); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); result = getCCGDerivedMesh(smd->mCache, - drawInteriorEdges, - useSubsurfUv, dm); + drawInteriorEdges, + useSubsurfUv, dm); } else { if (smd->mCache && isFinalCalc) { @@ -3436,7 +3435,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived( smd->mCache = NULL; } - ss = _getSubSurf(NULL, levels, CCG_USE_ARENA|CCG_CALC_NORMALS); + ss = _getSubSurf(NULL, levels, CCG_USE_ARENA | CCG_CALC_NORMALS); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm); @@ -3448,7 +3447,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived( } } - return (DerivedMesh*)result; + return (DerivedMesh *)result; } void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]) @@ -3474,14 +3473,14 @@ void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]) float *co; int i; - edge_sum[0]= edge_sum[1]= edge_sum[2]= 0.0; - face_sum[0]= face_sum[1]= face_sum[2]= 0.0; + edge_sum[0] = edge_sum[1] = edge_sum[2] = 0.0; + face_sum[0] = face_sum[1] = face_sum[2] = 0.0; - for (i=0; i Date: Sun, 22 Apr 2012 00:27:38 +0000 Subject: [PATCH 016/158] - fix memory leak in mesh_strip_loose_polysloops(), occurred during 3ds import. - updating normals in py/api's mesh.transform() wasn't working and gave annoying print, disable this, script authors can call calc_normals explicitly if they need. --- source/blender/blenkernel/intern/mesh.c | 4 +++- source/blender/editors/mesh/mesh_data.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index b80b15e57f3..af24240bf4a 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1058,7 +1058,7 @@ void mesh_strip_loose_polysloops(Mesh *me) MLoop *l; int a, b; /* New loops idx! */ - int *new_idx = MEM_mallocN(sizeof(int) * me->totloop, "strip_loose_polysloops old2new idx mapping for polys."); + int *new_idx = MEM_mallocN(sizeof(int) * me->totloop, __func__); for (a = b = 0, p = me->mpoly; a < me->totpoly; a++, p++) { int invalid = FALSE; @@ -1119,6 +1119,8 @@ void mesh_strip_loose_polysloops(Mesh *me) for (a = 0, p = me->mpoly; a < me->totpoly; a++, p++) { p->loopstart = new_idx[p->loopstart]; } + + MEM_freeN(new_idx); } void mesh_strip_loose_edges(Mesh *me) diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index d1fb437e114..5aea6f8d1c3 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -896,7 +896,7 @@ void ED_mesh_transform(Mesh *me, float *mat) for (i = 0; i < me->totvert; i++, mvert++) mul_m4_v3((float (*)[4])mat, mvert->co); - mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL); + /* don't update normals, caller can do this explicitly */ } static void mesh_add_edges(Mesh *mesh, int len) From 3b686116ea8c3878a316979a348987bc038a1f20 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sun, 22 Apr 2012 02:16:33 +0000 Subject: [PATCH 017/158] Fix for bug #30219: "Obstacle Simulation of Steering Actuator does not work with added objects" The steering actuator was filling its m_obstacle member when it was created (i.e., conversion time), which meant it had the wrong pointer after the actuator was replicated. Now m_obstacle is reassigned when the actuator is replicated. --- source/gameengine/Ketsji/KX_SteeringActuator.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/gameengine/Ketsji/KX_SteeringActuator.cpp b/source/gameengine/Ketsji/KX_SteeringActuator.cpp index dd2ff2e305a..16b9285386a 100644 --- a/source/gameengine/Ketsji/KX_SteeringActuator.cpp +++ b/source/gameengine/Ketsji/KX_SteeringActuator.cpp @@ -117,6 +117,12 @@ void KX_SteeringActuator::ProcessReplica() SCA_IActuator::ProcessReplica(); } +void KX_SteeringActuator::ReParent(SCA_IObject* parent) +{ + SCA_IActuator::ReParent(parent); + if (m_simulation) + m_obstacle = m_simulation->GetObstacle((KX_GameObject*)m_gameobj); +} bool KX_SteeringActuator::UnlinkObject(SCA_IObject* clientobj) { From ac5058b281b859917efbf4cf028767094fab7144 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 03:07:21 +0000 Subject: [PATCH 018/158] subsurf - avoid 'for' loop finding the edge index in a face multiple times when calling _face_getIFCoEdge. add asset so passing wrong value errors out in debug mode. gives small speedup to subsurf. --- source/blender/blenkernel/intern/CCGSubSurf.c | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index 07cedc50bce..c76f1e6d07d 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -690,30 +690,36 @@ static int _face_getVertIndex(CCGFace *f, CCGVert *v) return i; return -1; } -static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize) +static int _face_getEdgeIndex(CCGFace *f, CCGEdge *e) +{ + int i; + for (i = 0; i < f->numVerts; i++) + if (FACE_getEdges(f)[i] == e) + return i; + return -1; +} +static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int f_ed_idx, int lvl, int eX, int eY, int levels, int dataSize) { int maxGridSize = ccg_gridsize(levels); int spacing = ccg_spacing(levels, lvl); - int S, x, y, cx, cy; + int x, y, cx, cy; - for (S = 0; S < f->numVerts; S++) - if (FACE_getEdges(f)[S] == e) - break; + BLI_assert(f_ed_idx == _face_getEdgeIndex(f, e)); eX = eX * spacing; eY = eY * spacing; - if (e->v0 != FACE_getVerts(f)[S]) { + if (e->v0 != FACE_getVerts(f)[f_ed_idx]) { eX = (maxGridSize * 2 - 1) - 1 - eX; } y = maxGridSize - 1 - eX; x = maxGridSize - 1 - eY; if (x < 0) { - S = (S + f->numVerts - 1) % f->numVerts; + f_ed_idx = (f_ed_idx + f->numVerts - 1) % f->numVerts; cx = y; cy = -x; } else if (y < 0) { - S = (S + 1) % f->numVerts; + f_ed_idx = (f_ed_idx + 1) % f->numVerts; cx = -y; cy = x; } @@ -721,11 +727,11 @@ static CCG_INLINE void *_face_getIFCoEdge(CCGFace *f, CCGEdge *e, int lvl, int e cx = x; cy = y; } - return _face_getIFCo(f, levels, S, cx, cy, levels, dataSize); + return _face_getIFCo(f, levels, f_ed_idx, cx, cy, levels, dataSize); } -static float *_face_getIFNoEdge(CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset) +static float *_face_getIFNoEdge(CCGFace *f, CCGEdge *e, int f_ed_idx, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset) { - return (float *) ((byte *) _face_getIFCoEdge(f, e, lvl, eX, eY, levels, dataSize) + normalDataOffset); + return (float *) ((byte *) _face_getIFCoEdge(f, e, f_ed_idx, lvl, eX, eY, levels, dataSize) + normalDataOffset); } static void _face_calcIFNo(CCGFace *f, int lvl, int S, int x, int y, float *no, int levels, int dataSize) { @@ -1457,19 +1463,23 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, for (i = 0; i < e->numFaces - 1; i++) { CCGFace *f = e->faces[i]; + const int f_ed_idx = _face_getEdgeIndex(f, e); + const int f_ed_idx_last = _face_getEdgeIndex(fLast, e); for (x = 1; x < edgeSize - 1; x++) { - NormAdd(_face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), - _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + NormAdd(_face_getIFNoEdge(fLast, e, f_ed_idx_last, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), + _face_getIFNoEdge(f, e, f_ed_idx, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } } for (i = 0; i < e->numFaces - 1; i++) { CCGFace *f = e->faces[i]; + const int f_ed_idx = _face_getEdgeIndex(f, e); + const int f_ed_idx_last = _face_getEdgeIndex(fLast, e); for (x = 1; x < edgeSize - 1; x++) { - NormCopy(_face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), - _face_getIFNoEdge(fLast, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + NormCopy(_face_getIFNoEdge(f, e, f_ed_idx, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset), + _face_getIFNoEdge(fLast, e, f_ed_idx_last, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } } } @@ -1518,10 +1528,11 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, if (e->numFaces) { CCGFace *f = e->faces[0]; int x; + const int f_ed_idx = _face_getEdgeIndex(f, e); for (x = 0; x < edgeSize; x++) NormCopy(EDGE_getNo(e, lvl, x), - _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); + _face_getIFNoEdge(f, e, f_ed_idx, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } else { /* set to zero here otherwise the normals are uninitialized memory @@ -1666,7 +1677,8 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, for (j = 0; j < e->numFaces; j++) { CCGFace *f = e->faces[j]; - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx, 1, subdivLevels, vertDataSize)); + const int f_ed_idx = _face_getEdgeIndex(f, e); + VertDataAdd(q, _face_getIFCoEdge(f, e, f_ed_idx, nextLvl, fx, 1, subdivLevels, vertDataSize)); numFaces++; } @@ -1866,10 +1878,11 @@ static void ccgSubSurf__calcSubdivLevel(CCGSubSurf *ss, VertDataAdd(r, EDGE_getCo(e, curLvl, x + 1)); for (j = 0; j < e->numFaces; j++) { CCGFace *f = e->faces[j]; - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx - 1, 1, subdivLevels, vertDataSize)); - VertDataAdd(q, _face_getIFCoEdge(f, e, nextLvl, fx + 1, 1, subdivLevels, vertDataSize)); + int f_ed_idx = _face_getEdgeIndex(f, e); + VertDataAdd(q, _face_getIFCoEdge(f, e, f_ed_idx, nextLvl, fx - 1, 1, subdivLevels, vertDataSize)); + VertDataAdd(q, _face_getIFCoEdge(f, e, f_ed_idx, nextLvl, fx + 1, 1, subdivLevels, vertDataSize)); - VertDataAdd(r, _face_getIFCoEdge(f, e, curLvl, x, 1, subdivLevels, vertDataSize)); + VertDataAdd(r, _face_getIFCoEdge(f, e, f_ed_idx, curLvl, x, 1, subdivLevels, vertDataSize)); numFaces++; } VertDataMulN(q, 1.0f / (numFaces * 2.0f)); From cd2b142ba0bf8305efd44db22068c39f4f935cd5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 03:25:48 +0000 Subject: [PATCH 019/158] small speedup to VertDataMulN(av, n), when passed expressions to 'n' they were calculated 3 times, cuts 78 instructions from resulting assembly (gcc -O2). --- source/blender/blenkernel/intern/CCGSubSurf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index c76f1e6d07d..f5718974f9f 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -282,7 +282,7 @@ static int VertDataEqual(const float *a, const float *b) #define VertDataCopy(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] = _b[0]; _a[1] = _b[1]; _a[2] = _b[2]; } #define VertDataAdd(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] += _b[0]; _a[1] += _b[1]; _a[2] += _b[2]; } #define VertDataSub(av, bv) { float *_a = (float *)av, *_b = (float *) bv; _a[0] -= _b[0]; _a[1] -= _b[1]; _a[2] -= _b[2]; } -#define VertDataMulN(av, n) { float *_a = (float *)av; _a[0] *= n; _a[1] *= n; _a[2] *= n; } +#define VertDataMulN(av, n) { float *_a = (float *)av; float _n = n; _a[0] *= _n; _a[1] *= _n; _a[2] *= _n; } #define VertDataAvg4(tv, av, bv, cv, dv) \ { \ float *_t = (float *) tv, *_a = (float *) av, *_b = (float *) bv, *_c = (float *) cv, *_d = (float *) dv; \ From 2912314838030aa6c76e887737b18e3eb203ba54 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Sun, 22 Apr 2012 04:01:14 +0000 Subject: [PATCH 020/158] Missed this file in my last commit. --- source/gameengine/Ketsji/KX_SteeringActuator.h | 1 + 1 file changed, 1 insertion(+) diff --git a/source/gameengine/Ketsji/KX_SteeringActuator.h b/source/gameengine/Ketsji/KX_SteeringActuator.h index cd55f574e8e..c22a636cd95 100644 --- a/source/gameengine/Ketsji/KX_SteeringActuator.h +++ b/source/gameengine/Ketsji/KX_SteeringActuator.h @@ -95,6 +95,7 @@ public: virtual CValue* GetReplica(); virtual void ProcessReplica(); + virtual void ReParent(SCA_IObject* parent); virtual void Relink(CTR_Map *obj_map); virtual bool UnlinkObject(SCA_IObject* clientobj); const MT_Vector3& GetSteeringVec(); From 3508bf1b832b25dcd1401444ae47ac53680a4bff Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 05:30:34 +0000 Subject: [PATCH 021/158] Ctrl+RMB to select an object in editmode didnt work in edge mode (which is not great usability imho and confusing), now pass through if no edges can be tagged and select the object. --- source/blender/editors/mesh/editmesh_select.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 50dcaff6a97..6c3984f0979 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -1339,7 +1339,7 @@ static int edgetag_shortest_path(Scene *scene, BMEditMesh *em, BMEdge *source, B /* ******************* mesh shortest path select, uses prev-selected edge ****************** */ /* since you want to create paths with multiple selects, it doesn't have extend option */ -static void mouse_mesh_shortest_path(bContext *C, int mval[2]) +static int mouse_mesh_shortest_path(bContext *C, int mval[2]) { ViewContext vc; BMEditMesh *em; @@ -1402,6 +1402,11 @@ static void mouse_mesh_shortest_path(bContext *C, int mval[2]) } EDBM_update_generic(C, em, FALSE); + + return TRUE; + } + else { + return FALSE; } } @@ -1411,9 +1416,12 @@ static int edbm_shortest_path_select_invoke(bContext *C, wmOperator *UNUSED(op), view3d_operator_needs_opengl(C); - mouse_mesh_shortest_path(C, event->mval); - - return OPERATOR_FINISHED; + if (mouse_mesh_shortest_path(C, event->mval)) { + return OPERATOR_FINISHED; + } + else { + return OPERATOR_PASS_THROUGH; + } } static int edbm_shortest_path_select_poll(bContext *C) From d5023f0e91d578afa8f7d606edec19f0d8b1d9f9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 08:36:39 +0000 Subject: [PATCH 022/158] correction to py docs from mgschwan on IRC. --- source/blender/python/mathutils/mathutils_geometry.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/python/mathutils/mathutils_geometry.c b/source/blender/python/mathutils/mathutils_geometry.c index d6c426be54b..b94c2e21139 100644 --- a/source/blender/python/mathutils/mathutils_geometry.c +++ b/source/blender/python/mathutils/mathutils_geometry.c @@ -444,7 +444,8 @@ static PyObject *M_Geometry_intersect_line_line_2d(PyObject *UNUSED(self), PyObj PyDoc_STRVAR(M_Geometry_intersect_line_plane_doc, ".. function:: intersect_line_plane(line_a, line_b, plane_co, plane_no, no_flip=False)\n" "\n" -" Takes 2 lines (as 4 vectors) and returns a vector for their point of intersection or None.\n" +" Calculate the intersection between a line (as 2 vectors) and a plane.\n" +" Returns a vector for the intersection or None.\n" "\n" " :arg line_a: First point of the first line\n" " :type line_a: :class:`mathutils.Vector`\n" From 49ff0eeec443ebe5003ec09bc655d73abc69a327 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 10:19:24 +0000 Subject: [PATCH 023/158] bmesh py api: expose BM_face_split_n() to the python api; face_fill(..., coords=(v1, v2, ...)) This is the same function the knife tool uses. should be handy for dicing up geometry in py. --- source/blender/python/bmesh/bmesh_py_utils.c | 64 +++++++++++++++----- source/blender/python/mathutils/mathutils.c | 35 +++++++++++ source/blender/python/mathutils/mathutils.h | 1 + 3 files changed, 86 insertions(+), 14 deletions(-) diff --git a/source/blender/python/bmesh/bmesh_py_utils.c b/source/blender/python/bmesh/bmesh_py_utils.c index fcc4ebc67e1..9fecc0cdeda 100644 --- a/source/blender/python/bmesh/bmesh_py_utils.c +++ b/source/blender/python/bmesh/bmesh_py_utils.c @@ -36,6 +36,8 @@ #include "MEM_guardedalloc.h" +#include "../mathutils/mathutils.h" + #include "bmesh.h" #include "bmesh_py_types.h" @@ -366,7 +368,7 @@ static PyObject *bpy_bm_utils_edge_rotate(PyObject *UNUSED(self), PyObject *args PyDoc_STRVAR(bpy_bm_utils_face_split_doc, -".. method:: face_split(face, vert, vert_a, vert_b, edge_example)\n" +".. method:: face_split(face, vert_a, vert_b, coords=(), use_exist=True, example=None)\n" "\n" " Split an edge, return the newly created data.\n" "\n" @@ -376,25 +378,43 @@ PyDoc_STRVAR(bpy_bm_utils_face_split_doc, " :type vert_a: :class:`bmesh.types.BMVert`\n" " :arg vert_b: Second vertex to cut in the face (face must contain the vert).\n" " :type vert_b: :class:`bmesh.types.BMVert`\n" -" :arg edge_example: Optional edge argument, newly created edge will copy settings from this one.\n" -" :type edge_example: :class:`bmesh.types.BMEdge`\n" +" :arg coords: Optional argument to define points inbetween *vert_a* and *vert_b*.\n" +" :type coords: sequence of float triplets\n" +" :arg use_exist: .Use an existing edge if it exists (Only used when *coords* argument is empty or omitted)\n" +" :type use_exist: boolean\n" +" :arg example: Newly created edge will copy settings from this one.\n" +" :type example: :class:`bmesh.types.BMEdge`\n" +" :return: The newly created face or None on failure.\n" +" :rtype: (:class:`bmesh.types.BMFace`, :class:`bmesh.types.BMLoop`) pair\n" ); -static PyObject *bpy_bm_utils_face_split(PyObject *UNUSED(self), PyObject *args) +static PyObject *bpy_bm_utils_face_split(PyObject *UNUSED(self), PyObject *args, PyObject *kw) { + static const char *kwlist[] = {"face", "vert_a", "vert_b", + "coords", "use_exist", "example", NULL}; + BPy_BMFace *py_face; BPy_BMVert *py_vert_a; BPy_BMVert *py_vert_b; - BPy_BMEdge *py_edge_example = NULL; /* optional */ + + /* optional */ + PyObject *py_coords = NULL; + int edge_exists = TRUE; + BPy_BMEdge *py_edge_example = NULL; + + float *coords; + int ncoords = 0; BMesh *bm; BMFace *f_new = NULL; BMLoop *l_new = NULL; - if (!PyArg_ParseTuple(args, "O!O!O!|O!:face_split", - &BPy_BMFace_Type, &py_face, - &BPy_BMVert_Type, &py_vert_a, - &BPy_BMVert_Type, &py_vert_b, - &BPy_BMEdge_Type, &py_edge_example)) + if (!PyArg_ParseTupleAndKeywords(args, kw, "O!O!O!|OiO!:face_split", (char **)kwlist, + &BPy_BMFace_Type, &py_face, + &BPy_BMVert_Type, &py_vert_a, + &BPy_BMVert_Type, &py_vert_b, + &py_coords, + &edge_exists, + &BPy_BMEdge_Type, &py_edge_example)) { return NULL; } @@ -422,11 +442,27 @@ static PyObject *bpy_bm_utils_face_split(PyObject *UNUSED(self), PyObject *args) return NULL; } + if (py_coords) { + ncoords = mathutils_array_parse_alloc_v(&coords, 3, py_coords, "face_split(...): "); + if (ncoords == -1) { + return NULL; + } + } + + /* --- main function body --- */ bm = py_face->bm; - f_new = BM_face_split(bm, py_face->f, - py_vert_a->v, py_vert_b->v, - &l_new, py_edge_example ? py_edge_example->e : NULL, FALSE); /* BMESH_TODO, make arg */ + if (ncoords) { + f_new = BM_face_split_n(bm, py_face->f, + py_vert_a->v, py_vert_b->v, + (float (*)[3])coords, ncoords, + &l_new, py_edge_example ? py_edge_example->e : NULL); + } + else { + f_new = BM_face_split(bm, py_face->f, + py_vert_a->v, py_vert_b->v, + &l_new, py_edge_example ? py_edge_example->e : NULL, edge_exists); + } if (f_new && l_new) { PyObject *ret = PyTuple_New(2); @@ -622,7 +658,7 @@ static struct PyMethodDef BPy_BM_utils_methods[] = { {"vert_separate", (PyCFunction)bpy_bm_utils_vert_separate, METH_VARARGS, bpy_bm_utils_vert_separate_doc}, {"edge_split", (PyCFunction)bpy_bm_utils_edge_split, METH_VARARGS, bpy_bm_utils_edge_split_doc}, {"edge_rotate", (PyCFunction)bpy_bm_utils_edge_rotate, METH_VARARGS, bpy_bm_utils_edge_rotate_doc}, - {"face_split", (PyCFunction)bpy_bm_utils_face_split, METH_VARARGS, bpy_bm_utils_face_split_doc}, + {"face_split", (PyCFunction)bpy_bm_utils_face_split, METH_VARARGS | METH_KEYWORDS, bpy_bm_utils_face_split_doc}, {"face_join", (PyCFunction)bpy_bm_utils_face_join, METH_VARARGS, bpy_bm_utils_face_join_doc}, {"face_vert_separate", (PyCFunction)bpy_bm_utils_face_vert_separate, METH_VARARGS, bpy_bm_utils_face_vert_separate_doc}, {"face_flip", (PyCFunction)bpy_bm_utils_face_flip, METH_O, bpy_bm_utils_face_flip_doc}, diff --git a/source/blender/python/mathutils/mathutils.c b/source/blender/python/mathutils/mathutils.c index f78050a7639..8b79301f264 100644 --- a/source/blender/python/mathutils/mathutils.c +++ b/source/blender/python/mathutils/mathutils.c @@ -186,6 +186,41 @@ int mathutils_array_parse_alloc(float **array, int array_min, PyObject *value, c } } +/* parse an array of vectors */ +int mathutils_array_parse_alloc_v(float **array, int array_dim, PyObject *value, const char *error_prefix) +{ + PyObject *value_fast = NULL; + int i, size; + + /* non list/tuple cases */ + if (!(value_fast = PySequence_Fast(value, error_prefix))) { + /* PySequence_Fast sets the error */ + return -1; + } + + size = PySequence_Fast_GET_SIZE(value_fast); + + if (size != 0) { + float *fp; + + fp = *array = PyMem_Malloc(size * array_dim * sizeof(float)); + + for (i = 0; i < size; i++, fp += array_dim) { + PyObject *item = PySequence_Fast_GET_ITEM(value, i); + + if (mathutils_array_parse(fp, array_dim, array_dim, item, error_prefix) == -1) { + PyMem_Free(*array); + *array = NULL; + size = -1; + break; + } + } + } + + Py_DECREF(value_fast); + return size; +} + int mathutils_any_to_rotmat(float rmat[3][3], PyObject *value, const char *error_prefix) { if (EulerObject_Check(value)) { diff --git a/source/blender/python/mathutils/mathutils.h b/source/blender/python/mathutils/mathutils.h index b98928eb79d..e8d128b431e 100644 --- a/source/blender/python/mathutils/mathutils.h +++ b/source/blender/python/mathutils/mathutils.h @@ -118,6 +118,7 @@ int _BaseMathObject_WriteIndexCallback(BaseMathObject *self, int index); /* utility func */ int mathutils_array_parse(float *array, int array_min, int array_max, PyObject *value, const char *error_prefix); int mathutils_array_parse_alloc(float **array, int array_min, PyObject *value, const char *error_prefix); +int mathutils_array_parse_alloc_v(float **array, int array_dim, PyObject *value, const char *error_prefix); int mathutils_any_to_rotmat(float rmat[3][3], PyObject *value, const char *error_prefix); int column_vector_multiplication(float rvec[4], VectorObject *vec, MatrixObject *mat); From 69d0a68f0d7ed82b9701c5a7832f609e4ea4fd75 Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Sun, 22 Apr 2012 11:23:17 +0000 Subject: [PATCH 024/158] OSX/cmake: LESS must be VERSION_LESS for XCODE_VERSION --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2669f2ff93f..003176e7b96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1137,7 +1137,7 @@ elseif(APPLE) set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7 endif() - if(${XCODE_VERSION} LESS 4.3) + if(${XCODE_VERSION} VERSION_LESS 4.3) SET(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE ) # use guaranteed existing sdk else() # note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed From 5c891386842037910f5d522c7d3ffb1792b804db Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 11:54:53 +0000 Subject: [PATCH 025/158] style cleanup: comments --- source/blender/blenkernel/BKE_mesh.h | 2 +- source/blender/blenkernel/BKE_subsurf.h | 4 +- .../blender/blenkernel/intern/DerivedMesh.c | 2 +- .../blender/blenkernel/intern/cdderivedmesh.c | 9 +- source/blender/blenkernel/intern/customdata.c | 2 +- source/blender/blenkernel/intern/depsgraph.c | 6 +- source/blender/blenkernel/intern/implicit.c | 18 +-- source/blender/blenkernel/intern/mesh.c | 2 +- source/blender/blenkernel/intern/multires.c | 8 +- source/blender/blenkernel/intern/paint.c | 6 +- source/blender/blenkernel/intern/seqeffects.c | 4 +- source/blender/blenkernel/intern/sequencer.c | 14 +- .../blender/blenkernel/intern/subsurf_ccg.c | 2 +- .../blender/blenkernel/intern/writeffmpeg.c | 10 +- source/blender/blenlib/BLI_pbvh.h | 2 +- source/blender/blenlib/intern/fnmatch.c | 12 +- source/blender/blenlib/intern/math_geom.c | 4 +- source/blender/blenlib/intern/storage.c | 6 +- source/blender/blenloader/intern/readfile.c | 142 +++++++++--------- source/blender/blenloader/intern/writefile.c | 28 ++-- source/blender/bmesh/intern/bmesh_core.c | 4 +- source/blender/bmesh/operators/bmo_dissolve.c | 5 +- .../bmesh/operators/bmo_removedoubles.c | 4 +- source/blender/bmesh/operators/bmo_slide.c | 4 +- source/blender/editors/include/ED_numinput.h | 14 +- .../editors/interface/interface_utils.c | 2 +- source/blender/editors/mesh/editmesh_slide.c | 2 +- .../blender/editors/render/render_internal.c | 12 +- source/blender/editors/render/render_update.c | 6 +- .../blender/editors/sculpt_paint/paint_hide.c | 14 +- .../editors/sculpt_paint/paint_image.c | 2 +- source/blender/editors/sculpt_paint/sculpt.c | 20 +-- .../blender/editors/sculpt_paint/sculpt_uv.c | 4 +- .../editors/space_image/image_buttons.c | 2 +- .../blender/editors/space_node/node_select.c | 4 +- .../editors/space_view3d/view3d_view.c | 2 +- source/blender/editors/transform/transform.c | 2 +- .../editors/uvedit/uvedit_unwrap_ops.c | 4 +- source/blender/gpu/intern/gpu_buffers.c | 84 +++++------ source/blender/gpu/intern/gpu_codegen.c | 8 +- source/blender/imbuf/intern/indexer.c | 2 +- source/blender/makesdna/DNA_sequence_types.h | 6 +- source/blender/makesrna/intern/rna_actuator.c | 28 ++-- source/blender/makesrna/intern/rna_brush.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 9 +- source/blender/makesrna/intern/rna_image.c | 10 +- source/blender/makesrna/intern/rna_key.c | 6 +- source/blender/makesrna/intern/rna_main_api.c | 7 +- source/blender/makesrna/intern/rna_mesh.c | 8 +- source/blender/makesrna/intern/rna_meta.c | 5 +- source/blender/makesrna/intern/rna_nodetree.c | 11 +- source/blender/makesrna/intern/rna_scene.c | 2 +- source/blender/makesrna/intern/rna_texture.c | 4 +- source/blender/makesrna/intern/rna_tracking.c | 4 +- source/blender/makesrna/intern/rna_userdef.c | 5 +- source/blender/modifiers/intern/MOD_array.c | 6 +- source/blender/nodes/intern/node_common.c | 2 +- source/blender/python/intern/bpy_interface.c | 4 +- .../render/intern/source/convertblender.c | 16 +- .../blender/windowmanager/intern/wm_keymap.c | 2 +- .../windowmanager/intern/wm_operators.c | 2 +- 61 files changed, 318 insertions(+), 305 deletions(-) diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 2d0719a78fa..742e6ef0b89 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -112,7 +112,7 @@ int poly_get_adj_loops_from_vert(unsigned adj_r[3], const struct MPoly *poly, const struct MLoop *mloop, unsigned vert); /* update the hide flag for edges and polys from the corresponding - flag in verts */ + * flag in verts */ void mesh_flush_hidden_from_verts(const struct MVert *mvert, const struct MLoop *mloop, struct MEdge *medge, int totedge, diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h index 7f9881926a6..8179c688580 100644 --- a/source/blender/blenkernel/BKE_subsurf.h +++ b/source/blender/blenkernel/BKE_subsurf.h @@ -68,7 +68,7 @@ void subsurf_calculate_limit_positions(struct Mesh *me, float (*positions_r)[3]) int ccg_gridsize(int level); /* x/y grid coordinates at 'low_level' can be multiplied by the result - of this function to convert to grid coordinates at 'high_level' */ + * of this function to convert to grid coordinates at 'high_level' */ int ccg_factor(int low_level, int high_level); void subsurf_copy_grid_hidden(struct DerivedMesh *dm, @@ -78,7 +78,7 @@ void subsurf_copy_grid_hidden(struct DerivedMesh *dm, typedef enum MultiresModifiedFlags { /* indicates the grids have been sculpted on, so MDisps - have to be updated */ + * have to be updated */ MULTIRES_COORDS_MODIFIED = 1, /* indicates elements have been hidden or unhidden */ MULTIRES_HIDDEN_MODIFIED = 2 diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 294518458bf..c28958d5b0d 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2137,7 +2137,7 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask, if ((ob->mode & OB_MODE_SCULPT) && ob->sculpt) { /* create PBVH immediately (would be created on the fly too, - but this avoids waiting on first stroke) */ + * but this avoids waiting on first stroke) */ ob->sculpt->pbvh= ob->derivedFinal->getPBVH(ob, ob->derivedFinal); } } diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 4a852bb0233..474aa84fec6 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -701,14 +701,17 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm, GPU_normal_setup( dm ); GPU_uv_setup( dm ); if ( col != NULL ) { - /*if ( realcol && dm->drawObject->colType == CD_TEXTURE_MCOL ) { +#if 0 + if ( realcol && dm->drawObject->colType == CD_TEXTURE_MCOL ) { col = 0; } else if ( mcol && dm->drawObject->colType == CD_MCOL ) { col = 0; } - if ( col != 0 ) {*/ + if ( col != 0 ) +#endif + { unsigned char *colors = MEM_mallocN(dm->getNumTessFaces(dm)*4*3*sizeof(unsigned char), "cdDM_drawFacesTex_common"); for ( i=0; i < dm->getNumTessFaces(dm); i++ ) { for ( j=0; j < 4; j++ ) { @@ -724,7 +727,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm, dm->drawObject->colType = CD_TEXTURE_MCOL; else if (mcol) dm->drawObject->colType = CD_MCOL; - //} + } GPU_color_setup( dm ); } diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 7cc7a82df66..afb5e85ffa8 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -2167,7 +2167,7 @@ void CustomData_bmesh_merge(CustomData *source, CustomData *dest, int t; /* copy old layer description so that old data can be copied into - the new allocation */ + * the new allocation */ destold = *dest; if (destold.layers) destold.layers = MEM_dupallocN(destold.layers); diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index ccaa03ad9d9..574c2842144 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1309,11 +1309,11 @@ DagNodeQueue * graph_dfs(void) /* is_cycle = 1; */ /* UNUSED */ } else if (itA->node->color == DAG_BLACK) { - ; /* already processed node but we may want later to change distance either to shorter to longer. * DFS_dist is the first encounter */ - /*if (node->DFS_dist >= itA->node->DFS_dist) +#if 0 + if (node->DFS_dist >= itA->node->DFS_dist) itA->node->DFS_dist = node->DFS_dist + 1; fprintf(stderr,"dfs forward or cross edge :%15s %i-%i %15s %i-%i\n", @@ -1323,7 +1323,7 @@ DagNodeQueue * graph_dfs(void) ((ID *) itA->node->ob)->name, itA->node->DFS_dvtm, itA->node->DFS_fntm); - */ +#endif } else fprintf(stderr,"dfs unknown edge\n"); diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c index 0bb9426730e..a4edc1e531a 100644 --- a/source/blender/blenkernel/intern/implicit.c +++ b/source/blender/blenkernel/intern/implicit.c @@ -1424,9 +1424,9 @@ typedef struct HairGridVert { #define HAIR_GRID_INDEX(vec, min, max, axis) (int)((vec[axis] - min[axis]) / (max[axis] - min[axis]) * 9.99f) /* Smoothing of hair velocities: * adapted from - Volumetric Methods for Simulation and Rendering of Hair - by Lena Petrovic, Mark Henne and John Anderson - * Pixar Technical Memo #06-08, Pixar Animation Studios + * Volumetric Methods for Simulation and Rendering of Hair + * by Lena Petrovic, Mark Henne and John Anderson + * Pixar Technical Memo #06-08, Pixar Animation Studios */ static void hair_velocity_smoothing(ClothModifierData *clmd, lfVector *lF, lfVector *lX, lfVector *lV, unsigned int numverts) { @@ -1591,8 +1591,8 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec hair_velocity_smoothing(clmd, lF, lX, lV, numverts); /* multiply lF with mass matrix - // force = mass * acceleration (in this case: gravity) - */ + * force = mass * acceleration (in this case: gravity) + */ for (i = 0; i < numverts; i++) { float temp[3]; @@ -1745,10 +1745,10 @@ static void simulate_implicit_euler(lfVector *Vnew, lfVector *UNUSED(lX), lfVect del_lfvector(dFdXmV); } -/*computes where the cloth would be if it were subject to perfectly stiff edges - (edge distance constraints) in a lagrangian solver. then add forces to help - guide the implicit solver to that state. this function is called after - collisions*/ +/* computes where the cloth would be if it were subject to perfectly stiff edges + * (edge distance constraints) in a lagrangian solver. then add forces to help + * guide the implicit solver to that state. this function is called after + * collisions*/ int cloth_calc_helper_forces(Object *UNUSED(ob), ClothModifierData * clmd, float (*initial_cos)[3], float UNUSED(step), float dt) { Cloth *cloth= clmd->clothObject; diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index af24240bf4a..ea2e634ed64 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -3038,7 +3038,7 @@ int poly_get_adj_loops_from_vert(unsigned adj_r[3], const MPoly *poly, } /* update the hide flag for edges and faces from the corresponding - flag in verts */ + * flag in verts */ void mesh_flush_hidden_from_verts(const MVert *mvert, const MLoop *mloop, MEdge *medge, int totedge, diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 2167495ef08..7580f2eee4d 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -104,7 +104,7 @@ static BLI_bitmap multires_mdisps_upsample_hidden(BLI_bitmap lo_hidden, int hi_level, /* assumed to be at hi_level (or - null) */ + * null) */ BLI_bitmap prev_hidden) { BLI_bitmap subd; @@ -144,8 +144,8 @@ static BLI_bitmap multires_mdisps_upsample_hidden(BLI_bitmap lo_hidden, if (prev_hidden) { /* If prev_hidden is available, copy it to - subd, except when the equivalent element in - lo_hidden is different */ + * subd, except when the equivalent element in + * lo_hidden is different */ if (lo_val != prev_hidden[hi_ndx]) BLI_BITMAP_MODIFY(subd, hi_ndx, lo_val); else @@ -215,7 +215,7 @@ static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm, } /* subdivide mdisps.hidden if needed (assumes that md.level reflects - the current level of md.hidden) */ + * the current level of md.hidden) */ static void multires_mdisps_subdivide_hidden(MDisps *md, int new_level) { BLI_bitmap subd; diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 975602c2918..27f5f7d9eb1 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -151,7 +151,7 @@ void copy_paint(Paint *src, Paint *tar) } /* returns non-zero if any of the face's vertices - are hidden, zero otherwise */ + * are hidden, zero otherwise */ int paint_is_face_hidden(const MFace *f, const MVert *mvert) { return ((mvert[f->v1].flag & ME_HIDE) || @@ -161,8 +161,8 @@ int paint_is_face_hidden(const MFace *f, const MVert *mvert) } /* returns non-zero if any of the corners of the grid - face whose inner corner is at (x,y) are hidden, - zero otherwise */ + * face whose inner corner is at (x,y) are hidden, + * zero otherwise */ int paint_is_grid_face_hidden(const unsigned int *grid_hidden, int gridsize, int x, int y) { diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 52f59fb8b80..8015e53e4c9 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -1781,7 +1781,7 @@ static float check_zone(WipeZone *wipezone, int x, int y, /* BOX WIPE IS NOT WORKING YET */ /* case DO_CROSS_WIPE: */ /* BOX WIPE IS NOT WORKING YET */ - /* +#if 0 case DO_BOX_WIPE: if (invert)facf0 = 1-facf0; @@ -1843,7 +1843,7 @@ static float check_zone(WipeZone *wipezone, int x, int y, } break; -*/ +#endif case DO_IRIS_WIPE: if (xo > yo) yo = xo; else xo = yo; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 97edba7d9ef..2d4397d16cd 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2192,7 +2192,7 @@ static ImBuf *seq_render_strip(SeqRenderData context, Sequence *seq, float cfra) ibuf = seq_stripelem_cache_get(context, seq, cfra, SEQ_STRIPELEM_IBUF); /* currently, we cache preprocessed images in SEQ_STRIPELEM_IBUF, - * but not(!) on SEQ_STRIPELEM_IBUF_ENDSTILL and ..._STARTSTILL */ + * but not(!) on SEQ_STRIPELEM_IBUF_ENDSTILL and ..._STARTSTILL */ if (ibuf) use_preprocess = FALSE; @@ -2685,10 +2685,10 @@ static void seq_start_threads(Scene *scene) seq_last_given_monoton_cfra = monoton_cfra = 0; /* since global structures are modified during the processing - of one frame, only one render thread is currently possible... - - (but we code, in the hope, that we can remove this restriction - soon...) + * of one frame, only one render thread is currently possible... + * + * (but we code, in the hope, that we can remove this restriction + * soon...) */ fprintf(stderr, "SEQ-THREAD: seq_start_threads\n"); @@ -2942,7 +2942,7 @@ void free_imbuf_seq(Scene *scene, ListBase *seqbase, int check_mem_usage, } if (seq->type == SEQ_SCENE) { /* FIXME: recurs downwards, - but do recurs protection somehow! */ + * but do recurs protection somehow! */ } } @@ -3394,7 +3394,7 @@ static void seq_update_muting_recursive(ListBase *seqbasep, Sequence *metaseq, i int seqmute; /* for sound we go over full meta tree to update muted state, - * since sound is played outside of evaluating the imbufs, */ + * since sound is played outside of evaluating the imbufs, */ for (seq = seqbasep->first; seq; seq = seq->next) { seqmute = (mute || (seq->flag & SEQ_MUTE)); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index a4f7a9697bf..83a24f6afdc 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -975,7 +975,7 @@ static void ccgDM_getFinalFace(DerivedMesh *dm, int faceNum, MFace *mf) } /* Translate GridHidden into the ME_HIDE flag for MVerts. Assumes - vertices are in the order output by ccgDM_copyFinalVertArray. */ + * vertices are in the order output by ccgDM_copyFinalVertArray. */ void subsurf_copy_grid_hidden(DerivedMesh *dm, const MPoly *mpoly, MVert *mvert, const MDisps *mdisps) { diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 740deb5c7db..59c38117858 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -172,7 +172,7 @@ static AVFrame* alloc_picture(int pix_fmt, int width, int height) } /* Get the correct file extensions for the requested format, - first is always desired guess_format parameter */ + * first is always desired guess_format parameter */ static const char** get_file_extensions(int format) { switch(format) { @@ -308,7 +308,7 @@ static AVFrame* generate_video_frame(uint8_t* pixels, ReportList *reports) rendered_frame = pixels; /* Do RGBA-conversion and flipping in one step depending - on CPU-Endianess */ + * on CPU-Endianess */ if (ENDIAN_ORDER == L_ENDIAN) { int y; @@ -628,7 +628,7 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex } /* need to prevent floating point exception when using vorbis audio codec, - initialize this value in the same way as it's done in FFmpeg iteslf (sergey) */ + * initialize this value in the same way as it's done in FFmpeg iteslf (sergey) */ st->codec->time_base.num= 1; st->codec->time_base.den= st->codec->sample_rate; @@ -876,8 +876,8 @@ void flush_ffmpeg(void) } /* ********************************************************************** - * public interface - ********************************************************************** */ + * * public interface + * ********************************************************************** */ /* Get the output filename-- similar to the other output formats */ void filepath_ffmpeg(char* string, RenderData* rd) diff --git a/source/blender/blenlib/BLI_pbvh.h b/source/blender/blenlib/BLI_pbvh.h index 210238efcfd..e6578390ea6 100644 --- a/source/blender/blenlib/BLI_pbvh.h +++ b/source/blender/blenlib/BLI_pbvh.h @@ -160,7 +160,7 @@ int BLI_pbvh_isDeformed(struct PBVH *pbvh); * - spend most of the time in the relatively simple inner loop */ /* note: PBVH_ITER_ALL does not skip hidden vertices, - PBVH_ITER_UNIQUE does */ + * PBVH_ITER_UNIQUE does */ #define PBVH_ITER_ALL 0 #define PBVH_ITER_UNIQUE 1 diff --git a/source/blender/blenlib/intern/fnmatch.c b/source/blender/blenlib/intern/fnmatch.c index ae04075bda6..53172957560 100644 --- a/source/blender/blenlib/intern/fnmatch.c +++ b/source/blender/blenlib/intern/fnmatch.c @@ -30,12 +30,12 @@ /* Comment out all this code if we are using the GNU C Library, and are not - actually compiling the library itself. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ + * actually compiling the library itself. This code is part of the GNU C + * Library, but also included in many other GNU distributions. Compiling + * and linking in this code is a waste when using the GNU C library + * (especially if it is a shared library). Rather than having every GNU + * program understand `configure --with-gnu-libc' and omit the object files, + * it is simpler to just do this in the source for each such file. */ #if defined _LIBC || !defined __GNU_LIBRARY__ diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index b92e5d39b4b..a81656d7ded 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -2973,8 +2973,8 @@ static float ff_quad_form_factor(float *p, float *n, float *q0, float *q1, float static __m128 sse_approx_acos(__m128 x) { /* needs a better approximation than taylor expansion of acos, since that - * gives big erros for near 1.0 values, sqrt(2 * x) * acos(1 - x) should work - * better, see http://www.tom.womack.net/projects/sse-fast-arctrig.html */ + * gives big erros for near 1.0 values, sqrt(2 * x) * acos(1 - x) should work + * better, see http://www.tom.womack.net/projects/sse-fast-arctrig.html */ return _mm_set_ps1(1.0f); } diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index f4070f76519..1c55d5b5a39 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -472,9 +472,9 @@ int BLI_exists(const char *name) #else struct _stati64 st; #endif - /* in Windows stat doesn't recognize dir ending on a slash - To not break code where the ending slash is expected we - don't mess with the argument name directly here - elubie */ + /* in Windows stat doesn't recognize dir ending on a slash + * To not break code where the ending slash is expected we + * don't mess with the argument name directly here - elubie */ wchar_t * tmp_16 = alloc_utf16_from_8(name, 0); int len, res; len = wcslen(tmp_16); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 74988546a42..f87be2b8a83 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -612,7 +612,7 @@ static void bh4_from_bh8(BHead *bhead, BHead8 *bhead8, int do_endian_swap) } /* this patch is to avoid a long long being read from not-eight aligned positions - is necessary on any modern 64bit architecture) */ + * is necessary on any modern 64bit architecture) */ memcpy(&old, &bhead8->old, 8); bhead4->old = (int) (old >> 3); @@ -1138,7 +1138,7 @@ int BLO_is_a_library(const char *path, char *dir, char *group) if (!fd || !BLO_has_bfile_extension(fd+1)) return 0; /* now we know that we are in a blend file and it is safe to - assume that gp actually points to a group */ + * assume that gp actually points to a group */ if (strcmp("Screen", gp)!=0) BLI_strncpy(group, gp, GROUP_MAX); } @@ -1606,7 +1606,7 @@ static void IDP_DirectLinkProperty(IDProperty *prop, int switch_endian, FileData * in the same field as int val; val2 in the * IDPropertyData struct, they have to deal with * endianness specifically - + * * in theory, val and val2 would've already been swapped * if switch_endian is true, so we have to first unswap * them then reswap them as a single 64-bit entity. @@ -2290,17 +2290,19 @@ static void lib_nodetree_do_versions_update_cb(void *UNUSED(data), ID *UNUSED(id /* verify types for nodes and groups, all data has to be read */ /* open = 0: appending/linking, open = 1: open new file (need to clean out dynamic -* typedefs*/ + * typedefs */ static void lib_verify_nodetree(Main *main, int UNUSED(open)) { bNodeTree *ntree; int i; bNodeTreeType *ntreetype; - /* this crashes blender on undo/redo + /* this crashes blender on undo/redo */ +#if 0 if (open==1) { reinit_nodesystem(); - }*/ + } +#endif /* set node->typeinfo pointers */ for (i=0; i < NUM_NTREE_TYPES; ++i) { @@ -2936,12 +2938,12 @@ static void direct_link_text(FileData *fd, Text *text) text->compiled= NULL; -/* +#if 0 if (text->flags & TXT_ISEXT) { reopen_text(text); } else { -*/ +#endif link_list(fd, &text->lines); link_list(fd, &text->markers); @@ -3242,8 +3244,8 @@ static void lib_link_material(FileData *fd, Main *main) if (ma->id.flag & LIB_NEEDLINK) { if (ma->adt) lib_link_animdata(fd, &ma->id, ma->adt); - /*Link ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + /* Link ID Properties -- and copy this comment EXACTLY for easy finding + * of library blocks that implement this.*/ if (ma->id.properties) IDP_LibLinkProperty(ma->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd); ma->ipo= newlibadr_us(fd, ma->id.lib, ma->ipo); @@ -3683,8 +3685,8 @@ static void lib_link_mesh(FileData *fd, Main *main) if (me->id.flag & LIB_NEEDLINK) { int i; - /*Link ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + /* Link ID Properties -- and copy this comment EXACTLY for easy finding + * of library blocks that implement this.*/ if (me->id.properties) IDP_LibLinkProperty(me->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd); if (me->adt) lib_link_animdata(fd, &me->id, me->adt); @@ -3709,7 +3711,7 @@ static void lib_link_mesh(FileData *fd, Main *main) /*check if we need to convert mfaces to mpolys*/ if (me->totface && !me->totpoly) { /* temporarily switch main so that reading from - external CustomData works */ + * external CustomData works */ Main *gmain = G.main; G.main = main; @@ -3779,9 +3781,9 @@ static void direct_link_mdisps(FileData *fd, int count, MDisps *mdisps, int exte if (mdisps[i].totdisp && !mdisps[i].level) { /* this calculation is only correct for loop mdisps; - if loading pre-BMesh face mdisps this will be - overwritten with the correct value in - bm_corners_to_loops() */ + * if loading pre-BMesh face mdisps this will be + * overwritten with the correct value in + * bm_corners_to_loops() */ float gridsize = sqrtf(mdisps[i].totdisp); mdisps[i].level = (int)(logf(gridsize - 1.0f) / M_LN2) + 1; } @@ -3852,7 +3854,7 @@ static void direct_link_mesh(FileData *fd, Mesh *mesh) direct_link_animdata(fd, mesh->adt); /* normally direct_link_dverts should be called in direct_link_customdata, - but for backwards compat in do_versions to work we do it here */ + * but for backwards compat in do_versions to work we do it here */ direct_link_dverts(fd, mesh->totvert, mesh->dvert); direct_link_customdata(fd, &mesh->vdata, mesh->totvert); @@ -3912,11 +3914,11 @@ static void direct_link_mesh(FileData *fd, Mesh *mesh) mesh->mr->verts = newdataadr(fd, mesh->mr->verts); /* If mesh has the same number of vertices as the - highest multires level, load the current mesh verts - into multires and discard the old data. Needed - because some saved files either do not have a verts - array, or the verts array contains out-of-date - data. */ + * highest multires level, load the current mesh verts + * into multires and discard the old data. Needed + * because some saved files either do not have a verts + * array, or the verts array contains out-of-date + * data. */ if (mesh->totvert == ((MultiresLevel*)mesh->mr->levels.last)->totvert) { if (mesh->mr->verts) MEM_freeN(mesh->mr->verts); @@ -4567,7 +4569,7 @@ static void direct_link_object(FileData *fd, Object *ob) ob->flag &= ~OB_FROMGROUP; /* loading saved files with editmode enabled works, but for undo we like - to stay in object mode during undo presses so keep editmode disabled */ + * to stay in object mode during undo presses so keep editmode disabled */ if (fd->memfile) ob->mode &= ~(OB_MODE_EDIT|OB_MODE_PARTICLE_EDIT); @@ -4802,8 +4804,8 @@ static void lib_link_scene(FileData *fd, Main *main) sce= main->scene.first; while (sce) { if (sce->id.flag & LIB_NEEDLINK) { - /*Link ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + /* Link ID Properties -- and copy this comment EXACTLY for easy finding + * of library blocks that implement this.*/ if (sce->id.properties) IDP_LibLinkProperty(sce->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd); if (sce->adt) lib_link_animdata(fd, &sce->id, sce->adt); @@ -5222,7 +5224,7 @@ static void butspace_version_132(SpaceButs *buts) } /* note: file read without screens option G_FILE_NO_UI; - check lib pointers in call below */ + * check lib pointers in call below */ static void lib_link_screen(FileData *fd, Main *main) { bScreen *sc; @@ -5744,7 +5746,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc) sc->swap= 0; /* hacky patch... but people have been saving files with the verse-blender, - causing the handler to keep running for ever, with no means to disable it */ + * causing the handler to keep running for ever, with no means to disable it */ for (a=0; ahandler[a]==SCREEN_HANDLER_VERSE) { sc->handler[a]= 0; @@ -5921,9 +5923,9 @@ static void direct_link_screen(FileData *fd, bScreen *sc) //for (cl= sconsole->scrollback.first; cl; cl= cl->next) // cl->line= newdataadr(fd, cl->line); - /*comma expressions, (e.g. expr1, expr2, expr3) evalutate each expression, - from left to right. the right-most expression sets the result of the comma - expression as a whole*/ + /* comma expressions, (e.g. expr1, expr2, expr3) evalutate each expression, + * from left to right. the right-most expression sets the result of the comma + * expression as a whole*/ for (cl= sconsole->history.first; cl; cl= cl_next) { cl_next= cl->next; cl->line= newdataadr(fd, cl->line); @@ -6064,8 +6066,10 @@ static void direct_link_speaker(FileData *fd, Speaker *spk) spk->adt= newdataadr(fd, spk->adt); direct_link_animdata(fd, spk->adt); - /*spk->sound= newdataadr(fd, spk->sound); - direct_link_sound(fd, spk->sound);*/ +#if 0 + spk->sound= newdataadr(fd, spk->sound); + direct_link_sound(fd, spk->sound); +#endif } /* ************** READ SOUND ******************* */ @@ -7395,7 +7399,7 @@ static void do_version_mdef_250(Main *main) if (mmd->bindcos) { /* make bindcos NULL in order to trick older versions - into thinking that the mesh was not bound yet */ + * into thinking that the mesh was not bound yet */ mmd->bindcagecos= mmd->bindcos; mmd->bindcos= NULL; @@ -8538,9 +8542,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) bScreen *sc; Object *ob; - /* As of now, this insures that the transition from the old Track system - to the new full constraint Track is painless for everyone. - theeth - */ + /* As of now, this insures that the transition from the old Track system + * to the new full constraint Track is painless for everyone. - theeth + */ ob = main->object.first; while (ob) { @@ -8548,7 +8552,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) list = &ob->constraints; /* check for already existing TrackTo constraint - set their track and up flag correctly */ + * set their track and up flag correctly */ if (list) { bConstraint *curcon; @@ -8626,8 +8630,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Object *ob; - /* As of now, this insures that the transition from the old Track system - to the new full constraint Track is painless for everyone.*/ + /* As of now, this insures that the transition from the old Track system + * to the new full constraint Track is painless for everyone.*/ ob = main->object.first; while (ob) { @@ -8635,7 +8639,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) list = &ob->constraints; /* check for already existing TrackTo constraint - set their track and up flag correctly */ + * set their track and up flag correctly */ if (list) { bConstraint *curcon; @@ -8736,9 +8740,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } /* ton: made this 230 instead of 229, - to be sure (tuho files) and this is a reliable check anyway - nevertheless, we might need to think over a fitness (initialize) - check apart from the do_versions() */ + * to be sure (tuho files) and this is a reliable check anyway + * nevertheless, we might need to think over a fitness (initialize) + * check apart from the do_versions() */ if (main->versionfile <= 230) { bScreen *sc; @@ -9518,7 +9522,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) list = &ob->constraints; /* check for already existing MinMax (floor) constraint - and update the sticky flagging */ + * and update the sticky flagging */ if (list) { bConstraint *curcon; @@ -9944,7 +9948,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } /* Copy over old per-level multires vertex data - into a single vertex array in struct Multires */ + * into a single vertex array in struct Multires */ for (me = main->mesh.first; me; me=me->id.next) { if (me->mr && !me->mr->verts) { MultiresLevel *lvl = me->mr->levels.last; @@ -10728,7 +10732,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ob->m_contactProcessingThreshold = 1.0f; //pad3 is used for m_contactProcessingThreshold if (ob->parent) { /* check if top parent has compound shape set and if yes, set this object - to compound shaper as well (was the behavior before, now it's optional) */ + * to compound shaper as well (was the behavior before, now it's optional) */ Object *parent= newlibadr(fd, lib, ob->parent); while (parent && parent != ob && parent->parent != NULL) { parent = newlibadr(fd, lib, parent->parent); @@ -10848,8 +10852,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) seq->sound = sound_new_file(main, str); } /* don't know, if anybody used that - this way, but just in case, upgrade - to new way... */ + * this way, but just in case, upgrade + * to new way... */ if ((seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) && !(seq->flag & SEQ_USE_PROXY_CUSTOM_DIR)) { @@ -11309,8 +11313,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) int a, tot; /* shape keys are no longer applied to the mesh itself, but rather - to the derivedmesh/displist, so here we ensure that the basis - shape key is always set in the mesh coordinates. */ + * to the derivedmesh/displist, so here we ensure that the basis + * shape key is always set in the mesh coordinates. */ for (me= main->mesh.first; me; me= me->id.next) { if ((key = newlibadr(fd, lib, me->key)) && key->refkey) { @@ -11427,9 +11431,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) int i, convert=0; /* convert to new color management system: - while previously colors were stored as srgb, - now they are stored as linear internally, - with screen gamma correction in certain places in the UI. */ + * while previously colors were stored as srgb, + * now they are stored as linear internally, + * with screen gamma correction in certain places in the UI. */ /* don't know what scene is active, so we'll convert if any scene has it enabled... */ while (sce) { @@ -11714,7 +11718,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 13)) { /* NOTE: if you do more conversion, be sure to do it outside of this and - increase subversion again, otherwise it will not be correct */ + * increase subversion again, otherwise it will not be correct */ Object *ob; /* convert degrees to radians for internal use */ @@ -12781,7 +12785,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (sce=main->scene.first; sce; sce=sce->id.next) { /* there are files with invalid audio_channels value, the real cause - is unknown, but we fix it here anyway to avoid crashes */ + * is unknown, but we fix it here anyway to avoid crashes */ if (sce->r.ffcodecdata.audio_channels == 0) sce->r.ffcodecdata.audio_channels = 2; @@ -13118,7 +13122,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) { /* convert deprecated sculpt_paint_unified_* fields to - UnifiedPaintSettings */ + * UnifiedPaintSettings */ Scene *scene; for (scene= main->scene.first; scene; scene= scene->id.next) { ToolSettings *ts= scene->toolsettings; @@ -13193,7 +13197,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (main->versionfile < 263) { /* set fluidsim rate. the version patch for this in 2.62 was wrong, so - try to correct it, if rate is 0.0 that's likely not intentional */ + * try to correct it, if rate is 0.0 that's likely not intentional */ Object *ob; for (ob = main->object.first; ob; ob = ob->id.next) { @@ -13452,10 +13456,10 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath) case ID_LI: /* skip library datablocks in undo, this works together with - BLO_read_from_memfile, where the old main->library is restored - overwriting the libraries from the memory file. previously - it did not save ID_LI/ID_ID blocks in this case, but they are - needed to make quit.blend recover them correctly. */ + * BLO_read_from_memfile, where the old main->library is restored + * overwriting the libraries from the memory file. previously + * it did not save ID_LI/ID_ID blocks in this case, but they are + * needed to make quit.blend recover them correctly. */ if (fd->memfile) bhead= blo_nextbhead(fd, bhead); else @@ -13625,7 +13629,7 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old) /* This crashes files, must look further into it */ /* Update: the issue is that in file reading, the oldnewmap is OK, but for existing data, it has to be - inserted in the map to be found! */ + * inserted in the map to be found! */ if (id->flag & LIB_PRE_EXISTING) oldnewmap_insert(fd->libmap, bhead->old, id, 1); @@ -13644,7 +13648,7 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old) } else { /* this is actually only needed on UI call? when ID was already read before, and another append - happens which invokes same ID... in that case the lookup table needs this entry */ + * happens which invokes same ID... in that case the lookup table needs this entry */ oldnewmap_insert(fd->libmap, bhead->old, id, 1); // commented because this can print way too much // if (G.debug & G_DEBUG) printf("expand: already read %s\n", id->name); @@ -14430,11 +14434,11 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, const if ( ob->id.flag & LIB_INDIRECT ) { - /* IF below is quite confusing! - if we are appending, but this object wasnt just added along with a group, - then this is already used indirectly in the scene somewhere else and we didnt just append it. - - (ob->id.flag & LIB_PRE_EXISTING)==0 means that this is a newly appended object - Campbell */ + /* IF below is quite confusing! + * if we are appending, but this object wasnt just added along with a group, + * then this is already used indirectly in the scene somewhere else and we didnt just append it. + * + * (ob->id.flag & LIB_PRE_EXISTING)==0 means that this is a newly appended object - Campbell */ if (is_group_append==0 || (ob->id.flag & LIB_PRE_EXISTING)==0) { int do_it= 0; @@ -14512,7 +14516,7 @@ static void give_base_to_groups(Main *mainvar, Scene *scene) } /* returns true if the item was found -* but it may already have already been appended/linked */ + * but it may already have already been appended/linked */ static ID *append_named_part(Main *mainl, FileData *fd, const char *idname, const short idcode) { BHead *bhead; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 5a8cb2ede20..0f2990a9157 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -488,7 +488,7 @@ static void write_fmodifiers(WriteData *wd, ListBase *fmodifiers) FMod_Python *data = (FMod_Python *)fcm->data; /* Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + * of library blocks that implement this.*/ IDP_WriteProperty(data->prop, wd); } break; @@ -1212,7 +1212,7 @@ static void write_constraints(WriteData *wd, ListBase *conlist) writestruct(wd, DATA, "bConstraintTarget", 1, ct); /* Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + * of library blocks that implement this.*/ IDP_WriteProperty(data->prop, wd); } break; @@ -1244,7 +1244,7 @@ static void write_pose(WriteData *wd, bPose *pose) /* Write channels */ for (chan=pose->chanbase.first; chan; chan=chan->next) { /* Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + * of library blocks that implement this.*/ if (chan->prop) IDP_WriteProperty(chan->prop, wd); @@ -1417,8 +1417,8 @@ static void write_objects(WriteData *wd, ListBase *idbase) /* write LibData */ writestruct(wd, ID_OB, "Object", 1, ob); - /*Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + /* Write ID Properties -- and copy this comment EXACTLY for easy finding + * of library blocks that implement this.*/ if (ob->id.properties) IDP_WriteProperty(ob->id.properties, wd); if (ob->adt) write_animdata(wd, ob->adt); @@ -1678,8 +1678,8 @@ static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, CustomData_file_write_info(layer->type, &structname, &structnum); if (structnum) { /* when using partial visibility, the MEdge and MFace layers - are smaller than the original, so their type and count is - passed to make this work */ + * are smaller than the original, so their type and count is + * passed to make this work */ if (layer->type != partial_type) datasize= structnum*count; else datasize= structnum*partial_count; @@ -1800,10 +1800,10 @@ static void write_meshs(WriteData *wd, ListBase *idbase) write_customdata(wd, &mesh->id, mesh->totedge, &mesh->edata, -1, 0); write_customdata(wd, &mesh->id, mesh->totface, &mesh->fdata, -1, 0); /* harmless for older blender versioins but _not_ writing these keeps file size down */ - /* +#if 0 write_customdata(wd, &mesh->id, mesh->totloop, &mesh->ldata, -1, 0); write_customdata(wd, &mesh->id, mesh->totpoly, &mesh->pdata, -1, 0); - */ +#endif /* restore */ mesh->mpoly = backup_mesh.mpoly; @@ -1961,10 +1961,10 @@ static void write_materials(WriteData *wd, ListBase *idbase) /* write LibData */ writestruct(wd, ID_MA, "Material", 1, ma); - /*Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ - /*manually set head group property to IDP_GROUP, just in case it hadn't been - set yet :) */ + /* Write ID Properties -- and copy this comment EXACTLY for easy finding + * of library blocks that implement this.*/ + /* manually set head group property to IDP_GROUP, just in case it hadn't been + * set yet :) */ if (ma->id.properties) IDP_WriteProperty(ma->id.properties, wd); if (ma->adt) write_animdata(wd, ma->adt); @@ -2468,7 +2468,7 @@ static void write_bone(WriteData *wd, Bone* bone) writestruct(wd, DATA, "Bone", 1, bone); /* Write ID Properties -- and copy this comment EXACTLY for easy finding - of library blocks that implement this.*/ + * of library blocks that implement this.*/ if (bone->prop) IDP_WriteProperty(bone->prop, wd); diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 3457d295bdc..7d4129b1205 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -1179,8 +1179,8 @@ BMFace *bmesh_sfme(BMesh *bm, BMFace *f, BMVert *v1, BMVert *v2, if (first_loop_f1) { /* original first loop was in f1, find a suitable first loop for f2 - which is as similar as possible to f1. the order matters for tools - such as duplifaces. */ + * which is as similar as possible to f1. the order matters for tools + * such as duplifaces. */ if (f->l_first->prev == f1loop) f2->l_first = f2loop->prev; else if (f->l_first->next == f1loop) diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c index a6d9d26f7ae..fe9e40aad44 100644 --- a/source/blender/bmesh/operators/bmo_dissolve.c +++ b/source/blender/bmesh/operators/bmo_dissolve.c @@ -449,7 +449,8 @@ void dummy_exec(BMesh *bm, BMOperator *op) BM_edge_kill(bm, fe); } } - /* else if (f->len == 3) { +#if 0 + else if (f->len == 3) { BMEdge *ed[3]; BMVert *vt[3]; BMLoop *lp[3]; @@ -465,7 +466,7 @@ void dummy_exec(BMesh *bm, BMOperator *op) if (vt[0] == vt[1] || vt[0] == vt[2]) { i += 1; } - */ +#endif } } if (oldlen == len) break; diff --git a/source/blender/bmesh/operators/bmo_removedoubles.c b/source/blender/bmesh/operators/bmo_removedoubles.c index 8cdb3b9b373..149f2537a12 100644 --- a/source/blender/bmesh/operators/bmo_removedoubles.c +++ b/source/blender/bmesh/operators/bmo_removedoubles.c @@ -118,7 +118,7 @@ void bmo_weldverts_exec(BMesh *bm, BMOperator *op) } /* check if any faces are getting their own corners merged - together, split face if so */ + * together, split face if so */ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { remdoubles_splitface(f, bm, op); } @@ -157,7 +157,7 @@ void bmo_weldverts_exec(BMesh *bm, BMOperator *op) bm->elem_index_dirty |= BM_FACE; /* faces get "modified" by creating new faces here, then at the - end the old faces are deleted */ + * end the old faces are deleted */ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { if (!BMO_elem_flag_test(bm, f, FACE_MARK)) continue; diff --git a/source/blender/bmesh/operators/bmo_slide.c b/source/blender/bmesh/operators/bmo_slide.c index 57bda579603..5a91fdee533 100644 --- a/source/blender/bmesh/operators/bmo_slide.c +++ b/source/blender/bmesh/operators/bmo_slide.c @@ -21,8 +21,8 @@ */ /** \file blender/bmesh/operators/bmo_slide.c -* \ingroup bmesh -*/ + * \ingroup bmesh + */ #include "MEM_guardedalloc.h" diff --git a/source/blender/editors/include/ED_numinput.h b/source/blender/editors/include/ED_numinput.h index e723ff73532..d51ece58e92 100644 --- a/source/blender/editors/include/ED_numinput.h +++ b/source/blender/editors/include/ED_numinput.h @@ -29,13 +29,13 @@ /* - The ctrl value has different meaning: - 0 : No value has been typed - - otherwise, |value| - 1 is where the cursor is located after the period - Positive : number is positive - Negative : number is negative -*/ + * The ctrl value has different meaning: + * 0 : No value has been typed + * + * otherwise, |value| - 1 is where the cursor is located after the period + * Positive : number is positive + * Negative : number is negative + */ typedef struct NumInput { short idx; diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index 2f1075bde19..c903040a6b9 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -168,7 +168,7 @@ int uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, int (*check_prop)(Pointe } /* may meed to add more cases here. - * don't override enum flag names */ + * don't override enum flag names */ /* name is shown above, empty name for button below */ name = (flag & PROP_ENUM_FLAG || is_boolean) ? NULL : ""; diff --git a/source/blender/editors/mesh/editmesh_slide.c b/source/blender/editors/mesh/editmesh_slide.c index 0d49356d9d9..44f7c388a74 100644 --- a/source/blender/editors/mesh/editmesh_slide.c +++ b/source/blender/editors/mesh/editmesh_slide.c @@ -307,7 +307,7 @@ static void vtx_slide_draw(const bContext *C, ARegion *UNUSED(ar), void *arg) } } - /* Draw selected edge + /* Draw selected edge * Add color offset and reduce alpha */ UI_ThemeColorShadeAlpha(TH_EDGE_SELECT, 40, -50); diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 47a4c376f96..1a2e42d691a 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -221,9 +221,9 @@ static int screen_render_exec(bContext *C, wmOperator *op) BKE_image_backup_render(scene, ima); /* cleanup sequencer caches before starting user triggered render. - * otherwise, invalidated cache entries can make their way into - * the output rendering. We can't put that into RE_BlenderFrame, - * since sequence rendering can call that recursively... (peter) */ + * otherwise, invalidated cache entries can make their way into + * the output rendering. We can't put that into RE_BlenderFrame, + * since sequence rendering can call that recursively... (peter) */ seq_stripelem_cache_cleanup(); RE_SetReports(re, op->reports); @@ -517,9 +517,9 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) multires_force_render_update(CTX_data_active_object(C)); /* cleanup sequencer caches before starting user triggered render. - * otherwise, invalidated cache entries can make their way into - * the output rendering. We can't put that into RE_BlenderFrame, - * since sequence rendering can call that recursively... (peter) */ + * otherwise, invalidated cache entries can make their way into + * the output rendering. We can't put that into RE_BlenderFrame, + * since sequence rendering can call that recursively... (peter) */ seq_stripelem_cache_cleanup(); /* get editmode results */ diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index b56a295864b..35b4126339e 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -146,9 +146,9 @@ void ED_render_engine_changed(Main *bmain) } /***************************** Updates *********************************** -* ED_render_id_flush_update gets called from DAG_id_tag_update, to do * -* editor level updates when the ID changes. when these ID blocks are in * -* the dependency graph, we can get rid of the manual dependency checks */ + * ED_render_id_flush_update gets called from DAG_id_tag_update, to do * + * editor level updates when the ID changes. when these ID blocks are in * + * the dependency graph, we can get rid of the manual dependency checks */ static int mtex_use_tex(MTex **mtex, int tot, Tex *tex) { diff --git a/source/blender/editors/sculpt_paint/paint_hide.c b/source/blender/editors/sculpt_paint/paint_hide.c index 43bb4d33212..c75c1be36f5 100644 --- a/source/blender/editors/sculpt_paint/paint_hide.c +++ b/source/blender/editors/sculpt_paint/paint_hide.c @@ -135,7 +135,7 @@ static void partialvis_update_mesh(Object *ob, } /* Hide or show elements in multires grids with a special GridFlags - customdata layer. */ + * customdata layer. */ static void partialvis_update_grids(Object *ob, PBVH *pbvh, PBVHNode *node, @@ -176,7 +176,7 @@ static void partialvis_update_grids(Object *ob, } else if (action == PARTIALVIS_SHOW && area == PARTIALVIS_ALL) { /* special case if we're showing all, just free the - grid */ + * grid */ MEM_freeN(gh); grid_hidden[g] = NULL; any_changed = 1; @@ -206,7 +206,7 @@ static void partialvis_update_grids(Object *ob, } /* if everything in the grid is now visible, free the grid - flags */ + * flags */ if (!any_hidden) { MEM_freeN(gh); grid_hidden[g] = NULL; @@ -245,9 +245,9 @@ static void clip_planes_from_rect(bContext *C, } /* If mode is inside, get all PBVH nodes that lie at least partially - inside the clip_planes volume. If mode is outside, get all nodes - that lie at least partially outside the volume. If showing all, get - all nodes. */ + * inside the clip_planes volume. If mode is outside, get all nodes + * that lie at least partially outside the volume. If showing all, get + * all nodes. */ static void get_pbvh_nodes(PBVH *pbvh, PBVHNode ***nodes, int *totnode, @@ -328,7 +328,7 @@ static int hide_show_exec(bContext *C, wmOperator *op) sculpt_undo_push_end(); /* ensure that edges and faces get hidden as well (not used by - sculpt but it looks wrong when entering editmode otherwise) */ + * sculpt but it looks wrong when entering editmode otherwise) */ if (pbvh_type == PBVH_FACES) { mesh_flush_hidden_from_verts(me->mvert, me->mloop, me->medge, me->totedge, diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index d381aa5b536..3b6e21cb3f2 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -3001,7 +3001,7 @@ static void project_paint_begin(ProjPaintState *ps) /* Note, use the original mesh for getting the clone and mask layer index - * this avoids re-generating the derived mesh just to get the new index */ + * this avoids re-generating the derived mesh just to get the new index */ if (ps->do_layer_clone) { //int layer_num = CustomData_get_clone_layer(&ps->dm->faceData, CD_MTFACE); int layer_num = CustomData_get_clone_layer(&((Mesh *)ps->ob->data)->fdata, CD_MTFACE); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 5a64c30b79d..157be337823 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -645,7 +645,7 @@ static float tex_strength(SculptSession *ss, Brush *br, float point[3], float jnk; /* Get strength by feeding the vertex - * location directly into a texture */ + * location directly into a texture */ externtex(mtex, point, &avg, &jnk, &jnk, &jnk, &jnk, 0); } @@ -2556,16 +2556,18 @@ static void calc_brushdata_symm(Sculpt *sd, StrokeCache *cache, const char symm, flip_coord(cache->view_normal, cache->true_view_normal, symm); /* XXX This reduces the length of the grab delta if it approaches the line of symmetry - XXX However, a different approach appears to be needed - if (sd->flags & SCULPT_SYMMETRY_FEATHER) { - float frac = 1.0f/max_overlap_count(sd); - float reduce = (feather-frac)/(1-frac); + * XXX However, a different approach appears to be needed */ +#if 0 + if (sd->flags & SCULPT_SYMMETRY_FEATHER) { + float frac = 1.0f/max_overlap_count(sd); + float reduce = (feather-frac)/(1-frac); - printf("feather: %f frac: %f reduce: %f\n", feather, frac, reduce); + printf("feather: %f frac: %f reduce: %f\n", feather, frac, reduce); - if (frac < 1) - mul_v3_fl(cache->grab_delta_symmetry, reduce); - } */ + if (frac < 1) + mul_v3_fl(cache->grab_delta_symmetry, reduce); + } +#endif unit_m4(cache->symm_rot_mat); unit_m4(cache->symm_rot_mat_inv); diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c index fd1c6984346..4545c498fed 100644 --- a/source/blender/editors/sculpt_paint/sculpt_uv.c +++ b/source/blender/editors/sculpt_paint/sculpt_uv.c @@ -146,8 +146,8 @@ typedef struct UvSculptData { /*********** Improved Laplacian Relaxation Operator ************************/ /* original code by Raul Fernandez Hernandez "farsthary" * -* adapted to uv smoothing by Antony Riakiatakis * -***************************************************************************/ + * adapted to uv smoothing by Antony Riakiatakis * + ***************************************************************************/ typedef struct Temp_UvData { float sum_co[2], p[2], b[2], sum_b[2]; diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 9832cfb3227..ecbd9a4033a 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -602,7 +602,7 @@ static void rna_update_cb(bContext *C, void *arg_cb, void *UNUSED(arg)) RNAUpdateCb *cb = (RNAUpdateCb *)arg_cb; /* ideally this would be done by RNA itself, but there we have - * no image user available, so we just update this flag here */ + * no image user available, so we just update this flag here */ cb->iuser->ok = 1; /* we call update here on the pointer property, this way the diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 15d7986a5c4..4df60e6eede 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -441,8 +441,8 @@ static int node_mouse_select(Main *bmain, SpaceNode *snode, ARegion *ar, const i } else { /* only allow one selected output per node, for sensible linking. - * allows selecting outputs from different nodes though. - */ + * allows selecting outputs from different nodes though. + */ if (node) { for (tsock=node->outputs.first; tsock; tsock=tsock->next) node_socket_deselect(node, tsock, 1); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index f6b03a5fac3..6407f91aefc 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1744,7 +1744,7 @@ static int game_engine_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* redraw to hide any menus/popups, we don't go back to - * the window manager until after this operator exits */ + * the window manager until after this operator exits */ WM_redraw_windows(C); rv3d = CTX_wm_region_view3d(C); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d1dbdbb09c7..62c82c58adf 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4710,7 +4710,7 @@ void projectSVData(TransInfo *t, int final) return; /* don't do this at all for non-basis shape keys, too easy to - accidentally break uv maps or vertex colors then */ + * accidentally break uv maps or vertex colors then */ if (em->bm->shapenr > 1) return; diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 387b138cbfb..5a0fb69a26c 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -245,7 +245,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, if (efa->len == 3 || efa->len == 4) { /* for quads let parametrize split, it can make better decisions - about which split is best for unwrapping than scanfill */ + * about which split is best for unwrapping than scanfill */ i = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); @@ -1569,7 +1569,7 @@ static int cube_project_exec(bContext *C, wmOperator *op) cube_size = RNA_float_get(op->ptr, "cube_size"); /* choose x,y,z axis for projection depending on the largest normal - * component, but clusters all together around the center of map. */ + * component, but clusters all together around the center of map. */ BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { int first = 1; diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 869cc0444aa..1dee327a066 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -154,7 +154,7 @@ static void gpu_buffer_pool_delete_last(GPUBufferPool *pool) } /* free a GPUBufferPool; also frees the data in the pool's - GPUBuffers */ + * GPUBuffers */ static void gpu_buffer_pool_free(GPUBufferPool *pool) { if (!pool) @@ -184,7 +184,7 @@ void GPU_global_buffer_pool_free(void) } /* get a GPUBuffer of at least `size' bytes; uses one from the buffer - pool if possible, otherwise creates a new one */ + * pool if possible, otherwise creates a new one */ GPUBuffer *GPU_buffer_alloc(int size) { GPUBufferPool *pool; @@ -194,13 +194,13 @@ GPUBuffer *GPU_buffer_alloc(int size) pool = gpu_get_global_buffer_pool(); /* not sure if this buffer pool code has been profiled much, - seems to me that the graphics driver and system memory - management might do this stuff anyway. --nicholas - */ + * seems to me that the graphics driver and system memory + * management might do this stuff anyway. --nicholas + */ /* check the global buffer pool for a recently-deleted buffer - that is at least as big as the request, but not more than - twice as big */ + * that is at least as big as the request, but not more than + * twice as big */ for (i = 0; i < pool->totbuf; i++) { bufsize = pool->buffers[i]->size; @@ -210,11 +210,11 @@ GPUBuffer *GPU_buffer_alloc(int size) break; } /* smaller buffers won't fit data and buffers at least - twice as big are a waste of memory */ + * twice as big are a waste of memory */ else if (bufsize > size && size > (bufsize / 2)) { /* is it closer to the required size than the - last appropriate buffer found. try to save - memory */ + * last appropriate buffer found. try to save + * memory */ if (bestfit == -1 || pool->buffers[bestfit]->size > bufsize) { bestfit = i; } @@ -222,7 +222,7 @@ GPUBuffer *GPU_buffer_alloc(int size) } /* if an acceptable buffer was found in the pool, remove it - from the pool and return it */ + * from the pool and return it */ if (bestfit != -1) { buf = pool->buffers[bestfit]; gpu_buffer_pool_remove_index(pool, bestfit); @@ -235,7 +235,7 @@ GPUBuffer *GPU_buffer_alloc(int size) if (useVBOs == 1) { /* create a new VBO and initialize it to the requested - size */ + * size */ glGenBuffersARB(1, &buf->id); glBindBufferARB(GL_ARRAY_BUFFER_ARB, buf->id); glBufferDataARB(GL_ARRAY_BUFFER_ARB, size, NULL, GL_STATIC_DRAW_ARB); @@ -245,9 +245,9 @@ GPUBuffer *GPU_buffer_alloc(int size) buf->pointer = MEM_mallocN(size, "GPUBuffer.pointer"); /* purpose of this seems to be dealing with - out-of-memory errors? looks a bit iffy to me - though, at least on Linux I expect malloc() would - just overcommit. --nicholas */ + * out-of-memory errors? looks a bit iffy to me + * though, at least on Linux I expect malloc() would + * just overcommit. --nicholas */ while (!buf->pointer && pool->totbuf > 0) { gpu_buffer_pool_delete_last(pool); buf->pointer = MEM_mallocN(size, "GPUBuffer.pointer"); @@ -260,8 +260,8 @@ GPUBuffer *GPU_buffer_alloc(int size) } /* release a GPUBuffer; does not free the actual buffer or its data, - but rather moves it to the pool of recently-freed buffers for - possible re-use*/ + * but rather moves it to the pool of recently-freed buffers for + * possible re-use*/ void GPU_buffer_free(GPUBuffer *buffer) { GPUBufferPool *pool; @@ -273,18 +273,18 @@ void GPU_buffer_free(GPUBuffer *buffer) pool = gpu_get_global_buffer_pool(); /* free the last used buffer in the queue if no more space, but only - if we are in the main thread. for e.g. rendering or baking it can - happen that we are in other thread and can't call OpenGL, in that - case cleanup will be done GPU_buffer_pool_free_unused */ + * if we are in the main thread. for e.g. rendering or baking it can + * happen that we are in other thread and can't call OpenGL, in that + * case cleanup will be done GPU_buffer_pool_free_unused */ if (BLI_thread_is_main()) { /* in main thread, safe to decrease size of pool back - down to MAX_FREE_GPU_BUFFERS */ + * down to MAX_FREE_GPU_BUFFERS */ while (pool->totbuf >= MAX_FREE_GPU_BUFFERS) gpu_buffer_pool_delete_last(pool); } else { /* outside of main thread, can't safely delete the - buffer, so increase pool size */ + * buffer, so increase pool size */ if (pool->maxsize == pool->totbuf) { pool->maxsize += MAX_FREE_GPU_BUFFERS; pool->buffers = MEM_reallocN(pool->buffers, @@ -308,7 +308,7 @@ typedef struct GPUVertPointLink { } GPUVertPointLink; /* add a new point to the list of points related to a particular - vertex */ + * vertex */ static void gpu_drawobject_add_vert_point(GPUDrawObject *gdo, int vert_index, int point_index) { GPUVertPointLink *lnk; @@ -329,7 +329,7 @@ static void gpu_drawobject_add_vert_point(GPUDrawObject *gdo, int vert_index, in } /* update the vert_points and triangle_to_mface fields with a new - triangle */ + * triangle */ static void gpu_drawobject_add_triangle(GPUDrawObject *gdo, int base_point_index, int face_index, @@ -342,7 +342,7 @@ static void gpu_drawobject_add_triangle(GPUDrawObject *gdo, } /* for each vertex, build a list of points related to it; these lists - are stored in an array sized to the number of vertices */ + * are stored in an array sized to the number of vertices */ static void gpu_drawobject_init_vert_points(GPUDrawObject *gdo, MFace *f, int totface) { GPUBufferMaterial *mat; @@ -356,7 +356,7 @@ static void gpu_drawobject_init_vert_points(GPUDrawObject *gdo, MFace *f, int to gdo->vert_points_usage = 0; /* build a map from the original material indices to the new - GPUBufferMaterial indices */ + * GPUBufferMaterial indices */ for (i = 0; i < gdo->totmaterial; i++) mat_orig_to_new[gdo->materials[i].mat_nr] = i; @@ -390,7 +390,7 @@ static void gpu_drawobject_init_vert_points(GPUDrawObject *gdo, MFace *f, int to } /* see GPUDrawObject's structure definition for a description of the - data being initialized here */ + * data being initialized here */ GPUDrawObject *GPU_drawobject_new( DerivedMesh *dm ) { GPUDrawObject *gdo; @@ -402,7 +402,7 @@ GPUDrawObject *GPU_drawobject_new( DerivedMesh *dm ) totface= dm->getNumTessFaces(dm); /* get the number of points used by each material, treating - each quad as two triangles */ + * each quad as two triangles */ memset(points_per_mat, 0, sizeof(int)*MAX_MATERIALS); for (i = 0; i < totface; i++) points_per_mat[mface[i].mat_nr] += mface[i].v4 ? 6 : 3; @@ -500,7 +500,7 @@ static GPUBuffer *gpu_buffer_setup(DerivedMesh *dm, GPUDrawObject *object, cur_index_per_mat[i] = object->materials[i].start * vector_size; /* map from original material index to new - GPUBufferMaterial index */ + * GPUBufferMaterial index */ mat_orig_to_new[object->materials[i].mat_nr] = i; } @@ -509,7 +509,7 @@ static GPUBuffer *gpu_buffer_setup(DerivedMesh *dm, GPUDrawObject *object, while (!success) { /* bind the buffer and discard previous data, - avoids stalling gpu */ + * avoids stalling gpu */ glBindBufferARB(target, buffer->id); glBufferDataARB(target, buffer->size, NULL, GL_STATIC_DRAW_ARB); @@ -521,14 +521,14 @@ static GPUBuffer *gpu_buffer_setup(DerivedMesh *dm, GPUDrawObject *object, buffer= NULL; /* try freeing an entry from the pool - and reallocating the buffer */ + * and reallocating the buffer */ if (pool->totbuf > 0) { gpu_buffer_pool_delete_last(pool); buffer = GPU_buffer_alloc(size); } /* allocation still failed; fall back - to legacy mode */ + * to legacy mode */ if (!buffer) { dm->drawObject->legacy = 1; success = 1; @@ -813,7 +813,7 @@ static void GPU_buffer_copy_uvedge(DerivedMesh *dm, float *varray, int *UNUSED(i } /* get the DerivedMesh's MCols; choose (in decreasing order of - preference) from CD_ID_MCOL, CD_PREVIEW_MCOL, or CD_MCOL */ + * preference) from CD_ID_MCOL, CD_PREVIEW_MCOL, or CD_MCOL */ static MCol *gpu_buffer_color_type(DerivedMesh *dm) { MCol *c; @@ -932,7 +932,7 @@ static GPUBuffer *gpu_buffer_setup_type(DerivedMesh *dm, GPUBufferType type) } /* get the buffer of `type', initializing the GPUDrawObject and - buffer if needed */ + * buffer if needed */ static GPUBuffer *gpu_buffer_setup_common(DerivedMesh *dm, GPUBufferType type) { GPUBuffer **buf; @@ -1189,7 +1189,7 @@ void GPU_color_switch(int mode) } /* return 1 if drawing should be done using old immediate-mode - code, 0 otherwise */ + * code, 0 otherwise */ int GPU_buffer_legacy(DerivedMesh *dm) { int test= (U.gameflags & USER_DISABLE_VBO); @@ -1242,7 +1242,7 @@ void GPU_buffer_unlock(GPUBuffer *buffer) if (useVBOs) { if (buffer) { /* note: this operation can fail, could return - an error code from this function? */ + * an error code from this function? */ glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); } glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); @@ -1260,7 +1260,7 @@ void GPU_buffer_draw_elements(GPUBuffer *elements, unsigned int mode, int start, /* XXX: the rest of the code in this file is used for optimized PBVH - drawing and doesn't interact at all with the buffer code above */ + * drawing and doesn't interact at all with the buffer code above */ /* Convenience struct for building the VBO. */ typedef struct { @@ -1426,8 +1426,8 @@ void GPU_update_grid_buffers(GPU_Buffers *buffers, DMGridData **grids, if (!smooth) { /* for flat shading, recalc normals and set the last vertex of - each quad in the index buffer to have the flat normal as - that is what opengl will use */ + * each quad in the index buffer to have the flat normal as + * that is what opengl will use */ for (j = 0; j < gridsize-1; ++j) { for (k = 0; k < gridsize-1; ++k) { float fno[3]; @@ -1471,7 +1471,7 @@ static int gpu_count_grid_quads(BLI_bitmap *grid_hidden, int i, x, y, totquad; /* grid hidden layer is present, so have to check each grid for - visiblity */ + * visiblity */ for (i = 0, totquad = 0; i < totgrid; i++) { const BLI_bitmap gh = grid_hidden[grid_indices[i]]; @@ -1493,7 +1493,7 @@ static int gpu_count_grid_quads(BLI_bitmap *grid_hidden, } /* Build the element array buffer of grid indices using either - unsigned shorts or unsigned ints. */ + * unsigned shorts or unsigned ints. */ #define FILL_QUAD_BUFFER(type_, tot_quad_, buffer_) \ { \ type_ *quad_data; \ @@ -1552,7 +1552,7 @@ static GLuint gpu_get_grid_buffer(int gridsize, GLenum *index_type, unsigned *to int totgrid = 1; /* VBO is disabled; delete the previous buffer (if it exists) and - return an invalid handle */ + * return an invalid handle */ if (!GLEW_ARB_vertex_buffer_object || (U.gameflags & USER_DISABLE_VBO)) { if (buffer) glDeleteBuffersARB(1, &buffer); diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index a40452adfe7..fc3878e2532 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -388,7 +388,7 @@ static void codegen_set_unique_ids(ListBase *nodes) ((input->source == GPU_SOURCE_TEX) || (input->source == GPU_SOURCE_TEX_PIXEL))) { if (input->link) { /* input is texture from buffer, assign only one texid per - buffer to avoid sampling the same texture twice */ + * buffer to avoid sampling the same texture twice */ if (!BLI_ghash_haskey(bindhash, input->link)) { input->texid = texid++; input->bindtex = 1; @@ -399,7 +399,7 @@ static void codegen_set_unique_ids(ListBase *nodes) } else if (input->ima) { /* input is texture from image, assign only one texid per - buffer to avoid sampling the same texture twice */ + * buffer to avoid sampling the same texture twice */ if (!BLI_ghash_haskey(bindhash, input->ima)) { input->texid = texid++; input->bindtex = 1; @@ -968,8 +968,8 @@ static void GPU_node_output(GPUNode *node, int type, const char *UNUSED(name), G output->link->output = output; /* note: the caller owns the reference to the linkfer, GPUOutput - merely points to it, and if the node is destroyed it will - set that pointer to NULL */ + * merely points to it, and if the node is destroyed it will + * set that pointer to NULL */ } BLI_addtail(&node->outputs, output); diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c index e50f8e16ea5..b566d975f5b 100644 --- a/source/blender/imbuf/intern/indexer.c +++ b/source/blender/imbuf/intern/indexer.c @@ -300,7 +300,7 @@ int IMB_indexer_can_scan(struct anim_index * idx, int old_frame_index, int new_frame_index) { /* makes only sense, if it is the same I-Frame and we are not - trying to run backwards in time... */ + * trying to run backwards in time... */ return (IMB_indexer_get_seek_pos(idx, old_frame_index) == IMB_indexer_get_seek_pos(idx, new_frame_index) && old_frame_index < new_frame_index); diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 7aa37b547f4..3168e5b765a 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -91,9 +91,9 @@ typedef struct Strip { struct Strip *next, *prev; int us, done; int startstill, endstill; - StripElem *stripdata; /* only used as an array in IMAGE sequences(!), - and as a 1-element array in MOVIE sequences, - NULL for all other strip-types */ + StripElem *stripdata; /* only used as an array in IMAGE sequences(!), + * and as a 1-element array in MOVIE sequences, + * NULL for all other strip-types */ char dir[768]; StripProxy *proxy; StripCrop *crop; diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index c24b78a155c..e564c03df14 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -322,7 +322,7 @@ static void rna_ConstraintActuator_spring_set(struct PointerRNA *ptr, float valu *fp = value; } /* ConstraintActuator uses the same property for Material and Property. - Therefore we need to clear the property when "use_material_detect" mode changes */ + * Therefore we need to clear the property when "use_material_detect" mode changes */ static void rna_Actuator_constraint_detect_material_set(struct PointerRNA *ptr, int value) { bActuator *act = (bActuator*)ptr->data; @@ -1453,19 +1453,19 @@ static void rna_def_scene_actuator(BlenderRNA *brna) RNA_def_property_update(prop, NC_LOGIC, NULL); /* XXX no need for those tooltips. to remove soon - Originally we had different 'scene' tooltips for different values of 'type'. - They were: - ACT_SCENE_RESTART "" - ACT_SCENE_CAMERA "" - ACT_SCENE_SET "Set this Scene" - ACT_SCENE_ADD_FRONT "Add an Overlay Scene" - ACT_SCENE_ADD_BACK "Add a Background Scene" - ACT_SCENE_REMOVE "Remove a Scene" - ACT_SCENE_SUSPEND "Pause a Scene" - ACT_SCENE_RESUME "Unpause a Scene" - - It can be done in the ui script if still needed. - */ + * Originally we had different 'scene' tooltips for different values of 'type'. + * They were: + * ACT_SCENE_RESTART "" + * ACT_SCENE_CAMERA "" + * ACT_SCENE_SET "Set this Scene" + * ACT_SCENE_ADD_FRONT "Add an Overlay Scene" + * ACT_SCENE_ADD_BACK "Add a Background Scene" + * ACT_SCENE_REMOVE "Remove a Scene" + * ACT_SCENE_SUSPEND "Pause a Scene" + * ACT_SCENE_RESUME "Unpause a Scene" + * + * It can be done in the ui script if still needed. + */ } diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 0b80f4ab893..5093c1a6eee 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -927,7 +927,7 @@ static void rna_def_operator_stroke_element(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Is Stroke Start", ""); /* XXX: Tool (this will be for pressing a modifier key for a different brush, - e.g. switching to a Smooth brush in the middle of the stroke */ + * e.g. switching to a Smooth brush in the middle of the stroke */ /* XXX: i don't think blender currently supports the ability to properly do a remappable modifier * in the middle of a stroke */ diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 128c2609df9..5bf52c0d552 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -1200,13 +1200,13 @@ static void rna_def_curve_spline_bezpoints(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_flag(func, FUNC_USE_SELF_ID|FUNC_USE_REPORTS); RNA_def_int(func, "count", 1, INT_MIN, INT_MAX, "Number", "Number of points to add to the spline", 0, INT_MAX); - /* +#if 0 func= RNA_def_function(srna, "remove", "rna_Curve_spline_remove"); RNA_def_function_ui_description(func, "Remove a spline from a curve"); RNA_def_function_flag(func, FUNC_USE_REPORTS); parm= RNA_def_pointer(func, "spline", "Spline", "", "The spline to remove"); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL); - */ +#endif } /* curve.splines */ @@ -1449,13 +1449,14 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_float_funcs(prop, "rna_Curve_texspace_size_get", "rna_Curve_texspace_size_set", NULL); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - /* not supported yet + /* not supported yet */ +#if 0 prop= RNA_def_property(srna, "texspace_rot", PROP_FLOAT, PROP_EULER); RNA_def_property_float(prop, NULL, "rot"); RNA_def_property_ui_text(prop, "Texture Space Rotation", "Texture space rotation"); RNA_def_property_editable_func(prop, texspace_editable); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - */ +#endif prop = RNA_def_property(srna, "use_uv_as_generated", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO); diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index 792635ba5ae..e5939296f5a 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -189,11 +189,11 @@ static void rna_Image_file_format_set(PointerRNA *ptr, int value) ImBuf *ibuf; int ftype = BKE_imtype_to_ftype(value); - /* +#if 0 ibuf= BKE_image_get_ibuf(image, NULL); if (ibuf) ibuf->ftype= ftype; - */ +#endif /* to be safe change all buffer file types */ for (ibuf = image->ibufs.first; ibuf; ibuf = ibuf->next) { @@ -603,9 +603,9 @@ static void rna_def_image(BlenderRNA *brna) RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL); /* - Image.has_data and Image.depth are temporary, - Update import_obj.py when they are replaced (Arystan) - */ + * Image.has_data and Image.depth are temporary, + * Update import_obj.py when they are replaced (Arystan) + */ prop = RNA_def_property(srna, "has_data", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_Image_has_data_get", NULL); RNA_def_property_clear_flag(prop, PROP_EDITABLE); diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c index 245346326ae..94120c8edc6 100644 --- a/source/blender/makesrna/intern/rna_key.c +++ b/source/blender/makesrna/intern/rna_key.c @@ -267,7 +267,8 @@ static void rna_ShapeKeyBezierPoint_handle_2_co_set(PointerRNA *ptr, const float vec[6+2] = values[2]; } -/*static float rna_ShapeKeyBezierPoint_tilt_get(PointerRNA *ptr) +#if 0 +static float rna_ShapeKeyBezierPoint_tilt_get(PointerRNA *ptr) { float *vec= (float*)ptr->data; return vec[10]; @@ -277,7 +278,8 @@ static void rna_ShapeKeyBezierPoint_tilt_set(PointerRNA *ptr, float value) { float *vec= (float*)ptr->data; vec[10]= value; -}*/ +} +#endif static void rna_ShapeKey_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 92e65f26100..a0d3cdef9eb 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -606,21 +606,18 @@ static int rna_Main_gpencil_is_updated_get(PointerRNA *ptr) { return DAG_id_type void RNA_api_main(StructRNA *srna) { - /* +#if 0 FunctionRNA *func; PropertyRNA *parm; - */ /* maybe we want to add functions in 'bpy.data' still? * for now they are all in collections bpy.data.images.new(...) */ - /* func= RNA_def_function(srna, "add_image", "rna_Main_add_image"); RNA_def_function_ui_description(func, "Add a new image"); parm= RNA_def_string_file_path(func, "filepath", "", 0, "", "File path to load image from"); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "image", "Image", "", "New image"); RNA_def_function_return(func, parm); - */ - +#endif } void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index d6c240b29c1..78f62194735 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1,4 +1,4 @@ -/** +/* * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or @@ -20,9 +20,9 @@ * ***** END GPL LICENSE BLOCK ***** */ -/*note: the original vertex color stuff is now just used for - getting info on the layers themselves, accessing the data is - done through the (not yet written) mpoly interfaces.*/ +/* note: the original vertex color stuff is now just used for + * getting info on the layers themselves, accessing the data is + * done through the (not yet written) mpoly interfaces.*/ /** \file blender/makesrna/intern/rna_mesh.c * \ingroup RNA diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c index 5fb432c9e8f..e8ea19a5c5b 100644 --- a/source/blender/makesrna/intern/rna_meta.c +++ b/source/blender/makesrna/intern/rna_meta.c @@ -331,13 +331,14 @@ static void rna_def_metaball(BlenderRNA *brna) RNA_def_property_float_funcs(prop, "rna_Meta_texspace_size_get", "rna_Meta_texspace_size_set", NULL); RNA_def_property_update(prop, 0, "rna_MetaBall_update_data"); - /* not supported yet + /* not supported yet */ +#if 0 prop= RNA_def_property(srna, "texspace_rot", PROP_FLOAT, PROP_EULER); RNA_def_property_float(prop, NULL, "rot"); RNA_def_property_ui_text(prop, "Texture Space Rotation", "Texture space rotation"); RNA_def_property_editable_func(prop, "rna_Meta_texspace_editable"); RNA_def_property_update(prop, 0, "rna_MetaBall_update_data"); - */ +#endif /* materials */ prop = RNA_def_property(srna, "materials", PROP_COLLECTION, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index f5bded42a1c..a101bcaec12 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -1711,14 +1711,14 @@ static void def_cmp_image(StructRNA *srna) { PropertyRNA *prop; - /* - static EnumPropertyItem type_items[] = { +#if 0 + static EnumPropertyItem type_items[] = { {IMA_SRC_FILE, "IMAGE", 0, "Image", ""}, {IMA_SRC_MOVIE, "MOVIE", "Movie", ""}, {IMA_SRC_SEQUENCE, "SEQUENCE", "Sequence", ""}, {IMA_SRC_GENERATED, "GENERATED", "Generated", ""}, {0, NULL, 0, NULL, NULL}}; - */ +#endif prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "id"); @@ -2873,13 +2873,14 @@ static void def_tex_image(StructRNA *srna) RNA_def_property_ui_text(prop, "Image", ""); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); - /* is this supposed to be exposed? not sure.. + /* is this supposed to be exposed? not sure.. */ +#if 0 prop = RNA_def_property(srna, "settings", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "storage"); RNA_def_property_struct_type(prop, "ImageUser"); RNA_def_property_ui_text(prop, "Settings", ""); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); - */ +#endif } static void def_tex_bricks(StructRNA *srna) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 410756ff5ea..d2eef1cdd43 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1780,7 +1780,7 @@ static void rna_def_unified_paint_settings(BlenderRNA *brna) "Instead of per-brush strength, the strength is shared across brushes"); /* unified paint settings that override the equivalent settings - from the active brush */ + * from the active brush */ prop = RNA_def_property(srna, "size", PROP_INT, PROP_DISTANCE); RNA_def_property_int_funcs(prop, NULL, "rna_UnifiedPaintSettings_size_set", NULL); RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS*10); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index 26dfe3c9a4f..fab80997d08 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -1237,8 +1237,8 @@ static void rna_def_texture_image(BlenderRNA *brna) #if 0 /* XXX: did this as an array, but needs better descriptions than "1 2 3 4" - perhaps a new subtype could be added? - --I actually used single values for this, maybe change later with a RNA_Rect thing? */ + * perhaps a new subtype could be added? + * --I actually used single values for this, maybe change later with a RNA_Rect thing? */ prop = RNA_def_property(srna, "crop_rectangle", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "cropxmin"); RNA_def_property_array(prop, 4); diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c index 8d331670135..c3a46c39643 100644 --- a/source/blender/makesrna/intern/rna_tracking.c +++ b/source/blender/makesrna/intern/rna_tracking.c @@ -168,8 +168,8 @@ void rna_trackingTrack_name_set(PointerRNA *ptr, const char *value) BLI_strncpy(track->name, value, sizeof(track->name)); /* TODO: it's a bit difficult to find list track came from knowing just - movie clip ID and MovieTracking structure, so keep this naive - search for a while */ + * movie clip ID and MovieTracking structure, so keep this naive + * search for a while */ if (BLI_findindex(tracksbase, track) < 0) { MovieTrackingObject *object = tracking->objects.first; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index e65f59144af..2b62b459b6e 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -482,14 +482,15 @@ static void rna_def_userdef_theme_ui_style(BlenderRNA *brna) RNA_def_property_struct_type(prop, "ThemeFontStyle"); RNA_def_property_ui_text(prop, "Panel Style", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); -/* (not used yet) + /* (not used yet) */ +#if 0 prop= RNA_def_property(srna, "group_label", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); RNA_def_property_pointer_sdna(prop, NULL, "grouplabel"); RNA_def_property_struct_type(prop, "ThemeFontStyle"); RNA_def_property_ui_text(prop, "Group Label Font", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); -*/ +#endif prop = RNA_def_property(srna, "widget_label", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); RNA_def_property_pointer_sdna(prop, NULL, "widgetlabel"); diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index b2a25086af9..1fe4f92e124 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -425,7 +425,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, int first_geom_bytes = sizeof(BMVert*) * geom_slot->len; /* make a copy of the initial geometry ordering so the - last duplicate can be merged into it */ + * last duplicate can be merged into it */ first_geom = MEM_mallocN(first_geom_bytes, "first_geom"); memcpy(first_geom, geom_slot->data.buf, first_geom_bytes); } @@ -464,7 +464,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, } /* already copied earlier, but after executation more slot - memory may be allocated */ + * memory may be allocated */ if (j == 0) first_dupe_op = dupe_op; @@ -526,7 +526,7 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, /* Update normals in case offset object has rotation. */ /* BMESH_TODO: check if normal recalc needed under any other - conditions? */ + * conditions? */ CDDM_calc_normals(result); } diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c index d2ec5ee032b..362ed59a38e 100644 --- a/source/blender/nodes/intern/node_common.c +++ b/source/blender/nodes/intern/node_common.c @@ -138,7 +138,7 @@ bNode *node_group_make_from_selected(bNodeTree *ntree) if (totnode==0) return NULL; /* check if all connections are OK, no unselected node has both - inputs and outputs to a selection */ + * inputs and outputs to a selection */ for (link= ntree->links.first; link; link= link->next) { if (link->fromnode && link->tonode && link->fromnode->flag & NODE_SELECT) link->tonode->done |= 1; diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 074f03654bc..d638a3edf30 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -99,8 +99,8 @@ static double bpy_timer_run_tot; /* accumulate python runs */ void bpy_context_update(bContext *C) { /* don't do this from a non-main (e.g. render) thread, it can cause a race - condition on C->data.recursion. ideal solution would be to disable - context entirely from non-main threads, but that's more complicated */ + * condition on C->data.recursion. ideal solution would be to disable + * context entirely from non-main threads, but that's more complicated */ if (!BLI_thread_is_main()) return; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index f7f1efd63dc..ba8fd40db61 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4061,7 +4061,7 @@ static void set_phong_threshold(ObjectRen *obr) /* Added check for 'pointy' situations, only dotproducts of 0.9 and larger * are taken into account. This threshold is meant to work on smooth geometry, not - / for extreme cases (ton) */ + * for extreme cases (ton) */ for (i=0; itotvlak; i++) { vlr= RE_findOrAddVlak(obr, i); @@ -4304,8 +4304,8 @@ static void finalize_render_object(Render *re, ObjectRen *obr, int timeoffset) if (obr->totvert || obr->totvlak || obr->tothalo || obr->totstrand) { /* the exception below is because displace code now is in init_render_mesh call, - I will look at means to have autosmooth enabled for all object types - and have it as general postprocess, like displace */ + * I will look at means to have autosmooth enabled for all object types + * and have it as general postprocess, like displace */ if (ob->type!=OB_MESH && test_for_displace(re, ob)) do_displacement(re, obr, NULL, NULL); @@ -4790,8 +4790,8 @@ static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, in if (enable) { /* this is to make sure we get render level duplis in groups: - * the derivedmesh must be created before init_render_mesh, - * since object_duplilist does dupliparticles before that */ + * the derivedmesh must be created before init_render_mesh, + * since object_duplilist does dupliparticles before that */ dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); dm->release(dm); @@ -4866,7 +4866,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp * empty in a dupli group. We could scan all render material/lamp/world * mtex's for mapto objects but its easier just to set the * 'imat' / 'imat_ren' on all and unlikely to be a performance hit - * See bug: [#28744] - campbell */ + * See bug: [#28744] - campbell */ for (ob= re->main->object.first; ob; ob= ob->id.next) { /* imat objects has to be done here, since displace can have texture using Object map-input */ mult_m4_m4m4(mat, re->viewmat, ob->obmat); @@ -5460,8 +5460,8 @@ static int load_fluidsimspeedvectors(Render *re, ObjectInstanceRen *obi, float * /* (bad) HACK calculate average velocity */ /* better solution would be fixing getVelocityAt() in intern/elbeem/intern/solver_util.cpp - so that also small drops/little water volumes return a velocity != 0. - But I had no luck in fixing that function - DG */ + * so that also small drops/little water volumes return a velocity != 0. + * But I had no luck in fixing that function - DG */ for (a=0; atotvert; a++) { for (j=0;j<3;j++) avgvel[j] += velarray[a].vel[j]; diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 247eadbb698..48002029e56 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -61,7 +61,7 @@ #include "wm_event_types.h" /******************************* Keymap Item ********************************** -* Item in a keymap, that maps from an event to an operator or modal map item */ + * Item in a keymap, that maps from an event to an operator or modal map item */ static wmKeyMapItem *wm_keymap_item_copy(wmKeyMapItem *kmi) { diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 70feccad94a..6f140b5c8b6 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -952,7 +952,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN | UI_BLOCK_RET_1 | UI_BLOCK_MOVEMOUSE_QUIT); /* if register is not enabled, the operator gets freed on OPERATOR_FINISHED - * ui_apply_but_funcs_after calls ED_undo_operator_repeate_cb and crashes */ + * ui_apply_but_funcs_after calls ED_undo_operator_repeate_cb and crashes */ assert(op->type->flag & OPTYPE_REGISTER); uiBlockSetHandleFunc(block, ED_undo_operator_repeat_cb_evt, arg_op); From ff06260ea1db70cd8f6e0247d9105bf1b12f891f Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Sun, 22 Apr 2012 14:33:40 +0000 Subject: [PATCH 026/158] Solve restriction of MinGW that users have to turn ffmpeg on for cmake. --- CMakeLists.txt | 5 ----- build_files/cmake/macros.cmake | 9 +++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 003176e7b96..a0935917c8a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -370,11 +370,6 @@ if(MINGW) "because it is currently unsupported, remove this " "line if youre a developer who wants to add support.") endif() - - if((NOT WITH_CODEC_FFMPEG) AND (WITH_CYCLES OR WITH_IMAGE_OPENEXR OR WITH_IMAGE_TIFF)) - message(FATAL_ERROR "MINGW has a problem with: WITH_CYCLES/WITH_IMAGE_OPENEXR/WITH_IMAGE_TIFF " - "when WITH_CODEC_FFMPEG is disabled, enable FFMPEG or disable CYCLES/EXR/TIFF.") - endif() endif() TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 406f2537dce..eeefcf730c8 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -212,11 +212,9 @@ macro(setup_liblinks target_link_libraries(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} - ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} - ${FREETYPE_LIBRARY} - ${PLATFORM_LINKLIBS}) + ${FREETYPE_LIBRARY}) # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs @@ -271,6 +269,7 @@ macro(setup_liblinks if(WITH_BOOST) target_link_libraries(${target} ${BOOST_LIBRARIES}) endif() + target_link_libraries(${target} ${JPEG_LIBRARIES}) if(WITH_IMAGE_OPENEXR) if(WIN32 AND NOT UNIX AND NOT CMAKE_COMPILER_IS_GNUCC) file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d") @@ -328,6 +327,8 @@ macro(setup_liblinks if(WIN32 AND NOT UNIX) target_link_libraries(${target} ${PTHREADS_LIBRARIES}) endif() + + target_link_libraries(${target} ${PLATFORM_LINKLIBS}) endmacro() macro(TEST_SSE_SUPPORT @@ -677,4 +678,4 @@ macro(set_lib_path endif() -endmacro() \ No newline at end of file +endmacro() From a164aa1ab6c23e068bb4c136609fc09a1347f990 Mon Sep 17 00:00:00 2001 From: Daniel Genrich Date: Sun, 22 Apr 2012 17:31:39 +0000 Subject: [PATCH 027/158] Bugfix [#30298] Fluid-Sytem does not work! (Part 2, Part 1 fixed by Brecht) Canceling fluid simulation did not work when speed was zero. --- intern/elbeem/intern/ntl_world.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/intern/elbeem/intern/ntl_world.cpp b/intern/elbeem/intern/ntl_world.cpp index 42ee94b2cf5..3b649c9f5b9 100644 --- a/intern/elbeem/intern/ntl_world.cpp +++ b/intern/elbeem/intern/ntl_world.cpp @@ -400,8 +400,8 @@ int ntlWorld::advanceSims(int framenum) bool done = false; bool allPanic = true; - // stop/quit, dont display/render - if(getElbeemState()==SIMWORLD_STOP) { + // stop/quit (abort), dont display/render + if(!isSimworldOk()) { return 1; } @@ -411,6 +411,9 @@ int ntlWorld::advanceSims(int framenum) // time stopped? nothing else to do... if( (*mpSims)[mFirstSim]->getFrameTime(framenum) <= 0.0 ){ done=true; allPanic=false; + + /* DG: Need to check for user cancel here (fix for [#30298]) */ + (*mpSims)[mFirstSim]->checkCallerStatus(FLUIDSIM_CBSTATUS_STEP, 0); } int gstate = 0; From 1642e2888c296d71b2facd1a607f24a5992bb164 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 22 Apr 2012 23:51:50 +0000 Subject: [PATCH 028/158] rename Mesh.uv_loop_layers --> uv_layers add filtering for document generator to support --partial bpy.types.SomeType --- doc/python_api/rst/include__bmesh.rst | 13 ++-- doc/python_api/rst/info_gotcha.rst | 2 + doc/python_api/sphinx_doc_gen.py | 21 +++++-- release/scripts/startup/bl_operators/mesh.py | 2 +- .../scripts/startup/bl_operators/object.py | 6 +- .../bl_operators/uvcalc_follow_active.py | 2 +- .../startup/bl_operators/uvcalc_lightmap.py | 4 +- .../bl_operators/uvcalc_smart_project.py | 2 +- source/blender/makesrna/intern/rna_mesh.c | 62 +++++++++---------- source/tests/bl_mesh_modifiers.py | 2 +- 10 files changed, 64 insertions(+), 52 deletions(-) diff --git a/doc/python_api/rst/include__bmesh.rst b/doc/python_api/rst/include__bmesh.rst index 24f113e7b50..212ab4e4708 100644 --- a/doc/python_api/rst/include__bmesh.rst +++ b/doc/python_api/rst/include__bmesh.rst @@ -32,12 +32,11 @@ For an overview of BMesh data types and how they reference each other see: .. warning:: - TODO Items Are + TODO items are... * add access to BMesh **walkers** - * add a way to re-tessellate an editmode bmesh. - * add deform vert custom-data access. - + * add api for calling BMesh operators (unrelated to bpy.ops) + * add custom-data manipulation functions add/remove/rename. Example Script -------------- @@ -110,8 +109,8 @@ Here are some examples ... shape_lay = bm.verts.layers.shape["Key.001"] for vert in bm.verts: - shape = vert[shape_lay] - print("Vert Shape: %f, %f, %f" % (shape.x, shape.y, shape.z)) + shape = vert[shape_lay] + print("Vert Shape: %f, %f, %f" % (shape.x, shape.y, shape.z)) .. code-block:: python @@ -125,7 +124,7 @@ Here are some examples ... for vert in bm.verts: dvert = vert[dvert_lay] - + if group_index in dvert: print("Weight %f" % dvert[group_index]) else: diff --git a/doc/python_api/rst/info_gotcha.rst b/doc/python_api/rst/info_gotcha.rst index 25ef5175976..eb312799b41 100644 --- a/doc/python_api/rst/info_gotcha.rst +++ b/doc/python_api/rst/info_gotcha.rst @@ -132,6 +132,8 @@ write useful tools in python which are also fast to execute while in edit-mode. For the time being this limitation just has to be worked around but we're aware its frustrating needs to be addressed. +.. _info_gotcha_mesh_faces: + NGons and Tessellation Faces ============================ diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 54a3868c0d7..bfef94b35d7 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -230,10 +230,10 @@ if not ARGS.partial: else: # can manually edit this too: - FILTER_BPY_OPS = ("import.scene", ) # allow - FILTER_BPY_TYPES = ("bpy_struct", "Operator", "ID") # allow + #FILTER_BPY_OPS = ("import.scene", ) # allow + #FILTER_BPY_TYPES = ("bpy_struct", "Operator", "ID") # allow EXCLUDE_INFO_DOCS = True - EXCLUDE_MODULES = ( + EXCLUDE_MODULES = [ "aud", "bge", "bge.constraints", @@ -261,7 +261,7 @@ else: "mathutils", "mathutils.geometry", "mathutils.noise", - ) + ] # ------ # Filter @@ -269,7 +269,18 @@ else: # TODO, support bpy.ops and bpy.types filtering import fnmatch m = None - EXCLUDE_MODULES = tuple([m for m in EXCLUDE_MODULES if not fnmatch.fnmatchcase(m, ARGS.partial)]) + EXCLUDE_MODULES = [m for m in EXCLUDE_MODULES if not fnmatch.fnmatchcase(m, ARGS.partial)] + + # special support for bpy.types.XXX + FILTER_BPY_OPS = tuple([m[8:] for m in ARGS.partial.split(":") if m.startswith("bpy.ops.")]) + if FILTER_BPY_OPS: + EXCLUDE_MODULES.remove("bpy.ops") + + FILTER_BPY_TYPES = tuple([m[10:] for m in ARGS.partial.split(":") if m.startswith("bpy.types.")]) + if FILTER_BPY_TYPES: + EXCLUDE_MODULES.remove("bpy.types") + + print(FILTER_BPY_TYPES) EXCLUDE_INFO_DOCS = (not fnmatch.fnmatchcase("info", ARGS.partial)) diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py index a54de25dbc7..4ed43a68e48 100644 --- a/release/scripts/startup/bl_operators/mesh.py +++ b/release/scripts/startup/bl_operators/mesh.py @@ -79,7 +79,7 @@ class MeshMirrorUV(Operator): polys = mesh.polygons loops = mesh.loops verts = mesh.vertices - uv_loops = mesh.uv_loop_layers.active.data + uv_loops = mesh.uv_layers.active.data nbr_polys = len(polys) mirror_pm = {} diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index 4ade55c0af6..8268d7a9514 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -489,7 +489,7 @@ class JoinUVs(Operator): # seems to be the fastest way to create an array uv_array = array.array('f', [0.0] * 2) * nbr_loops - mesh.uv_loop_layers.active.data.foreach_get("uv", uv_array) + mesh.uv_layers.active.data.foreach_get("uv", uv_array) objects = context.selected_editable_objects[:] @@ -516,10 +516,10 @@ class JoinUVs(Operator): ), ) else: - uv_other = mesh_other.uv_loop_layers.active + uv_other = mesh_other.uv_layers.active if not uv_other: mesh_other.uv_textures.new() - uv_other = mesh_other.uv_loop_layers.active + uv_other = mesh_other.uv_layers.active if not uv_other: self.report({'ERROR'}, "Could not add " "a new UV map tp object " diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py index 99ae5a3e436..d6f657683a5 100644 --- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py +++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py @@ -59,7 +59,7 @@ def extend(obj, operator, EXTEND_MODE): vidx_source = face_source.vertices vidx_target = face_target.vertices - uv_layer = me.uv_loop_layers.active.data + uv_layer = me.uv_layers.active.data uvs_source = [uv_layer[i].uv for i in face_source.loop_indices] uvs_target = [uv_layer[i].uv for i in face_target.loop_indices] diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index 417ae89218c..3bd0d6fa4cc 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -88,7 +88,7 @@ class prettyface(object): self.children = [] else: # blender face - uv_layer = data.id_data.uv_loop_layers.active.data + uv_layer = data.id_data.uv_layers.active.data self.uv = [uv_layer[i].uv for i in data.loop_indices] # cos = [v.co for v in data] @@ -158,7 +158,7 @@ class prettyface(object): I = [i for a, i in angles_co] #~ fuv = f.uv - uv_layer = f.id_data.uv_loop_layers.active.data + uv_layer = f.id_data.uv_layers.active.data fuv = [uv_layer[i].uv for i in f.loops] # XXX25 if self.rot: diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index bb3086f711b..1e18825a155 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -889,7 +889,7 @@ def main(context, if not me.uv_textures: # Mesh has no UV Coords, don't bother. me.uv_textures.new() - uv_layer = me.uv_loop_layers.active.data + uv_layer = me.uv_layers.active.data me_verts = list(me.vertices) if USER_ONLY_SELECTED_FACES: diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 78f62194735..d5e79ab971c 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -509,19 +509,19 @@ static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, CustomData *data, int CustomData_set_layer_clone_index(data, type, n); } -/* uv_loop_layers */ +/* uv_layers */ -DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_loop_layer, ldata, CD_MLOOPUV) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, active, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, clone, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, stencil, MeshUVLoopLayer) -DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_loop_layer, ldata, CD_MLOOPUV, render, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION(uv_layer, ldata, CD_MLOOPUV) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, active, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, clone, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, stencil, MeshUVLoopLayer) +DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, render, MeshUVLoopLayer) /* MeshUVLoopLayer */ static char *rna_MeshUVLoopLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("uv_loop_layer[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("uv_layers[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static void rna_MeshUVLoopLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) @@ -1089,7 +1089,7 @@ static char *rna_FaceCustomData_data_path(PointerRNA *ptr, char *collection, int static char *rna_MeshUVLoop_path(PointerRNA *ptr) { - return rna_LoopCustomData_data_path(ptr, "uv_loop_layers", CD_MLOOPUV); + return rna_LoopCustomData_data_path(ptr, "uv_layers", CD_MLOOPUV); } static char *rna_MeshTextureFace_path(PointerRNA *ptr) @@ -2291,7 +2291,7 @@ static void rna_def_loop_colors(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); } -static void rna_def_uv_loop_layers(BlenderRNA *brna, PropertyRNA *cprop) +static void rna_def_uv_layers(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; PropertyRNA *prop; @@ -2306,15 +2306,15 @@ static void rna_def_uv_loop_layers(BlenderRNA *brna, PropertyRNA *cprop) prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_active_get", - "rna_Mesh_uv_loop_layer_active_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_active_get", + "rna_Mesh_uv_layer_active_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active UV loop layer", "Active UV loop layer"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); prop = RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_active_index_get", - "rna_Mesh_uv_loop_layer_active_index_set", "rna_Mesh_uv_loop_layer_index_range"); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_active_index_get", + "rna_Mesh_uv_layer_active_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Active UV loop layer Index", "Active UV loop layer index"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); } @@ -2385,7 +2385,7 @@ static void rna_def_polygon_string_layers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_return(func, parm); } -/* mesh.uv_layers */ +/* mesh.tessface_uv_layers */ static void rna_def_tessface_uv_textures(BlenderRNA *brna, PropertyRNA *cprop) { StructRNA *srna; @@ -2446,7 +2446,7 @@ static void rna_def_uv_textures(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_function_return(func, parm); /* - func = RNA_def_function(srna, "remove", "rna_Mesh_uv_layers_remove"); + func = RNA_def_function(srna, "remove", "rna_Mesh_uv_texture_layers_remove"); RNA_def_function_ui_description(func, "Remove a vertex color layer"); RNA_def_function_flag(func, FUNC_USE_REPORTS); parm = RNA_def_pointer(func, "layer", "Layer", "", "The layer to remove"); @@ -2519,36 +2519,36 @@ static void rna_def_mesh(BlenderRNA *brna) "Use another mesh for texture indices (vertex indices must be aligned)"); /* UV loop layers */ - prop = RNA_def_property(srna, "uv_loop_layers", PROP_COLLECTION, PROP_NONE); + prop = RNA_def_property(srna, "uv_layers", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "ldata.layers", "ldata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_loop_layers_begin", NULL, NULL, NULL, - "rna_Mesh_uv_loop_layers_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_layers_begin", NULL, NULL, NULL, + "rna_Mesh_uv_layers_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); RNA_def_property_ui_text(prop, "UV Loop Layers", "All UV loop layers"); - rna_def_uv_loop_layers(brna, prop); + rna_def_uv_layers(brna, prop); - prop = RNA_def_property(srna, "uv_loop_layer_clone", PROP_POINTER, PROP_UNSIGNED); + prop = RNA_def_property(srna, "uv_layer_clone", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_clone_get", - "rna_Mesh_uv_loop_layer_clone_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_clone_get", + "rna_Mesh_uv_layer_clone_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Clone UV loop layer", "UV loop layer to be used as cloning source"); - prop = RNA_def_property(srna, "uv_loop_layer_clone_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_clone_index_get", - "rna_Mesh_uv_loop_layer_clone_index_set", "rna_Mesh_uv_loop_layer_index_range"); + prop = RNA_def_property(srna, "uv_layer_clone_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_clone_index_get", + "rna_Mesh_uv_layer_clone_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Clone UV loop layer Index", "Clone UV loop layer index"); - prop = RNA_def_property(srna, "uv_loop_layer_stencil", PROP_POINTER, PROP_UNSIGNED); + prop = RNA_def_property(srna, "uv_layer_stencil", PROP_POINTER, PROP_UNSIGNED); RNA_def_property_struct_type(prop, "MeshUVLoopLayer"); - RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_loop_layer_stencil_get", - "rna_Mesh_uv_loop_layer_stencil_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_uv_layer_stencil_get", + "rna_Mesh_uv_layer_stencil_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Mask UV loop layer", "UV loop layer to mask the painted area"); - prop = RNA_def_property(srna, "uv_loop_layer_stencil_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Mesh_uv_loop_layer_stencil_index_get", - "rna_Mesh_uv_loop_layer_stencil_index_set", "rna_Mesh_uv_loop_layer_index_range"); + prop = RNA_def_property(srna, "uv_layer_stencil_index", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_funcs(prop, "rna_Mesh_uv_layer_stencil_index_get", + "rna_Mesh_uv_layer_stencil_index_set", "rna_Mesh_uv_layer_index_range"); RNA_def_property_ui_text(prop, "Mask UV loop layer Index", "Mask UV loop layer index"); /* Tessellated face UV maps - used by renderers */ diff --git a/source/tests/bl_mesh_modifiers.py b/source/tests/bl_mesh_modifiers.py index 0ab2213c0e1..390679800f6 100644 --- a/source/tests/bl_mesh_modifiers.py +++ b/source/tests/bl_mesh_modifiers.py @@ -260,7 +260,7 @@ def mesh_uv_add(obj): if IS_BMESH: # XXX, odd that we need to do this. until uvs and texface # are separated we will need to keep it - uv_loops = obj.data.uv_loop_layers[-1] + uv_loops = obj.data.uv_layers[-1] uv_list = uv_loops.data[:] for poly in obj.data.polygons: poly_uvs = mesh_bmesh_poly_elems(poly, uv_list) From a1b9608ddd555cc3c89c72a5cacd4042e91781f0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 00:20:32 +0000 Subject: [PATCH 029/158] add mesh example with docs explaining polygon / loop relationship --- doc/python_api/examples/bpy.types.Mesh.py | 41 +++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/python_api/examples/bpy.types.Mesh.py diff --git a/doc/python_api/examples/bpy.types.Mesh.py b/doc/python_api/examples/bpy.types.Mesh.py new file mode 100644 index 00000000000..69edf2cba50 --- /dev/null +++ b/doc/python_api/examples/bpy.types.Mesh.py @@ -0,0 +1,41 @@ +""" +Mesh Data ++++++++++ + +The mesh data is accessed in object mode and intended for compact storage, +for more flexible mesh editing from python see :mod:`bmesh`. + +Blender stores 4 main arrays to define mesh geometry. + +* :class:`Mesh.vertices` (3 points in space) +* :class:`Mesh.edges` (reference 2 vertices) +* :class:`Mesh.loops` (reference a single vertex and edge) +* :class:`Mesh.polygons`: (reference a range of loops) + + +Each polygon reference a slice in the loop array, this way, polygons do not store vertices or corner data such as UV's directly, +only a reference to loops that the polygon uses. + +:class:`Mesh.loops`, :class:`Mesh.uv_layers` :class:`Mesh.vertex_colors` are all aligned so the same polygon loop +indicies can be used to find the UV's and vertex colors as with as the vertices. + +To compare mesh API options see: :ref:`NGons and Tessellation Faces ` + + +This example script prints the vertices and UV's for each polygon, assumes the active object is a mesh with UVs. +""" + +import bpy + +me = bpy.context.object.data +uv_layer = me.uv.layers.active.data + +for poly in me.polygons: + print("Polygon index: %d, length: %d" % (poly.index, poly.loop_total)) + + # range is used here to show how the polygons reference loops, + # for convenience 'poly.loop_indices' can be used instead. + for loop_index in range(poly.loop_start, poly.loop_start + poly.loop_total): + print(" Vertex: %d" % me.loops[loop_index].vertex_index) + print(" UV: %r" % uv_layer[loop_index].uv) + From e26ef899c303919098faa60b1a5baaf6e78276f6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 00:58:17 +0000 Subject: [PATCH 030/158] clear the FGON edge flag when updating old meshes to polygons. (we may wan't to reuse the flag later) --- source/blender/blenkernel/intern/mesh.c | 9 ++++++--- source/blender/makesdna/DNA_meshdata_types.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index ea2e634ed64..7280af18493 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -2061,8 +2061,11 @@ void BKE_mesh_convert_mfaces_to_mpolys(Mesh *mesh) /*build edge hash*/ me = mesh->medge; - for (i=0; itotedge; i++, me++) { + for (i = 0; i < mesh->totedge; i++, me++) { BLI_edgehash_insert(eh, me->v1, me->v2, SET_INT_IN_POINTER(i)); + + /* unrelated but avoid having the FGON flag enabled, so we can reuse it later for something else */ + me->flag &= ~ME_FGON; } j = 0; /*current loop index*/ @@ -2077,7 +2080,7 @@ void BKE_mesh_convert_mfaces_to_mpolys(Mesh *mesh) mp->mat_nr = mf->mat_nr; mp->flag = mf->flag; - #define ML(v1, v2) {ml->v = mf->v1; ml->e = GET_INT_FROM_POINTER(BLI_edgehash_lookup(eh, mf->v1, mf->v2)); ml++; j++;} +# define ML(v1, v2) {ml->v = mf->v1; ml->e = GET_INT_FROM_POINTER(BLI_edgehash_lookup(eh, mf->v1, mf->v2)); ml++; j++;} ML(v1, v2); ML(v2, v3); @@ -2089,7 +2092,7 @@ void BKE_mesh_convert_mfaces_to_mpolys(Mesh *mesh) ML(v3, v1); } - #undef ML +# undef ML bm_corners_to_loops(mesh, i, mp->loopstart, numTex, numCol); } diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index 9891469c29b..89ed3ba055f 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -257,7 +257,7 @@ typedef struct MRecast { /* medge->flag (1=SELECT)*/ #define ME_EDGEDRAW (1<<1) #define ME_SEAM (1<<2) -/* #define ME_FGON (1<<3) */ /* no longer used (now we have ngons) */ +#define ME_FGON (1<<3) /* no longer used (now we have ngons), only defined so we can clear it */ /* reserve 16 for ME_HIDE */ #define ME_EDGERENDER (1<<5) #define ME_LOOSEEDGE (1<<7) From c498c0eb4283473e719c5696843941051f9deed3 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 23 Apr 2012 01:11:42 +0000 Subject: [PATCH 031/158] Update build files to use the new lib locations for MinGW. For builders: you will need to checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/mingw32/ to build with MinGW past this commit. --- CMakeLists.txt | 59 ++++++++++--------- .../scons/config/win32-mingw-config.py | 20 +++---- 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0935917c8a..1595e78ea4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -735,14 +735,18 @@ elseif(WIN32) # this file is included anyway when building under Windows with cl.exe # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows) + if(CMAKE_COMPILER_IS_GNUCC) + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32) + else() + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows) - # Setup 64bit and 64bit windows systems - if(CMAKE_CL_64) - message("64 bit compiler detected.") - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64) + # Setup 64bit and 64bit windows systems + if(CMAKE_CL_64) + message("64 bit compiler detected.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64) + endif() endif() - + add_definitions(-DWIN32) if(WITH_INTERNATIONAL) @@ -990,25 +994,26 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") - else() - # keep GCC specific stuff here - if(CMAKE_COMPILER_IS_GNUCC) - set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi") - set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing") + elseif(CMAKE_COMPILER_IS_GNUCC) + # keep GCC specific stuff here + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32) + + set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi") + set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing") + + add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) - add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) - endif() add_definitions(-DFREE_WINDOWS) if(WITH_INTERNATIONAL) - set(GETTEXT ${LIBDIR}/gcc/gettext) + set(GETTEXT ${LIBDIR}/gettext) set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include) set(GETTEXT_LIBPATH ${GETTEXT}/lib) set(GETTEXT_LIBRARIES intl) endif() - set(PNG "${LIBDIR}/gcc/png") + set(PNG "${LIBDIR}/png") set(PNG_INCLUDE_DIR "${PNG}/include") set(PNG_LIBPATH ${PNG}/lib) # not cmake defined @@ -1025,26 +1030,26 @@ elseif(WIN32) set(PTHREADS_LIBPATH ${PTHREADS}/lib) set(PTHREADS_LIBRARIES pthreadGC2) - set(FREETYPE ${LIBDIR}/gcc/freetype) + set(FREETYPE ${LIBDIR}/freetype) set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2) set(FREETYPE_LIBPATH ${FREETYPE}/lib) set(FREETYPE_LIBRARY freetype) if(WITH_FFTW3) - set(FFTW3 ${LIBDIR}/gcc/fftw3) + set(FFTW3 ${LIBDIR}/fftw3) set(FFTW3_LIBRARIES fftw3) set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) set(FFTW3_LIBPATH ${FFTW3}/lib) endif() if(WITH_OPENCOLLADA) - set(OPENCOLLADA ${LIBDIR}/gcc/opencollada) + set(OPENCOLLADA ${LIBDIR}/opencollada) set(OPENCOLLADA_INCLUDE_DIRS - ${LIBDIR}/gcc/opencollada/include/COLLADAStreamWriter/include - ${LIBDIR}/gcc/opencollada/include/COLLADABaseUtils/include - ${LIBDIR}/gcc/opencollada/include/COLLADAFramework/include - ${LIBDIR}/gcc/opencollada/include/COLLADASaxFrameworkLoader/include - ${LIBDIR}/gcc/opencollada/include/GeneratedSaxParser/include + ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include + ${LIBDIR}/opencollada/include/COLLADABaseUtils/include + ${LIBDIR}/opencollada/include/COLLADAFramework/include + ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include + ${LIBDIR}/opencollada/include/GeneratedSaxParser/include ) set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib) set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa) @@ -1059,14 +1064,14 @@ elseif(WIN32) endif() if(WITH_IMAGE_OPENEXR) - set(OPENEXR ${LIBDIR}/gcc/openexr) + set(OPENEXR ${LIBDIR}/openexr) set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR) set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex) set(OPENEXR_LIBPATH ${OPENEXR}/lib) endif() if(WITH_IMAGE_TIFF) - set(TIFF ${LIBDIR}/gcc/tiff) + set(TIFF ${LIBDIR}/tiff) set(TIFF_LIBRARY tiff) set(TIFF_INCLUDE_DIR ${TIFF}/include) set(TIFF_LIBPATH ${TIFF}/lib) @@ -1103,12 +1108,12 @@ elseif(WIN32) boost_regex-${BOOST_POSTFIX} boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX} debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX} boost_regex-${BOOST_DEBUG_POSTFIX} boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX}) - set(BOOST_LIBPATH ${BOOST}/lib/gcc) + set(BOOST_LIBPATH ${BOOST}/lib) set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ") endif() if(WITH_OPENIMAGEIO) - set(OPENIMAGEIO ${LIBDIR}/gcc/openimageio) + set(OPENIMAGEIO ${LIBDIR}/openimageio) set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) set(OPENIMAGEIO_LIBRARIES OpenImageIO) set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib) diff --git a/build_files/scons/config/win32-mingw-config.py b/build_files/scons/config/win32-mingw-config.py index 855f643129a..57641555987 100644 --- a/build_files/scons/config/win32-mingw-config.py +++ b/build_files/scons/config/win32-mingw-config.py @@ -1,4 +1,4 @@ -LCGDIR = '#../lib/windows' +LCGDIR = '#../lib/mingw32' LIBDIR = "${LCGDIR}" BF_PYTHON = LIBDIR + '/python' @@ -48,7 +48,7 @@ BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib' WITH_BF_OPENEXR = True WITH_BF_STATICOPENEXR = False -BF_OPENEXR = LIBDIR + '/gcc/openexr' +BF_OPENEXR = LIBDIR + '/openexr' BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR' BF_OPENEXR_LIB = 'Half IlmImf Imath IlmThread Iex' BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' @@ -64,13 +64,13 @@ BF_JPEG_LIB = 'liblibjpeg' BF_JPEG_LIBPATH = '${BF_JPEG}/lib' WITH_BF_PNG = True -BF_PNG = LIBDIR + '/gcc/png' +BF_PNG = LIBDIR + '/png' BF_PNG_INC = '${BF_PNG}/include' BF_PNG_LIB = 'png' BF_PNG_LIBPATH = '${BF_PNG}/lib' WITH_BF_TIFF = True -BF_TIFF = LIBDIR + '/gcc/tiff' +BF_TIFF = LIBDIR + '/tiff' BF_TIFF_INC = '${BF_TIFF}/include' BF_TIFF_LIB = 'tiff' BF_TIFF_LIBPATH = '${BF_TIFF}/lib' @@ -83,7 +83,7 @@ BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' WITH_BF_INTERNATIONAL = True -BF_GETTEXT = LIBDIR + '/gcc/gettext' +BF_GETTEXT = LIBDIR + '/gettext' BF_GETTEXT_INC = '${BF_GETTEXT}/include' BF_GETTEXT_LIB = 'intl' BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' @@ -95,7 +95,7 @@ BF_OPENJPEG_INC = '${BF_OPENJPEG}' BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib' WITH_BF_FFTW3 = True -BF_FFTW3 = LIBDIR + '/gcc/fftw3' +BF_FFTW3 = LIBDIR + '/fftw3' BF_FFTW3_INC = '${BF_FFTW3}/include' BF_FFTW3_LIB = 'fftw3' BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib' @@ -112,7 +112,7 @@ BF_BULLET_LIB = 'extern_bullet' BF_WINTAB = LIBDIR + '/wintab' BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE' -BF_FREETYPE = LIBDIR + '/gcc/freetype' +BF_FREETYPE = LIBDIR + '/freetype' BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' BF_FREETYPE_LIB = 'freetype' BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' @@ -145,7 +145,7 @@ BF_COLLADA = '#source/blender/collada' BF_COLLADA_INC = '${BF_COLLADA}' BF_COLLADA_LIB = 'bf_collada' -BF_OPENCOLLADA = LIBDIR + '/gcc/opencollada' +BF_OPENCOLLADA = LIBDIR + '/opencollada' BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa' BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' @@ -154,7 +154,7 @@ BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' WITH_BF_CYCLES = True WITH_BF_OIIO = True -BF_OIIO = LIBDIR + '/gcc/openimageio' +BF_OIIO = LIBDIR + '/openimageio' BF_OIIO_INC = BF_OIIO + '/include' BF_OIIO_LIB = 'OpenImageIO' BF_OIIO_LIBPATH = BF_OIIO + '/lib' @@ -163,7 +163,7 @@ WITH_BF_BOOST = True BF_BOOST = LIBDIR + '/boost' BF_BOOST_INC = BF_BOOST + '/include' BF_BOOST_LIB = 'boost_date_time-mgw46-mt-s-1_47 boost_filesystem-mgw46-mt-s-1_47 boost_regex-mgw46-mt-s-1_47 boost_system-mgw46-mt-s-1_47 boost_thread-mgw46-mt-s-1_47' -BF_BOOST_LIBPATH = BF_BOOST + '/lib/gcc' +BF_BOOST_LIBPATH = BF_BOOST + '/lib' #Ray trace optimization WITH_BF_RAYOPTIMIZATION = True From 16ff7e40e66f93484695445b89090547de78d086 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 01:19:50 +0000 Subject: [PATCH 032/158] code cleanup: change C naming convention (so py and C api match), eg: C: BM_face_calc_area(f), Py: BMFace.calc_area() --- source/blender/bmesh/intern/bmesh_marking.c | 2 +- source/blender/bmesh/intern/bmesh_mesh.c | 12 +++++ source/blender/bmesh/intern/bmesh_mesh.h | 2 + source/blender/bmesh/intern/bmesh_mods.c | 6 +-- source/blender/bmesh/intern/bmesh_mods.h | 2 +- source/blender/bmesh/intern/bmesh_polygon.c | 46 +++++++++---------- source/blender/bmesh/intern/bmesh_polygon.h | 8 ++-- source/blender/bmesh/intern/bmesh_private.h | 2 +- source/blender/bmesh/intern/bmesh_queries.c | 40 ++++++---------- source/blender/bmesh/intern/bmesh_queries.h | 18 ++++---- source/blender/bmesh/operators/bmo_dissolve.c | 8 ++-- source/blender/bmesh/operators/bmo_inset.c | 10 ++-- source/blender/bmesh/operators/bmo_utils.c | 12 ++--- source/blender/bmesh/tools/BME_bevel.c | 8 ++-- source/blender/editors/mesh/editmesh_rip.c | 4 +- .../blender/editors/space_view3d/drawobject.c | 6 +-- .../editors/transform/transform_conversions.c | 2 +- source/blender/editors/uvedit/uvedit_draw.c | 4 +- source/blender/python/bmesh/bmesh_py_types.c | 25 +++++----- 19 files changed, 109 insertions(+), 108 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index b0a39326fe8..9200d7d2a98 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -579,7 +579,7 @@ void BM_editselection_center(float r_center[3], BMEditSelection *ese) } else if (ese->htype == BM_FACE) { BMFace *efa = (BMFace *)ese->ele; - BM_face_center_bounds_calc(efa, r_center); + BM_face_calc_center_bounds(efa, r_center); } } diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 0a5e3bab804..6c208b46244 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -584,6 +584,18 @@ void BM_mesh_elem_index_validate(BMesh *bm, const char *location, const char *fu } +/** + * Return the amount of element of type 'type' in a given bmesh. + */ +int BM_mesh_elem_count(BMesh *bm, const char htype) +{ + if (htype == BM_VERT) return bm->totvert; + else if (htype == BM_EDGE) return bm->totedge; + else if (htype == BM_FACE) return bm->totface; + + return 0; +} + /** * Remaps the vertices, edges and/or faces of the bmesh as indicated by vert/edge/face_idx arrays * (xxx_idx[org_index] = new_index). diff --git a/source/blender/bmesh/intern/bmesh_mesh.h b/source/blender/bmesh/intern/bmesh_mesh.h index 970db6339c3..0441f38b429 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.h +++ b/source/blender/bmesh/intern/bmesh_mesh.h @@ -43,6 +43,8 @@ void bmesh_edit_end(BMesh *bm, int flag); void BM_mesh_elem_index_ensure(BMesh *bm, const char hflag); void BM_mesh_elem_index_validate(BMesh *bm, const char *location, const char *func, const char *msg_a, const char *msg_b); +int BM_mesh_elem_count(BMesh *bm, const char htype); + void BM_mesh_remap(BMesh *bm, int *vert_idx, int *edge_idx, int *face_idx); BMVert *BM_vert_at_index(BMesh *bm, const int index); diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c index 21654097219..3474d4b3194 100644 --- a/source/blender/bmesh/intern/bmesh_mods.c +++ b/source/blender/bmesh/intern/bmesh_mods.c @@ -817,7 +817,7 @@ int BM_face_validate(BMesh *bm, BMFace *face, FILE *err) * * \note #BM_edge_rotate_check must have already run. */ -void BM_edge_rotate_calc(BMEdge *e, int ccw, +void BM_edge_calc_rotate(BMEdge *e, int ccw, BMLoop **r_l1, BMLoop **r_l2) { BMVert *v1, *v2; @@ -889,7 +889,7 @@ int BM_edge_rotate_check(BMEdge *e) * 2) does the newly formed edge cause a zero area corner (or close enough to be almost zero) * * \param l1,l2 are the loops of the proposed verts to rotate too and should - * be the result of calling #BM_edge_rotate_calc + * be the result of calling #BM_edge_calc_rotate */ int BM_edge_rotate_check_degenerate(BMEdge *e, BMLoop *l1, BMLoop *l2) { @@ -1016,7 +1016,7 @@ BMEdge *BM_edge_rotate(BMesh *bm, BMEdge *e, const short ccw, const short check_ return NULL; } - BM_edge_rotate_calc(e, ccw, &l1, &l2); + BM_edge_calc_rotate(e, ccw, &l1, &l2); /* the loops will be freed so assign verts */ v1 = l1->v; diff --git a/source/blender/bmesh/intern/bmesh_mods.h b/source/blender/bmesh/intern/bmesh_mods.h index ba6acac1a27..2cb599f75d3 100644 --- a/source/blender/bmesh/intern/bmesh_mods.h +++ b/source/blender/bmesh/intern/bmesh_mods.h @@ -59,7 +59,7 @@ BMVert *BM_edge_split_n(BMesh *bm, BMEdge *e, int numcuts); int BM_face_validate(BMesh *bm, BMFace *face, FILE *err); -void BM_edge_rotate_calc(BMEdge *e, int ccw, +void BM_edge_calc_rotate(BMEdge *e, int ccw, BMLoop **r_l1, BMLoop **r_l2); int BM_edge_rotate_check(BMEdge *e); int BM_edge_rotate_check_degenerate(BMEdge *e, diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index e7ee5cb605d..2e41d4b923c 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -75,7 +75,7 @@ static short testedgesidef(const float v1[2], const float v2[2], const float v3[ * polygon See Graphics Gems for * computing newell normal. */ -static void compute_poly_normal(float normal[3], float verts[][3], int nverts) +static void calc_poly_normal(float normal[3], float verts[][3], int nverts) { float const *v_prev = verts[nverts - 1]; float const *v_curr = verts[0]; @@ -95,9 +95,9 @@ static void compute_poly_normal(float normal[3], float verts[][3], int nverts) /** * \brief COMPUTE POLY NORMAL (BMFace) * - * Same as #compute_poly_normal but operates directly on a bmesh face. + * Same as #calc_poly_normal but operates directly on a bmesh face. */ -static void bm_face_compute_poly_normal(BMFace *f) +static void bm_face_calc_poly_normal(BMFace *f) { BMLoop *l_first = BM_FACE_FIRST_LOOP(f); BMLoop *l_iter = l_first; @@ -123,11 +123,11 @@ static void bm_face_compute_poly_normal(BMFace *f) /** * \brief COMPUTE POLY NORMAL (BMFace) * - * Same as #compute_poly_normal and #bm_face_compute_poly_normal + * Same as #calc_poly_normal and #bm_face_calc_poly_normal * but takes an array of vertex locations. */ -static void bm_face_compute_poly_normal_vertex_cos(BMFace *f, float n[3], - float const (*vertexCos)[3]) +static void bm_face_calc_poly_normal_vertex_cos(BMFace *f, float n[3], + float const (*vertexCos)[3]) { BMLoop *l_first = BM_FACE_FIRST_LOOP(f); BMLoop *l_iter = l_first; @@ -153,7 +153,7 @@ static void bm_face_compute_poly_normal_vertex_cos(BMFace *f, float n[3], /** * get the area of the face */ -float BM_face_area_calc(BMFace *f) +float BM_face_calc_area(BMFace *f) { BMLoop *l; BMIter iter; @@ -175,7 +175,7 @@ float BM_face_area_calc(BMFace *f) area = area_quad_v3(verts[0], verts[1], verts[2], verts[3]); } else { - compute_poly_normal(normal, verts, f->len); + calc_poly_normal(normal, verts, f->len); area = area_poly_v3(f->len, verts, normal); } @@ -187,7 +187,7 @@ float BM_face_area_calc(BMFace *f) /** * compute the perimeter of an ngon */ -float BM_face_perimeter_calc(BMFace *f) +float BM_face_calc_perimeter(BMFace *f) { BMLoop *l_iter, *l_first; float perimeter = 0.0f; @@ -203,7 +203,7 @@ float BM_face_perimeter_calc(BMFace *f) /** * computes center of face in 3d. uses center of bounding box. */ -void BM_face_center_bounds_calc(BMFace *f, float r_cent[3]) +void BM_face_calc_center_bounds(BMFace *f, float r_cent[3]) { BMLoop *l_iter; BMLoop *l_first; @@ -222,7 +222,7 @@ void BM_face_center_bounds_calc(BMFace *f, float r_cent[3]) /** * computes the center of a face, using the mean average */ -void BM_face_center_mean_calc(BMFace *f, float r_cent[3]) +void BM_face_calc_center_mean(BMFace *f, float r_cent[3]) { BMLoop *l_iter; BMLoop *l_first; @@ -245,7 +245,7 @@ void BM_face_center_mean_calc(BMFace *f, float r_cent[3]) * a plane defined by the average * of its edges cross products */ -void compute_poly_plane(float (*verts)[3], const int nverts) +void calc_poly_plane(float (*verts)[3], const int nverts) { float avgc[3], norm[3], mag, avgn[3]; @@ -432,7 +432,7 @@ void BM_face_normal_update(BMFace *f) } default: { - bm_face_compute_poly_normal(f); + bm_face_calc_poly_normal(f); break; } } @@ -474,7 +474,7 @@ void BM_face_normal_update_vcos(BMesh *bm, BMFace *f, float no[3], } default: { - bm_face_compute_poly_normal_vertex_cos(f, no, vertexCos); + bm_face_calc_poly_normal_vertex_cos(f, no, vertexCos); break; } } @@ -610,9 +610,9 @@ int BM_face_point_inside_test(BMFace *f, const float co[3]) return crosses % 2 != 0; } -static int goodline(float const (*projectverts)[3], BMFace *f, - int v1i, int v2i, int v3i, - int UNUSED(nvert)) +static int bm_face_goodline(float const (*projectverts)[3], BMFace *f, + int v1i, int v2i, int v3i, + int UNUSED(nvert)) { BMLoop *l_iter; BMLoop *l_first; @@ -697,9 +697,9 @@ static BMLoop *find_ear(BMFace *f, float (*verts)[3], const int nvert, const int if (BM_edge_exists(v1, v3)) { isear = FALSE; } - else if (!goodline((float const (*)[3])verts, f, - BM_elem_index_get(v1), BM_elem_index_get(v2), BM_elem_index_get(v3), - nvert)) + else if (!bm_face_goodline((float const (*)[3])verts, f, + BM_elem_index_get(v1), BM_elem_index_get(v2), BM_elem_index_get(v3), + nvert)) { isear = FALSE; } @@ -765,12 +765,12 @@ void BM_face_triangulate(BMesh *bm, BMFace *f, float (*projectverts)[3], ///bmesh_face_normal_update(bm, f, f->no, projectverts); - compute_poly_normal(f->no, projectverts, f->len); + calc_poly_normal(f->no, projectverts, f->len); poly_rotate_plane(f->no, projectverts, i); nvert = f->len; - //compute_poly_plane(projectverts, i); + //calc_poly_plane(projectverts, i); for (i = 0; i < nvert; i++) { projectverts[i][2] = 0.0f; } @@ -879,7 +879,7 @@ void BM_face_legal_splits(BMesh *bm, BMFace *f, BMLoop *(*loops)[2], int len) a++; } - compute_poly_normal(no, projverts, f->len); + calc_poly_normal(no, projverts, f->len); poly_rotate_plane(no, projverts, f->len); poly_rotate_plane(no, edgeverts, len * 2); diff --git a/source/blender/bmesh/intern/bmesh_polygon.h b/source/blender/bmesh/intern/bmesh_polygon.h index 117a47d34f2..e5777d3611b 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.h +++ b/source/blender/bmesh/intern/bmesh_polygon.h @@ -27,10 +27,10 @@ * \ingroup bmesh */ -float BM_face_area_calc(BMFace *f); -float BM_face_perimeter_calc(BMFace *f); -void BM_face_center_bounds_calc(BMFace *f, float center[3]); -void BM_face_center_mean_calc(BMFace *f, float center[3]); +float BM_face_calc_area(BMFace *f); +float BM_face_calc_perimeter(BMFace *f); +void BM_face_calc_center_bounds(BMFace *f, float center[3]); +void BM_face_calc_center_mean(BMFace *f, float center[3]); void BM_face_normal_update(BMFace *f); void BM_face_normal_update_vcos(BMesh *bm, BMFace *f, float no[3], diff --git a/source/blender/bmesh/intern/bmesh_private.h b/source/blender/bmesh/intern/bmesh_private.h index f963425e1bd..6297e20d9d2 100644 --- a/source/blender/bmesh/intern/bmesh_private.h +++ b/source/blender/bmesh/intern/bmesh_private.h @@ -65,7 +65,7 @@ int bmesh_disk_count(BMVert *v); #define BM_ELEM_API_FLAG_DISABLE(element, f) ((element)->oflags[0].pflag &= ~(f)) #define BM_ELEM_API_FLAG_TEST(element, f) ((element)->oflags[0].pflag & (f)) -void compute_poly_plane(float (*verts)[3], const int nverts); +void calc_poly_plane(float (*verts)[3], const int nverts); void poly_rotate_plane(const float normal[3], float (*verts)[3], const int nverts); /* include the rest of our private declarations */ diff --git a/source/blender/bmesh/intern/bmesh_queries.c b/source/blender/bmesh/intern/bmesh_queries.c index 37935f33521..3543fd952bb 100644 --- a/source/blender/bmesh/intern/bmesh_queries.c +++ b/source/blender/bmesh/intern/bmesh_queries.c @@ -41,18 +41,6 @@ #define BM_OVERLAP (1 << 13) -/** - * Return the amount of element of type 'type' in a given bmesh. - */ -int BM_mesh_elem_count(BMesh *bm, const char htype) -{ - if (htype == BM_VERT) return bm->totvert; - else if (htype == BM_EDGE) return bm->totedge; - else if (htype == BM_FACE) return bm->totface; - - return 0; -} - /** * Returns whether or not a given vertex is * is part of a given edge. @@ -364,7 +352,7 @@ BMEdge *BM_vert_other_disk_edge(BMVert *v, BMEdge *e_first) /** * Returms edge length */ -float BM_edge_length_calc(BMEdge *e) +float BM_edge_calc_length(BMEdge *e) { return len_v3v3(e->v1->co, e->v2->co); } @@ -779,7 +767,7 @@ void BM_edge_ordered_verts(BMEdge *edge, BMVert **r_v1, BMVert **r_v2) * * \return angle in radians */ -float BM_loop_face_angle(BMLoop *l) +float BM_loop_calc_face_angle(BMLoop *l) { return angle_v3v3v3(l->prev->v->co, l->v->co, @@ -787,7 +775,7 @@ float BM_loop_face_angle(BMLoop *l) } /** - * \brief BM_loop_face_normal + * \brief BM_loop_calc_face_normal * * Calculate the normal at this loop corner or fallback to the face normal on straignt lines. * @@ -795,7 +783,7 @@ float BM_loop_face_angle(BMLoop *l) * \param l The loop to calculate the normal at * \param r_normal Resulting normal */ -void BM_loop_face_normal(BMLoop *l, float r_normal[3]) +void BM_loop_calc_face_normal(BMLoop *l, float r_normal[3]) { if (normal_tri_v3(r_normal, l->prev->v->co, @@ -810,7 +798,7 @@ void BM_loop_face_normal(BMLoop *l, float r_normal[3]) } /** - * \brief BM_loop_face_tangent + * \brief BM_loop_calc_face_tangent * * Calculate the tangent at this loop corner or fallback to the face normal on straignt lines. * This vector always points inward into the face. @@ -819,7 +807,7 @@ void BM_loop_face_normal(BMLoop *l, float r_normal[3]) * \param l The loop to calculate the tangent at * \param r_tangent Resulting tangent */ -void BM_loop_face_tangent(BMLoop *l, float r_tangent[3]) +void BM_loop_calc_face_tangent(BMLoop *l, float r_tangent[3]) { float v_prev[3]; float v_next[3]; @@ -853,7 +841,7 @@ void BM_loop_face_tangent(BMLoop *l, float r_tangent[3]) * * \return angle in radians */ -float BM_edge_face_angle(BMEdge *e) +float BM_edge_calc_face_angle(BMEdge *e) { if (BM_edge_is_manifold(e)) { BMLoop *l1 = e->l; @@ -871,13 +859,13 @@ float BM_edge_face_angle(BMEdge *e) * Calculate the tangent at this loop corner or fallback to the face normal on straignt lines. * This vector always points inward into the face. * - * \brief BM_edge_face_tangent + * \brief BM_edge_calc_face_tangent * \param e * \param e_loop The loop to calculate the tangent at, * used to get the face and winding direction. */ -void BM_edge_face_tangent(BMEdge *e, BMLoop *e_loop, float r_tangent[3]) +void BM_edge_calc_face_tangent(BMEdge *e, BMLoop *e_loop, float r_tangent[3]) { float tvec[3]; BMVert *v1, *v2; @@ -897,7 +885,7 @@ void BM_edge_face_tangent(BMEdge *e, BMLoop *e_loop, float r_tangent[3]) * * \returns the angle in radians */ -float BM_vert_edge_angle(BMVert *v) +float BM_vert_calc_edge_angle(BMVert *v) { BMEdge *e1, *e2; @@ -905,9 +893,9 @@ float BM_vert_edge_angle(BMVert *v) * get the edges and count them both at once */ if ((e1 = v->e) && - (e2 = bmesh_disk_edge_next(e1, v)) && + (e2 = bmesh_disk_edge_next(e1, v)) && /* make sure we come full circle and only have 2 connected edges */ - (e1 == bmesh_disk_edge_next(e2, v))) + (e1 == bmesh_disk_edge_next(e2, v))) { BMVert *v1 = BM_edge_other_vert(e1, v); BMVert *v2 = BM_edge_other_vert(e2, v); @@ -923,7 +911,7 @@ float BM_vert_edge_angle(BMVert *v) * \note this isn't optimal to run on an array of verts, * see 'solidify_add_thickness' for a function which runs on an array. */ -float BM_vert_shell_factor(BMVert *v) +float BM_vert_calc_shell_factor(BMVert *v) { BMIter iter; BMLoop *l; @@ -931,7 +919,7 @@ float BM_vert_shell_factor(BMVert *v) float accum_angle = 0.0f; BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) { - const float face_angle = BM_loop_face_angle(l); + const float face_angle = BM_loop_calc_face_angle(l); accum_shell += shell_angle_to_dist(angle_normalized_v3v3(v->no, l->f->no)) * face_angle; accum_angle += face_angle; } diff --git a/source/blender/bmesh/intern/bmesh_queries.h b/source/blender/bmesh/intern/bmesh_queries.h index 5178311eea4..aefeb80c4f3 100644 --- a/source/blender/bmesh/intern/bmesh_queries.h +++ b/source/blender/bmesh/intern/bmesh_queries.h @@ -27,8 +27,6 @@ * \ingroup bmesh */ -int BM_mesh_elem_count(BMesh *bm, const char htype); - int BM_vert_in_face(BMFace *f, BMVert *v); int BM_verts_in_face(BMesh *bm, BMFace *f, BMVert **varr, int len); @@ -37,7 +35,7 @@ int BM_edge_in_face(BMFace *f, BMEdge *e); int BM_vert_in_edge(BMEdge *e, BMVert *v); int BM_verts_in_edge(BMVert *v1, BMVert *v2, BMEdge *e); -float BM_edge_length_calc(BMEdge *e); +float BM_edge_calc_length(BMEdge *e); int BM_edge_face_pair(BMEdge *e, BMFace **r_fa, BMFace **r_fb); int BM_edge_loop_pair(BMEdge *e, BMLoop **r_la, BMLoop **r_lb); BMVert *BM_edge_other_vert(BMEdge *e, BMVert *v); @@ -58,15 +56,15 @@ int BM_vert_is_manifold(BMVert *v); int BM_edge_is_manifold(BMEdge *e); int BM_edge_is_boundary(BMEdge *e); -float BM_loop_face_angle(BMLoop *l); -void BM_loop_face_normal(BMLoop *l, float r_normal[3]); -void BM_loop_face_tangent(BMLoop *l, float r_tangent[3]); +float BM_loop_calc_face_angle(BMLoop *l); +void BM_loop_calc_face_normal(BMLoop *l, float r_normal[3]); +void BM_loop_calc_face_tangent(BMLoop *l, float r_tangent[3]); -float BM_edge_face_angle(BMEdge *e); -void BM_edge_face_tangent(BMEdge *e, BMLoop *e_loop, float r_tangent[3]); +float BM_edge_calc_face_angle(BMEdge *e); +void BM_edge_calc_face_tangent(BMEdge *e, BMLoop *e_loop, float r_tangent[3]); -float BM_vert_edge_angle(BMVert *v); -float BM_vert_shell_factor(BMVert *v); +float BM_vert_calc_edge_angle(BMVert *v); +float BM_vert_calc_shell_factor(BMVert *v); BMEdge *BM_edge_exists(BMVert *v1, BMVert *v2); diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c index fe9e40aad44..8e7723fefdd 100644 --- a/source/blender/bmesh/operators/bmo_dissolve.c +++ b/source/blender/bmesh/operators/bmo_dissolve.c @@ -486,10 +486,10 @@ void dummy_exec(BMesh *bm, BMOperator *op) * convert angles [0-PI/2] -> [0-1], multiply together, then convert back to radians. */ float bm_vert_edge_face_angle(BMVert *v) { - const float angle = BM_vert_edge_angle(v); + const float angle = BM_vert_calc_edge_angle(v); /* note: could be either edge, it doesn't matter */ if (v->e && BM_edge_is_manifold(v->e)) { - return ((angle * ANGLE_TO_UNIT) * (BM_edge_face_angle(v->e) * ANGLE_TO_UNIT)) * UNIT_TO_ANGLE; + return ((angle * ANGLE_TO_UNIT) * (BM_edge_calc_face_angle(v->e) * ANGLE_TO_UNIT)) * UNIT_TO_ANGLE; } else { return angle; @@ -528,7 +528,7 @@ void bmo_dissolve_limit_exec(BMesh *bm, BMOperator *op) /* go through and split edge */ for (i = 0, tot_found = 0; i < einput->len; i++) { BMEdge *e = ((BMEdge **)einput->data.p)[i]; - const float angle = BM_edge_face_angle(e); + const float angle = BM_edge_calc_face_angle(e); if (angle < angle_limit) { tot_found++; @@ -546,7 +546,7 @@ void bmo_dissolve_limit_exec(BMesh *bm, BMOperator *op) if (/* may have become non-manifold */ BM_edge_is_manifold(e) && /* check twice because cumulative effect could dissolve over angle limit */ - (BM_edge_face_angle(e) < angle_limit)) + (BM_edge_calc_face_angle(e) < angle_limit)) { BMFace *nf = BM_faces_join_pair(bm, e->l->f, e->l->radial_next->f, diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index 1e131fa4b7b..6e3024c0fa1 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -90,7 +90,7 @@ float bm_vert_avg_tag_dist(BMVert *v) BM_ITER_ELEM_INDEX (e, &iter, v, BM_EDGES_OF_VERT, tot) { BMVert *v_other = BM_edge_other_vert(e, v); if (BM_elem_flag_test(v_other, BM_ELEM_TAG)) { - length += BM_edge_length_calc(e); + length += BM_edge_calc_length(e); } } @@ -173,7 +173,7 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) i = BM_elem_index_get(e); if (i != -1) { /* calc edge-split info */ - es->length = BM_edge_length_calc(e); + es->length = BM_edge_calc_length(e); es->e_old = e; es++; /* initialize no and e_new after */ @@ -194,7 +194,7 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) /* calc edge-split info */ es->e_new = es->l->e; - BM_edge_face_tangent(es->e_new, es->l, es->no); + BM_edge_calc_face_tangent(es->e_new, es->l, es->no); if (es->e_new == es->e_old) { /* happens on boundary edges */ /* take care here, we're creating this double edge which _must_ have its verts replaced later on */ @@ -516,7 +516,7 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) } /* do in 2 passes so moving the verts doesn't feed back into face angle checks - * which BM_vert_shell_factor uses. */ + * which BM_vert_calc_shell_factor uses. */ /* over allocate */ varr_co = MEM_callocN(sizeof(*varr_co) * bm->totvert, __func__); @@ -525,7 +525,7 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) if (BM_elem_flag_test(v, BM_ELEM_TAG)) { const float fac = (depth * (use_relative_offset ? bm_vert_avg_tag_dist(v) : 1.0f) * - (use_even_boundry ? BM_vert_shell_factor(v) : 1.0f)); + (use_even_boundry ? BM_vert_calc_shell_factor(v) : 1.0f)); madd_v3_v3v3fl(varr_co[i], v->co, v->no, fac); } } diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index 818eedffc00..801fa2012cf 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -322,7 +322,7 @@ void bmo_righthandfaces_exec(BMesh *bm, BMOperator *op) if (!startf) startf = f; - BM_face_center_bounds_calc(f, cent); + BM_face_calc_center_bounds(f, cent); if ((maxx_test = dot_v3v3(cent, cent)) > maxx) { maxx = maxx_test; @@ -332,7 +332,7 @@ void bmo_righthandfaces_exec(BMesh *bm, BMOperator *op) if (!startf) return; - BM_face_center_bounds_calc(startf, cent); + BM_face_calc_center_bounds(startf, cent); /* make sure the starting face has the correct winding */ if (dot_v3v3(cent, startf->no) < 0.0f) { @@ -473,7 +473,7 @@ static float ngon_fake_area(BMFace *f) float v[3], sv[3], c[3]; float area = 0.0f; - BM_face_center_mean_calc(f, c); + BM_face_calc_center_mean(f, c); BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { if (num_verts == 0) { @@ -563,12 +563,12 @@ void bmo_similarfaces_exec(BMesh *bm, BMOperator *op) switch (type) { case SIMFACE_PERIMETER: /* set the perimeter */ - f_ext[i].perim = BM_face_perimeter_calc(f_ext[i].f); + f_ext[i].perim = BM_face_calc_perimeter(f_ext[i].f); break; case SIMFACE_COPLANAR: /* compute the center of the polygon */ - BM_face_center_mean_calc(f_ext[i].f, f_ext[i].c); + BM_face_calc_center_mean(f_ext[i].f, f_ext[i].c); /* normalize the polygon normal */ copy_v3_v3(t_no, f_ext[i].f->no); @@ -740,7 +740,7 @@ void bmo_similaredges_exec(BMesh *bm, BMOperator *op) case SIMEDGE_FACE_ANGLE: e_ext[i].faces = BM_edge_face_count(e_ext[i].e); if (e_ext[i].faces == 2) - e_ext[i].angle = BM_edge_face_angle(e_ext[i].e); + e_ext[i].angle = BM_edge_calc_face_angle(e_ext[i].e); break; } } diff --git a/source/blender/bmesh/tools/BME_bevel.c b/source/blender/bmesh/tools/BME_bevel.c index 0d177f5ab18..925bd48026a 100644 --- a/source/blender/bmesh/tools/BME_bevel.c +++ b/source/blender/bmesh/tools/BME_bevel.c @@ -789,15 +789,15 @@ static float UNUSED_FUNCTION(BME_bevel_get_angle_vert)(BMVert *v) BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) { - BM_loop_face_normal(l, n_tmp); - madd_v3_v3fl(n, n_tmp, BM_loop_face_angle(l)); + BM_loop_calc_face_normal(l, n_tmp); + madd_v3_v3fl(n, n_tmp, BM_loop_calc_face_angle(l)); } normalize_v3(n); BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) { /* could cache from before */ - BM_loop_face_normal(l, n_tmp); - angle_diff += angle_normalized_v3v3(n, n_tmp) * (BM_loop_face_angle(l) * (float)(M_PI * 0.5)); + BM_loop_calc_face_normal(l, n_tmp); + angle_diff += angle_normalized_v3v3(n, n_tmp) * (BM_loop_calc_face_angle(l) * (float)(M_PI * 0.5)); } return angle_diff; diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index fbbe376a18f..42857bd7270 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -454,10 +454,10 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) BM_ITER_ELEM (l, &iter, vout[i], BM_LOOPS_OF_VERT) { if (!BM_elem_flag_test(l->f, BM_ELEM_HIDDEN)) { float l_mid_co[3]; - BM_loop_face_tangent(l, l_mid_co); + BM_loop_calc_face_tangent(l, l_mid_co); /* scale to average of surrounding edge size, only needs to be approx */ - mul_v3_fl(l_mid_co, (BM_edge_length_calc(l->e) + BM_edge_length_calc(l->prev->e)) / 2.0f); + mul_v3_fl(l_mid_co, (BM_edge_calc_length(l->e) + BM_edge_calc_length(l->prev->e)) / 2.0f); add_v3_v3(l_mid_co, v->co); d = edbm_rip_rip_edgedist(ar, projectMat, v->co, l_mid_co, fmval); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index c6172492025..effaa405218 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2845,7 +2845,7 @@ static void draw_em_measure_stats(View3D *v3d, Object *ob, BMEditMesh *em, UnitS } if (me->drawflag & ME_DRAWEXTRA_FACEAREA) { - /* would be nice to use BM_face_area_calc, but that is for 2d faces + /* would be nice to use BM_face_calc_area, but that is for 2d faces * so instead add up tessellation triangle areas */ BMFace *f; int n; @@ -2910,7 +2910,7 @@ static void draw_em_measure_stats(View3D *v3d, Object *ob, BMEditMesh *em, UnitS BMIter liter; BMLoop *loop; - BM_face_center_bounds_calc(efa, vmid); + BM_face_calc_center_bounds(efa, vmid); for (loop = BM_iter_new(&liter, em->bm, BM_LOOPS_OF_FACE, efa); loop; loop = BM_iter_step(&liter)) @@ -2984,7 +2984,7 @@ static void draw_em_indices(BMEditMesh *em) UI_GetThemeColor3ubv(TH_DRAWEXTRA_FACEAREA, col); BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { if (BM_elem_flag_test(f, BM_ELEM_SELECT)) { - BM_face_center_mean_calc(f, pos); + BM_face_calc_center_mean(f, pos); sprintf(numstr, "%d", i); view3d_cached_text_draw_add(pos, numstr, 0, txt_flag, col); } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index fecd32c06a0..57540b58f61 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1961,7 +1961,7 @@ static void editmesh_set_connectivity_distance(BMEditMesh *em, float mtx[][3], f BM_ITER_ELEM (efa, &iter, eve, BM_FACES_OF_VERT) { if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) { - BM_face_center_mean_calc(efa, cent_r); + BM_face_calc_center_mean(efa, cent_r); break; } } diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c index f40e344deb7..9084e5770ed 100644 --- a/source/blender/editors/uvedit/uvedit_draw.c +++ b/source/blender/editors/uvedit/uvedit_draw.c @@ -200,7 +200,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, efa->len); - totarea += BM_face_area_calc(efa); + totarea += BM_face_calc_area(efa); //totuvarea += tf_area(tf, efa->v4!=0); totuvarea += poly_uv_area(tf_uv, efa->len); @@ -232,7 +232,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe else { BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { if (BM_elem_flag_test(efa, BM_ELEM_TAG)) { - area = BM_face_area_calc(efa) / totarea; + area = BM_face_calc_area(efa) / totarea; BLI_array_empty(tf_uv); BLI_array_empty(tf_uvorig); diff --git a/source/blender/python/bmesh/bmesh_py_types.c b/source/blender/python/bmesh/bmesh_py_types.c index ee91b19a5a4..b75243c5feb 100644 --- a/source/blender/python/bmesh/bmesh_py_types.c +++ b/source/blender/python/bmesh/bmesh_py_types.c @@ -99,6 +99,7 @@ PyDoc_STRVAR(bpy_bm_elem_select_doc, "Selected state of this element.\n\n:type: PyDoc_STRVAR(bpy_bm_elem_hide_doc, "Hidden state of this element.\n\n:type: boolean"); PyDoc_STRVAR(bpy_bm_elem_tag_doc, "Generic attribute scripts can use for own logic\n\n:type: boolean"); PyDoc_STRVAR(bpy_bm_elem_smooth_doc, "Smooth state of this element.\n\n:type: boolean"); +PyDoc_STRVAR(bpy_bm_elem_seam_doc, "Seam for UV unwrapping.\n\n:type: boolean"); static PyObject *bpy_bm_elem_hflag_get(BPy_BMElem *self, void *flag) @@ -601,7 +602,7 @@ static PyGetSetDef bpy_bmedge_getseters[] = { {(char *)"index", (getter)bpy_bm_elem_index_get, (setter)bpy_bm_elem_index_set, (char *)bpy_bm_elem_index_doc, NULL}, {(char *)"smooth", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_smooth_doc, (void *)BM_ELEM_SMOOTH}, - {(char *)"seam", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_smooth_doc, (void *)BM_ELEM_SEAM}, + {(char *)"seam", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_seam_doc, (void *)BM_ELEM_SEAM}, /* connectivity data */ {(char *)"verts", (getter)bpy_bmelemseq_elem_get, (setter)NULL, (char *)bpy_bmedge_verts_doc, (void *)BM_VERTS_OF_EDGE}, @@ -1197,7 +1198,7 @@ PyDoc_STRVAR(bpy_bmvert_calc_edge_angle_doc, static PyObject *bpy_bmvert_calc_edge_angle(BPy_BMVert *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_vert_edge_angle(self->v)); + return PyFloat_FromDouble(BM_vert_calc_edge_angle(self->v)); } PyDoc_STRVAR(bpy_bmvert_calc_shell_factor_doc, @@ -1213,7 +1214,7 @@ PyDoc_STRVAR(bpy_bmvert_calc_shell_factor_doc, static PyObject *bpy_bmvert_calc_shell_factor(BPy_BMVert *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_vert_shell_factor(self->v)); + return PyFloat_FromDouble(BM_vert_calc_shell_factor(self->v)); } PyDoc_STRVAR(bpy_bmvert_normal_update_doc, @@ -1255,7 +1256,7 @@ PyDoc_STRVAR(bpy_bmedge_calc_face_angle_doc, static PyObject *bpy_bmedge_calc_face_angle(BPy_BMEdge *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_edge_face_angle(self->e)); + return PyFloat_FromDouble(BM_edge_calc_face_angle(self->e)); } PyDoc_STRVAR(bpy_bmedge_calc_tangent_doc, @@ -1283,7 +1284,7 @@ static PyObject *bpy_bmedge_calc_tangent(BPy_BMEdge *self, PyObject *args) float vec[3]; BPY_BM_CHECK_OBJ(py_loop); /* no need to check if they are from the same mesh or even connected */ - BM_edge_face_tangent(self->e, py_loop->l, vec); + BM_edge_calc_face_tangent(self->e, py_loop->l, vec); return Vector_CreatePyObject(vec, 3, Py_NEW, NULL); } } @@ -1441,7 +1442,7 @@ PyDoc_STRVAR(bpy_bmface_calc_area_doc, static PyObject *bpy_bmface_calc_area(BPy_BMFace *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_face_area_calc(self->f)); + return PyFloat_FromDouble(BM_face_calc_area(self->f)); } @@ -1456,7 +1457,7 @@ PyDoc_STRVAR(bpy_bmface_calc_perimeter_doc, static PyObject *bpy_bmface_calc_perimeter(BPy_BMFace *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_face_perimeter_calc(self->f)); + return PyFloat_FromDouble(BM_face_calc_perimeter(self->f)); } @@ -1473,7 +1474,7 @@ static PyObject *bpy_bmface_calc_center_mean(BPy_BMFace *self) float cent[3]; BPY_BM_CHECK_OBJ(self); - BM_face_center_mean_calc(self->f, cent); + BM_face_calc_center_mean(self->f, cent); return Vector_CreatePyObject(cent, 3, Py_NEW, NULL); } @@ -1491,7 +1492,7 @@ static PyObject *bpy_bmface_calc_center_bounds(BPy_BMFace *self) float cent[3]; BPY_BM_CHECK_OBJ(self); - BM_face_center_bounds_calc(self->f, cent); + BM_face_calc_center_bounds(self->f, cent); return Vector_CreatePyObject(cent, 3, Py_NEW, NULL); } @@ -1570,7 +1571,7 @@ PyDoc_STRVAR(bpy_bmloop_calc_angle_doc, static PyObject *bpy_bmloop_calc_angle(BPy_BMLoop *self) { BPY_BM_CHECK_OBJ(self); - return PyFloat_FromDouble(BM_loop_face_angle(self->l)); + return PyFloat_FromDouble(BM_loop_calc_face_angle(self->l)); } PyDoc_STRVAR(bpy_bmloop_calc_normal_doc, @@ -1586,7 +1587,7 @@ static PyObject *bpy_bmloop_calc_normal(BPy_BMLoop *self) { float vec[3]; BPY_BM_CHECK_OBJ(self); - BM_loop_face_normal(self->l, vec); + BM_loop_calc_face_normal(self->l, vec); return Vector_CreatePyObject(vec, 3, Py_NEW, NULL); } @@ -1603,7 +1604,7 @@ static PyObject *bpy_bmloop_calc_tangent(BPy_BMLoop *self) { float vec[3]; BPY_BM_CHECK_OBJ(self); - BM_loop_face_tangent(self->l, vec); + BM_loop_calc_face_tangent(self->l, vec); return Vector_CreatePyObject(vec, 3, Py_NEW, NULL); } From 792f536b368067fd27d0eefbe1bf6c91123220f4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 02:17:57 +0000 Subject: [PATCH 033/158] code cleanup: better use of BLI_array_* (grow in larger steps where possible), include BMO_iter_new in for loops. --- source/blender/blenlib/BLI_array.h | 6 +++--- source/blender/bmesh/intern/bmesh_mods.c | 13 ++++++------ source/blender/bmesh/intern/bmesh_mods.h | 2 +- .../blender/bmesh/intern/bmesh_operator_api.h | 3 +-- source/blender/bmesh/operators/bmo_extrude.c | 13 +++++------- source/blender/bmesh/operators/bmo_inset.c | 4 ++-- .../blender/bmesh/operators/bmo_subdivide.c | 8 +++---- .../blender/bmesh/operators/bmo_triangulate.c | 21 +++++++------------ source/blender/bmesh/operators/bmo_utils.c | 21 +++++++------------ 9 files changed, 36 insertions(+), 55 deletions(-) diff --git a/source/blender/blenlib/BLI_array.h b/source/blender/blenlib/BLI_array.h index b5ef7eb853c..d66b8c009d7 100644 --- a/source/blender/blenlib/BLI_array.h +++ b/source/blender/blenlib/BLI_array.h @@ -69,7 +69,7 @@ /* this returns the entire size of the array, including any buffering. */ #define BLI_array_totalsize_dyn(arr) ( \ - ((arr)==NULL) ? \ + ((arr) == NULL) ? \ 0 : \ MEM_allocN_len(arr) / sizeof(*arr) \ ) @@ -151,9 +151,9 @@ } #define BLI_array_pop(arr) ( \ - (arr&&_##arr##_count) ? \ + (arr && _##arr##_count) ? \ arr[--_##arr##_count] : \ - 0 \ + NULL \ ) /* resets the logical size of an array to zero, but doesn't diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c index 3474d4b3194..a5e761af783 100644 --- a/source/blender/bmesh/intern/bmesh_mods.c +++ b/source/blender/bmesh/intern/bmesh_mods.c @@ -758,7 +758,7 @@ BMVert *BM_edge_split_n(BMesh *bm, BMEdge *e, int numcuts) /** * Checks if a face is valid in the data structure */ -int BM_face_validate(BMesh *bm, BMFace *face, FILE *err) +int BM_face_validate(BMFace *face, FILE *err) { BMIter iter; BLI_array_declare(verts); @@ -771,10 +771,9 @@ int BM_face_validate(BMesh *bm, BMFace *face, FILE *err) fflush(err); } - for (l = BM_iter_new(&iter, bm, BM_LOOPS_OF_FACE, face); l; l = BM_iter_step(&iter)) { - BLI_array_growone(verts); - verts[BLI_array_count(verts) - 1] = l->v; - + BLI_array_growitems(verts, face->len); + BM_ITER_ELEM_INDEX (l, &iter, face, BM_LOOPS_OF_FACE, i) { + verts[i] = l->v; if (l->e->v1 == l->e->v2) { fprintf(err, "Found bmesh edge with identical verts!\n"); fprintf(err, " edge ptr: %p, vert: %p\n", l->e, l->e->v1); @@ -783,8 +782,8 @@ int BM_face_validate(BMesh *bm, BMFace *face, FILE *err) } } - for (i = 0; i < BLI_array_count(verts); i++) { - for (j = 0; j < BLI_array_count(verts); j++) { + for (i = 0; i < face->len; i++) { + for (j = 0; j < face->len; j++) { if (j == i) { continue; } diff --git a/source/blender/bmesh/intern/bmesh_mods.h b/source/blender/bmesh/intern/bmesh_mods.h index 2cb599f75d3..802c6cca05d 100644 --- a/source/blender/bmesh/intern/bmesh_mods.h +++ b/source/blender/bmesh/intern/bmesh_mods.h @@ -57,7 +57,7 @@ BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float perce BMVert *BM_edge_split_n(BMesh *bm, BMEdge *e, int numcuts); -int BM_face_validate(BMesh *bm, BMFace *face, FILE *err); +int BM_face_validate(BMFace *face, FILE *err); void BM_edge_calc_rotate(BMEdge *e, int ccw, BMLoop **r_l1, BMLoop **r_l2); diff --git a/source/blender/bmesh/intern/bmesh_operator_api.h b/source/blender/bmesh/intern/bmesh_operator_api.h index b01b80f1ef4..bf66388fb9e 100644 --- a/source/blender/bmesh/intern/bmesh_operator_api.h +++ b/source/blender/bmesh/intern/bmesh_operator_api.h @@ -413,8 +413,7 @@ void *BMO_iter_map_value_p(BMOIter *iter); float BMO_iter_map_value_f(BMOIter *iter); #define BMO_ITER(ele, iter, bm, op, slotname, restrict) \ - ele = BMO_iter_new(iter, bm, op, slotname, restrict); \ - for ( ; ele; ele = BMO_iter_step(iter)) + for (ele = BMO_iter_new(iter, bm, op, slotname, restrict); ele; ele = BMO_iter_step(iter)) /******************* Inlined Functions********************/ typedef void (*opexec)(BMesh *bm, BMOperator *op); diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c index db665c06f82..19e2dd85b0e 100644 --- a/source/blender/bmesh/operators/bmo_extrude.c +++ b/source/blender/bmesh/operators/bmo_extrude.c @@ -184,8 +184,7 @@ void bmo_extrude_edge_only_exec(BMesh *bm, BMOperator *op) BMO_op_initf(bm, &dupeop, "dupe geom=%fve", EXT_INPUT); BMO_op_exec(bm, &dupeop); - e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); - for ( ; e; e = BMO_iter_step(&siter)) { + for (e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); e; e = BMO_iter_step(&siter)) { e2 = BMO_iter_map_value(&siter); e2 = *(BMEdge **)e2; @@ -226,8 +225,7 @@ void bmo_extrude_vert_indiv_exec(BMesh *bm, BMOperator *op) BMVert *v, *dupev; BMEdge *e; - v = BMO_iter_new(&siter, bm, op, "verts", BM_VERT); - for ( ; v; v = BMO_iter_step(&siter)) { + for (v = BMO_iter_new(&siter, bm, op, "verts", BM_VERT); v; v = BMO_iter_step(&siter)) { dupev = BM_vert_create(bm, v->co, v); e = BM_edge_create(bm, v, dupev, NULL, FALSE); @@ -343,8 +341,8 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op) } BMO_slot_copy(&dupeop, op, "newout", "geomout"); - e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); - for ( ; e; e = BMO_iter_step(&siter)) { + + for (e = BMO_iter_new(&siter, bm, &dupeop, "boundarymap", 0); e; e = BMO_iter_step(&siter)) { /* this should always be wire, so this is mainly a speedup to avoid map lookup */ if (BM_edge_is_wire(e) && BMO_slot_map_contains(bm, op, "exclude", e)) { @@ -389,8 +387,7 @@ void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op) } /* link isolated vert */ - v = BMO_iter_new(&siter, bm, &dupeop, "isovertmap", 0); - for ( ; v; v = BMO_iter_step(&siter)) { + for (v = BMO_iter_new(&siter, bm, &dupeop, "isovertmap", 0); v; v = BMO_iter_step(&siter)) { v2 = *((void **)BMO_iter_map_value(&siter)); BM_edge_create(bm, v, v2, v->e, TRUE); } diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index 6e3024c0fa1..ee52f8bc0a9 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -524,8 +524,8 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) { if (BM_elem_flag_test(v, BM_ELEM_TAG)) { const float fac = (depth * - (use_relative_offset ? bm_vert_avg_tag_dist(v) : 1.0f) * - (use_even_boundry ? BM_vert_calc_shell_factor(v) : 1.0f)); + (use_relative_offset ? bm_vert_avg_tag_dist(v) : 1.0f) * + (use_even_boundry ? BM_vert_calc_shell_factor(v) : 1.0f)); madd_v3_v3v3fl(varr_co[i], v->co, v->no, fac); } } diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index d629585f7cd..e2f00e3187f 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -1042,9 +1042,8 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s BMOIter iter; BMElem *ele; // int i; - - ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT); - for ( ; ele; ele = BMO_iter_step(&iter)) { + + for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) { BM_elem_select_set(bm, ele, TRUE); } } @@ -1056,8 +1055,7 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s /* deselect input */ BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE); - ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT); - for ( ; ele; ele = BMO_iter_step(&iter)) { + for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) { BM_elem_select_set(bm, ele, TRUE); if (ele->head.htype == BM_VERT) { diff --git a/source/blender/bmesh/operators/bmo_triangulate.c b/source/blender/bmesh/operators/bmo_triangulate.c index 916b10d707e..7fd6cf6769c 100644 --- a/source/blender/bmesh/operators/bmo_triangulate.c +++ b/source/blender/bmesh/operators/bmo_triangulate.c @@ -51,21 +51,16 @@ void bmo_triangulate_exec(BMesh *bm, BMOperator *op) BLI_array_declare(newfaces); float (*projectverts)[3] = NULL; BLI_array_declare(projectverts); - int i, lastlen = 0 /* , count = 0 */; + int i; const int use_beauty = BMO_slot_bool_get(op, "use_beauty"); - face = BMO_iter_new(&siter, bm, op, "faces", BM_FACE); - for ( ; face; face = BMO_iter_step(&siter)) { - if (lastlen < face->len) { - BLI_array_empty(projectverts); - BLI_array_empty(newfaces); - for (lastlen = 0; lastlen < face->len; lastlen++) { - BLI_array_growone(projectverts); - BLI_array_growone(projectverts); - BLI_array_growone(projectverts); - BLI_array_growone(newfaces); - } - } + for (face = BMO_iter_new(&siter, bm, op, "faces", BM_FACE); face; face = BMO_iter_step(&siter)) { + + BLI_array_empty(projectverts); + BLI_array_empty(newfaces); + + BLI_array_growitems(projectverts, face->len * 3); + BLI_array_growitems(newfaces, face->len); BM_face_triangulate(bm, face, projectverts, EDGE_NEW, FACE_NEW, newfaces, use_beauty); diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index 801fa2012cf..3cfa70f6e6c 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -1046,12 +1046,10 @@ void bmo_face_reverseuvs_exec(BMesh *bm, BMOperator *op) /* now that we have the uvs in the array, reverse! */ i = 0; - BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) { + BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) { /* current loop uv is the previous loop uv */ MLoopUV *luv = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPUV); - luv->uv[0] = uvs[(fs->len - i - 1)][0]; - luv->uv[1] = uvs[(fs->len - i - 1)][1]; - i++; + copy_v2_v2(luv->uv, uvs[(fs->len - i - 1)]); } } } @@ -1140,25 +1138,20 @@ void bmo_face_reversecolors_exec(BMesh *bm, BMOperator *op) BMO_ITER (fs, &fs_iter, bm, op, "faces", BM_FACE) { if (CustomData_has_layer(&(bm->ldata), CD_MLOOPCOL)) { BMLoop *lf; /* current face loops */ - int i = 0; + int i; BLI_array_empty(cols); - BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) { - MLoopCol *lcol = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL); + BLI_array_growitems(cols, fs->len); - /* current loop uv is the previous loop color */ - BLI_array_growone(cols); - cols[i] = *lcol; - i++; + BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) { + cols[i] = *((MLoopCol *)CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL)); } /* now that we have the uvs in the array, reverse! */ - i = 0; - BM_ITER_ELEM (lf, &l_iter, fs, BM_LOOPS_OF_FACE) { + BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) { /* current loop uv is the previous loop color */ MLoopCol *lcol = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL); *lcol = cols[(fs->len - i - 1)]; - i++; } } } From 4c4389f6a42ebfe0140de8d1892d9990aa592980 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 02:48:05 +0000 Subject: [PATCH 034/158] code cleanup: remove editbutflag flag from toolsettings & related defines. --- source/blender/blenkernel/intern/scene.c | 1 - source/blender/blenloader/intern/readfile.c | 1 - source/blender/editors/include/ED_mesh.h | 15 --------------- source/blender/editors/mesh/editmesh_tools.c | 13 ++++++------- source/blender/makesdna/DNA_scene_types.h | 8 ++++---- 5 files changed, 10 insertions(+), 28 deletions(-) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index c950a6ccdb5..01ab5745256 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -418,7 +418,6 @@ Scene *add_scene(const char *name) sce->toolsettings->segments = 32; sce->toolsettings->rings = 32; sce->toolsettings->vertices = 32; - sce->toolsettings->editbutflag = 1; sce->toolsettings->uvcalc_radius = 1.0f; sce->toolsettings->uvcalc_cubesize = 1.0f; sce->toolsettings->uvcalc_mapdir = 1; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index f87be2b8a83..b3d586fd78d 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9153,7 +9153,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main) sce->toolsettings->segments = 32; sce->toolsettings->rings = 32; sce->toolsettings->vertices = 32; - sce->toolsettings->editbutflag =1; } sce= sce->id.next; } diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 16b3e0654bd..06e837b37bd 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -71,23 +71,8 @@ struct Material; struct Object; struct rcti; -#define EM_FGON_DRAW 1 // face flag -#define EM_FGON 2 // edge and face flag both - /* editbutflag */ -#define B_CLOCKWISE 1 -#define B_KEEPORIG 2 -#define B_BEAUTY 4 #define B_SMOOTH 8 -#define B_BEAUTY_SHORT 0x10 -#define B_AUTOFGON 0x20 -#define B_KNIFE 0x80 -#define B_PERCENTSUBD 0x40 -//#define B_MESH_X_MIRROR 0x100 // deprecated, use mesh -#define B_JOINTRIA_UV 0x200 -#define B_JOINTRIA_VCOL 0X400 -#define B_JOINTRIA_SHARP 0X800 -#define B_JOINTRIA_MAT 0X1000 #define B_FRACTAL 0x2000 #define B_SPHERE 0x4000 diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index e40a60203af..da475f9bdf4 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -82,7 +82,6 @@ static void add_normal_aligned(float nor[3], const float add[3]) static int edbm_subdivide_exec(bContext *C, wmOperator *op) { - ToolSettings *ts = CTX_data_tool_settings(C); Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); int cuts = RNA_int_get(op->ptr, "number_cuts"); @@ -103,7 +102,7 @@ static int edbm_subdivide_exec(bContext *C, wmOperator *op) BM_mesh_esubdivideflag(obedit, em->bm, BM_ELEM_SELECT, smooth, fractal, - ts->editbutflag | flag, + flag, cuts, 0, RNA_enum_get(op->ptr, "quadcorner"), RNA_boolean_get(op->ptr, "quadtri"), TRUE, RNA_int_get(op->ptr, "seed")); @@ -2742,7 +2741,7 @@ static int edbm_knife_cut_exec(bContext *C, wmOperator *op) if (mode == KNIFE_MIDPOINT) numcuts = 1; BMO_slot_int_set(&bmop, "numcuts", numcuts); - BMO_slot_int_set(&bmop, "flag", B_KNIFE); + BMO_slot_int_set(&bmop, "flag", 0); BMO_slot_int_set(&bmop, "quadcornertype", SUBD_STRAIGHT_CUT); BMO_slot_bool_set(&bmop, "singleedge", FALSE); BMO_slot_bool_set(&bmop, "gridfill", FALSE); @@ -3280,7 +3279,6 @@ void MESH_OT_split(wmOperatorType *ot) static int edbm_spin_exec(bContext *C, wmOperator *op) { Object *obedit = CTX_data_edit_object(C); - ToolSettings *ts = CTX_data_tool_settings(C); BMEditMesh *em = BMEdit_FromObject(obedit); BMesh *bm = em->bm; BMOperator spinop; @@ -3288,14 +3286,15 @@ static int edbm_spin_exec(bContext *C, wmOperator *op) float d[3] = {0.0f, 0.0f, 0.0f}; int steps, dupli; float degr; - + RNA_float_get_array(op->ptr, "center", cent); RNA_float_get_array(op->ptr, "axis", axis); steps = RNA_int_get(op->ptr, "steps"); degr = RNA_float_get(op->ptr, "degrees"); - if (ts->editbutflag & B_CLOCKWISE) degr = -degr; + //if (ts->editbutflag & B_CLOCKWISE) + degr = -degr; dupli = RNA_boolean_get(op->ptr, "dupli"); - + /* undo object transformation */ copy_m3_m4(imat, obedit->imat); sub_v3_v3(cent, obedit->obmat[3]); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 79ed1186c1a..817ebaf8012 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -885,7 +885,7 @@ typedef struct ToolSettings { /* Subdivide Settings */ short cornertype; - short editbutflag; + short pad3; /*Triangle to Quad conversion threshold*/ float jointrilimit; /* Editmode Tools */ @@ -943,11 +943,11 @@ typedef struct ToolSettings { /* Auto-Keying Mode */ short autokey_mode, autokey_flag; /* defines in DNA_userdef_types.h */ - + /* Multires */ char multires_subdiv_type; char pad2[5]; - + /* Skeleton generation */ short skgen_resolution; float skgen_threshold_internal; @@ -965,7 +965,7 @@ typedef struct ToolSettings { char skgen_postpro_passes; char skgen_subdivisions[3]; char skgen_multi_level; - + /* Skeleton Sketching */ struct Object *skgen_template; char bone_sketching; From b51590d55df4b013a0becf9977eddb33206276ba Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 03:43:02 +0000 Subject: [PATCH 035/158] code cleanup: bmesh subdivide code - BM_mesh_esubdivideflag() & "esubd" bmesh operator was passing a flag about in a fairly confusing way. since we will eventually have python bmesh operator access better expose this as multiple booleans. remove remaining editbutflag's --- source/blender/bmesh/intern/bmesh_opdefines.c | 10 ++-- .../blender/bmesh/intern/bmesh_operator_api.h | 2 +- source/blender/bmesh/intern/bmesh_operators.h | 9 ++-- .../blender/bmesh/operators/bmo_primitive.c | 9 +++- .../blender/bmesh/operators/bmo_subdivide.c | 54 +++++++++++-------- .../blender/bmesh/operators/bmo_subdivide.h | 5 +- source/blender/editors/include/ED_mesh.h | 13 +---- .../blender/editors/mesh/editmesh_loopcut.c | 9 ++-- source/blender/editors/mesh/editmesh_tools.c | 23 +++----- source/blender/editors/mesh/mesh_intern.h | 2 +- 10 files changed, 71 insertions(+), 65 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c index f850f6aa46a..4b5c67c8671 100644 --- a/source/blender/bmesh/intern/bmesh_opdefines.c +++ b/source/blender/bmesh/intern/bmesh_opdefines.c @@ -694,10 +694,9 @@ static BMOpDefine bmo_triangulate_def = { static BMOpDefine bmo_esubd_def = { "esubd", {{BMO_OP_SLOT_ELEMENT_BUF, "edges"}, - {BMO_OP_SLOT_INT, "numcuts"}, {BMO_OP_SLOT_FLT, "smooth"}, {BMO_OP_SLOT_FLT, "fractal"}, - {BMO_OP_SLOT_INT, "beauty"}, + {BMO_OP_SLOT_INT, "numcuts"}, {BMO_OP_SLOT_INT, "seed"}, {BMO_OP_SLOT_MAPPING, "custompatterns"}, {BMO_OP_SLOT_MAPPING, "edgepercents"}, @@ -707,9 +706,10 @@ static BMOpDefine bmo_esubd_def = { {BMO_OP_SLOT_ELEMENT_BUF, "outsplit"}, {BMO_OP_SLOT_ELEMENT_BUF, "geomout"}, /* contains all output geometr */ - {BMO_OP_SLOT_INT, "quadcornertype"}, //quad corner type, see bmesh_operators.h - {BMO_OP_SLOT_BOOL, "gridfill"}, //fill in fully-selected faces with a grid - {BMO_OP_SLOT_BOOL, "singleedge"}, //tessellate the case of one edge selected in a quad or triangle + {BMO_OP_SLOT_INT, "quadcornertype"}, /* quad corner type, see bmesh_operators.h */ + {BMO_OP_SLOT_BOOL, "use_gridfill"}, /* fill in fully-selected faces with a grid */ + {BMO_OP_SLOT_BOOL, "use_singleedge"}, /* tessellate the case of one edge selected in a quad or triangle */ + {BMO_OP_SLOT_BOOL, "use_sphere"}, /* for making new primitives only */ {0} /* null-terminating sentinel */, }, diff --git a/source/blender/bmesh/intern/bmesh_operator_api.h b/source/blender/bmesh/intern/bmesh_operator_api.h index bf66388fb9e..b5e6534de3e 100644 --- a/source/blender/bmesh/intern/bmesh_operator_api.h +++ b/source/blender/bmesh/intern/bmesh_operator_api.h @@ -242,7 +242,7 @@ int BMO_op_callf(BMesh *bm, const char *fmt, ...); int BMO_op_initf(BMesh *bm, BMOperator *op, const char *fmt, ...); /* va_list version, used to implement the above two functions, - * plus EDBM_op_callf in bmeshutils.c. */ + * plus EDBM_op_callf in editmesh_utils.c. */ int BMO_op_vinitf(BMesh *bm, BMOperator *op, const char *fmt, va_list vlist); /* test whether a named slot exists */ diff --git a/source/blender/bmesh/intern/bmesh_operators.h b/source/blender/bmesh/intern/bmesh_operators.h index af62e4d2b29..52e2018eeef 100644 --- a/source/blender/bmesh/intern/bmesh_operators.h +++ b/source/blender/bmesh/intern/bmesh_operators.h @@ -90,9 +90,12 @@ extern int bmesh_total_ops; struct Object; -void BM_mesh_esubdivideflag(struct Object *obedit, BMesh *bm, int flag, float smooth, - float fractal, int beauty, int numcuts, int seltype, - int cornertype, int singleedge, int gridfill, int seed); +void BM_mesh_esubdivide(BMesh *bm, const char edge_hflag, + float smooth, float fractal, + int numcuts, + int seltype, int cornertype, + const short use_singleedge, const short use_gridfill, + int seed); #include "intern/bmesh_operator_api_inline.h" diff --git a/source/blender/bmesh/operators/bmo_primitive.c b/source/blender/bmesh/operators/bmo_primitive.c index e526e2eaca0..fc0e34cf2f6 100644 --- a/source/blender/bmesh/operators/bmo_primitive.c +++ b/source/blender/bmesh/operators/bmo_primitive.c @@ -428,8 +428,13 @@ void bmo_create_icosphere_exec(BMesh *bm, BMOperator *op) BMOperator bmop; BMO_op_initf(bm, &bmop, - "esubd edges=%fe smooth=%f numcuts=%i gridfill=%b beauty=%i", - EDGE_MARK, dia, (1 << (subdiv-1)) - 1, TRUE, B_SPHERE); + "esubd edges=%fe " + "smooth=%f " + "numcuts=%i " + "use_gridfill=%b use_sphere=%b", + EDGE_MARK, dia, (1 << (subdiv-1)) - 1, + TRUE, TRUE); + BMO_op_exec(bm, &bmop); BMO_slot_buffer_flag_enable(bm, &bmop, "geomout", BM_VERT, VERT_MARK); BMO_slot_buffer_flag_enable(bm, &bmop, "geomout", BM_EDGE, EDGE_MARK); diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index e2f00e3187f..2f198992eb6 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -111,7 +111,7 @@ static void alter_co(BMesh *bm, BMVert *v, BMEdge *UNUSED(origed), const SubDPar copy_v3_v3(co, v->co); copy_v3_v3(prev_co, co); - if (params->beauty & B_SMOOTH) { + if (params->use_smooth) { /* we calculate an offset vector vec1[], to be added to *co */ float len, nor[3], nor1[3], nor2[3], smooth = params->smooth; @@ -136,12 +136,12 @@ static void alter_co(BMesh *bm, BMVert *v, BMEdge *UNUSED(origed), const SubDPar add_v3_v3(co, tvec); } - else if (params->beauty & B_SPHERE) { /* subdivide sphere */ + else if (params->use_sphere) { /* subdivide sphere */ normalize_v3(co); mul_v3_fl(co, params->smooth); } - if (params->beauty & B_FRACTAL) { + if (params->use_fractal) { float len = len_v3v3(vsta->co, vend->co); float vec2[3] = {0.0f, 0.0f, 0.0f}, co2[3]; @@ -690,7 +690,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) BLI_array_declare(edges); BLI_array_declare(verts); float smooth, fractal; - int beauty, cornertype, singleedge, gridfill; + int use_sphere, cornertype, use_singleedge, use_gridfill; int skey, seed, i, j, matched, a, b, numcuts, totesel; BMO_slot_buffer_flag_enable(bm, op, "edges", BM_EDGE, SUBD_SPLIT); @@ -699,10 +699,11 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) seed = BMO_slot_int_get(op, "seed"); smooth = BMO_slot_float_get(op, "smooth"); fractal = BMO_slot_float_get(op, "fractal"); - beauty = BMO_slot_int_get(op, "beauty"); cornertype = BMO_slot_int_get(op, "quadcornertype"); - singleedge = BMO_slot_bool_get(op, "singleedge"); - gridfill = BMO_slot_bool_get(op, "gridfill"); + + use_singleedge = BMO_slot_bool_get(op, "use_singleedge"); + use_gridfill = BMO_slot_bool_get(op, "use_gridfill"); + use_sphere = BMO_slot_bool_get(op, "use_sphere"); BLI_srandom(seed); @@ -720,7 +721,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) break; } - if (singleedge) { + if (use_singleedge) { patterns[0] = &quad_1edge; patterns[2] = &tri_1edge; } @@ -729,7 +730,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) patterns[2] = NULL; } - if (gridfill) { + if (use_gridfill) { patterns[3] = &quad_4edge; patterns[5] = &tri_3edge; } @@ -755,7 +756,9 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) params.smooth = smooth; params.seed = seed; params.fractal = fractal; - params.beauty = beauty; + params.use_smooth = (smooth != 0.0f); + params.use_fractal = (fractal != 0.0f); + params.use_sphere = use_sphere; params.origkey = skey; params.off[0] = (float)BLI_drand() * 200.0f; params.off[1] = (float)BLI_drand() * 200.0f; @@ -1023,25 +1026,35 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) } /* editmesh-emulating function */ -void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float smooth, - float fractal, int beauty, int numcuts, - int seltype, int cornertype, int singleedge, - int gridfill, int seed) +void BM_mesh_esubdivide(BMesh *bm, const char edge_hflag, + float smooth, float fractal, + int numcuts, + int seltype, int cornertype, + const short use_singleedge, const short use_gridfill, + int seed) { BMOperator op; - BMO_op_initf(bm, &op, "esubd edges=%he smooth=%f fractal=%f " - "beauty=%i numcuts=%i quadcornertype=%i singleedge=%b " - "gridfill=%b seed=%i", - flag, smooth, fractal, beauty, numcuts, - cornertype, singleedge, gridfill, seed); + /* use_sphere isnt exposed here since its only used for new primitives */ + BMO_op_initf(bm, &op, + "esubd edges=%he " + "smooth=%f fractal=%f " + "numcuts=%i " + "quadcornertype=%i " + "use_singleedge=%b use_gridfill=%b " + "seed=%i", + edge_hflag, + smooth, fractal, + numcuts, + cornertype, + use_singleedge, use_gridfill, + seed); BMO_op_exec(bm, &op); if (seltype == SUBDIV_SELECT_INNER) { BMOIter iter; BMElem *ele; - // int i; for (ele = BMO_iter_new(&iter, bm, &op, "outinner", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) { BM_elem_select_set(bm, ele, TRUE); @@ -1050,7 +1063,6 @@ void BM_mesh_esubdivideflag(Object *UNUSED(obedit), BMesh *bm, int flag, float s else if (seltype == SUBDIV_SELECT_LOOPCUT) { BMOIter iter; BMElem *ele; - // int i; /* deselect input */ BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, FALSE); diff --git a/source/blender/bmesh/operators/bmo_subdivide.h b/source/blender/bmesh/operators/bmo_subdivide.h index 1d9021d9756..cc6ced8bfaa 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.h +++ b/source/blender/bmesh/operators/bmo_subdivide.h @@ -31,7 +31,10 @@ typedef struct SubDParams { int numcuts; float smooth; float fractal; - int beauty; + //int beauty; + short use_smooth; + short use_sphere; + short use_fractal; int seed; int origkey; /* shapekey holding displaced vertex coordinates for current geometry */ BMOperator *op; diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 06e837b37bd..6a6da0cfa26 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -71,16 +71,10 @@ struct Material; struct Object; struct rcti; -/* editbutflag */ -#define B_SMOOTH 8 -#define B_FRACTAL 0x2000 -#define B_SPHERE 0x4000 - intptr_t mesh_octree_table(struct Object *ob, struct BMEditMesh *em, float *co, char mode); int mesh_mirrtopo_table(struct Object *ob, char mode); -/* bmeshutils.c */ - +/* editmesh_utils.c */ /* retrieves mirrored cache vert, or NULL if there isn't one. * note: calling this without ensuring the mirror cache state @@ -282,11 +276,6 @@ void ED_mesh_mirrtopo_free(MirrTopoStore_t *mesh_topo_store); #define SUBDIV_SELECT_INNER_SEL 2 #define SUBDIV_SELECT_LOOPCUT 3 -/* edge subdivide corner cut types */ -#define SUBDIV_CORNER_PATH 0 -#define SUBDIV_CORNER_INNERVERT 1 -#define SUBDIV_CORNER_FAN 2 - #ifdef __cplusplus } #endif diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c index 45a975e5d52..d7201394855 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.c +++ b/source/blender/editors/mesh/editmesh_loopcut.c @@ -313,10 +313,11 @@ static void ringsel_finish(bContext *C, wmOperator *op) edgering_sel(lcd, cuts, 1); if (lcd->do_cut) { - BM_mesh_esubdivideflag(lcd->ob, em->bm, BM_ELEM_SELECT, 0.0f, - 0.0f, 0, cuts, SUBDIV_SELECT_LOOPCUT, - SUBD_PATH, 0, FALSE, 0); - + BM_mesh_esubdivide(em->bm, BM_ELEM_SELECT, + 0.0f, 0.0f, + cuts, + SUBDIV_SELECT_LOOPCUT, SUBD_PATH, 0, FALSE, 0); + /* force edge slide to edge select mode in in face select mode */ if (em->selectmode & SCE_SELECT_FACE) { if (em->selectmode == SCE_SELECT_FACE) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index da475f9bdf4..67f387946d5 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -87,25 +87,19 @@ static int edbm_subdivide_exec(bContext *C, wmOperator *op) int cuts = RNA_int_get(op->ptr, "number_cuts"); float smooth = 0.292f * RNA_float_get(op->ptr, "smoothness"); float fractal = RNA_float_get(op->ptr, "fractal") / 2.5f; - int flag = 0; - if (smooth != 0.0f) - flag |= B_SMOOTH; - if (fractal != 0.0f) - flag |= B_FRACTAL; - if (RNA_boolean_get(op->ptr, "quadtri") && RNA_enum_get(op->ptr, "quadcorner") == SUBD_STRAIGHT_CUT) { RNA_enum_set(op->ptr, "quadcorner", SUBD_INNERVERT); } - BM_mesh_esubdivideflag(obedit, em->bm, BM_ELEM_SELECT, - smooth, fractal, - flag, - cuts, 0, RNA_enum_get(op->ptr, "quadcorner"), - RNA_boolean_get(op->ptr, "quadtri"), - TRUE, RNA_int_get(op->ptr, "seed")); + BM_mesh_esubdivide(em->bm, BM_ELEM_SELECT, + smooth, fractal, + cuts, + SUBDIV_SELECT_ORIG, RNA_enum_get(op->ptr, "quadcorner"), + RNA_boolean_get(op->ptr, "quadtri"), TRUE, + RNA_int_get(op->ptr, "seed")); EDBM_update_generic(C, em, TRUE); @@ -2741,10 +2735,9 @@ static int edbm_knife_cut_exec(bContext *C, wmOperator *op) if (mode == KNIFE_MIDPOINT) numcuts = 1; BMO_slot_int_set(&bmop, "numcuts", numcuts); - BMO_slot_int_set(&bmop, "flag", 0); BMO_slot_int_set(&bmop, "quadcornertype", SUBD_STRAIGHT_CUT); - BMO_slot_bool_set(&bmop, "singleedge", FALSE); - BMO_slot_bool_set(&bmop, "gridfill", FALSE); + BMO_slot_bool_set(&bmop, "use_singleedge", FALSE); + BMO_slot_bool_set(&bmop, "use_gridfill", FALSE); BMO_slot_float_set(&bmop, "radius", 0); diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 772e80fff69..27b1cb6ad54 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -49,7 +49,7 @@ struct wmKeyMap; struct wmOperator; struct wmOperatorType; -/* ******************** bmeshutils.c */ +/* ******************** editmesh_utils.c */ /* * ok: the EDBM module is for editmode bmesh stuff. in contrast, the From 8baa5fbde21f55a2e8cfa5f515767e00038fca78 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 04:24:11 +0000 Subject: [PATCH 036/158] - fix for python freeing its own bmesh clearing the global mirror cache. - fix for own mistake (Ctrl+T didnt set beauty peroperty). - remove bad level includes in bmesh. --- source/blender/bmesh/CMakeLists.txt | 1 - source/blender/bmesh/SConscript | 6 ++---- source/blender/bmesh/intern/bmesh_mesh.c | 8 -------- source/blender/bmesh/intern/bmesh_operators.h | 7 +++++++ source/blender/bmesh/intern/bmesh_polygon.c | 1 + .../blender/bmesh/operators/bmo_primitive.c | 2 -- .../blender/bmesh/operators/bmo_subdivide.c | 2 -- source/blender/editors/include/ED_mesh.h | 5 ----- source/blender/editors/mesh/editmesh_utils.c | 19 ++++++++++++++----- source/blender/editors/mesh/mesh_ops.c | 3 ++- .../blender/makesrna/intern/rna_object_api.c | 5 ----- .../makesrna/intern/rna_sequencer_api.c | 3 --- 12 files changed, 26 insertions(+), 36 deletions(-) diff --git a/source/blender/bmesh/CMakeLists.txt b/source/blender/bmesh/CMakeLists.txt index 016d2802094..1cf2b9113b2 100644 --- a/source/blender/bmesh/CMakeLists.txt +++ b/source/blender/bmesh/CMakeLists.txt @@ -28,7 +28,6 @@ set(INC . ../blenkernel ../blenlib - ../editors/include ../makesdna ../../../intern/guardedalloc ) diff --git a/source/blender/bmesh/SConscript b/source/blender/bmesh/SConscript index e06f43bd85d..fb00aef4d78 100644 --- a/source/blender/bmesh/SConscript +++ b/source/blender/bmesh/SConscript @@ -8,13 +8,11 @@ sources += env.Glob('operators/*.c') sources += env.Glob('tools/*.c') incs = [ - '#/intern/guardedalloc', + './', '../blenlib', - '../blenloader', '../makesdna', '../blenkernel', - './', - '../editors/include', + '#/intern/guardedalloc', ] defs = [] diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 6c208b46244..bd6eb7ae149 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -39,8 +39,6 @@ #include "BKE_tessmesh.h" #include "BKE_multires.h" -#include "ED_mesh.h" - #include "intern/bmesh_private.h" /* used as an extern, defined in bmesh.h */ @@ -142,12 +140,6 @@ void BM_mesh_data_free(BMesh *bm) BLI_mempool_destroy(bm->looplistpool); #endif - /* These tables aren't used yet, so it's not strictly necessary - * to 'end' them (with 'e' param) but if someone tries to start - * using them, having these in place will save a lot of pain */ - mesh_octree_table(NULL, NULL, NULL, 'e'); - mesh_mirrtopo_table(NULL, 'e'); - BLI_freelistN(&bm->selected); BMO_error_clear(bm); diff --git a/source/blender/bmesh/intern/bmesh_operators.h b/source/blender/bmesh/intern/bmesh_operators.h index 52e2018eeef..f4db13e2777 100644 --- a/source/blender/bmesh/intern/bmesh_operators.h +++ b/source/blender/bmesh/intern/bmesh_operators.h @@ -39,6 +39,13 @@ enum { SUBD_STRAIGHT_CUT }; +enum { + SUBDIV_SELECT_ORIG, + SUBDIV_SELECT_INNER, + SUBDIV_SELECT_INNER_SEL, + SUBDIV_SELECT_LOOPCUT +}; + /* similar face selection slot values */ enum { SIMFACE_MATERIAL = 201, diff --git a/source/blender/bmesh/intern/bmesh_polygon.c b/source/blender/bmesh/intern/bmesh_polygon.c index 2e41d4b923c..fbfc253c364 100644 --- a/source/blender/bmesh/intern/bmesh_polygon.c +++ b/source/blender/bmesh/intern/bmesh_polygon.c @@ -445,6 +445,7 @@ void BM_face_normal_update_vcos(BMesh *bm, BMFace *f, float no[3], /* must have valid index data */ BLI_assert((bm->elem_index_dirty & BM_VERT) == 0); + (void)bm; /* common cases first */ switch (f->len) { diff --git a/source/blender/bmesh/operators/bmo_primitive.c b/source/blender/bmesh/operators/bmo_primitive.c index fc0e34cf2f6..6fd3c8ce99c 100644 --- a/source/blender/bmesh/operators/bmo_primitive.c +++ b/source/blender/bmesh/operators/bmo_primitive.c @@ -28,8 +28,6 @@ #include "BLI_math.h" -#include "ED_mesh.h" - #include "bmesh.h" #include "intern/bmesh_private.h" diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index 2f198992eb6..d5f46ebfc85 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -35,8 +35,6 @@ #include "DNA_object_types.h" -#include "ED_mesh.h" - #include "bmesh.h" #include "intern/bmesh_private.h" diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 6a6da0cfa26..10137a5a259 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -271,11 +271,6 @@ void ED_mesh_mirrtopo_init(struct Mesh *me, const int ob_mode, MirrTopoStore_t * const short skip_em_vert_array_init); void ED_mesh_mirrtopo_free(MirrTopoStore_t *mesh_topo_store); -#define SUBDIV_SELECT_ORIG 0 -#define SUBDIV_SELECT_INNER 1 -#define SUBDIV_SELECT_INNER_SEL 2 -#define SUBDIV_SELECT_LOOPCUT 3 - #ifdef __cplusplus } #endif diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c index 468f5699bce..074c37850f7 100644 --- a/source/blender/editors/mesh/editmesh_utils.c +++ b/source/blender/editors/mesh/editmesh_utils.c @@ -150,7 +150,7 @@ int EDBM_op_finish(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const int r BKE_report(op->reports, RPT_ERROR, errmsg); } - BMEdit_Free(em); + EDBM_mesh_free(em); *em = *emcopy; MEM_freeN(emcopy); @@ -284,7 +284,7 @@ void EDBM_mesh_make(ToolSettings *ts, Scene *UNUSED(scene), Object *ob) if (me->edit_btmesh) { /* this happens when switching shape keys */ - BMEdit_Free(me->edit_btmesh); + EDBM_mesh_free(me->edit_btmesh); MEM_freeN(me->edit_btmesh); } @@ -315,9 +315,18 @@ void EDBM_mesh_load(Object *ob) #endif } -void EDBM_mesh_free(BMEditMesh *tm) +/** + * Should only be called on the active editmesh, otherwise call #BMEdit_Free + */ +void EDBM_mesh_free(BMEditMesh *em) { - BMEdit_Free(tm); + /* These tables aren't used yet, so it's not strictly necessary + * to 'end' them (with 'e' param) but if someone tries to start + * using them, having these in place will save a lot of pain */ + mesh_octree_table(NULL, NULL, NULL, 'e'); + mesh_mirrtopo_table(NULL, 'e'); + + BMEdit_Free(em); } void EDBM_index_arrays_init(BMEditMesh *tm, int forvert, int foredge, int forface) @@ -547,7 +556,7 @@ static void undoMesh_to_editbtMesh(void *umv, void *em_v, void *UNUSED(obdata)) ob->shapenr = em->bm->shapenr; - BMEdit_Free(em); + EDBM_mesh_free(em); bm = BM_mesh_create(&bm_mesh_allocsize_default); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 7e8c38c9abc..4b4fef53275 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -314,7 +314,8 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); + kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); + RNA_boolean_set(kmi->ptr, "use_beauty", TRUE); kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "use_beauty", FALSE); diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 09e7d1d9be5..fb383b1256b 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -39,11 +39,6 @@ #include "DNA_object_types.h" #include "DNA_modifier_types.h" -/* #include "BLO_sys_types.h" *//* needed for intptr_t used in ED_mesh.h */ - -/* #include "ED_mesh.h" */ - - #ifdef RNA_RUNTIME #include "BLI_math.h" diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c index e47ec23bef5..20ceaec8974 100644 --- a/source/blender/makesrna/intern/rna_sequencer_api.c +++ b/source/blender/makesrna/intern/rna_sequencer_api.c @@ -31,9 +31,6 @@ #include #include "RNA_define.h" - -#include "BLO_sys_types.h" /* needed for intptr_t used in ED_mesh.h */ - #include "RNA_access.h" #include "RNA_define.h" From bb17a6b8f86e47c53e4a050202ea0c502c254368 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 06:37:16 +0000 Subject: [PATCH 037/158] fix [#31064] Save confirmation stops showing also comment unused functions. --- source/blender/editors/include/ED_view3d.h | 3 +++ .../editors/space_view3d/view3d_view.c | 3 +++ .../windowmanager/intern/wm_operators.c | 26 +++++++++---------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 98220ff324e..f886c01039e 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -311,8 +311,11 @@ void ED_view3D_background_image_remove(struct View3D *v3d, struct BGpic *bgpic); void ED_view3D_background_image_clear(struct View3D *v3d); /* view matrix properties utilities */ +/* unused */ +#if 0 void ED_view3d_operator_properties_viewmat(struct wmOperatorType *ot); void ED_view3d_operator_properties_viewmat_set(struct bContext *C, struct wmOperator *op); void ED_view3d_operator_properties_viewmat_get(struct wmOperator *op, int *winx, int *winy, float persmat[4][4]); +#endif #endif /* __ED_VIEW3D_H__ */ diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 6407f91aefc..c40478f440e 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1871,6 +1871,8 @@ float ED_view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]) /* view matrix properties utilities */ +/* unused */ +#if 0 void ED_view3d_operator_properties_viewmat(wmOperatorType *ot) { PropertyRNA *prop; @@ -1907,3 +1909,4 @@ void ED_view3d_operator_properties_viewmat_get(wmOperator *op, int *winx, int *w RNA_float_get_array(op->ptr, "perspective_matrix", (float *)persmat); } +#endif diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 6f140b5c8b6..b38fa4b58ea 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -836,40 +836,40 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, if (action == FILE_SAVE) { prop = RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files"); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } prop = RNA_def_boolean(ot->srna, "filter_blender", (filter & BLENDERFILE), "Filter .blend files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_image", (filter & IMAGEFILE), "Filter image files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_movie", (filter & MOVIEFILE), "Filter movie files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_python", (filter & PYSCRIPTFILE), "Filter python files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_font", (filter & FTFONTFILE), "Filter font files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_sound", (filter & SOUNDFILE), "Filter sound files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_text", (filter & TEXTFILE), "Filter text files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_btx", (filter & BTXFILE), "Filter btx files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_collada", (filter & COLLADAFILE), "Filter COLLADA files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "filter_folder", (filter & FOLDERFILE), "Filter folders", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_int(ot->srna, "filemode", type, FILE_LOADLIB, FILE_SPECIAL, "File Browser Mode", "The setting for the file browser mode to load a .blend file, a library or a special file", FILE_LOADLIB, FILE_SPECIAL); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); if (flag & WM_FILESEL_RELPATH) RNA_def_boolean(ot->srna, "relative_path", TRUE, "Relative Path", "Select the file relative to the blend file"); prop = RNA_def_enum(ot->srna, "display_type", file_display_items, display, "Display Type", ""); - RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } void WM_operator_properties_select_all(wmOperatorType *ot) From f9ab956d53f7eabe3dbcd90431601a6d9326ed9d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 07:26:08 +0000 Subject: [PATCH 038/158] py api: bpy.data.scenes.tag() was missing. --- source/blender/makesrna/intern/rna_main_api.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index a0d3cdef9eb..10a45fbb94d 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -90,11 +90,6 @@ #include "ED_screen.h" -Tex *rna_Main_add_texture(Main *UNUSED(bmain), const char *name) -{ - return add_texture(name); -} - Camera *rna_Main_cameras_new(Main *UNUSED(bmain), const char *name) { ID *id = add_camera(name); @@ -681,6 +676,10 @@ void RNA_def_main_scenes(BlenderRNA *brna, PropertyRNA *cprop) parm = RNA_def_pointer(func, "scene", "Scene", "", "Scene to remove"); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL); + func = RNA_def_function(srna, "tag", "rna_Main_scenes_tag"); + parm = RNA_def_boolean(func, "value", 0, "Value", ""); + RNA_def_property_flag(parm, PROP_REQUIRED); + prop = RNA_def_property(srna, "is_updated", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_boolean_funcs(prop, "rna_Main_scenes_is_updated_get", NULL); From ceffa6e1fab2b4b1388458bcf7c735e2783f90d8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 07:32:13 +0000 Subject: [PATCH 039/158] code cleanup: comment unused functions (removed one which isnt useful anymore). --- source/blender/blenkernel/intern/depsgraph.c | 2 ++ source/blender/blenkernel/intern/library.c | 2 ++ source/blender/blenkernel/intern/material.c | 4 ++-- source/blender/blenkernel/intern/particle.c | 4 ++++ source/blender/blenkernel/intern/texture.c | 3 ++- source/blender/editors/include/BIF_glutil.h | 4 ++-- source/blender/editors/screen/glutil.c | 9 +++++++-- .../editors/space_sequencer/sequencer_edit.c | 2 ++ source/blender/editors/space_view3d/view3d_view.c | 2 +- source/blender/editors/util/ed_util.c | 4 ++-- source/blender/editors/uvedit/uvedit_ops.c | 15 --------------- source/blender/makesrna/RNA_enum_types.h | 2 +- .../blender/windowmanager/intern/wm_operators.c | 2 ++ 13 files changed, 29 insertions(+), 26 deletions(-) diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 574c2842144..aa6d42977ca 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1579,6 +1579,7 @@ struct DagNodeQueue *get_all_childs(struct DagForest *dag, void *ob) } /* unused */ +#if 0 short are_obs_related(struct DagForest *dag, void *ob1, void *ob2) { DagNode * node; @@ -1595,6 +1596,7 @@ short are_obs_related(struct DagForest *dag, void *ob1, void *ob2) } return DAG_NO_RELATION; } +#endif int is_acyclic( DagForest *dag) { diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 0506d606607..7e756e853b1 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -1055,6 +1055,7 @@ void IDnames_to_pupstring(const char **str, const char *title, const char *extra } /* skips viewer images */ +#if 0 /* unused */ void IMAnames_to_pupstring(const char **str, const char *title, const char *extraops, ListBase *lb, ID *link, short *nr) { DynStr *pupds= BLI_dynstr_new(); @@ -1075,6 +1076,7 @@ void IMAnames_to_pupstring(const char **str, const char *title, const char *extr *str= BLI_dynstr_get_cstring(pupds); BLI_dynstr_free(pupds); } +#endif void id_sort_by_name(ListBase *lb, ID *id) { diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index f7351887b55..6d44282c60a 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -1052,7 +1052,7 @@ int material_in_material(Material *parmat, Material *mat) } /* ****************** */ - +#if 0 /* UNUSED */ static char colname_array[125][20]= { "Black","DarkRed","HalfRed","Red","Red", "DarkGreen","DarkOlive","Brown","Chocolate","OrangeRed", @@ -1098,7 +1098,7 @@ void automatname(Material *ma) new_id(&G.main->mat, (ID *)ma, colname_array[nr]); } - +#endif int object_remove_material_slot(Object *ob) { diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 414677bfc6e..a154a1f8926 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -201,6 +201,8 @@ void psys_set_current_num(Object *ob, int index) psys->flag &= ~PSYS_CURRENT; } } + +#if 0 /* UNUSED */ Object *psys_find_object(Scene *scene, ParticleSystem *psys) { Base *base; @@ -215,6 +217,8 @@ Object *psys_find_object(Scene *scene, ParticleSystem *psys) return NULL; } +#endif + Object *psys_get_lattice(ParticleSimulationData *sim) { Object *lattice=NULL; diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 3f40c2bd429..23d818369a2 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -1052,7 +1052,7 @@ void make_local_texture(Tex *tex) } /* ------------------------------------------------------------------------- */ - +#if 0 /* UNUSED */ void autotexname(Tex *tex) { Main *bmain= G.main; @@ -1082,6 +1082,7 @@ void autotexname(Tex *tex) else new_id(&bmain->tex, (ID *)tex, texstr[tex->type]); } } +#endif /* ------------------------------------------------------------------------- */ diff --git a/source/blender/editors/include/BIF_glutil.h b/source/blender/editors/include/BIF_glutil.h index ade34c43eec..44195988c40 100644 --- a/source/blender/editors/include/BIF_glutil.h +++ b/source/blender/editors/include/BIF_glutil.h @@ -198,12 +198,12 @@ void gla2DSetMap(gla2DDrawInfo *di, struct rctf *rect); /* use this for platform hacks. glPointSize is solved here */ void bglBegin(int mode); void bglEnd(void); -int bglPointHack(void); +// int bglPointHack(void); /* UNUSED */ void bglVertex3fv(const float vec[3]); void bglVertex3f(float x, float y, float z); void bglVertex2fv(const float vec[2]); /* intel gfx cards frontbuffer problem */ -void bglFlush(void); +// void bglFlush(void); /* UNUSED */ void set_inverted_drawing(int enable); void setlinestyle(int nr); diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 66abbaecbe7..5ba0e86e0c1 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -690,6 +690,8 @@ void glaDefine2DArea(rcti *screen_rect) glLoadIdentity(); } +#if 0 /* UNUSED */ + struct gla2DDrawInfo { int orig_vp[4], orig_sc[4]; float orig_projmat[16], orig_viewmat[16]; @@ -721,7 +723,6 @@ void gla2DSetMap(gla2DDrawInfo *di, rctf *rect) di->wo_to_sc[1]= sc_h/wo_h; } - gla2DDrawInfo *glaBegin2DDraw(rcti *screen_rect, rctf *world_rect) { gla2DDrawInfo *di= MEM_mallocN(sizeof(*di), "gla2DDrawInfo"); @@ -779,6 +780,7 @@ void glaEnd2DDraw(gla2DDrawInfo *di) MEM_freeN(di); } +#endif /* **************** glPoint hack ************************ */ @@ -805,6 +807,7 @@ void bglBegin(int mode) } } +#if 0 /* UNUSED */ int bglPointHack(void) { float value[4]; @@ -818,6 +821,7 @@ int bglPointHack(void) } return 0; } +#endif void bglVertex3fv(const float vec[3]) { @@ -927,6 +931,7 @@ void bglPolygonOffset(float viewdist, float dist) } } +#if 0 /* UNUSED */ void bglFlush(void) { glFlush(); @@ -935,4 +940,4 @@ void bglFlush(void) // XXX myswapbuffers(); //hack to get mac intel graphics to show frontbuffer #endif } - +#endif diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 38183ac52c7..bd306f2d646 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1003,11 +1003,13 @@ int sequencer_edit_poll(bContext *C) return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL); } +#if 0 /* UNUSED */ int sequencer_strip_poll(bContext *C) { Editing *ed; return (((ed = seq_give_editing(CTX_data_scene(C), FALSE)) != NULL) && (ed->act_seq != NULL)); } +#endif int sequencer_strip_has_path_poll(bContext *C) { diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index c40478f440e..8a0cb4b597b 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1826,7 +1826,7 @@ void VIEW3D_OT_game_start(wmOperatorType *ot) /* ************************************** */ -void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, float vec[3]) +static void UNUSED_FUNCTION(view3d_align_axis_to_vector)(View3D *v3d, RegionView3D *rv3d, int axisidx, float vec[3]) { float alignaxis[3] = {0.0, 0.0, 0.0}; float norm[3], axis[3], angle, new_quat[4]; diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 5dce3d0a2fa..6d9f2732d8a 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -149,7 +149,7 @@ void apply_keyb_grid(int shift, int ctrl, float *val, float fac1, float fac2, fl } } - +#if 0 /* UNUSED */ int GetButStringLength(const char *str) { int rt; @@ -158,7 +158,7 @@ int GetButStringLength(const char *str) return rt + 15; } - +#endif void unpack_menu(bContext *C, const char *opname, const char *id_name, const char *abs_name, const char *folder, struct PackedFile *pf) { diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index a53a42b616b..c08093e09ee 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -569,21 +569,6 @@ void poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, } } -void uv_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy) -{ - uv[0][0] = uv_orig[0][0] * aspx; - uv[0][1] = uv_orig[0][1] * aspy; - - uv[1][0] = uv_orig[1][0] * aspx; - uv[1][1] = uv_orig[1][1] * aspy; - - uv[2][0] = uv_orig[2][0] * aspx; - uv[2][1] = uv_orig[2][1] * aspy; - - uv[3][0] = uv_orig[3][0] * aspx; - uv[3][1] = uv_orig[3][1] * aspy; -} - int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float *max) { BMEditMesh *em = BMEdit_FromObject(obedit); diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index b544c59a403..afa6a6e9608 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -129,7 +129,7 @@ EnumPropertyItem *rna_Actuator_type_itemf(struct bContext *C, struct PointerRNA /* Generic functions, return an enum from library data, index is the position * in the linked list can add more for different types as needed */ EnumPropertyItem *RNA_action_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); -EnumPropertyItem *RNA_action_local_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); +// EnumPropertyItem *RNA_action_local_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); EnumPropertyItem *RNA_group_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); EnumPropertyItem *RNA_group_local_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); EnumPropertyItem *RNA_image_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int *free); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index b38fa4b58ea..c9306f6dcf7 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -4003,10 +4003,12 @@ EnumPropertyItem *RNA_action_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *UN { return rna_id_itemf(C, ptr, do_free, C ? (ID *)CTX_data_main(C)->action.first : NULL, FALSE); } +#if 0 /* UNUSED */ EnumPropertyItem *RNA_action_local_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *do_free) { return rna_id_itemf(C, ptr, do_free, C ? (ID *)CTX_data_main(C)->action.first : NULL, TRUE); } +#endif EnumPropertyItem *RNA_group_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *do_free) { From b9a2741f68c46fdf86d19eef845b803f9e96b1d9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 08:05:02 +0000 Subject: [PATCH 040/158] code cleanup: remove unused defines --- source/blender/blenkernel/BKE_armature.h | 1 - source/blender/imbuf/intern/util.c | 7 ++++-- source/blender/makesdna/DNA_scene_types.h | 4 ---- .../Converter/BL_BlenderDataConversion.cpp | 4 ---- .../Converter/KX_BlenderSceneConverter.cpp | 24 +++---------------- .../gameengine/Ketsji/KX_PhysicsEngineEnums.h | 6 +---- 6 files changed, 9 insertions(+), 37 deletions(-) diff --git a/source/blender/blenkernel/BKE_armature.h b/source/blender/blenkernel/BKE_armature.h index e4802cfa37f..1334528c035 100644 --- a/source/blender/blenkernel/BKE_armature.h +++ b/source/blender/blenkernel/BKE_armature.h @@ -136,7 +136,6 @@ Mat4 *b_bone_spline_setup(struct bPoseChannel *pchan, int rest); /* like EBONE_VISIBLE */ #define PBONE_VISIBLE(arm, bone) (((bone)->layer & (arm)->layer) && !((bone)->flag & BONE_HIDDEN_P)) -#define _BONE_VISIBLE(arm, bone) (((bone)->layer & (arm)->layer) && !((bone)->flag & BONE_HIDDEN_P)) #ifdef __cplusplus } diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c index 85a2fd3dd91..b5fdb897d14 100644 --- a/source/blender/imbuf/intern/util.c +++ b/source/blender/imbuf/intern/util.c @@ -362,8 +362,11 @@ int imb_get_anim_type(const char * name) if (isredcode(name)) return (ANIM_REDCODE); #endif type = IMB_ispic(name); - if (type) return(ANIM_SEQUENCE); - return(0); + if (type) { + return ANIM_SEQUENCE; + } + + return ANIM_NONE; } int IMB_isanim(const char *filename) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 817ebaf8012..e21ca52ecb3 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -640,10 +640,6 @@ typedef struct GameData { /* physicsEngine */ #define WOPHY_NONE 0 -#define WOPHY_ENJI 1 -#define WOPHY_SUMO 2 -#define WOPHY_DYNAMO 3 -#define WOPHY_ODE 4 #define WOPHY_BULLET 5 /* obstacleSimulation */ diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 4c7170c4c9e..382165065af 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1839,10 +1839,6 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, break; #endif - case UseDynamo: - //KX_ConvertDynamoObject(gameobj,meshobj,kxscene,shapeprops, smmaterial, &objprop); - break; - case UseNone: default: break; diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp index bbb990462bd..df6be142b30 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp @@ -308,25 +308,11 @@ void KX_BlenderSceneConverter::ConvertScene(class KX_Scene* destinationscene, useDbvtCulling = (blenderscene->gm.mode & WO_DBVT_CULLING) != 0; break; } - - case WOPHY_ODE: - { - physics_engine = UseODE; - break; - } - case WOPHY_DYNAMO: - { - physics_engine = UseDynamo; - break; - } - case WOPHY_SUMO: - { - physics_engine = UseSumo; - break; - } + default: case WOPHY_NONE: { physics_engine = UseNone; + break; } } } @@ -352,11 +338,7 @@ void KX_BlenderSceneConverter::ConvertScene(class KX_Scene* destinationscene, destinationscene->SetPhysicsEnvironment(ccdPhysEnv); break; } -#endif - case UseDynamo: - { - } - +#endif default: case UseNone: physics_engine = UseNone; diff --git a/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h b/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h index f20bab578d1..5cebedf8c30 100644 --- a/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h +++ b/source/gameengine/Ketsji/KX_PhysicsEngineEnums.h @@ -36,11 +36,7 @@ enum e_PhysicsEngine { NoSelection = -1, UseNone = 0, - UseEnji = 1, - UseSumo = 2, - UseDynamo = 3, - UseODE = 4, - UseBullet = 5, + UseBullet = 5, }; #endif //__KX_PHYSICSENGINEENUMS_H__ From b57861e90b613e59dde539e0799e6ab03f61446a Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 23 Apr 2012 08:24:03 +0000 Subject: [PATCH 041/158] i18n: Re-enabling uk_UA, as we are going to have a nice mo in upcomming update. --- source/blender/makesrna/intern/rna_userdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 2b62b459b6e..ae236da6952 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2896,7 +2896,7 @@ static void rna_def_userdef_system(BlenderRNA *brna) {28, "SERBIAN_LATIN", 0, "Serbian latin (Srpski latinica)", "sr_RS@latin"}, { 7, "SWEDISH", 0, "Swedish (Svenska)", "sv_SE"}, {30, "TURKISH", 0, "Turkish (Türkçe)", "tr_TR"}, -/* {18, "UKRAINIAN", 0, "Ukrainian (Український)", "uk_UA"},*/ /* XXX No po's yet. */ + {18, "UKRAINIAN", 0, "Ukrainian (Український)", "uk_UA"}, { 0, NULL, 0, NULL, NULL}}; #ifdef WITH_CYCLES From 7eaf3eb58e83203c3fccb80dfb3f579c2cfe5b75 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 09:17:37 +0000 Subject: [PATCH 042/158] fix [#30937] Pose UI hack needed to be undone, alternate fix is needed. rather then assigning the enum, default to the active pose when the property isnt set. --- .../startup/bl_ui/properties_data_armature.py | 2 +- source/blender/editors/armature/poselib.c | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index b94af13af7e..08529a0423d 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -204,7 +204,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): pose_marker_active = poselib.pose_markers.active if pose_marker_active is not None: - col.operator("poselib.pose_remove", icon='ZOOMOUT', text="").pose = pose_marker_active.name + col.operator("poselib.pose_remove", icon='ZOOMOUT', text="") col.operator("poselib.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index col.operator("poselib.action_sanitise", icon='HELP', text="") # XXX: put in menu? diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index fbe05d7ef49..381423182f9 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -516,7 +516,7 @@ static EnumPropertyItem *poselib_stored_pose_itemf(bContext *C, PointerRNA *UNUS int i= 0; if (C == NULL) { - return DummyRNA_DEFAULT_items; + return DummyRNA_NULL_items; } /* check that the action exists */ @@ -541,18 +541,28 @@ static int poselib_remove_exec (bContext *C, wmOperator *op) Object *ob= get_poselib_object(C); bAction *act= (ob) ? ob->poselib : NULL; TimeMarker *marker; + int marker_index; FCurve *fcu; - + PropertyRNA *prop; + /* check if valid poselib */ if (act == NULL) { BKE_report(op->reports, RPT_ERROR, "Object doesn't have PoseLib data"); return OPERATOR_CANCELLED; } - + + prop = RNA_struct_find_property(op->ptr, "pose"); + if (RNA_property_is_set(op->ptr, prop)) { + marker_index = RNA_property_enum_get(op->ptr, prop); + } + else { + marker_index = act->active_marker - 1; + } + /* get index (and pointer) of pose to remove */ - marker= BLI_findlink(&act->markers, RNA_enum_get(op->ptr, "pose")); + marker = BLI_findlink(&act->markers, marker_index); if (marker == NULL) { - BKE_reportf(op->reports, RPT_ERROR, "Invalid Pose specified %d", RNA_int_get(op->ptr, "pose")); + BKE_reportf(op->reports, RPT_ERROR, "Invalid Pose specified %d", marker_index); return OPERATOR_CANCELLED; } @@ -605,8 +615,8 @@ void POSELIB_OT_pose_remove (wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "pose", DummyRNA_DEFAULT_items, 0, "Pose", "The pose to remove"); - RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); + prop = RNA_def_enum(ot->srna, "pose", DummyRNA_NULL_items, 0, "Pose", "The pose to remove"); + RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); ot->prop = prop; } From aa09c5750e71602ef661ce588d63aae4ca6efcfe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 11:19:39 +0000 Subject: [PATCH 043/158] add spacebar to confirm knife cut, space confirms - enter isnt so handy, This is consistent with fly mode and grab. --- source/blender/editors/mesh/editmesh_knife.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index 11c19af4914..13425ad8b9c 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2918,6 +2918,7 @@ wmKeyMap *knifetool_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, KNF_MODAL_CANCEL); WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); + WM_modalkeymap_add_item(keymap, SPACEKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, EKEY, KM_PRESS, 0, 0, KNF_MODAL_NEW_CUT); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_MIDPOINT_ON); From f665c3cb00ed39b4cb1a50dd32f8facaf647039e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 11:36:40 +0000 Subject: [PATCH 044/158] py/rna api: remove selection and pin variable for texture faces - this is now stored in the loops. --- source/blender/makesrna/intern/rna_mesh.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index d5e79ab971c..0ecfa311913 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1692,6 +1692,8 @@ static void rna_def_mtface(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Image", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); + /* these are for editing only, access at loops now */ +#if 0 prop = RNA_def_property(srna, "select_uv", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", TF_SEL1); RNA_def_property_array(prop, 4); @@ -1703,6 +1705,7 @@ static void rna_def_mtface(BlenderRNA *brna) RNA_def_property_array(prop, 4); RNA_def_property_ui_text(prop, "UV Pinned", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); +#endif prop = RNA_def_property(srna, "uv1", PROP_FLOAT, PROP_XYZ); RNA_def_property_array(prop, 2); @@ -1801,13 +1804,13 @@ static void rna_def_mtexpoly(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Image", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); +#if 0 /* moved to MeshUVLoopLayer */ prop = RNA_def_property(srna, "select_uv", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", TF_SEL1); RNA_def_property_array(prop, 4); RNA_def_property_ui_text(prop, "UV Selected", ""); RNA_def_property_update(prop, 0, "rna_Mesh_update_select"); -#if 0 /* moved to MeshUVLoopLayer */ prop = RNA_def_property(srna, "pin_uv", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "unwrap", TF_PIN1); RNA_def_property_array(prop, 4); From 4c873fec536bcb9c520b77265772281f939e27ba Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 14:52:28 +0000 Subject: [PATCH 045/158] bmesh py api: functions to add/renmove customdata layers, eg. bm.loops.layers.color.new("Testing") --- source/blender/editors/mesh/editmesh_tools.c | 2 +- .../python/bmesh/bmesh_py_types_customdata.c | 86 +++++++++++++++++-- 2 files changed, 80 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 67f387946d5..005947ce49b 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -4266,7 +4266,7 @@ void MESH_OT_inset(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - RNA_def_boolean(ot->srna, "use_boundary", TRUE, "Boundary", "Inset face boundries"); + RNA_def_boolean(ot->srna, "use_boundary", TRUE, "Boundary", "Inset face boundaries"); RNA_def_boolean(ot->srna, "use_even_offset", TRUE, "Offset Even", "Scale the offset to give more even thickness"); RNA_def_boolean(ot->srna, "use_relative_offset", FALSE, "Offset Relative", "Scale the offset by surrounding geometry"); diff --git a/source/blender/python/bmesh/bmesh_py_types_customdata.c b/source/blender/python/bmesh/bmesh_py_types_customdata.c index 5d9c07269e8..28252a98cf6 100644 --- a/source/blender/python/bmesh/bmesh_py_types_customdata.c +++ b/source/blender/python/bmesh/bmesh_py_types_customdata.c @@ -216,6 +216,82 @@ static PyGetSetDef bpy_bmlayeritem_getseters[] = { /* BMLayerCollection * ----------------- */ + +PyDoc_STRVAR(bpy_bmlayercollection_new_doc, +".. method:: new(name)\n" +"\n" +" Create a new layer\n" +"\n" +" :arg name: Optional name argument (will be made unique).\n" +" :type name: string\n" +" :return: The newly created layer.\n" +" :rtype: :class:`BMLayerItem`\n" +); +static PyObject *bpy_bmlayercollection_new(BPy_BMLayerCollection *self, PyObject *args) +{ + const char *name = NULL; + int index; + CustomData *data; + + BPY_BM_CHECK_OBJ(self); + + if (!PyArg_ParseTuple(args, "|s:new", &name)) { + return NULL; + } + + data = bpy_bm_customdata_get(self->bm, self->htype); + + if (name) { + BM_data_layer_add_named(self->bm, data, self->type, name); + } + else { + BM_data_layer_add(self->bm, data, self->type); + } + + index = CustomData_number_of_layers(data, self->type) - 1; + BLI_assert(index >= 0); + + return BPy_BMLayerItem_CreatePyObject(self->bm, self->htype, self->type, index); +} + +PyDoc_STRVAR(bpy_bmlayercollection_remove_doc, +".. method:: remove(layer)\n" +"\n" +" Remove a layer\n" +"\n" +" :arg layer: The layer to remove.\n" +" :type layer: :class:`BMLayerItem`\n" +); +static PyObject *bpy_bmlayercollection_remove(BPy_BMLayerCollection *self, BPy_BMLayerItem *value) +{ + CustomData *data; + + BPY_BM_CHECK_OBJ(self); + + if (!BPy_BMLayerItem_Check(value)) { + PyErr_Format(PyExc_TypeError, + "layers.remove(x): expected BMLayerItem, not '%.200s'", + Py_TYPE(value)->tp_name); + return NULL; + } + + BPY_BM_CHECK_OBJ(value); + + if ((self->bm != value->bm) || + (self->type != value->type) || + (self->htype != value->htype)) + { + PyErr_SetString(PyExc_ValueError, + "layers.remove(x): x not in layers"); + } + + data = bpy_bm_customdata_get(self->bm, self->htype); + BM_data_layer_free_n(self->bm, data, self->type, value->index); + + Py_RETURN_NONE; +} + + PyDoc_STRVAR(bpy_bmlayercollection_keys_doc, ".. method:: keys()\n" "\n" @@ -361,17 +437,13 @@ static PyObject *bpy_bmlayercollection_get(BPy_BMLayerCollection *self, PyObject } static struct PyMethodDef bpy_bmelemseq_methods[] = { + {"new", (PyCFunction)bpy_bmlayercollection_new, METH_VARARGS, bpy_bmlayercollection_new_doc}, + {"remove", (PyCFunction)bpy_bmlayercollection_remove, METH_O, bpy_bmlayercollection_remove_doc}, + {"keys", (PyCFunction)bpy_bmlayercollection_keys, METH_NOARGS, bpy_bmlayercollection_keys_doc}, {"values", (PyCFunction)bpy_bmlayercollection_values, METH_NOARGS, bpy_bmlayercollection_values_doc}, {"items", (PyCFunction)bpy_bmlayercollection_items, METH_NOARGS, bpy_bmlayercollection_items_doc}, {"get", (PyCFunction)bpy_bmlayercollection_get, METH_VARARGS, bpy_bmlayercollection_get_doc}, - - /* for later! */ -#if 0 - - {"new", (PyCFunction)bpy_bmlayercollection_new, METH_O, bpy_bmlayercollection_new_doc}, - {"remove", (PyCFunction)bpy_bmlayercollection_new, METH_O, bpy_bmlayercollection_remove_doc}, -#endif {NULL, NULL, 0, NULL} }; From cb91c5d7b264bb96f3772e83cccd58c0fa7319f1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 14:57:47 +0000 Subject: [PATCH 046/158] rip was incorrectly giving an error when ripping a vertex from a face fan (own mistake). --- source/blender/editors/mesh/editmesh_rip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 42857bd7270..84e9b0658ed 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -726,7 +726,7 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, wmEvent *event) EDBM_selectmode_flush(em); - if (totedge_orig == bm->totedge) { + if ((singlesel == FALSE) && (totedge_orig == bm->totedge)) { BKE_report(op->reports, RPT_ERROR, "No edges could be ripped"); return OPERATOR_CANCELLED; } From eff325a98c0765ca9045766cbf790ecdffdf0451 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 15:18:12 +0000 Subject: [PATCH 047/158] minor changes to rip internals - check if vertex ripping has no effect. - no need to flush selection for vertex rip. --- source/blender/editors/mesh/editmesh_rip.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 84e9b0658ed..2380efc818b 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -372,6 +372,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) BMLoop *l; BMEdge *e, *e2; BMVert *v, *ripvert = NULL; + const int totvert_orig = bm->totvert; int i; float projectMat[4][4], fmval[3] = {event->mval[0], event->mval[1]}; float dist = FLT_MAX; @@ -573,6 +574,11 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) } } + if (totvert_orig == bm->totvert) { + BKE_report(op->reports, RPT_ERROR, "No vertices could be ripped"); + return OPERATOR_CANCELLED; + } + return OPERATOR_FINISHED; } @@ -590,6 +596,7 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) BMLoop *l; BMEdge *e, *e2; BMVert *v; + const int totedge_orig = bm->totedge; int i; float projectMat[4][4], fmval[3] = {event->mval[0], event->mval[1]}; @@ -671,6 +678,12 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) ar, projectMat, fmval); MEM_freeN(eloop_pairs); + if (totedge_orig == bm->totedge) { + BKE_report(op->reports, RPT_ERROR, "No edges could be ripped"); + return OPERATOR_CANCELLED; + } + + EDBM_selectmode_flush(em); return OPERATOR_FINISHED; } @@ -684,7 +697,6 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, wmEvent *event) BMIter iter; BMEdge *e; int singlesel = (bm->totvertsel == 1 && bm->totedgesel == 0 && bm->totfacesel == 0); - const int totedge_orig = bm->totedge; int ret; /* running in face mode hardly makes sense, so convert to region loop and rip */ @@ -724,13 +736,6 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_CANCELLED; } - EDBM_selectmode_flush(em); - - if ((singlesel == FALSE) && (totedge_orig == bm->totedge)) { - BKE_report(op->reports, RPT_ERROR, "No edges could be ripped"); - return OPERATOR_CANCELLED; - } - BLI_assert(singlesel ? (bm->totvertsel > 0) : (bm->totedgesel > 0)); if (bm->totvertsel == 0) { From cccd4b72e5ca172035a87d24ca6809c828a5e49b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 15:26:06 +0000 Subject: [PATCH 048/158] fix memory leak in rip tool (again own fault). --- source/blender/editors/mesh/editmesh_rip.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 2380efc818b..caf44987f54 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -433,9 +433,13 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) int vout_len; BM_vert_select_set(bm, v, FALSE); - bmesh_vert_separate(bm, v, &vout, &vout_len); - if (vout_len < 2) { + if (bmesh_vert_separate(bm, v, &vout, &vout_len) == FALSE) { + BKE_report(op->reports, RPT_ERROR, "Error ripping vertex from faces"); + return OPERATOR_CANCELLED; + } + else if (vout_len < 2) { + MEM_freeN(vout); /* set selection back to avoid active-unselected vertex */ BM_vert_select_set(bm, v, TRUE); /* should never happen */ From f7a59fd1cf8cc732ad86ab2502dbe152cde1675d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 15:35:07 +0000 Subject: [PATCH 049/158] rip tool again (this in infact an old bug), when selecting an edge to extend the splitting to, dont step over manifold edges. - would result in duplicate edges. --- source/blender/editors/mesh/editmesh_rip.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index caf44987f54..15e77458e5e 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -652,11 +652,15 @@ static int edbm_rip_invoke__edge(bContext *C, wmOperator *op, wmEvent *event) edbm_rip_edge_side_measure(e2, l_b, ar, projectMat, fmval)) ? l_a : l_b; l = BM_face_other_edge_loop(l->f, e2, v); - l = l->radial_next; - l = BM_face_other_edge_loop(l->f, l->e, v); + /* important edge is manifold else we can be attempting to split off a fan that don't budge, + * not crashing but adds duplicate edge. */ + if (BM_edge_is_manifold(l->e)) { + l = l->radial_next; + l = BM_face_other_edge_loop(l->f, l->e, v); - if (l) { - BM_elem_flag_enable(l->e, BM_ELEM_TAG); + if (l) { + BM_elem_flag_enable(l->e, BM_ELEM_TAG); + } } } else { From 9d40c3046b12096dfcc2c98b9972b6e7fb51eb57 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 23 Apr 2012 15:51:25 +0000 Subject: [PATCH 050/158] Fix #31072: Making texture single user was modifying textures of original material --- source/blender/editors/object/object_relations.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index be26007e25a..a666f04034b 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1569,7 +1569,7 @@ static void single_mat_users(Scene *scene, int flag, int do_textures) tex->id.us--; tex= copy_texture(tex); BKE_copy_animdata_id_action(&tex->id); - ma->mtex[b]->tex= tex; + man->mtex[b]->tex= tex; } } } From bfcdd452455f5075cd3150623f513bb9f70e4876 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 15:54:43 +0000 Subject: [PATCH 051/158] corrections from an article about using PVS-Studio static checker with blender - http://www.viva64.com/en/b/0145/ --- source/blender/editors/interface/interface_layout.c | 2 +- source/blender/editors/render/render_preview.c | 2 +- source/blender/makesrna/intern/rna_object.c | 2 +- source/blender/python/bmesh/bmesh_py_types_customdata.c | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index e772d98f860..67e295503c2 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -2414,7 +2414,7 @@ float uiLayoutGetScaleX(uiLayout *layout) float uiLayoutGetScaleY(uiLayout *layout) { - return layout->scale[0]; + return layout->scale[1]; } /********************** Layout *******************/ diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 230917519e3..9899f39de75 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -358,7 +358,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre if (OB_TYPE_SUPPORT_MATERIAL(base->object->type)) { /* don't use assign_material, it changed mat->id.us, which shows in the UI */ Material ***matar = give_matarar(base->object); - int actcol = MAX2(base->object->actcol > 0, 1) - 1; + int actcol = MAX2(base->object->actcol - 1, 0); if (matar && actcol < base->object->totcol) (*matar)[actcol] = mat; diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 12d31b0a115..bd024ba90be 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -603,7 +603,7 @@ void rna_object_vcollayer_name_set(PointerRNA *ptr, const char *value, char *res static int rna_Object_active_material_index_get(PointerRNA *ptr) { Object *ob = (Object*)ptr->id.data; - return MAX2(ob->actcol-1, 0); + return MAX2(ob->actcol - 1, 0); } static void rna_Object_active_material_index_set(PointerRNA *ptr, int value) diff --git a/source/blender/python/bmesh/bmesh_py_types_customdata.c b/source/blender/python/bmesh/bmesh_py_types_customdata.c index 28252a98cf6..91104fb23f5 100644 --- a/source/blender/python/bmesh/bmesh_py_types_customdata.c +++ b/source/blender/python/bmesh/bmesh_py_types_customdata.c @@ -511,8 +511,8 @@ static PyObject *bpy_bmlayercollection_subscript_slice(BPy_BMLayerCollection *se BPY_BM_CHECK_OBJ(self); - if (start >= start) start = len - 1; - if (stop >= stop) stop = len - 1; + if (start >= len) start = len - 1; + if (stop >= len) stop = len - 1; tuple = PyTuple_New(stop - start); From b8c4c54ff0a0d2315b711612238192ca4c4562f5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 16:29:13 +0000 Subject: [PATCH 052/158] corrected more issues from [#31069] Analyzing the Blender project with PVS-Studio --- .../blender/blenkernel/intern/dynamicpaint.c | 6 ++--- source/blender/blenkernel/intern/ipo.c | 24 +++++++++---------- .../editors/space_view3d/view3d_draw.c | 2 +- .../render/intern/source/convertblender.c | 5 ++-- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index 943c8a20990..9ce4d68eeed 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -1577,14 +1577,14 @@ static struct DerivedMesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData if (pmd->canvas && !(pmd->canvas->flags & MOD_DPAINT_BAKING)) { - DynamicPaintSurface *surface = pmd->canvas->surfaces.first; + DynamicPaintSurface *surface; int update_normals = 0; /* loop through surfaces */ - for (; surface; surface=surface->next) { + for (surface = pmd->canvas->surfaces.first; surface; surface=surface->next) { PaintSurfaceData *sData = surface->data; - if (surface && surface->format != MOD_DPAINT_SURFACE_F_IMAGESEQ && sData) { + if (surface->format != MOD_DPAINT_SURFACE_F_IMAGESEQ && sData) { if (!(surface->flags & (MOD_DPAINT_ACTIVE))) continue; /* process vertex surface previews */ diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index c1b5d07de4a..2fd1d291363 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -1105,20 +1105,18 @@ static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, c /* get the group to use */ agrp= action_groups_find_named(&tmp_act, grpname); + /* no matching group, so add one */ if (agrp == NULL) { - /* no matching group, so add one */ - if (agrp == NULL) { - /* Add a new group, and make it active */ - agrp= MEM_callocN(sizeof(bActionGroup), "bActionGroup"); - - agrp->flag = AGRP_SELECTED; - if (muteipo) agrp->flag |= AGRP_MUTED; - - BLI_strncpy(agrp->name, grpname, sizeof(agrp->name)); - - BLI_addtail(&tmp_act.groups, agrp); - BLI_uniquename(&tmp_act.groups, agrp, "Group", '.', offsetof(bActionGroup, name), sizeof(agrp->name)); - } + /* Add a new group, and make it active */ + agrp= MEM_callocN(sizeof(bActionGroup), "bActionGroup"); + + agrp->flag = AGRP_SELECTED; + if (muteipo) agrp->flag |= AGRP_MUTED; + + BLI_strncpy(agrp->name, grpname, sizeof(agrp->name)); + + BLI_addtail(&tmp_act.groups, agrp); + BLI_uniquename(&tmp_act.groups, agrp, "Group", '.', offsetof(bActionGroup, name), sizeof(agrp->name)); } /* add F-Curve to group */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 95a9d58c36e..ec383e1dbdb 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -98,7 +98,7 @@ static void star_stuff_init_func(void) { - cpack(-1); + cpack(0xFFFFFF); glPointSize(1.0); glBegin(GL_POINTS); } diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index ba8fd40db61..66ed0bd85a9 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1782,9 +1782,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem hasize = ma->hasize; + /* XXX 'tpsys' is alwyas NULL, this code won't run! */ /* get orco */ - if (tpsys && part->phystype==PART_PHYS_NO) { - tpa=tpsys->particles+pa->num; + if (tpsys && part->phystype == PART_PHYS_NO) { + tpa = tpsys->particles + pa->num; psys_particle_on_emitter(psmd,tpart->from,tpa->num,pa->num_dmcache,tpa->fuv,tpa->foffset,co,nor,0,0,sd.orco,0); } else From fb6ee37aa2c4419901e5a9b52393a4edfa4735be Mon Sep 17 00:00:00 2001 From: Daniel Genrich Date: Mon, 23 Apr 2012 17:33:12 +0000 Subject: [PATCH 053/158] corrected more issues from [#31069] Analyzing the Blender project with PVS-Studio. Remark: I think that "!(nbored & CFBnd)" would be correct but it introduced other bugs so, I just quiet compiler warnings leaving the running system untouched. --- intern/elbeem/intern/ntl_geometrymodel.cpp | 2 +- intern/elbeem/intern/solver_relax.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/intern/elbeem/intern/ntl_geometrymodel.cpp b/intern/elbeem/intern/ntl_geometrymodel.cpp index c20bc34c794..13220736b8e 100644 --- a/intern/elbeem/intern/ntl_geometrymodel.cpp +++ b/intern/elbeem/intern/ntl_geometrymodel.cpp @@ -174,7 +174,7 @@ int ntlGeometryObjModel::initModel(int numVertices, float *vertices, int numTria anitimes.clear(); for(int frame=0; frame Date: Mon, 23 Apr 2012 18:15:38 +0000 Subject: [PATCH 054/158] Fix #31065: cycles render crash with large node groups, increased the stack size now, this seems to work well after some testing. Fix: material override not working on objects without a material assigned. --- intern/cycles/blender/blender_mesh.cpp | 3 +++ intern/cycles/kernel/svm/svm_types.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 7c8d36ab574..7caa6b3d511 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -227,6 +227,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated) /* test if we can instance or if the object is modified */ BL::ID b_ob_data = b_ob.data(); BL::ID key = (object_is_modified(b_ob) || holdout)? b_ob: b_ob_data; + BL::Material material_override = render_layer.material_override; /* find shader indices */ vector used_shaders; @@ -246,6 +247,8 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated) if(used_shaders.size() == 0) { if(holdout) used_shaders.push_back(scene->default_holdout); + else if(material_override) + find_shader(material_override, used_shaders, scene->default_surface); else used_shaders.push_back(scene->default_surface); } diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h index 13d72307765..68eb39bdd29 100644 --- a/intern/cycles/kernel/svm/svm_types.h +++ b/intern/cycles/kernel/svm/svm_types.h @@ -24,7 +24,7 @@ CCL_NAMESPACE_BEGIN /* Stack */ /* SVM stack has a fixed size */ -#define SVM_STACK_SIZE 64 +#define SVM_STACK_SIZE 255 /* SVM stack offsets with this value indicate that it's not on the stack */ #define SVM_STACK_INVALID 255 From 8b476d0275be15fbe18c9a0589e81a996e952496 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 23 Apr 2012 20:09:59 +0000 Subject: [PATCH 055/158] First MinGW-w64 support for cmake has been added. To test I recommend this build: http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/ray_linn/GCC-4.7.0-with-ada/mingw-w64-gcc-4.7.0-runtime-2.0.1-static-ada-20120330.7z/download Other builds may also work but due to the constantly changing nature of the compiler this cannot be guaranteed. I often had to change compilers while building the libraries and this one is the one that did the job for most of them. This first support is experimental and considered "advanced". To enable pass -DWITH_MINGW64 during cmake configuration. Also make sure to extract the compiler on C:/MinGW and that MinGW/bin is in your path. To build check out lib/mingw64. Initially the support is lacking until I get every library compiled correctly. For now you should disable WITH_CYCLES(sorry, I know some people are dying to do benchmarks, but still a few libs to go), WITH_IMAGE_OPENEXR, WITH_OPENCOLLADA, WITH_LIBMV and WITH_CODEC_FFMPEG(links but hangs on startup). Still the tools are working, the memory limit is increased and due to the experimental nature of the setup, full optimization with SSE2 is available, which makes the build quite fast. Also the compiler and especially, the linker are way faster than regular MinGW. The wiki docs have also updated. Happy testing! --- CMakeLists.txt | 53 +++++++++++++++---- intern/ghost/intern/GHOST_SystemWin32.cpp | 5 +- intern/guardedalloc/MEM_sys_types.h | 2 + source/blender/blenkernel/BKE_armature.h | 2 +- source/blender/blenlib/BLI_winstuff.h | 2 + source/blender/blenlib/intern/fileops.c | 2 +- source/blender/blenloader/BLO_sys_types.h | 2 + source/creator/CMakeLists.txt | 26 +++++---- .../gameengine/Expressions/KX_HashedPtr.cpp | 2 +- source/gameengine/Ketsji/KX_GameObject.cpp | 2 +- .../gameengine/Ketsji/KX_IPO_SGController.cpp | 2 +- 11 files changed, 72 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1595e78ea4c..b5f7d171890 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,6 +233,8 @@ if(UNIX AND NOT APPLE) option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON) endif() option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON) +option(WITH_MINGW64 "Use the 64-bit version of MinGW" OFF) +mark_as_advanced(WITH_MINGW64) # Cycles option(WITH_CYCLES "Enable cycles Render Engine" ON) @@ -370,6 +372,10 @@ if(MINGW) "because it is currently unsupported, remove this " "line if youre a developer who wants to add support.") endif() + + if((WITH_MINGW64) AND (WITH_IMAGE_OPENEXR OR WITH_CYCLES OR WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) + message(FATAL_ERROR "MINGW64 still doesn't support: WITH_CYCLES/WITH_IMAGE_OPENEXR/WITH_OPENCOLLADA/WITH_LIBMV/WITH_CODEC_FFMPEG") + endif() endif() TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG) @@ -737,6 +743,12 @@ elseif(WIN32) if(CMAKE_COMPILER_IS_GNUCC) set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32) + + # Setup 64bit and 64bit windows systems + if(WITH_MINGW64) + message("Set 64 bit compiler for MinGW.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64) + endif() else() set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows) @@ -995,12 +1007,19 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") elseif(CMAKE_COMPILER_IS_GNUCC) - # keep GCC specific stuff here - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32) - + # keep GCC specific stuff here set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi") set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing") + if(WITH_MINGW64) + #Yes, the point for MinGW64 is moar optimization by default :) + set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lsetupapi -lpthread") + + add_definitions(-DFREE_WINDOWS64 -DMS_WIN64) + endif() + add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) @@ -1017,7 +1036,11 @@ elseif(WIN32) set(PNG_INCLUDE_DIR "${PNG}/include") set(PNG_LIBPATH ${PNG}/lib) # not cmake defined - set(JPEG_LIBRARIES libjpeg) + if(WITH_MINGW64) + set(JPEG_LIBRARIES jpeg) + else() + set(JPEG_LIBRARIES libjpeg) + endif() set(PNG_LIBRARIES png) set(ZLIB ${LIBDIR}/zlib) @@ -1025,11 +1048,14 @@ elseif(WIN32) set(ZLIB_LIBPATH ${ZLIB}/lib) set(ZLIB_LIBRARIES z) - set(PTHREADS ${LIBDIR}/pthreads) - set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include) - set(PTHREADS_LIBPATH ${PTHREADS}/lib) - set(PTHREADS_LIBRARIES pthreadGC2) - + #comes with own pthread library + if(NOT WITH_MINGW64) + set(PTHREADS ${LIBDIR}/pthreads) + set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include) + set(PTHREADS_LIBPATH ${PTHREADS}/lib) + set(PTHREADS_LIBRARIES pthreadGC2) + endif() + set(FREETYPE ${LIBDIR}/freetype) set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2) set(FREETYPE_LIBPATH ${FREETYPE}/lib) @@ -1101,8 +1127,13 @@ elseif(WIN32) if(WITH_BOOST) set(BOOST ${LIBDIR}/boost) set(BOOST_INCLUDE_DIR ${BOOST}/include) - set(BOOST_POSTFIX "mgw46-mt-s-1_47") - set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_47") + if(WITH_MINGW64) + set(BOOST_POSTFIX "mgw47-mt-s-1_49") + set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49") + else() + set(BOOST_POSTFIX "mgw46-mt-s-1_47") + set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_47") + endif() set(BOOST_LIBRARIES optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX} boost_regex-${BOOST_POSTFIX} boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX} diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index e6ac48fa6c8..2d8cf13ac4f 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -815,9 +815,10 @@ bool GHOST_SystemWin32::processNDOF(RAWINPUT const& raw) // send motion. Mark as 'sent' so motion will always get dispatched. eventSent = true; -#ifdef _MSC_VER +#if defined(_MSC_VER) || defined(FREE_WINDOWS64) // using Microsoft compiler & header files - // they invented the RawInput API, so this version is (probably) correct + // they invented the RawInput API, so this version is (probably) correct. + // MinGW64 also works fine with this BYTE const* data = raw.data.hid.bRawData; // struct RAWHID { // DWORD dwSizeHid; diff --git a/intern/guardedalloc/MEM_sys_types.h b/intern/guardedalloc/MEM_sys_types.h index b7e17154df0..3d43733c569 100644 --- a/intern/guardedalloc/MEM_sys_types.h +++ b/intern/guardedalloc/MEM_sys_types.h @@ -108,8 +108,10 @@ typedef uint64_t u_int64_t; #include #elif defined(FREE_WINDOWS) +#ifndef FREE_WINDOWS64 /* define htoln here, there must be a syntax error in winsock2.h in MinGW */ unsigned long __attribute__((__stdcall__)) htonl(unsigned long); +#endif #include #else diff --git a/source/blender/blenkernel/BKE_armature.h b/source/blender/blenkernel/BKE_armature.h index 1334528c035..dfe3fde17eb 100644 --- a/source/blender/blenkernel/BKE_armature.h +++ b/source/blender/blenkernel/BKE_armature.h @@ -89,7 +89,7 @@ int bone_autoside_name (char name[64], int strip_number, short axis, float head, struct Bone *get_named_bone (struct bArmature *arm, const char *name); -float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3], float rad1, float rad2, float rdist); +float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3], float r1, float r2, float rdist); void where_is_armature (struct bArmature *arm); void where_is_armature_bone(struct Bone *bone, struct Bone *prevbone); diff --git a/source/blender/blenlib/BLI_winstuff.h b/source/blender/blenlib/BLI_winstuff.h index 33ca7d235fa..a0ab88e8baf 100644 --- a/source/blender/blenlib/BLI_winstuff.h +++ b/source/blender/blenlib/BLI_winstuff.h @@ -113,7 +113,9 @@ typedef unsigned int mode_t; /* python uses HAVE_SSIZE_T */ # ifndef HAVE_SSIZE_T # define HAVE_SSIZE_T 1 +# ifndef FREE_WINDOWS64 typedef long ssize_t; +# endif # endif #endif diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 5bbfd596ba7..4b5ea44e97c 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -209,7 +209,7 @@ FILE *BLI_fopen(const char *filename, const char *mode) return ufopen(filename, mode); } -gzFile BLI_gzopen(const char *filename, const char *mode) +void *BLI_gzopen(const char *filename, const char *mode) { gzFile gzfile; diff --git a/source/blender/blenloader/BLO_sys_types.h b/source/blender/blenloader/BLO_sys_types.h index 7dbd4df1056..41e33eb2a05 100644 --- a/source/blender/blenloader/BLO_sys_types.h +++ b/source/blender/blenloader/BLO_sys_types.h @@ -100,8 +100,10 @@ typedef uint64_t u_int64_t; #include #elif defined(FREE_WINDOWS) +#ifndef FREE_WINDOWS64 /* define htoln here, there must be a syntax error in winsock2.h in MinGW */ unsigned long __attribute__((__stdcall__)) htonl(unsigned long); +#endif #include #else diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 83804ab1a7f..3e1b7772d17 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -448,7 +448,7 @@ elseif(WIN32) DESTINATION ${TARGETDIR} ) - if(WITH_INTERNATIONAL) + if(WITH_INTERNATIONAL AND (NOT WITH_MINGW64)) install( FILES ${LIBDIR}/gettext/lib/gnu_gettext.dll DESTINATION ${TARGETDIR} @@ -523,11 +523,14 @@ elseif(WIN32) DESTINATION ${TARGETDIR} ) else() - install( - FILES - ${LIBDIR}/zlib/lib/zlib.dll - DESTINATION ${TARGETDIR} - ) + #not needed since we link statically, maybe also unneeded for MinGW? + if(NOT WITH_MINGW64) + install( + FILES + ${LIBDIR}/zlib/lib/zlib.dll + DESTINATION ${TARGETDIR} + ) + endif() endif() if(MSVC) @@ -536,10 +539,13 @@ elseif(WIN32) DESTINATION ${TARGETDIR} ) else() - install( - FILES ${LIBDIR}/pthreads/lib/pthreadGC2.dll - DESTINATION ${TARGETDIR} - ) + #MinGW64 comes with own version. For portable builds it will probaly have to be copied to work + if(NOT WITH_MINGW64) + install( + FILES ${LIBDIR}/pthreads/lib/pthreadGC2.dll + DESTINATION ${TARGETDIR} + ) + endif() endif() if(WITH_CODEC_FFMPEG) diff --git a/source/gameengine/Expressions/KX_HashedPtr.cpp b/source/gameengine/Expressions/KX_HashedPtr.cpp index 988b78b8810..51550d52636 100644 --- a/source/gameengine/Expressions/KX_HashedPtr.cpp +++ b/source/gameengine/Expressions/KX_HashedPtr.cpp @@ -34,7 +34,7 @@ unsigned int KX_Hash(void * inDWord) { -#if defined(_WIN64) +#if defined(_WIN64) && !defined(FREE_WINDOWS64) unsigned __int64 key = (unsigned __int64)inDWord; #else unsigned long key = (unsigned long)inDWord; diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index 74f028849cc..c5145ef2171 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -31,7 +31,7 @@ */ -#if defined(_WIN64) +#if defined(_WIN64) && !defined(FREE_WINDOWS64) typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp index 728d0fb8561..950e3c88a9e 100644 --- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp +++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp @@ -31,7 +31,7 @@ */ -#if defined(_WIN64) +#if defined(_WIN64) && !defined(FREE_WINDOWS64) typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; From 7cc4353dffb11aa1b323887e0550eccf1de2ca37 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 23 Apr 2012 21:04:26 +0000 Subject: [PATCH 056/158] Update knife tool header to reflect that spacebar can be used for confirm too. --- source/blender/editors/mesh/editmesh_knife.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index 13425ad8b9c..0ace06b1a1a 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -205,10 +205,10 @@ static void knife_input_ray_cast(KnifeTool_OpData *kcd, const int mval_i[2], static void knife_update_header(bContext *C, KnifeTool_OpData *kcd) { - #define HEADER_LENGTH 180 + #define HEADER_LENGTH 190 char header[HEADER_LENGTH]; - BLI_snprintf(header, HEADER_LENGTH, "LMB: define cut lines, Return: confirm, Esc or RMB: cancel, E: new cut, Ctrl: midpoint snap (%s), " + BLI_snprintf(header, HEADER_LENGTH, "LMB: define cut lines, Return/Spacebar: confirm, Esc or RMB: cancel, E: new cut, Ctrl: midpoint snap (%s), " "Shift: ignore snap (%s), C: angle constrain (%s), Z: cut through (%s)", kcd->snap_midpoints ? "On" : "Off", kcd->ignore_edge_snapping ? "On" : "Off", From 68595376795ce7cc9bf01fb5851a2bc76a97a01c Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 23 Apr 2012 22:56:34 +0000 Subject: [PATCH 057/158] Enable support for OpenEXR on cmake for MinGW64 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b5f7d171890..72bdb898ced 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -373,7 +373,7 @@ if(MINGW) "line if youre a developer who wants to add support.") endif() - if((WITH_MINGW64) AND (WITH_IMAGE_OPENEXR OR WITH_CYCLES OR WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) + if((WITH_MINGW64) AND (WITH_CYCLES OR WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) message(FATAL_ERROR "MINGW64 still doesn't support: WITH_CYCLES/WITH_IMAGE_OPENEXR/WITH_OPENCOLLADA/WITH_LIBMV/WITH_CODEC_FFMPEG") endif() endif() From 03f451f2f18cccd80d0d56391c4836da34641a60 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 23:01:03 +0000 Subject: [PATCH 058/158] fix own error with subdivision (broke icosphere), also noticed icosphere vanished at subd-5 which didnt happen before bmesh. --- source/blender/bmesh/intern/bmesh_mesh_conv.c | 6 ++++-- source/blender/bmesh/operators/bmo_subdivide.c | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c index e247a69f1e9..f72efe8ab5f 100644 --- a/source/blender/bmesh/intern/bmesh_mesh_conv.c +++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c @@ -484,12 +484,14 @@ static int bm_to_mesh_shape_layer_index_from_kb(BMesh *bm, KeyBlock *currkey) BLI_INLINE void bmesh_quick_edgedraw_flag(MEdge *med, BMEdge *e) { /* this is a cheap way to set the edge draw, its not precise and will - * pick the first 2 faces an edge uses */ + * pick the first 2 faces an edge uses. + * The dot comparison is a little arbitrary, but set so that a 5 subd + * IcoSphere won't vanish but subd 6 will (as with pre-bmesh blender) */ if ( /* (med->flag & ME_EDGEDRAW) && */ /* assume to be true */ (e->l && (e->l != e->l->radial_next)) && - (dot_v3v3(e->l->f->no, e->l->radial_next->f->no) > 0.998f)) + (dot_v3v3(e->l->f->no, e->l->radial_next->f->no) > 0.9995f)) { med->flag &= ~ME_EDGEDRAW; } diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index d5f46ebfc85..7da02a594d5 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -109,7 +109,11 @@ static void alter_co(BMesh *bm, BMVert *v, BMEdge *UNUSED(origed), const SubDPar copy_v3_v3(co, v->co); copy_v3_v3(prev_co, co); - if (params->use_smooth) { + if (UNLIKELY(params->use_sphere)) { /* subdivide sphere */ + normalize_v3(co); + mul_v3_fl(co, params->smooth); + } + else if (params->use_smooth) { /* we calculate an offset vector vec1[], to be added to *co */ float len, nor[3], nor1[3], nor2[3], smooth = params->smooth; @@ -134,10 +138,6 @@ static void alter_co(BMesh *bm, BMVert *v, BMEdge *UNUSED(origed), const SubDPar add_v3_v3(co, tvec); } - else if (params->use_sphere) { /* subdivide sphere */ - normalize_v3(co); - mul_v3_fl(co, params->smooth); - } if (params->use_fractal) { float len = len_v3v3(vsta->co, vend->co); From c1c022342cd2fb526f1dfb79ab1d7f5324e90d4e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 23 Apr 2012 23:57:17 +0000 Subject: [PATCH 059/158] fix for invalid use of memset when loading tiff images - memset(..., 1.0); // isnt valid - memset(pointer, sizeof(pointer)) // was using the sizeof the pointer, not the size of the array, since this was to fill in alpha values it was obviously wrong. --- source/blender/blenlib/BLI_math_vector.h | 1 + source/blender/blenlib/intern/math_vector.c | 9 +++++++++ source/blender/imbuf/intern/tiff.c | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index 54c06616110..af3df9c9ed2 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -228,6 +228,7 @@ void add_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_ void sub_vn_vn(float *array_tar, const float *array_src, const int size); void sub_vn_vnvn(float *array_tar, const float *array_src_a, const float *array_src_b, const int size); void fill_vn_i(int *array_tar, const int size, const int val); +void fill_vn_ushort(unsigned short *array_tar, const int size, const unsigned short val); void fill_vn_fl(float *array_tar, const int size, const float val); #ifdef __cplusplus diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index 4b3ba7244d4..f734e01943f 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -561,6 +561,15 @@ void fill_vn_i(int *array_tar, const int size, const int val) } } +void fill_vn_ushort(unsigned short *array_tar, const int size, const unsigned short val) +{ + unsigned short *tar = array_tar + (size - 1); + int i = size; + while (i--) { + *(tar--) = val; + } +} + void fill_vn_fl(float *array_tar, const int size, const float val) { float *tar = array_tar + (size - 1); diff --git a/source/blender/imbuf/intern/tiff.c b/source/blender/imbuf/intern/tiff.c index f81fb740ff0..08b2e608c8e 100644 --- a/source/blender/imbuf/intern/tiff.c +++ b/source/blender/imbuf/intern/tiff.c @@ -439,7 +439,7 @@ static int imb_read_tiff_pixels(ImBuf *ibuf, TIFF *image, int premul) if (bitspersample == 32) { if (chan == 3 && spp == 3) /* fill alpha if only RGB TIFF */ - memset(fbuf, 1.0, sizeof(fbuf)); + fill_vn_fl(fbuf, ibuf->x, 1.0f); else success |= TIFFReadScanline(image, fbuf, row, chan); scanline_separate_32bit(tmpibuf->rect_float+ib_offset, fbuf, ibuf->x, chan); @@ -447,7 +447,7 @@ static int imb_read_tiff_pixels(ImBuf *ibuf, TIFF *image, int premul) } else if (bitspersample == 16) { if (chan == 3 && spp == 3) /* fill alpha if only RGB TIFF */ - memset(sbuf, 65535, sizeof(sbuf)); + fill_vn_ushort(sbuf, ibuf->x, 65535); else success |= TIFFReadScanline(image, sbuf, row, chan); scanline_separate_16bit(tmpibuf->rect_float+ib_offset, sbuf, ibuf->x, chan); From 6f1019e8698ad4f62795dc13439e38f80abd5f96 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 01:04:37 +0000 Subject: [PATCH 060/158] add inset and bridge to mesh specials menu (along side bevel) + typo fix. --- release/scripts/startup/bl_ui/space_view3d.py | 2 ++ source/blender/makesdna/DNA_sequence_types.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 6c152c7cd43..31ef6b79be3 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -1607,7 +1607,9 @@ class VIEW3D_MT_edit_mesh_specials(Menu): layout.operator("mesh.select_all", text="Select Inverse").action = 'INVERT' layout.operator("mesh.flip_normals") layout.operator("mesh.vertices_smooth", text="Smooth") + layout.operator("mesh.inset") layout.operator("mesh.bevel", text="Bevel") + layout.operator("mesh.bridge_edge_loops") layout.operator("mesh.faces_shade_smooth") layout.operator("mesh.faces_shade_flat") layout.operator("mesh.blend_from_shape") diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 3168e5b765a..0a516c90aa1 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -133,7 +133,7 @@ typedef struct Sequence { char name[64]; /* SEQ_NAME_MAXSTR - name, set by default and needs to be unique, for RNA paths */ int flag, type; /*flags bitmap (see below) and the type of sequence*/ - int len; /* the length of the contense of this strip - before handles are applied */ + int len; /* the length of the contents of this strip - before handles are applied */ int start, startofs, endofs; int startstill, endstill; int machine, depth; /*machine - the strip channel, depth - the depth in the sequence when dealing with metastrips */ From b374d9b20fc7b5e320da4c00ba7e21976da6b0d3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 01:52:59 +0000 Subject: [PATCH 061/158] fix for CcdPhysicsController::RelativeRotate reading 2 values past the input. note: this function isn't used but may as well fix. --- source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 9a85471fb9a..6c1e2998bdb 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -863,9 +863,9 @@ void CcdPhysicsController::RelativeRotate(const float rotval[9],bool local) return; } - btMatrix3x3 drotmat( rotval[0],rotval[4],rotval[8], - rotval[1],rotval[5],rotval[9], - rotval[2],rotval[6],rotval[10]); + btMatrix3x3 drotmat(rotval[0], rotval[3], rotval[6], + rotval[1], rotval[4], rotval[7], + rotval[2], rotval[5], rotval[8]); btMatrix3x3 currentOrn; From 4ff038c4119327f3b0c472b71356d5e0cf2e0ed6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 02:01:23 +0000 Subject: [PATCH 062/158] screenshot operator now adds file extension in the file selector and has its own save options rather then using the render options (works like image save a copy). --- source/blender/blenkernel/BKE_image.h | 2 + source/blender/blenkernel/intern/image.c | 9 +++ source/blender/editors/screen/screendump.c | 65 +++++++++++++++---- .../blender/editors/space_image/image_ops.c | 14 +--- source/blender/makesdna/DNA_scene_types.h | 2 +- source/blender/windowmanager/WM_api.h | 1 + .../windowmanager/intern/wm_operators.c | 17 +++++ 7 files changed, 83 insertions(+), 27 deletions(-) diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index f5437645551..c2112d1e169 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -68,6 +68,8 @@ char BKE_imtype_valid_depths(const char imtype); char BKE_imtype_from_arg(const char *arg); +void BKE_imformat_defaults(struct ImageFormatData *im_format); + struct anim *openanim(const char *name, int flags, int streamindex); void image_de_interlace(struct Image *ima, int odd); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 27779ef8107..6e0330f5316 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1163,6 +1163,15 @@ int BKE_add_image_extension(char *string, const char imtype) } } +void BKE_imformat_defaults(ImageFormatData *im_format) +{ + memset(im_format, 0, sizeof(*im_format)); + im_format->planes = R_IMF_PLANES_RGB; + im_format->imtype = R_IMF_IMTYPE_PNG; + im_format->quality = 90; + im_format->compress = 90; +} + /* could allow access externally - 512 is for long names, 64 is for id names */ typedef struct StampData { char file[512]; diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index e12e6b0ef82..22a1770412f 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -56,6 +56,8 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "UI_interface.h" + #include "WM_types.h" #include "WM_api.h" @@ -69,6 +71,8 @@ typedef struct ScreenshotData { unsigned int *dumprect; int dumpsx, dumpsy; rcti crop; + + ImageFormatData im_format; } ScreenshotData; /* get shot from frontbuffer */ @@ -113,9 +117,13 @@ static int screenshot_data_create(bContext *C, wmOperator *op) scd->dumpsx= dumpsx; scd->dumpsy= dumpsy; scd->dumprect= dumprect; - if (sa) + if (sa) { scd->crop= sa->totrct; - op->customdata= scd; + } + + BKE_imformat_defaults(&scd->im_format); + + op->customdata = scd; return TRUE; } @@ -164,20 +172,13 @@ static int screenshot_exec(bContext *C, wmOperator *op) if (scd) { if (scd->dumprect) { - Scene *scene= CTX_data_scene(C); ImBuf *ibuf; char path[FILE_MAX]; RNA_string_get(op->ptr, "filepath", path); - - BLI_strncpy(G.ima, path, sizeof(G.ima)); BLI_path_abs(path, G.main->name); - /* BKE_add_image_extension() checks for if extension was already set */ - if (scene->r.scemode & R_EXTENSION) - if (strlen(path)r.im_format.imtype); - + /* operator ensures the extension */ ibuf= IMB_allocImBuf(scd->dumpsx, scd->dumpsy, 24, 0); ibuf->rect= scd->dumprect; @@ -185,7 +186,11 @@ static int screenshot_exec(bContext *C, wmOperator *op) if (!RNA_boolean_get(op->ptr, "full")) screenshot_crop(ibuf, scd->crop); - BKE_write_ibuf(ibuf, path, &scene->r.im_format); + if (scd->im_format.planes == R_IMF_PLANES_BW) { + /* bw screenshot? - users will notice if it fails! */ + IMB_color_to_bw(ibuf); + } + BKE_write_ibuf(ibuf, path, &scd->im_format); IMB_freeImBuf(ibuf); } @@ -200,8 +205,9 @@ static int screenshot_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event) if (screenshot_data_create(C, op)) { if (RNA_struct_property_is_set(op->ptr, "filepath")) return screenshot_exec(C, op); - - RNA_string_set(op->ptr, "filepath", G.ima); + + /* extension is added by 'screenshot_check' after */ + RNA_string_set(op->ptr, "filepath", G.relbase_valid ? G.main->name : "//screen"); WM_event_add_fileselect(C, op); @@ -210,21 +216,52 @@ static int screenshot_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event) return OPERATOR_CANCELLED; } +static int screenshot_check(bContext *UNUSED(C), wmOperator *op) +{ + ScreenshotData *scd = op->customdata; + return WM_operator_filesel_ensure_ext_imtype(op, scd->im_format.imtype); +} + static int screenshot_cancel(bContext *UNUSED(C), wmOperator *op) { screenshot_data_free(op); return OPERATOR_CANCELLED; } +static int screenshot_draw_check_prop(PointerRNA *UNUSED(ptr), PropertyRNA *prop) +{ + const char *prop_id = RNA_property_identifier(prop); + + return !(strcmp(prop_id, "filepath") == 0); +} + +static void screenshot_draw(bContext *UNUSED(C), wmOperator *op) +{ + uiLayout *layout = op->layout; + ScreenshotData *scd = op->customdata; + PointerRNA ptr; + + /* image template */ + RNA_pointer_create(NULL, &RNA_ImageFormatSettings, &scd->im_format, &ptr); + uiTemplateImageSettings(layout, &ptr); + + /* main draw call */ + RNA_pointer_create(NULL, op->type->srna, op->properties, &ptr); + uiDefAutoButsRNA(layout, &ptr, screenshot_draw_check_prop, '\0'); +} + + void SCREEN_OT_screenshot(wmOperatorType *ot) { ot->name = "Save Screenshot"; /* weak: opname starting with 'save' makes filewindow give save-over */ ot->idname = "SCREEN_OT_screenshot"; ot->invoke = screenshot_invoke; + ot->check = screenshot_check; ot->exec = screenshot_exec; - ot->poll = WM_operator_winactive; ot->cancel = screenshot_cancel; + ot->ui = screenshot_draw; + ot->poll = WM_operator_winactive; ot->flag = 0; diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 8b1ff4136b9..2c688990a8f 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -1001,11 +1001,7 @@ typedef struct { static void save_image_options_defaults(SaveImageOptions *simopts) { - memset(&simopts->im_format, 0, sizeof(simopts->im_format)); - simopts->im_format.planes = R_IMF_PLANES_RGB; - simopts->im_format.imtype = R_IMF_IMTYPE_PNG; - simopts->im_format.quality = 90; - simopts->im_format.compress = 90; + BKE_imformat_defaults(&simopts->im_format); simopts->filepath[0] = '\0'; } @@ -1246,13 +1242,7 @@ static int image_save_as_exec(bContext *C, wmOperator *op) static int image_save_as_check(bContext *UNUSED(C), wmOperator *op) { ImageFormatData *imf = op->customdata; - char filepath[FILE_MAX]; - RNA_string_get(op->ptr, "filepath", filepath); - if (BKE_add_image_extension(filepath, imf->imtype)) { - RNA_string_set(op->ptr, "filepath", filepath); - return TRUE; - } - return FALSE; + return WM_operator_filesel_ensure_ext_imtype(op, imf->imtype); } static int image_save_as_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index e21ca52ecb3..d2df799bc94 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -249,7 +249,7 @@ typedef struct ImageFormatData { char depth; /* bits per channel, R_IMF_CHAN_DEPTH_8 -> 32, * not a flag, only set 1 at a time */ - char planes ; /* - R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA */ + char planes; /* - R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA */ char flag; /* generic options for all image types, alpha zbuffer */ char quality; /* (0 - 100), eg: jpeg quality */ diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index a794cf10a86..4c81a0a8654 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -166,6 +166,7 @@ int WM_enum_search_invoke(struct bContext *C, struct wmOperator *op, struct wm int WM_operator_confirm (struct bContext *C, struct wmOperator *op, struct wmEvent *event); /* invoke callback, file selector "filepath" unset + exec */ int WM_operator_filesel (struct bContext *C, struct wmOperator *op, struct wmEvent *event); +int WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const char imtype); /* poll callback, context checks */ int WM_operator_winactive (struct bContext *C); /* invoke callback, exec + redo popup */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index c9306f6dcf7..514c159c87b 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -65,6 +65,7 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_idprop.h" +#include "BKE_image.h" #include "BKE_library.h" #include "BKE_global.h" #include "BKE_main.h" @@ -808,6 +809,22 @@ int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) } } +int WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const char imtype) +{ + PropertyRNA *prop; + char filepath[FILE_MAX]; + /* dont NULL check prop, this can only run on ops with a 'filepath' */ + prop = RNA_struct_find_property(op->ptr, "filepath"); + RNA_property_string_get(op->ptr, prop, filepath); + if (BKE_add_image_extension(filepath, imtype)) { + RNA_property_string_set(op->ptr, prop, filepath); + /* note, we could check for and update 'filename' here, + * but so far nothing needs this. */ + return TRUE; + } + return FALSE; +} + /* default properties for fileselect */ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action, short flag, short display) { From 077cbaddf00015d44fba7d52f194406d8891724b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 04:44:51 +0000 Subject: [PATCH 063/158] - remove unneeded len_v3v3 in bevel code - remove dead assignments from vgroup-blend --- source/blender/bmesh/tools/BME_bevel.c | 6 ++---- source/blender/editors/object/object_vgroup.c | 7 ++++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/source/blender/bmesh/tools/BME_bevel.c b/source/blender/bmesh/tools/BME_bevel.c index 925bd48026a..0a38b50afae 100644 --- a/source/blender/bmesh/tools/BME_bevel.c +++ b/source/blender/bmesh/tools/BME_bevel.c @@ -360,8 +360,7 @@ static BMVert *BME_bevel_split_edge(BMesh *bm, BMVert *v, BMVert *v1, BMLoop *l, is_edge = BME_bevel_get_vec(vec1, v, v1, td); /* get the vector we will be projecting onto */ BME_bevel_get_vec(vec2, v, v2, td); /* get the vector we will be projecting parallel to */ - len = len_v3(vec1); - normalize_v3(vec1); + len = normalize_v3(vec1); vtd = BME_get_transdata(td, sv); vtd1 = BME_get_transdata(td, v); @@ -399,8 +398,7 @@ static BMVert *BME_bevel_split_edge(BMesh *bm, BMVert *v, BMVert *v1, BMLoop *l, } madd_v3_v3v3fl(sv->co, v->co, vec1, dis); sub_v3_v3v3(vec1, sv->co, vtd1->org); - dis = len_v3(vec1); - normalize_v3(vec1); + dis = normalize_v3(vec1); BME_assign_transdata(td, bm, sv, vtd1->org, vtd1->org, vec1, sv->co, dis, scale, maxfactor, vtd->max); return sv; diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index eb380700a61..b5c34f1c750 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1264,7 +1264,6 @@ static void vgroup_blend(Object *ob, const float fac) if (BLI_findlink(&ob->defbase, def_nr)) { const float ifac = 1.0f - fac; - int i1, i2; BMEditMesh *em = BMEdit_FromObject(ob); BMesh *bm = em ? em->bm : NULL; @@ -1301,14 +1300,15 @@ static void vgroup_blend(Object *ob, const float fac) sel2 = BM_elem_flag_test(eed->v2, BM_ELEM_SELECT); if (sel1 != sel2) { + int i1 /* , i2 */; /* i1 is always the selected one */ if (sel1) { i1= BM_elem_index_get(eed->v1); - i2= BM_elem_index_get(eed->v2); + /* i2= BM_elem_index_get(eed->v2); */ /* UNUSED */ eve= eed->v2; } else { - i2= BM_elem_index_get(eed->v1); + /* i2= BM_elem_index_get(eed->v1); */ /* UNUSED */ i1= BM_elem_index_get(eed->v2); eve= eed->v1; } @@ -1342,6 +1342,7 @@ static void vgroup_blend(Object *ob, const float fac) sel2 = me->mvert[ed->v2].flag & SELECT; if (sel1 != sel2) { + int i1, i2; /* i1 is always the selected one */ if (sel1) { i1 = ed->v1; From f02694f5a480c2c0f9cd695075da4eacebd18666 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 05:02:53 +0000 Subject: [PATCH 064/158] workaround for vertex bevel modifier failing since the BMesh update. --- source/blender/bmesh/tools/BME_bevel.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/bmesh/tools/BME_bevel.c b/source/blender/bmesh/tools/BME_bevel.c index 0a38b50afae..0f3cb7c90f7 100644 --- a/source/blender/bmesh/tools/BME_bevel.c +++ b/source/blender/bmesh/tools/BME_bevel.c @@ -62,6 +62,9 @@ * so I need to decide what to do in these cases. */ +/* BMESH_TODO - resolve this */ +#define BMESH_263_VERT_BEVEL_WORKAROUND + /* ------- Bevel code starts here -------- */ BME_TransData_Head *BME_init_transdata(int bufsize) @@ -660,10 +663,15 @@ static BMFace *BME_bevel_poly(BMesh *bm, BMFace *f, float value, int options, BM /* find a good normal for this face (there's better ways, I'm sure) */ BM_ITER_ELEM (l, &iter, f, BM_LOOPS_OF_FACE) { +#ifdef BMESH_263_VERT_BEVEL_WORKAROUND + add_newell_cross_v3_v3v3(up_vec, l->prev->v->co, l->v->co); +#else BME_bevel_get_vec(vec1, l->v, l->next->v, td); BME_bevel_get_vec(vec2, l->prev->v, l->v, td); cross_v3_v3v3(vec3, vec2, vec1); add_v3_v3(up_vec, vec3); + +#endif } normalize_v3(up_vec); From 782cf3f844e99988298a401e9295cdcdb55fc95f Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 24 Apr 2012 05:28:19 +0000 Subject: [PATCH 065/158] Peer pressure :) Fix some very public (but probably harmless) errors in extern/bullet2, it will propagate to the Bullet soon from here: https://www.assembla.com/code/bullet3/subversion/nodes Thanks to Campbell for letting me know Fixed described by Sean here: http://stackoverflow.com/questions/818535/how-can-i-set-all-bits-to-1-in-a-binary-number-of-an-unknown-size --- .../src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h | 4 +++- .../src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h index aa30d43a025..51b27afe686 100644 --- a/extern/bullet2/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +++ b/extern/bullet2/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h @@ -78,8 +78,10 @@ ATTRIBUTE_ALIGNED16 (struct) btQuantizedBvhNode int getTriangleIndex() const { btAssert(isLeafNode()); + unsigned int x=0; + unsigned int y = (~(x&0))<<(31-MAX_NUM_PARTS_IN_BITS); // Get only the lower bits where the triangle index is stored - return (m_escapeIndexOrTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); + return (m_escapeIndexOrTriangleIndex&~(y)); } int getPartId() const { diff --git a/extern/bullet2/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/extern/bullet2/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h index a6ea33717bc..f311419d4a8 100644 --- a/extern/bullet2/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +++ b/extern/bullet2/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h @@ -45,7 +45,9 @@ struct btTriIndex int getTriangleIndex() const { // Get only the lower bits where the triangle index is stored - return (m_PartIdTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS))); + unsigned int x = 0; + unsigned int y = (~(x&0))<<(31-MAX_NUM_PARTS_IN_BITS); + return (m_PartIdTriangleIndex&~(y)); } int getPartId() const { From a667492d0e0d27a2b52a95ffc7cf2ce74f5c45ec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 05:38:11 +0000 Subject: [PATCH 066/158] fix [#30997] Bevel angle option is broken (bevel vertex only) --- source/blender/bmesh/tools/BME_bevel.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/source/blender/bmesh/tools/BME_bevel.c b/source/blender/bmesh/tools/BME_bevel.c index 0f3cb7c90f7..6a91d6f9d00 100644 --- a/source/blender/bmesh/tools/BME_bevel.c +++ b/source/blender/bmesh/tools/BME_bevel.c @@ -785,28 +785,32 @@ static float BME_bevel_get_angle(BMEdge *e, BMVert *v) return dot_v3v3(vec3, vec4); } -static float UNUSED_FUNCTION(BME_bevel_get_angle_vert)(BMVert *v) +static float BME_bevel_get_angle_vert(BMVert *v) { BMIter iter; BMLoop *l; float n[3]; float n_tmp[3]; float angle_diff = 0.0f; + float tot_angle = 0.0f; BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) { + const float angle = BM_loop_calc_face_angle(l); + tot_angle += angle; BM_loop_calc_face_normal(l, n_tmp); - madd_v3_v3fl(n, n_tmp, BM_loop_calc_face_angle(l)); + madd_v3_v3fl(n, n_tmp, angle); } normalize_v3(n); BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) { /* could cache from before */ BM_loop_calc_face_normal(l, n_tmp); - angle_diff += angle_normalized_v3v3(n, n_tmp) * (BM_loop_calc_face_angle(l) * (float)(M_PI * 0.5)); + angle_diff += angle_normalized_v3v3(n, n_tmp) * BM_loop_calc_face_angle(l); } - return angle_diff; + /* return cosf(angle_diff + 0.001f); */ /* compare with dot product */ + return (angle_diff / tot_angle) * (M_PI / 2); } static void BME_bevel_add_vweight(BME_TransData_Head *td, BMesh *bm, BMVert *v, float weight, float factor, int options) @@ -851,8 +855,7 @@ static void bevel_init_verts(BMesh *bm, int options, float angle, BME_TransData_ BMVert *v; BMIter iter; float weight; -// const float threshold = (options & BME_BEVEL_ANGLE) ? cosf(angle + 0.001) : 0.0f; - (void)angle; + /* const float threshold = (options & BME_BEVEL_ANGLE) ? cosf(angle + 0.001) : 0.0f; */ /* UNUSED */ BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) { weight = 0.0f; @@ -867,14 +870,12 @@ static void bevel_init_verts(BMesh *bm, int options, float angle, BME_TransData_ else if (options & BME_BEVEL_WEIGHT) { weight = BM_elem_float_data_get(&bm->vdata, v, CD_BWEIGHT); } -#if 0 // not working well else if (options & BME_BEVEL_ANGLE) { /* dont set weight_v1/weight_v2 here, add direct */ - if (BME_bevel_get_angle_vert(bm, v) < threshold) { + if (BME_bevel_get_angle_vert(v) > angle) { weight = 1.0f; } } -#endif else { weight = 1.0f; } From 9204f11052697dba84a961f9358219a803e46a66 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 09:45:56 +0000 Subject: [PATCH 067/158] fix for possible error building with debian --- source/blender/imbuf/intern/jp2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/imbuf/intern/jp2.c b/source/blender/imbuf/intern/jp2.c index 749d46d3a98..6abfbdb4aa1 100644 --- a/source/blender/imbuf/intern/jp2.c +++ b/source/blender/imbuf/intern/jp2.c @@ -331,7 +331,7 @@ static int initialise_4K_poc(opj_poc_t *POC, int numres) static void cinema_parameters(opj_cparameters_t *parameters) { - parameters->tile_size_on = FALSE; + parameters->tile_size_on = 0; /* FALSE */ parameters->cp_tdx=1; parameters->cp_tdy=1; From b84cdafbb5e927407aec138dd96adb8fe556cbb3 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 09:58:03 +0000 Subject: [PATCH 068/158] Add cycles support for MinGW-w64 --- CMakeLists.txt | 4 ++-- source/creator/CMakeLists.txt | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 72bdb898ced..e949859772b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -373,8 +373,8 @@ if(MINGW) "line if youre a developer who wants to add support.") endif() - if((WITH_MINGW64) AND (WITH_CYCLES OR WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) - message(FATAL_ERROR "MINGW64 still doesn't support: WITH_CYCLES/WITH_IMAGE_OPENEXR/WITH_OPENCOLLADA/WITH_LIBMV/WITH_CODEC_FFMPEG") + if((WITH_MINGW64) AND (WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) + message(FATAL_ERROR "MINGW64 still doesn't support: WITH_OPENCOLLADA/WITH_LIBMV/WITH_CODEC_FFMPEG") endif() endif() diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 3e1b7772d17..0168c06b7da 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -599,12 +599,14 @@ elseif(WIN32) ) if(WITH_OPENIMAGEIO) - set_lib_path(OIIOBIN "openimageio/bin") - install( - FILES - ${OIIOBIN}/OpenImageIO.dll - DESTINATION ${TARGETDIR} - ) + if(NOT MINGW) + set_lib_path(OIIOBIN "openimageio/bin") + install( + FILES + ${OIIOBIN}/OpenImageIO.dll + DESTINATION ${TARGETDIR} + ) + endif() endif() elseif(APPLE) From e06e338e205934af91ead0869dbc9ffa29787988 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 10:25:12 +0000 Subject: [PATCH 069/158] fix [#31079] Revision 45893 crashes when I try to open a certain file created in it. nasty bug going from 2.63 --> 2.62 --> 2.63, could have incorrect/corrupt data. fix checks for this case and clears the customdata layer. --- source/blender/blenloader/intern/readfile.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index b3d586fd78d..d2f6100517a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3810,6 +3810,14 @@ static void direct_link_customdata(FileData *fd, CustomData *data, int count) int i = 0; data->layers= newdataadr(fd, data->layers); + + /* annoying workaround for bug [#31079] loading legacy files with + * no polygons _but_ have stale customdata */ + if (UNLIKELY(count == 0 && data->layers == NULL && data->totlayer != 0)) { + memset(data, 0, sizeof(*data)); + return; + } + data->external= newdataadr(fd, data->external); while (i < data->totlayer) { From bde288d6568fb300892ba15ee3e79bdd35df3b99 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 12:27:38 +0000 Subject: [PATCH 070/158] crash fix for brush select when no object is active --- .../blender/editors/sculpt_paint/paint_ops.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 3bc3c7a9224..b5d6f20aa79 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -254,12 +254,18 @@ static int brush_select_exec(bContext *C, wmOperator *op) size_t tool_offset; if (paint_mode == OB_MODE_ACTIVE) { - /* select current paint mode */ - paint_mode = CTX_data_active_object(C)->mode & - (OB_MODE_SCULPT | - OB_MODE_VERTEX_PAINT | - OB_MODE_WEIGHT_PAINT | - OB_MODE_TEXTURE_PAINT); + Object *ob = CTX_data_active_object(C); + if (ob) { + /* select current paint mode */ + paint_mode = ob->mode & + (OB_MODE_SCULPT | + OB_MODE_VERTEX_PAINT | + OB_MODE_WEIGHT_PAINT | + OB_MODE_TEXTURE_PAINT); + } + else { + return OPERATOR_CANCELLED; + } } switch (paint_mode) { From 4782522379b708f15bd5b045ca4193637c465979 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 12:57:58 +0000 Subject: [PATCH 071/158] Add libMV and Scons support for MinGW-w64, patches by Caleb Joseph with slight modifications. Thanks! --- CMakeLists.txt | 13 +- SConstruct | 30 ++- .../scons/config/win64-mingw-config.py | 207 ++++++++++++++++++ build_files/scons/tools/Blender.py | 14 +- build_files/scons/tools/btools.py | 4 +- extern/bullet2/patches/mingw64_scons.patch | 13 ++ extern/bullet2/src/SConscript | 2 +- extern/carve/SConscript | 2 +- extern/carve/bundle.sh | 2 +- extern/carve/patches/mingw_w64.patch | 13 ++ extern/libmv/SConscript | 2 +- extern/libmv/bundle.sh | 2 +- extern/libmv/libmv/numeric/numeric.h | 2 +- extern/libmv/patches/mingw_w64_support.patch | 58 +++++ .../third_party/glog/src/windows/port.cc | 3 + .../libmv/third_party/glog/src/windows/port.h | 2 + intern/SConscript | 2 +- intern/audaspace/SConscript | 2 +- intern/boolop/SConscript | 4 +- intern/cycles/SConscript | 2 +- intern/ghost/SConscript | 6 +- intern/opennl/SConscript | 2 +- intern/utfconv/SConscript | 2 +- source/SConscript | 2 +- source/blender/blenkernel/SConscript | 2 +- source/blender/blenlib/SConscript | 2 +- source/blender/blenpluginapi/SConscript | 2 +- source/blender/editors/armature/SConscript | 2 +- source/blender/editors/mesh/SConscript | 2 +- source/blender/editors/object/SConscript | 2 +- source/blender/editors/physics/SConscript | 2 +- source/blender/editors/render/SConscript | 2 +- source/blender/editors/screen/SConscript | 2 +- .../blender/editors/sculpt_paint/SConscript | 2 +- source/blender/editors/space_file/SConscript | 4 +- source/blender/editors/space_image/SConscript | 2 +- source/blender/editors/space_node/SConscript | 2 +- .../editors/space_sequencer/SConscript | 2 +- .../blender/editors/space_view3d/SConscript | 2 +- source/blender/gpu/SConscript | 2 +- source/blender/imbuf/SConscript | 2 +- source/blender/makesdna/intern/SConscript | 2 +- source/blender/makesrna/SConscript | 2 +- source/blender/makesrna/intern/SConscript | 4 +- source/blender/nodes/SConscript | 2 +- source/blender/python/SConscript | 4 +- source/blender/render/SConscript | 4 +- source/blender/windowmanager/SConscript | 2 +- source/gameengine/Converter/SConscript | 2 +- source/gameengine/Ketsji/SConscript | 2 +- source/gameengine/VideoTexture/SConscript | 2 +- 51 files changed, 386 insertions(+), 67 deletions(-) create mode 100644 build_files/scons/config/win64-mingw-config.py create mode 100644 extern/bullet2/patches/mingw64_scons.patch create mode 100644 extern/carve/patches/mingw_w64.patch create mode 100644 extern/libmv/patches/mingw_w64_support.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index e949859772b..a2926182c5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -194,12 +194,7 @@ option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF) option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON) # Audio/Video format support -if(MINGW) - set(PLATFORM_DEFAULT ON) -else() - set(PLATFORM_DEFAULT OFF) -endif() -option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ${PLATFORM_DEFAULT}) +option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF) unset(PLATFORM_DEFAULT) option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF) @@ -373,8 +368,8 @@ if(MINGW) "line if youre a developer who wants to add support.") endif() - if((WITH_MINGW64) AND (WITH_OPENCOLLADA OR WITH_LIBMV OR WITH_CODEC_FFMPEG)) - message(FATAL_ERROR "MINGW64 still doesn't support: WITH_OPENCOLLADA/WITH_LIBMV/WITH_CODEC_FFMPEG") + if((WITH_MINGW64) AND (WITH_OPENCOLLADA OR WITH_CODEC_FFMPEG)) + message(FATAL_ERROR "MINGW64 still doesn't support: WITH_OPENCOLLADA/WITH_CODEC_FFMPEG") endif() endif() @@ -1015,7 +1010,7 @@ elseif(WIN32) #Yes, the point for MinGW64 is moar optimization by default :) set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -O3") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") - set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lsetupapi -lpthread") + set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread") add_definitions(-DFREE_WINDOWS64 -DMS_WIN64) endif() diff --git a/SConstruct b/SConstruct index e73d654a0c8..96d27ae76b0 100644 --- a/SConstruct +++ b/SConstruct @@ -170,7 +170,7 @@ if sys.platform=='win32': if env['CC'] in ['cl', 'cl.exe']: platform = 'win64-vc' if bitness == 64 else 'win32-vc' elif env['CC'] in ['gcc']: - platform = 'win32-mingw' + platform = 'win64-mingw' if bitness == 64 else 'win32-mingw' env.SConscriptChdir(0) @@ -782,6 +782,34 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources) allinstall += windlls +if env['OURPLATFORM'] == 'win64-mingw': + dllsources = [] + + if env['WITH_BF_PYTHON']: + if env['BF_DEBUG']: + dllsources.append('${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}_d.dll') + else: + dllsources.append('${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}.dll') + + if env['WITH_BF_FFMPEG']: + dllsources += env['BF_FFMPEG_DLL'].split() + + if env['WITH_BF_OPENAL']: + dllsources.append('${LCGDIR}/openal/lib/OpenAL32.dll') + dllsources.append('${LCGDIR}/openal/lib/wrap_oal.dll') + + if env['WITH_BF_SNDFILE']: + dllsources.append('${LCGDIR}/sndfile/lib/libsndfile-1.dll') + + if env['WITH_BF_SDL']: + dllsources.append('${LCGDIR}/sdl/lib/SDL.dll') + + dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb64.dll') + dllsources.append('#source/icons/blender.exe.manifest') + + windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources) + allinstall += windlls + installtarget = env.Alias('install', allinstall) bininstalltarget = env.Alias('install-bin', blenderinstall) diff --git a/build_files/scons/config/win64-mingw-config.py b/build_files/scons/config/win64-mingw-config.py new file mode 100644 index 00000000000..0379ea48088 --- /dev/null +++ b/build_files/scons/config/win64-mingw-config.py @@ -0,0 +1,207 @@ +LCGDIR = '#../lib/mingw64' +LIBDIR = "${LCGDIR}" + +BF_PYTHON = LIBDIR + '/python' +BF_PYTHON_VERSION = '3.2' +WITH_BF_STATICPYTHON = False +BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}' +BF_PYTHON_BINARY = 'python' +BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw' +BF_PYTHON_DLL = 'python32' +BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib' + +WITH_BF_OPENAL = True +BF_OPENAL = LIBDIR + '/openal' +BF_OPENAL_INC = '${BF_OPENAL}/include' +BF_OPENAL_LIB = 'wrap_oal' +BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' + +WITH_BF_FFMPEG = False # TODO: FFmpeg gives linking errors, need to compile with MinGW-w64? +BF_FFMPEG_LIB = 'avformat-53 avcodec-53 avdevice-53 avutil-51 swscale-2' +BF_FFMPEG_LIBPATH = LIBDIR + '/ffmpeg/lib' +BF_FFMPEG_INC = LIBDIR + '/ffmpeg/include' +BF_FFMPEG_DLL = '${BF_FFMPEG_LIBPATH}/avformat-53.dll ${BF_FFMPEG_LIBPATH}/avcodec-53.dll ${BF_FFMPEG_LIBPATH}/avdevice-53.dll ${BF_FFMPEG_LIBPATH}/avutil-51.dll ${BF_FFMPEG_LIBPATH}/swscale-2.dll' + +WITH_BF_JACK = False +BF_JACK = LIBDIR + '/jack' +BF_JACK_INC = '${BF_JACK}/include' +BF_JACK_LIB = 'libjack' +BF_JACK_LIBPATH = '${BF_JACK}/lib' + +WITH_BF_SNDFILE = False +BF_SNDFILE = LIBDIR + '/sndfile' +BF_SNDFILE_INC = '${BF_SNDFILE}/include' +BF_SNDFILE_LIB = 'libsndfile-1' +BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib' + +WITH_BF_SDL = True +BF_SDL = LIBDIR + '/sdl' +BF_SDL_INC = '${BF_SDL}/include' +BF_SDL_LIB = 'SDL' +BF_SDL_LIBPATH = '${BF_SDL}/lib' + +BF_PTHREADS = '' # Part of MinGW-w64 +BF_PTHREADS_INC = '' +BF_PTHREADS_LIB = '' +BF_PTHREADS_LIBPATH = '' + +WITH_BF_OPENEXR = True +WITH_BF_STATICOPENEXR = False +BF_OPENEXR = LIBDIR + '/openexr' +BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR' +BF_OPENEXR_LIB = 'Half IlmImf Imath IlmThread Iex' +BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' + +WITH_BF_DDS = True + +WITH_BF_JPEG = True +BF_JPEG = LIBDIR + '/jpeg' +BF_JPEG_INC = '${BF_JPEG}/include' +BF_JPEG_LIB = 'jpeg' +BF_JPEG_LIBPATH = '${BF_JPEG}/lib' + +WITH_BF_PNG = True +BF_PNG = LIBDIR + '/png' +BF_PNG_INC = '${BF_PNG}/include' +BF_PNG_LIB = 'png' +BF_PNG_LIBPATH = '${BF_PNG}/lib' + +WITH_BF_TIFF = True +BF_TIFF = LIBDIR + '/tiff' +BF_TIFF_INC = '${BF_TIFF}/include' +BF_TIFF_LIB = 'tiff' +BF_TIFF_LIBPATH = '${BF_TIFF}/lib' + +WITH_BF_ZLIB = True +BF_ZLIB = LIBDIR + '/zlib' +BF_ZLIB_INC = '${BF_ZLIB}/include' +BF_ZLIB_LIB = 'z' +BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' + +WITH_BF_INTERNATIONAL = True + +BF_GETTEXT = LIBDIR + '/gettext' +BF_GETTEXT_INC = '${BF_GETTEXT}/include' +BF_GETTEXT_LIB = 'intl' +BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' + +WITH_BF_OPENJPEG = True +BF_OPENJPEG = '#extern/libopenjpeg' +BF_OPENJPEG_LIB = '' +BF_OPENJPEG_INC = '${BF_OPENJPEG}' +BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib' + +WITH_BF_FFTW3 = True +BF_FFTW3 = LIBDIR + '/fftw3' +BF_FFTW3_INC = '${BF_FFTW3}/include' +BF_FFTW3_LIB = 'fftw3' +BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib' + +WITH_BF_GAMEENGINE = True +WITH_BF_OCEANSIM = True +WITH_BF_PLAYER = True +WITH_BF_LIBMV = True + +WITH_BF_BULLET = True +BF_BULLET = '#extern/bullet2/src' +BF_BULLET_INC = '${BF_BULLET}' +BF_BULLET_LIB = 'extern_bullet' + +BF_WINTAB = LIBDIR + '/wintab' +BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE' + +# enable freetype2 support for text objects +BF_FREETYPE = LIBDIR + '/freetype' +BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2/' +BF_FREETYPE_LIB = 'freetype' +BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' + +WITH_BF_QUICKTIME = False + +WITH_BF_ICONV = True +BF_ICONV = LIBDIR + "/iconv" +BF_ICONV_INC = '${BF_ICONV}/include' +BF_ICONV_LIB = 'iconv' +BF_ICONV_LIBPATH = '${BF_ICONV}/lib' + +WITH_BF_REDCODE = False +BF_REDCODE_INC = '#extern' + +# Mesa Libs should go here if your using them as well.... +WITH_BF_STATICOPENGL = False +BF_OPENGL = 'C:\\MingW' +BF_OPENGL_INC = '${BF_OPENGL}/include' +BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' +BF_OPENGL_LIB = 'opengl32 glu32' +BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a', + '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a', + '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ] + +WITH_BF_COLLADA = False # TODO: Compile Collada with MinGW-w64 +BF_COLLADA = '#source/blender/collada' +BF_COLLADA_INC = '${BF_COLLADA}' +BF_COLLADA_LIB = 'bf_collada' + +BF_OPENCOLLADA = LIBDIR + '/opencollada' +BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa' +BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' + +#Cycles +WITH_BF_CYCLES = True +WITH_BF_CYCLES_CUDA_BINARIES = False +BF_CYCLES_CUDA_NVCC = "" # Path to the NVIDIA CUDA compiler +BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_13', 'sm_20', 'sm_21'] + +WITH_BF_OIIO = True +BF_OIIO = LIBDIR + '/openimageio' +BF_OIIO_INC = '${BF_OIIO}/include' +BF_OIIO_LIB = 'OpenImageIO' +BF_OIIO_LIBPATH = '${BF_OIIO}/lib' + +WITH_BF_BOOST = True +BF_BOOST = LIBDIR + '/boost' +BF_BOOST_INC = BF_BOOST + '/include' +BF_BOOST_LIB = 'boost_date_time-mgw47-mt-s-1_49 boost_date_time-mgw47-mt-sd-1_49 boost_filesystem-mgw47-mt-s-1_49 boost_filesystem-mgw47-mt-sd-1_49 boost_regex-mgw47-mt-s-1_49 boost_regex-mgw47-mt-sd-1_49 boost_system-mgw47-mt-s-1_49 boost_system-mgw47-mt-sd-1_49 boost_thread-mgw47-mt-s-1_49 boost_thread-mgw47-mt-sd-1_49' +BF_BOOST_LIBPATH = BF_BOOST + '/lib' + +#Ray trace optimization +WITH_BF_RAYOPTIMIZATION = True +BF_RAYOPTIMIZATION_SSE_FLAGS = ['-mmmx', '-msse', '-msse2', '-ftree-vectorize'] + +WITH_BF_OPENMP = True + +## +CC = 'gcc' +CXX = 'g++' + +CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] +CXXFLAGS = [ '-fpermissive' ] + +CPPFLAGS = ['-DWIN32', '-DMS_WIN64', '-DFREE_WINDOWS', '-DFREE_WINDOWS64', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-D_SSIZE_T_'] +REL_CFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] +REL_CXXFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] +REL_CCFLAGS = ['-DNDEBUG', '-O3', '-mmmx', '-msse', '-msse2'] + +C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes'] + +CC_WARN = [ '-Wall' ] + +LLIBS = ['-lshell32', '-lshfolder', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz', '-lstdc++','-lole32','-luuid', '-lwsock32', '-lpsapi', '-lpthread'] + +PLATFORM_LINKFLAGS = ['-Xlinker', '--stack=2097152'] + +## DISABLED, causes linking errors! +## for re-distrobution, so users dont need mingw installed +# PLATFORM_LINKFLAGS += ["-static-libgcc", "-static-libstdc++"] + +BF_DEBUG = False +BF_DEBUG_CCFLAGS= ['-g', '-D_DEBUG'] + +BF_PROFILE_CCFLAGS = ['-pg', '-g'] +BF_PROFILE_LINKFLAGS = ['-pg'] +BF_PROFILE_FLAGS = BF_PROFILE_CCFLAGS +BF_PROFILE = False + +BF_BUILDDIR = '..\\build\\win64-mingw' +BF_INSTALLDIR='..\\install\\win64-mingw' diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index ec7b6a0ce4c..5a066470225 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -182,12 +182,12 @@ def setup_staticlibs(lenv): if lenv['WITH_BF_SNDFILE'] and lenv['WITH_BF_STATICSNDFILE']: statlibs += Split(lenv['BF_SNDFILE_LIB_STATIC']) - if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): libincs += Split(lenv['BF_PTHREADS_LIBPATH']) if lenv['WITH_BF_COLLADA']: libincs += Split(lenv['BF_OPENCOLLADA_LIBPATH']) - if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): libincs += Split(lenv['BF_PCRE_LIBPATH']) libincs += Split(lenv['BF_EXPAT_LIBPATH']) @@ -206,7 +206,7 @@ def setup_staticlibs(lenv): statlibs += Split(lenv['BF_BOOST_LIB_STATIC']) # setting this last so any overriding of manually libs could be handled - if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): + if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross', 'win64-mingw'): libincs.append('/usr/lib') if lenv['WITH_BF_JEMALLOC']: @@ -228,7 +228,7 @@ def setup_syslibs(lenv): if not lenv['WITH_BF_FREETYPE_STATIC']: syslibs += Split(lenv['BF_FREETYPE_LIB']) if lenv['WITH_BF_PYTHON'] and not lenv['WITH_BF_STATICPYTHON']: - if lenv['BF_DEBUG'] and lenv['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): + if lenv['BF_DEBUG'] and lenv['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'win64-mingw'): syslibs.append(lenv['BF_PYTHON_LIB']+'_d') else: syslibs.append(lenv['BF_PYTHON_LIB']) @@ -268,7 +268,7 @@ def setup_syslibs(lenv): syslibs += Split(lenv['BF_SDL_LIB']) if not lenv['WITH_BF_STATICOPENGL']: syslibs += Split(lenv['BF_OPENGL_LIB']) - if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw','linuxcross', 'win64-vc'): + if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw','linuxcross', 'win64-vc', 'win64-mingw'): syslibs += Split(lenv['BF_PTHREADS_LIB']) if lenv['WITH_BF_COLLADA']: syslibs.append(lenv['BF_PCRE_LIB']) @@ -341,7 +341,7 @@ def creator(env): if env['BF_DEBUG']: defs.append('_DEBUG') - if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs.append(env['BF_PTHREADS_INC']) incs.append('#/intern/utfconv') @@ -731,7 +731,7 @@ class BlenderEnvironment(SConsEnvironment): if not self or not libname or not source: print bc.FAIL+'Cannot continue. Missing argument for BlenderRes '+libname+bc.ENDC self.Exit() - if self['OURPLATFORM'] not in ('win32-vc','win32-mingw','linuxcross', 'win64-vc'): + if self['OURPLATFORM'] not in ('win32-vc','win32-mingw','linuxcross', 'win64-vc', 'win64-mingw'): print bc.FAIL+'BlenderRes is for windows only!'+bc.END self.Exit() diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index 544f7f066ce..ca0ac2dd8da 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -617,7 +617,7 @@ def buildslave(target=None, source=None, env=None): Builder for buildbot integration. Used by buildslaves of http://builder.blender.org only. """ - if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'darwin'): + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'darwin', 'win64-mingw'): extension = '.zip' else: extension = '.tar.bz2' @@ -662,7 +662,7 @@ def NSIS_print(target, source, env): def NSIS_Installer(target=None, source=None, env=None): print "="*35 - if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc'): + if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'win64-mingw'): print "NSIS installer is only available on Windows." Exit() if env['OURPLATFORM'] == 'win32-vc': diff --git a/extern/bullet2/patches/mingw64_scons.patch b/extern/bullet2/patches/mingw64_scons.patch new file mode 100644 index 00000000000..e63dee3c48c --- /dev/null +++ b/extern/bullet2/patches/mingw64_scons.patch @@ -0,0 +1,13 @@ +Index: SConscript +=================================================================== +--- SConscript (revision 45919) ++++ SConscript (working copy) +@@ -11,7 +11,7 @@ + defs += ' WIN32 NDEBUG _WINDOWS' + #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op'] + cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs'] +-elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross'): ++elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross', 'win64-mingw'): + defs += ' NDEBUG' + cflags += ['-O2'] + elif env['OURPLATFORM'] in ('linux', 'freebsd4', 'freebsd5'): diff --git a/extern/bullet2/src/SConscript b/extern/bullet2/src/SConscript index fa00ad7bc2e..f59bcba9fa6 100644 --- a/extern/bullet2/src/SConscript +++ b/extern/bullet2/src/SConscript @@ -11,7 +11,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): defs += ' WIN32 NDEBUG _WINDOWS' #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op'] cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs'] -elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross'): +elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross', 'win64-mingw'): defs += ' NDEBUG' cflags += ['-O2'] elif env['OURPLATFORM'] in ('linux', 'freebsd4', 'freebsd5'): diff --git a/extern/carve/SConscript b/extern/carve/SConscript index e2f3c814e2e..1ba67e51327 100644 --- a/extern/carve/SConscript +++ b/extern/carve/SConscript @@ -14,7 +14,7 @@ incs = ['include'] if env['WITH_BF_BOOST']: if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'): # Boost is setting as preferred collections library in the Carve code when using MSVC compiler - if env['OURPLATFORM'] != 'win32-mingw': + if env['OURPLATFORM'] not in ('win32-mingw', 'win64-mingw'): defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS') defs.append('CARVE_SYSTEM_BOOST') diff --git a/extern/carve/bundle.sh b/extern/carve/bundle.sh index e68b2c7e90e..881367fe687 100755 --- a/extern/carve/bundle.sh +++ b/extern/carve/bundle.sh @@ -114,7 +114,7 @@ incs = ['include'] if env['WITH_BF_BOOST']: if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'): # Boost is setting as preferred collections library in the Carve code when using MSVC compiler - if env['OURPLATFORM'] != 'win32-mingw': + if env['OURPLATFORM'] not in ('win32-mingw', 'win64-mingw'): defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS') defs.append('CARVE_SYSTEM_BOOST') diff --git a/extern/carve/patches/mingw_w64.patch b/extern/carve/patches/mingw_w64.patch new file mode 100644 index 00000000000..26a30be84c3 --- /dev/null +++ b/extern/carve/patches/mingw_w64.patch @@ -0,0 +1,13 @@ +Index: bundle.sh +=================================================================== +--- bundle.sh (revision 45912) ++++ bundle.sh (working copy) +@@ -114,7 +114,7 @@ + if env['WITH_BF_BOOST']: + if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'): + # Boost is setting as preferred collections library in the Carve code when using MSVC compiler +- if env['OURPLATFORM'] != 'win32-mingw': ++ if env['OURPLATFORM'] not in ('win32-mingw', 'win64-mingw'): + defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS') + + defs.append('CARVE_SYSTEM_BOOST') diff --git a/extern/libmv/SConscript b/extern/libmv/SConscript index fbcd92503d8..fbb6ee36f85 100644 --- a/extern/libmv/SConscript +++ b/extern/libmv/SConscript @@ -34,7 +34,7 @@ incs = '. ../Eigen3' incs += ' ' + env['BF_PNG_INC'] incs += ' ' + env['BF_ZLIB_INC'] -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): incs += ' ./third_party/msinttypes' diff --git a/extern/libmv/bundle.sh b/extern/libmv/bundle.sh index a34e45a38b0..30d08cd680a 100755 --- a/extern/libmv/bundle.sh +++ b/extern/libmv/bundle.sh @@ -248,7 +248,7 @@ incs = '. ../Eigen3' incs += ' ' + env['BF_PNG_INC'] incs += ' ' + env['BF_ZLIB_INC'] -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): incs += ' ./third_party/msinttypes' diff --git a/extern/libmv/libmv/numeric/numeric.h b/extern/libmv/libmv/numeric/numeric.h index ad707fb76f2..d2cadf4b579 100644 --- a/extern/libmv/libmv/numeric/numeric.h +++ b/extern/libmv/libmv/numeric/numeric.h @@ -33,7 +33,7 @@ #include #include -#if _WIN32 || __APPLE__ || __FreeBSD__ +#if (defined(_WIN32) || defined(__APPLE__) || defined(__FreeBSD__)) && !defined(__MINGW64__) void static sincos (double x, double *sinx, double *cosx) { *sinx = sin(x); *cosx = cos(x); diff --git a/extern/libmv/patches/mingw_w64_support.patch b/extern/libmv/patches/mingw_w64_support.patch new file mode 100644 index 00000000000..360287e81c2 --- /dev/null +++ b/extern/libmv/patches/mingw_w64_support.patch @@ -0,0 +1,58 @@ +Index: bundle.sh +=================================================================== +--- bundle.sh (revision 45912) ++++ bundle.sh (working copy) +@@ -248,7 +248,7 @@ + incs += ' ' + env['BF_PNG_INC'] + incs += ' ' + env['BF_ZLIB_INC'] + +-if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): ++if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): + incs += ' ./third_party/glog/src/windows ./third_party/glog/src/windows/glog' + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): + incs += ' ./third_party/msinttypes' +Index: libmv/numeric/numeric.h +=================================================================== +--- libmv/numeric/numeric.h (revision 45912) ++++ libmv/numeric/numeric.h (working copy) +@@ -33,7 +33,7 @@ + #include + #include + +-#if _WIN32 || __APPLE__ || __FreeBSD__ ++#if (defined(_WIN32) || defined(__APPLE__) || defined(__FreeBSD__)) && !defined(__MINGW64__) + void static sincos (double x, double *sinx, double *cosx) { + *sinx = sin(x); + *cosx = cos(x); +Index: third_party/glog/src/windows/port.cc +=================================================================== +--- third_party/glog/src/windows/port.cc (revision 45912) ++++ third_party/glog/src/windows/port.cc (working copy) +@@ -55,6 +55,8 @@ + return _vsnprintf(str, size-1, format, ap); + } + ++// MinGW64 defines ++#ifndef __MINGW64__ + int snprintf(char *str, size_t size, const char *format, ...) { + va_list ap; + va_start(ap, format); +@@ -62,3 +64,4 @@ + va_end(ap); + return r; + } ++#endif +Index: third_party/glog/src/windows/port.h +=================================================================== +--- third_party/glog/src/windows/port.h (revision 45912) ++++ third_party/glog/src/windows/port.h (working copy) +@@ -120,7 +120,9 @@ + #define DEFAULT_TEMPLATE_ROOTDIR ".." + + // ----------------------------------- SYSTEM/PROCESS ++#ifndef __MINGW64__ + typedef int pid_t; ++#endif + #define getpid _getpid + + // ----------------------------------- THREADS diff --git a/extern/libmv/third_party/glog/src/windows/port.cc b/extern/libmv/third_party/glog/src/windows/port.cc index bfa6e70afbb..58e28b026c0 100644 --- a/extern/libmv/third_party/glog/src/windows/port.cc +++ b/extern/libmv/third_party/glog/src/windows/port.cc @@ -55,6 +55,8 @@ int safe_vsnprintf(char *str, size_t size, const char *format, va_list ap) { return _vsnprintf(str, size-1, format, ap); } +// MinGW64 defines +#ifndef __MINGW64__ int snprintf(char *str, size_t size, const char *format, ...) { va_list ap; va_start(ap, format); @@ -62,3 +64,4 @@ int snprintf(char *str, size_t size, const char *format, ...) { va_end(ap); return r; } +#endif diff --git a/extern/libmv/third_party/glog/src/windows/port.h b/extern/libmv/third_party/glog/src/windows/port.h index abfcf65384c..72e3906f82f 100644 --- a/extern/libmv/third_party/glog/src/windows/port.h +++ b/extern/libmv/third_party/glog/src/windows/port.h @@ -120,7 +120,9 @@ extern int safe_vsnprintf(char *str, size_t size, #define DEFAULT_TEMPLATE_ROOTDIR ".." // ----------------------------------- SYSTEM/PROCESS +#ifndef __MINGW64__ typedef int pid_t; +#endif #define getpid _getpid // ----------------------------------- THREADS diff --git a/intern/SConscript b/intern/SConscript index d7c3715349b..b6305f7dbab 100644 --- a/intern/SConscript +++ b/intern/SConscript @@ -36,5 +36,5 @@ if NEW_CSG == 'false': else: SConscript(['csg/SConscript']) -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-mingw', 'linuxcross', 'win64-vc'): SConscript(['utfconv/SConscript']) diff --git a/intern/audaspace/SConscript b/intern/audaspace/SConscript index b8d5a56a625..50c81db46dd 100644 --- a/intern/audaspace/SConscript +++ b/intern/audaspace/SConscript @@ -41,7 +41,7 @@ if env['WITH_BF_PYTHON']: incs += ' Python ' + env['BF_PYTHON_INC'] defs.append('WITH_PYTHON') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ('bf_intern_audaspace', sources, Split(incs), defs, libtype=['intern','player'], priority = [25,215] ) diff --git a/intern/boolop/SConscript b/intern/boolop/SConscript index 1c8c912614d..f630d1d58e0 100644 --- a/intern/boolop/SConscript +++ b/intern/boolop/SConscript @@ -18,13 +18,13 @@ else: if env['WITH_BF_BOOST']: if env['OURPLATFORM'] not in ('win32-vc', 'win64-vc'): # Boost is setting as preferred collections library in the Carve code when using MSVC compiler - if env['OURPLATFORM'] != 'win32-mingw': + if env['OURPLATFORM'] not in ('win32-mingw', 'win64-mingw'): defs.append('HAVE_BOOST_UNORDERED_COLLECTIONS') defs.append('CARVE_SYSTEM_BOOST') incs += ' ' + env['BF_BOOST_INC'] -if (env['OURPLATFORM'] == 'win32-mingw'): +if (env['OURPLATFORM'] in ('win32-mingw', 'win64-mingw')): env.BlenderLib ('bf_intern_bop', sources, Split(incs) , [], libtype='intern', priority = 5 ) else: env.BlenderLib ('bf_intern_bop', sources, Split(incs) , defs, libtype='intern', priority = 5 ) diff --git a/intern/cycles/SConscript b/intern/cycles/SConscript index 2ea224f052d..34c6e8df2fd 100644 --- a/intern/cycles/SConscript +++ b/intern/cycles/SConscript @@ -39,7 +39,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): else: cxxflags.append('-ffast-math'.split()) -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs.append(env['BF_PTHREADS_INC']) # optimized kernel diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 2265daa8fff..44882a64286 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -49,7 +49,7 @@ elif window_system in ('linux', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'f else: sources.remove('intern' + os.sep + 'GHOST_DropTargetX11.cpp') -elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): +elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc', 'win64-mingw'): for f in pf: try: sources.remove('intern' + os.sep + f + 'X11.cpp') @@ -98,7 +98,7 @@ if env['WITH_BF_3DMOUSE']: else: sources.remove('intern' + os.sep + 'GHOST_NDOFManager.cpp') try: - if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): + if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc', 'win64-mingw'): sources.remove('intern' + os.sep + 'GHOST_NDOFManagerWin32.cpp') elif window_system=='darwin': sources.remove('intern' + os.sep + 'GHOST_NDOFManagerCocoa.mm') @@ -108,7 +108,7 @@ else: pass -if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): +if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc', 'win64-mingw'): incs = env['BF_WINTAB_INC'] + ' ' + incs incs += ' ../utfconv' diff --git a/intern/opennl/SConscript b/intern/opennl/SConscript index 502df1891d5..711955cbfeb 100644 --- a/intern/opennl/SConscript +++ b/intern/opennl/SConscript @@ -5,7 +5,7 @@ sources = env.Glob('intern/*.c') + env.Glob('superlu/*.c') incs = 'extern superlu ../../extern/colamd/Include' -if (env['OURPLATFORM'] == 'win32-mingw'): +if (env['OURPLATFORM'] in ('win32-mingw', 'win64-mingw')): env.BlenderLib ('bf_intern_opennl', sources, Split(incs), [], libtype=['core','intern'], priority=[1,80] ) else: env.BlenderLib ('bf_intern_opennl', sources, Split(incs), [], libtype=['core'], priority=[55] ) diff --git a/intern/utfconv/SConscript b/intern/utfconv/SConscript index 010fcf9aa7c..19a698b6a0b 100644 --- a/intern/utfconv/SConscript +++ b/intern/utfconv/SConscript @@ -9,7 +9,7 @@ defs = '' # This is odd but leave it for now... # Why have win32 check here? - this is only used for windows. # ... because one day we might want to use it on other platforms. -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-mingw', 'linuxcross', 'win64-vc'): sources += ['utf_winfunc.c'] env.BlenderLib('bf_utfconv', sources, Split(incs), Split(defs), libtype=['intern','player'], priority=[0,0]) diff --git a/source/SConscript b/source/SConscript index 0002cb4cf0b..cfb204cd52a 100644 --- a/source/SConscript +++ b/source/SConscript @@ -9,5 +9,5 @@ if env['WITH_BF_GAMEENGINE']: if env['WITH_BF_PLAYER']: SConscript (['blenderplayer/bad_level_call_stubs/SConscript']) -if env['OURPLATFORM'] in ('win64-vc', 'win32-vc', 'win32-mingw', 'linuxcross'): +if env['OURPLATFORM'] in ('win64-vc', 'win32-vc', 'win32-mingw', 'linuxcross', 'win64-mingw'): SConscript (['icons/SConscript']) diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript index 00c2cf1696e..ee9e6bc7739 100644 --- a/source/blender/blenkernel/SConscript +++ b/source/blender/blenkernel/SConscript @@ -114,7 +114,7 @@ if env['WITH_BF_FFTW3']: if env['WITH_BF_INTERNATIONAL']: defs.append('WITH_INTERNATIONAL') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript index ea51e5b6ab5..e53f622a5c4 100644 --- a/source/blender/blenlib/SConscript +++ b/source/blender/blenlib/SConscript @@ -16,7 +16,7 @@ if env['WITH_BF_BINRELOC']: incs += ' ../../../extern/binreloc/include' defs.append('WITH_BINRELOC') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] incs += ' ../../../intern/utfconv' diff --git a/source/blender/blenpluginapi/SConscript b/source/blender/blenpluginapi/SConscript index a5e7f479cfb..fe37091bb95 100644 --- a/source/blender/blenpluginapi/SConscript +++ b/source/blender/blenpluginapi/SConscript @@ -17,7 +17,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( libname = 'bf_blenpluginapi', sources = sources, includes = Split(incs), defines = defs, libtype=['core'], priority = [170] ) diff --git a/source/blender/editors/armature/SConscript b/source/blender/editors/armature/SConscript index e5c96d3530f..ba375f30093 100644 --- a/source/blender/editors/armature/SConscript +++ b/source/blender/editors/armature/SConscript @@ -14,7 +14,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: diff --git a/source/blender/editors/mesh/SConscript b/source/blender/editors/mesh/SConscript index 8142faf67a1..b3aba977b21 100644 --- a/source/blender/editors/mesh/SConscript +++ b/source/blender/editors/mesh/SConscript @@ -15,7 +15,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_GAMEENGINE']: diff --git a/source/blender/editors/object/SConscript b/source/blender/editors/object/SConscript index 883d0ca20ae..b53ea549853 100644 --- a/source/blender/editors/object/SConscript +++ b/source/blender/editors/object/SConscript @@ -15,7 +15,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_PYTHON']: diff --git a/source/blender/editors/physics/SConscript b/source/blender/editors/physics/SConscript index a478b2afb1c..9fe6cff4349 100644 --- a/source/blender/editors/physics/SConscript +++ b/source/blender/editors/physics/SConscript @@ -14,7 +14,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] diff --git a/source/blender/editors/render/SConscript b/source/blender/editors/render/SConscript index 1f93db653f5..0b19ecdab8e 100644 --- a/source/blender/editors/render/SConscript +++ b/source/blender/editors/render/SConscript @@ -13,7 +13,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] diff --git a/source/blender/editors/screen/SConscript b/source/blender/editors/screen/SConscript index 038a86328a3..0e894a13d28 100644 --- a/source/blender/editors/screen/SConscript +++ b/source/blender/editors/screen/SConscript @@ -14,7 +14,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: diff --git a/source/blender/editors/sculpt_paint/SConscript b/source/blender/editors/sculpt_paint/SConscript index 8669ea6c695..21439e6c6b2 100644 --- a/source/blender/editors/sculpt_paint/SConscript +++ b/source/blender/editors/sculpt_paint/SConscript @@ -18,7 +18,7 @@ if env['OURPLATFORM'] == 'linuxcross': if env['WITH_BF_OPENMP']: incs += ' ' + env['BF_OPENMP_INC'] -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( 'bf_editors_sculpt_paint', sources, Split(incs), defines=defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/space_file/SConscript b/source/blender/editors/space_file/SConscript index ad8bcba39d6..b387d489805 100644 --- a/source/blender/editors/space_file/SConscript +++ b/source/blender/editors/space_file/SConscript @@ -26,7 +26,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] - + env.BlenderLib ( 'bf_editors_space_file', sources, Split(incs), defs, libtype=['core'], priority=[115] ) diff --git a/source/blender/editors/space_image/SConscript b/source/blender/editors/space_image/SConscript index cdd2133d0f5..759d4592992 100644 --- a/source/blender/editors/space_image/SConscript +++ b/source/blender/editors/space_image/SConscript @@ -18,7 +18,7 @@ if env['WITH_BF_TIFF']: if env['WITH_BF_CINEON']: defs.append('WITH_CINEON') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( 'bf_editors_space_image', sources, Split(incs), defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/space_node/SConscript b/source/blender/editors/space_node/SConscript index 58fae203cf5..2dee750f8c0 100644 --- a/source/blender/editors/space_node/SConscript +++ b/source/blender/editors/space_node/SConscript @@ -19,7 +19,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: diff --git a/source/blender/editors/space_sequencer/SConscript b/source/blender/editors/space_sequencer/SConscript index 3430c10b766..65aadfa1c8a 100644 --- a/source/blender/editors/space_sequencer/SConscript +++ b/source/blender/editors/space_sequencer/SConscript @@ -8,7 +8,7 @@ incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' incs += ' ../../makesrna ../../blenloader' incs += ' #/intern/audaspace/intern' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( 'bf_editors_space_sequencer', sources, Split(incs), [], libtype=['core'], priority=[100] ) diff --git a/source/blender/editors/space_view3d/SConscript b/source/blender/editors/space_view3d/SConscript index e412927f8ca..ffe35019960 100644 --- a/source/blender/editors/space_view3d/SConscript +++ b/source/blender/editors/space_view3d/SConscript @@ -13,7 +13,7 @@ incs += ' #source/gameengine/BlenderRoutines' if env['WITH_BF_GAMEENGINE']: defs.append('WITH_GAMEENGINE') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: diff --git a/source/blender/gpu/SConscript b/source/blender/gpu/SConscript index 181af6bb1d4..11b0ee5f9fa 100644 --- a/source/blender/gpu/SConscript +++ b/source/blender/gpu/SConscript @@ -8,7 +8,7 @@ defs = [ 'GLEW_STATIC' ] incs = '../blenlib ../blenkernel ../makesdna ../makesrna ../include ../blenloader ../nodes ../nodes/intern' incs += ' #/extern/glew/include #intern/guardedalloc #intern/smoke/extern ../imbuf .' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] incs += ' ' + env['BF_OPENGL_INC'] diff --git a/source/blender/imbuf/SConscript b/source/blender/imbuf/SConscript index b2b526ca17d..a1030112f4b 100644 --- a/source/blender/imbuf/SConscript +++ b/source/blender/imbuf/SConscript @@ -15,7 +15,7 @@ incs += ' ' + env['BF_ZLIB_INC'] defs = [] -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] incs += ' ../../../intern/utfconv' diff --git a/source/blender/makesdna/intern/SConscript b/source/blender/makesdna/intern/SConscript index a819d827788..c1e6eb5281d 100644 --- a/source/blender/makesdna/intern/SConscript +++ b/source/blender/makesdna/intern/SConscript @@ -57,7 +57,7 @@ dna.Depends ('dna.c', makesdna) dna.Depends ('dna.c', header_files) if env['OURPLATFORM'] != 'linuxcross': - if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'win64-mingw'): dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET") else: dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET") diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index d4ee86b281c..2bafc586a58 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -68,7 +68,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript index c8d7e0ae421..99fab18b4bf 100644 --- a/source/blender/makesrna/intern/SConscript +++ b/source/blender/makesrna/intern/SConscript @@ -96,7 +96,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] if env['WITH_BF_INTERNATIONAL']: @@ -160,7 +160,7 @@ rna.Depends (generated_files, makesrna) build_dir = root_build_dir + os.sep +'source' + os.sep + 'blender' + os.sep + 'makesrna' + os.sep + 'intern' + os.sep if env['OURPLATFORM'] != 'linuxcross': - if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): + if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'win64-mingw'): rna.Command (generated_files, '', "\"" + root_build_dir+os.sep+"makesrna.exe\" \"" + build_dir ) else: rna.Command (generated_files, '', "\"" + root_build_dir+os.sep+"makesrna\" \"" + build_dir + '"' ) diff --git a/source/blender/nodes/SConscript b/source/blender/nodes/SConscript index fcf00bdef78..c8b13e24533 100644 --- a/source/blender/nodes/SConscript +++ b/source/blender/nodes/SConscript @@ -33,7 +33,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( libname = 'bf_nodes', sources = sources, includes = Split(incs), defines = defs, libtype=['core','player'], priority = [190,105] ) diff --git a/source/blender/python/SConscript b/source/blender/python/SConscript index 08b3fc8e643..a79138f9eb5 100644 --- a/source/blender/python/SConscript +++ b/source/blender/python/SConscript @@ -9,7 +9,7 @@ incs += ' ../imbuf ../blenloader ../bmesh ../gpu ../render/extern/include ../win incs += ' #intern/guardedalloc #intern/memutil #extern/glew/include #intern/cycles/blender' incs += ' #intern/audaspace/intern ' + env['BF_PYTHON_INC'] -is_debug = (env['OURPLATFORM'] in ('win32-mingw', 'win32-vc','win64-vc') and env['BF_DEBUG']) +is_debug = (env['OURPLATFORM'] in ('win32-mingw', 'win32-vc','win64-vc', 'win64-mingw') and env['BF_DEBUG']) # bmesh defs = [] @@ -56,7 +56,7 @@ if env['WITH_BF_FFMPEG']: defs.append('WITH_FFMPEG') incs += ' ' + env['BF_FFMPEG_INC'] -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] sources = env.Glob('intern/*.c') diff --git a/source/blender/render/SConscript b/source/blender/render/SConscript index db35764a31c..8a044b19a79 100644 --- a/source/blender/render/SConscript +++ b/source/blender/render/SConscript @@ -29,7 +29,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] cxxflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] -if env['OURPLATFORM'] == 'win32-mingw': +if env['OURPLATFORM'] in ('win32-mingw', 'win64-mingw'): if env['WITH_BF_RAYOPTIMIZATION']: cflags_raytrace = env['CCFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] cxxflags_raytrace = env['CXXFLAGS'] + env['BF_RAYOPTIMIZATION_SSE_FLAGS'] @@ -60,7 +60,7 @@ if env['WITH_BF_OPENEXR']: if env['WITH_BF_GAMEENGINE']: defs.append('WITH_GAMEENGINE') -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] # diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript index ddb61d721cc..57d632c7d04 100644 --- a/source/blender/windowmanager/SConscript +++ b/source/blender/windowmanager/SConscript @@ -30,7 +30,7 @@ if env['OURPLATFORM'] == 'linux': cflags='-pthread' incs += ' ../../../extern/binreloc/include' -if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'): incs += ' ' + env['BF_PTHREADS_INC'] incs += ' ../../intern/utfconv' diff --git a/source/gameengine/Converter/SConscript b/source/gameengine/Converter/SConscript index 5d8e2bc93b6..4e2adbdc021 100644 --- a/source/gameengine/Converter/SConscript +++ b/source/gameengine/Converter/SConscript @@ -26,7 +26,7 @@ incs += ' #extern/Eigen3' incs += ' ' + env['BF_BULLET_INC'] if env['BF_DEBUG']: - if env['OURPLATFORM'] in ('win32-mingw', 'win32-vc', 'win64-vc'): + if env['OURPLATFORM'] in ('win32-mingw', 'win32-vc', 'win64-vc', 'win64-mingw'): defs.append('_DEBUG') if env['WITH_BF_PYTHON']: diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript index 064f09df9f3..2943acd546d 100644 --- a/source/gameengine/Ketsji/SConscript +++ b/source/gameengine/Ketsji/SConscript @@ -36,7 +36,7 @@ if env['WITH_BF_PYTHON']: if env['WITH_BF_FFMPEG']: defs.append('WITH_FFMPEG') -if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'): +if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw', 'win64-mingw'): if env['BF_DEBUG']: defs.append('_DEBUG') # for Python diff --git a/source/gameengine/VideoTexture/SConscript b/source/gameengine/VideoTexture/SConscript index b39a59e4504..1e3f232a919 100644 --- a/source/gameengine/VideoTexture/SConscript +++ b/source/gameengine/VideoTexture/SConscript @@ -16,7 +16,7 @@ incs += ' #intern/guardedalloc #intern/container #extern/glew/include' incs += ' #intern/ffmpeg' defs = [] -if env['OURPLATFORM'] in ('win32-vc', 'win64-vc','win32-mingw'): +if env['OURPLATFORM'] in ('win32-vc', 'win64-vc','win32-mingw', 'win64-mingw'): if env['BF_DEBUG']: defs.append('_DEBUG') From 0db3c5f74300980d35b3114992c299f072b913b1 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 14:33:44 +0000 Subject: [PATCH 072/158] Remove mingw-w64 errors from loss of precision by converting 64bit pointers to ints. All cases found were harmless and the error behaviour could be turned off by the -fpermissive flag but I'd rather keep that off to detect any real problems should they arise. --- CMakeLists.txt | 5 ++- .../scons/config/win64-mingw-config.py | 2 +- .../patches/MinGW64-nopermissive.patch | 39 +++++++++++++++++++ extern/bullet2/src/LinearMath/btSerializer.h | 13 +++++-- intern/audaspace/intern/AUD_Buffer.cpp | 11 +++++- .../patches/mingw64-nopermissive.patch | 23 +++++++++++ intern/elbeem/intern/ntl_geometrymodel.cpp | 11 +++++- .../elbeem/patches/mingw64_nopermissive.patch | 29 ++++++++++++++ .../gameengine/Expressions/KX_HashedPtr.cpp | 6 ++- source/gameengine/Ketsji/KX_GameObject.cpp | 5 ++- .../gameengine/Ketsji/KX_IPO_SGController.cpp | 5 ++- 11 files changed, 136 insertions(+), 13 deletions(-) create mode 100644 extern/bullet2/patches/MinGW64-nopermissive.patch create mode 100644 intern/audaspace/patches/mingw64-nopermissive.patch create mode 100644 intern/elbeem/patches/mingw64_nopermissive.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index a2926182c5a..9250dae9ad8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1008,8 +1008,9 @@ elseif(WIN32) if(WITH_MINGW64) #Yes, the point for MinGW64 is moar optimization by default :) - set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -O3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") + set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2") + set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread") add_definitions(-DFREE_WINDOWS64 -DMS_WIN64) diff --git a/build_files/scons/config/win64-mingw-config.py b/build_files/scons/config/win64-mingw-config.py index 0379ea48088..98d45ae2054 100644 --- a/build_files/scons/config/win64-mingw-config.py +++ b/build_files/scons/config/win64-mingw-config.py @@ -176,7 +176,7 @@ CC = 'gcc' CXX = 'g++' CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] -CXXFLAGS = [ '-fpermissive' ] +#CXXFLAGS = [ '-fpermissive' ] CPPFLAGS = ['-DWIN32', '-DMS_WIN64', '-DFREE_WINDOWS', '-DFREE_WINDOWS64', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-D_SSIZE_T_'] REL_CFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] diff --git a/extern/bullet2/patches/MinGW64-nopermissive.patch b/extern/bullet2/patches/MinGW64-nopermissive.patch new file mode 100644 index 00000000000..915f232f6d7 --- /dev/null +++ b/extern/bullet2/patches/MinGW64-nopermissive.patch @@ -0,0 +1,39 @@ +Index: LinearMath/btSerializer.h +=================================================================== +--- LinearMath/btSerializer.h (revision 45919) ++++ LinearMath/btSerializer.h (working copy) +@@ -25,8 +25,15 @@ + #endif + #include + ++#if defined(_WIN64) ++# ifdef __MINGW64__ ++# include ++# endif ++typedef __int64 int_ptr; ++#else ++typedef long int_ptr; ++#endif + +- + ///only the 32bit versions for now + extern unsigned char sBulletDNAstr[]; + extern int sBulletDNAlen; +@@ -247,7 +254,7 @@ + cp++; + } + { +- nr= (long)cp; ++ nr= (int_ptr)cp; + // long mask=3; + nr= ((nr+3)&~3)-nr; + while (nr--) +@@ -282,7 +289,7 @@ + } + + { +- nr= (long)cp; ++ nr= (int_ptr)cp; + // long mask=3; + nr= ((nr+3)&~3)-nr; + while (nr--) diff --git a/extern/bullet2/src/LinearMath/btSerializer.h b/extern/bullet2/src/LinearMath/btSerializer.h index 8a89374c612..a1e766c95ce 100644 --- a/extern/bullet2/src/LinearMath/btSerializer.h +++ b/extern/bullet2/src/LinearMath/btSerializer.h @@ -25,7 +25,14 @@ subject to the following restrictions: #endif #include - +#if defined(_WIN64) +# ifdef __MINGW64__ +# include +# endif +typedef __int64 int_ptr; +#else +typedef long int_ptr; +#endif ///only the 32bit versions for now extern unsigned char sBulletDNAstr[]; @@ -247,7 +254,7 @@ protected: cp++; } { - nr= (long)cp; + nr= (int_ptr)cp; // long mask=3; nr= ((nr+3)&~3)-nr; while (nr--) @@ -282,7 +289,7 @@ protected: } { - nr= (long)cp; + nr= (int_ptr)cp; // long mask=3; nr= ((nr+3)&~3)-nr; while (nr--) diff --git a/intern/audaspace/intern/AUD_Buffer.cpp b/intern/audaspace/intern/AUD_Buffer.cpp index b7157f672b4..624a4d0b2c8 100644 --- a/intern/audaspace/intern/AUD_Buffer.cpp +++ b/intern/audaspace/intern/AUD_Buffer.cpp @@ -33,7 +33,16 @@ #include #include -#define AUD_ALIGN(a) (a + 16 - ((long)a & 15)) +#if defined(_WIN64) +# ifdef __MINGW64__ +# include +# endif +typedef unsigned __int64 uint_ptr; +#else +typedef unsigned long uint_ptr; +#endif + +#define AUD_ALIGN(a) (a + 16 - ((uint_ptr)a & 15)) AUD_Buffer::AUD_Buffer(int size) { diff --git a/intern/audaspace/patches/mingw64-nopermissive.patch b/intern/audaspace/patches/mingw64-nopermissive.patch new file mode 100644 index 00000000000..64420d240f3 --- /dev/null +++ b/intern/audaspace/patches/mingw64-nopermissive.patch @@ -0,0 +1,23 @@ +Index: intern/AUD_Buffer.cpp +=================================================================== +--- intern/AUD_Buffer.cpp (revision 45919) ++++ intern/AUD_Buffer.cpp (working copy) +@@ -33,8 +33,17 @@ + #include + #include + +-#define AUD_ALIGN(a) (a + 16 - ((long)a & 15)) ++#if defined(_WIN64) ++# ifdef __MINGW64__ ++# include ++# endif ++typedef unsigned __int64 uint_ptr; ++#else ++typedef unsigned long uint_ptr; ++#endif + ++#define AUD_ALIGN(a) (a + 16 - ((uint_ptr)a & 15)) ++ + AUD_Buffer::AUD_Buffer(int size) + { + m_size = size; diff --git a/intern/elbeem/intern/ntl_geometrymodel.cpp b/intern/elbeem/intern/ntl_geometrymodel.cpp index 13220736b8e..b518416b639 100644 --- a/intern/elbeem/intern/ntl_geometrymodel.cpp +++ b/intern/elbeem/intern/ntl_geometrymodel.cpp @@ -21,7 +21,14 @@ #endif #endif // WIN32 - +#if defined(_WIN64) +# ifdef __MINGW64__ +# include +# endif +typedef __int64 int_ptr; +#else +typedef long int_ptr; +#endif /****************************************************************************** * Default Constructor *****************************************************************************/ @@ -164,7 +171,7 @@ int ntlGeometryObjModel::initModel(int numVertices, float *vertices, int numTria } //fprintf(stderr,"initModel DEBUG %d \n",channelSize); - debMsgStd("ntlGeometryObjModel::initModel",DM_MSG, "Csize:"<0)) { vector aniverts; vector aninorms; diff --git a/intern/elbeem/patches/mingw64_nopermissive.patch b/intern/elbeem/patches/mingw64_nopermissive.patch new file mode 100644 index 00000000000..a01e65d43e4 --- /dev/null +++ b/intern/elbeem/patches/mingw64_nopermissive.patch @@ -0,0 +1,29 @@ +Index: intern/ntl_geometrymodel.cpp +=================================================================== +--- intern/ntl_geometrymodel.cpp (revision 45919) ++++ intern/ntl_geometrymodel.cpp (working copy) +@@ -21,7 +21,14 @@ + #endif + #endif // WIN32 + +- ++#if defined(_WIN64) ++# ifdef __MINGW64__ ++# include ++# endif ++typedef __int64 int_ptr; ++#else ++typedef long int_ptr; ++#endif + /****************************************************************************** + * Default Constructor + *****************************************************************************/ +@@ -164,7 +171,7 @@ + } + + //fprintf(stderr,"initModel DEBUG %d \n",channelSize); +- debMsgStd("ntlGeometryObjModel::initModel",DM_MSG, "Csize:"<0)) { + vector aniverts; + vector aninorms; diff --git a/source/gameengine/Expressions/KX_HashedPtr.cpp b/source/gameengine/Expressions/KX_HashedPtr.cpp index 51550d52636..84488e3641d 100644 --- a/source/gameengine/Expressions/KX_HashedPtr.cpp +++ b/source/gameengine/Expressions/KX_HashedPtr.cpp @@ -28,13 +28,15 @@ /** \file gameengine/Expressions/KX_HashedPtr.cpp * \ingroup expressions */ - +#ifdef __MINGW64__ +#include +#endif #include "KX_HashedPtr.h" unsigned int KX_Hash(void * inDWord) { -#if defined(_WIN64) && !defined(FREE_WINDOWS64) +#ifdef _WIN64 unsigned __int64 key = (unsigned __int64)inDWord; #else unsigned long key = (unsigned long)inDWord; diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index c5145ef2171..bdb586b2474 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -31,7 +31,10 @@ */ -#if defined(_WIN64) && !defined(FREE_WINDOWS64) +#if defined(_WIN64) +# ifdef __MINGW64__ +# include +# endif typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp index 950e3c88a9e..b8872f5ddc3 100644 --- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp +++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp @@ -31,7 +31,10 @@ */ -#if defined(_WIN64) && !defined(FREE_WINDOWS64) +#if defined(_WIN64) +# ifdef __MINGW64__ +# include +# endif typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; From 749d284b498fb1cde7996d712497ce478c978f3a Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 14:51:23 +0000 Subject: [PATCH 073/158] MinGW-w64 enable full optimization for C++ too --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9250dae9ad8..ad3a293b937 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1010,6 +1010,7 @@ elseif(WIN32) #Yes, the point for MinGW64 is moar optimization by default :) set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2") set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread") From 4e6590067d5c398479d0d041b3afacc26d24061d Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 16:14:23 +0000 Subject: [PATCH 074/158] revert 45924, not a very clean solution, especially for external libraries and looks like -fpermissive is used in linux too --- CMakeLists.txt | 6 +-- .../scons/config/win64-mingw-config.py | 2 +- .../patches/MinGW64-nopermissive.patch | 39 ------------------- extern/bullet2/src/LinearMath/btSerializer.h | 13 ++----- intern/audaspace/intern/AUD_Buffer.cpp | 11 +----- .../patches/mingw64-nopermissive.patch | 23 ----------- intern/elbeem/intern/ntl_geometrymodel.cpp | 11 +----- .../elbeem/patches/mingw64_nopermissive.patch | 29 -------------- .../gameengine/Expressions/KX_HashedPtr.cpp | 6 +-- source/gameengine/Ketsji/KX_GameObject.cpp | 5 +-- .../gameengine/Ketsji/KX_IPO_SGController.cpp | 5 +-- 11 files changed, 13 insertions(+), 137 deletions(-) delete mode 100644 extern/bullet2/patches/MinGW64-nopermissive.patch delete mode 100644 intern/audaspace/patches/mingw64-nopermissive.patch delete mode 100644 intern/elbeem/patches/mingw64_nopermissive.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index ad3a293b937..a2926182c5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1008,10 +1008,8 @@ elseif(WIN32) if(WITH_MINGW64) #Yes, the point for MinGW64 is moar optimization by default :) - set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2") - set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") + set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread") add_definitions(-DFREE_WINDOWS64 -DMS_WIN64) diff --git a/build_files/scons/config/win64-mingw-config.py b/build_files/scons/config/win64-mingw-config.py index 98d45ae2054..0379ea48088 100644 --- a/build_files/scons/config/win64-mingw-config.py +++ b/build_files/scons/config/win64-mingw-config.py @@ -176,7 +176,7 @@ CC = 'gcc' CXX = 'g++' CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] -#CXXFLAGS = [ '-fpermissive' ] +CXXFLAGS = [ '-fpermissive' ] CPPFLAGS = ['-DWIN32', '-DMS_WIN64', '-DFREE_WINDOWS', '-DFREE_WINDOWS64', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-D_SSIZE_T_'] REL_CFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] diff --git a/extern/bullet2/patches/MinGW64-nopermissive.patch b/extern/bullet2/patches/MinGW64-nopermissive.patch deleted file mode 100644 index 915f232f6d7..00000000000 --- a/extern/bullet2/patches/MinGW64-nopermissive.patch +++ /dev/null @@ -1,39 +0,0 @@ -Index: LinearMath/btSerializer.h -=================================================================== ---- LinearMath/btSerializer.h (revision 45919) -+++ LinearMath/btSerializer.h (working copy) -@@ -25,8 +25,15 @@ - #endif - #include - -+#if defined(_WIN64) -+# ifdef __MINGW64__ -+# include -+# endif -+typedef __int64 int_ptr; -+#else -+typedef long int_ptr; -+#endif - -- - ///only the 32bit versions for now - extern unsigned char sBulletDNAstr[]; - extern int sBulletDNAlen; -@@ -247,7 +254,7 @@ - cp++; - } - { -- nr= (long)cp; -+ nr= (int_ptr)cp; - // long mask=3; - nr= ((nr+3)&~3)-nr; - while (nr--) -@@ -282,7 +289,7 @@ - } - - { -- nr= (long)cp; -+ nr= (int_ptr)cp; - // long mask=3; - nr= ((nr+3)&~3)-nr; - while (nr--) diff --git a/extern/bullet2/src/LinearMath/btSerializer.h b/extern/bullet2/src/LinearMath/btSerializer.h index a1e766c95ce..8a89374c612 100644 --- a/extern/bullet2/src/LinearMath/btSerializer.h +++ b/extern/bullet2/src/LinearMath/btSerializer.h @@ -25,14 +25,7 @@ subject to the following restrictions: #endif #include -#if defined(_WIN64) -# ifdef __MINGW64__ -# include -# endif -typedef __int64 int_ptr; -#else -typedef long int_ptr; -#endif + ///only the 32bit versions for now extern unsigned char sBulletDNAstr[]; @@ -254,7 +247,7 @@ protected: cp++; } { - nr= (int_ptr)cp; + nr= (long)cp; // long mask=3; nr= ((nr+3)&~3)-nr; while (nr--) @@ -289,7 +282,7 @@ protected: } { - nr= (int_ptr)cp; + nr= (long)cp; // long mask=3; nr= ((nr+3)&~3)-nr; while (nr--) diff --git a/intern/audaspace/intern/AUD_Buffer.cpp b/intern/audaspace/intern/AUD_Buffer.cpp index 624a4d0b2c8..b7157f672b4 100644 --- a/intern/audaspace/intern/AUD_Buffer.cpp +++ b/intern/audaspace/intern/AUD_Buffer.cpp @@ -33,16 +33,7 @@ #include #include -#if defined(_WIN64) -# ifdef __MINGW64__ -# include -# endif -typedef unsigned __int64 uint_ptr; -#else -typedef unsigned long uint_ptr; -#endif - -#define AUD_ALIGN(a) (a + 16 - ((uint_ptr)a & 15)) +#define AUD_ALIGN(a) (a + 16 - ((long)a & 15)) AUD_Buffer::AUD_Buffer(int size) { diff --git a/intern/audaspace/patches/mingw64-nopermissive.patch b/intern/audaspace/patches/mingw64-nopermissive.patch deleted file mode 100644 index 64420d240f3..00000000000 --- a/intern/audaspace/patches/mingw64-nopermissive.patch +++ /dev/null @@ -1,23 +0,0 @@ -Index: intern/AUD_Buffer.cpp -=================================================================== ---- intern/AUD_Buffer.cpp (revision 45919) -+++ intern/AUD_Buffer.cpp (working copy) -@@ -33,8 +33,17 @@ - #include - #include - --#define AUD_ALIGN(a) (a + 16 - ((long)a & 15)) -+#if defined(_WIN64) -+# ifdef __MINGW64__ -+# include -+# endif -+typedef unsigned __int64 uint_ptr; -+#else -+typedef unsigned long uint_ptr; -+#endif - -+#define AUD_ALIGN(a) (a + 16 - ((uint_ptr)a & 15)) -+ - AUD_Buffer::AUD_Buffer(int size) - { - m_size = size; diff --git a/intern/elbeem/intern/ntl_geometrymodel.cpp b/intern/elbeem/intern/ntl_geometrymodel.cpp index b518416b639..13220736b8e 100644 --- a/intern/elbeem/intern/ntl_geometrymodel.cpp +++ b/intern/elbeem/intern/ntl_geometrymodel.cpp @@ -21,14 +21,7 @@ #endif #endif // WIN32 -#if defined(_WIN64) -# ifdef __MINGW64__ -# include -# endif -typedef __int64 int_ptr; -#else -typedef long int_ptr; -#endif + /****************************************************************************** * Default Constructor *****************************************************************************/ @@ -171,7 +164,7 @@ int ntlGeometryObjModel::initModel(int numVertices, float *vertices, int numTria } //fprintf(stderr,"initModel DEBUG %d \n",channelSize); - debMsgStd("ntlGeometryObjModel::initModel",DM_MSG, "Csize:"<0)) { vector aniverts; vector aninorms; diff --git a/intern/elbeem/patches/mingw64_nopermissive.patch b/intern/elbeem/patches/mingw64_nopermissive.patch deleted file mode 100644 index a01e65d43e4..00000000000 --- a/intern/elbeem/patches/mingw64_nopermissive.patch +++ /dev/null @@ -1,29 +0,0 @@ -Index: intern/ntl_geometrymodel.cpp -=================================================================== ---- intern/ntl_geometrymodel.cpp (revision 45919) -+++ intern/ntl_geometrymodel.cpp (working copy) -@@ -21,7 +21,14 @@ - #endif - #endif // WIN32 - -- -+#if defined(_WIN64) -+# ifdef __MINGW64__ -+# include -+# endif -+typedef __int64 int_ptr; -+#else -+typedef long int_ptr; -+#endif - /****************************************************************************** - * Default Constructor - *****************************************************************************/ -@@ -164,7 +171,7 @@ - } - - //fprintf(stderr,"initModel DEBUG %d \n",channelSize); -- debMsgStd("ntlGeometryObjModel::initModel",DM_MSG, "Csize:"<0)) { - vector aniverts; - vector aninorms; diff --git a/source/gameengine/Expressions/KX_HashedPtr.cpp b/source/gameengine/Expressions/KX_HashedPtr.cpp index 84488e3641d..51550d52636 100644 --- a/source/gameengine/Expressions/KX_HashedPtr.cpp +++ b/source/gameengine/Expressions/KX_HashedPtr.cpp @@ -28,15 +28,13 @@ /** \file gameengine/Expressions/KX_HashedPtr.cpp * \ingroup expressions */ -#ifdef __MINGW64__ -#include -#endif + #include "KX_HashedPtr.h" unsigned int KX_Hash(void * inDWord) { -#ifdef _WIN64 +#if defined(_WIN64) && !defined(FREE_WINDOWS64) unsigned __int64 key = (unsigned __int64)inDWord; #else unsigned long key = (unsigned long)inDWord; diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index bdb586b2474..c5145ef2171 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -31,10 +31,7 @@ */ -#if defined(_WIN64) -# ifdef __MINGW64__ -# include -# endif +#if defined(_WIN64) && !defined(FREE_WINDOWS64) typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; diff --git a/source/gameengine/Ketsji/KX_IPO_SGController.cpp b/source/gameengine/Ketsji/KX_IPO_SGController.cpp index b8872f5ddc3..950e3c88a9e 100644 --- a/source/gameengine/Ketsji/KX_IPO_SGController.cpp +++ b/source/gameengine/Ketsji/KX_IPO_SGController.cpp @@ -31,10 +31,7 @@ */ -#if defined(_WIN64) -# ifdef __MINGW64__ -# include -# endif +#if defined(_WIN64) && !defined(FREE_WINDOWS64) typedef unsigned __int64 uint_ptr; #else typedef unsigned long uint_ptr; From 791933b9a758537ce3f5baa68aa1399f8bcb76ab Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 16:23:47 +0000 Subject: [PATCH 075/158] remove leftover files from last commit --- extern/bullet2/patches/mingw64_scons.patch | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 extern/bullet2/patches/mingw64_scons.patch diff --git a/extern/bullet2/patches/mingw64_scons.patch b/extern/bullet2/patches/mingw64_scons.patch deleted file mode 100644 index e63dee3c48c..00000000000 --- a/extern/bullet2/patches/mingw64_scons.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: SConscript -=================================================================== ---- SConscript (revision 45919) -+++ SConscript (working copy) -@@ -11,7 +11,7 @@ - defs += ' WIN32 NDEBUG _WINDOWS' - #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op'] - cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs'] --elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross'): -+elif env['OURPLATFORM'] in ('win32-mingw', 'linuxcross', 'win64-mingw'): - defs += ' NDEBUG' - cflags += ['-O2'] - elif env['OURPLATFORM'] in ('linux', 'freebsd4', 'freebsd5'): From 166b3523f02c869b5855b3df69a97d7265e39974 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 24 Apr 2012 16:35:20 +0000 Subject: [PATCH 076/158] Prevent adding objects to be added to a group which is used as dupli-group for this object when using "Add Selected to Active Group" operator, --- source/blender/editors/object/object_group.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 34410b87e79..3867b1e34cb 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -65,7 +65,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Object *ob= OBACT; Group *group; - int ok = 0; + int ok = 0, cycle = 0; if (!ob) return OPERATOR_CANCELLED; @@ -76,7 +76,10 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) if (object_in_group(ob, group)) { /* Assign groups to selected objects */ CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - add_to_group(group, base->object, scene, base); + if (base->object->dup_group != group) + add_to_group(group, base->object, scene, base); + else + cycle = 1; ok = 1; } CTX_DATA_END; @@ -84,6 +87,8 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) } if (!ok) BKE_report(op->reports, RPT_ERROR, "Active Object contains no groups"); + if (cycle) + BKE_report(op->reports, RPT_WARNING, "Skipped some groups because of cycle detected"); DAG_scene_sort(bmain, scene); WM_event_add_notifier(C, NC_GROUP|NA_EDITED, NULL); From 75addcf2330ac4347b347fe537d38a1e71bebf43 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 24 Apr 2012 17:20:51 +0000 Subject: [PATCH 077/158] Lower optimization settings for MinGW-w64. Full optimization causes artifacts with empties and gods know what else. Turned on -ftree-vectorize to match MSVC behaviour for 64bit. --- CMakeLists.txt | 2 +- build_files/scons/config/win64-mingw-config.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a2926182c5a..cc3636239dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1008,7 +1008,7 @@ elseif(WIN32) if(WITH_MINGW64) #Yes, the point for MinGW64 is moar optimization by default :) - set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -O3") + set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -ftree-vectorize") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread") diff --git a/build_files/scons/config/win64-mingw-config.py b/build_files/scons/config/win64-mingw-config.py index 0379ea48088..055b0c7b9fd 100644 --- a/build_files/scons/config/win64-mingw-config.py +++ b/build_files/scons/config/win64-mingw-config.py @@ -179,9 +179,9 @@ CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] CXXFLAGS = [ '-fpermissive' ] CPPFLAGS = ['-DWIN32', '-DMS_WIN64', '-DFREE_WINDOWS', '-DFREE_WINDOWS64', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE', '-DBOOST_ALL_NO_LIB', '-DBOOST_THREAD_USE_LIB', '-DGLEW_STATIC', '-D_SSIZE_T_'] -REL_CFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] -REL_CXXFLAGS = ['-O3', '-mmmx', '-msse', '-msse2'] -REL_CCFLAGS = ['-DNDEBUG', '-O3', '-mmmx', '-msse', '-msse2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] +REL_CCFLAGS = ['-DNDEBUG', '-O2', '-ftree-vectorize', '-mmmx', '-msse', '-msse2'] C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes'] From c2ede58d683dca03b3b4d44a75b22655181e4142 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 17:50:01 +0000 Subject: [PATCH 078/158] fix [#31083] "Hide Selected" through Menu Operation doesn't work well --- release/scripts/startup/bl_ui/space_view3d.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 31ef6b79be3..9cf52056875 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -131,7 +131,7 @@ class ShowHideMenu(): layout = self.layout layout.operator("%s.reveal" % self._operator_name, text="Show Hidden") - layout.operator("%s.hide" % self._operator_name, text="Hide Selected") + layout.operator("%s.hide" % self._operator_name, text="Hide Selected").unselected = False layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True @@ -1602,7 +1602,7 @@ class VIEW3D_MT_edit_mesh_specials(Menu): layout.operator("mesh.subdivide", text="Subdivide Smooth").smoothness = 1.0 layout.operator("mesh.merge", text="Merge...") layout.operator("mesh.remove_doubles") - layout.operator("mesh.hide", text="Hide") + layout.operator("mesh.hide", text="Hide").unselected = False layout.operator("mesh.reveal", text="Reveal") layout.operator("mesh.select_all", text="Select Inverse").action = 'INVERT' layout.operator("mesh.flip_normals") @@ -2036,7 +2036,7 @@ class VIEW3D_MT_edit_meta_showhide(Menu): layout = self.layout layout.operator("mball.reveal_metaelems", text="Show Hidden") - layout.operator("mball.hide_metaelems", text="Hide Selected") + layout.operator("mball.hide_metaelems", text="Hide Selected").unselected = False layout.operator("mball.hide_metaelems", text="Hide Unselected").unselected = True From b5be51c508ee6717471b67fe12a169e12e166cc0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 19:28:18 +0000 Subject: [PATCH 079/158] bmesh/uv editor - selecting in UV window with sync-sel enabled now sets/validates sel-history. - border de-select now clears sel history. --- source/blender/editors/include/ED_uvedit.h | 6 +- source/blender/editors/uvedit/uvedit_ops.c | 125 ++++++++++-------- .../editors/uvedit/uvedit_smart_stitch.c | 2 +- .../editors/uvedit/uvedit_unwrap_ops.c | 2 +- 4 files changed, 73 insertions(+), 62 deletions(-) diff --git a/source/blender/editors/include/ED_uvedit.h b/source/blender/editors/include/ED_uvedit.h index dfdbb1969cf..89a21026ec4 100644 --- a/source/blender/editors/include/ED_uvedit.h +++ b/source/blender/editors/include/ED_uvedit.h @@ -64,11 +64,11 @@ int uvedit_face_selected(struct Scene *scene, struct BMEditMesh *em, struct BMFa int uvedit_edge_selected(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); int uvedit_uv_selected(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -int uvedit_face_select(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); +int uvedit_face_select(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa, const short do_history); int uvedit_face_deselect(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); -void uvedit_edge_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +void uvedit_edge_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); void uvedit_edge_deselect(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -void uvedit_uv_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +void uvedit_uv_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); void uvedit_uv_deselect(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, float co[2], float uv[2]); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index c08093e09ee..0c1e5b771d7 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -84,6 +84,8 @@ #define EFA_F1_FLAG 2 +static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action); + /************************* state testing ************************/ int ED_uvedit_test(Object *obedit) @@ -324,12 +326,16 @@ int uvedit_face_selected(Scene *scene, BMEditMesh *em, BMFace *efa) } } -int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa) +int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa, const short do_history) { ToolSettings *ts = scene->toolsettings; - if (ts->uv_flag & UV_SYNC_SELECTION) + if (ts->uv_flag & UV_SYNC_SELECTION) { BM_face_select_set(em->bm, efa, TRUE); + if (do_history) { + BM_select_history_store(em->bm, (BMElem *)efa); + } + } else { BMLoop *l; MLoopUV *luv; @@ -395,7 +401,7 @@ int uvedit_edge_selected(BMEditMesh *em, Scene *scene, BMLoop *l) } } -void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l) +void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) { ToolSettings *ts = scene->toolsettings; @@ -409,6 +415,10 @@ void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l) BM_vert_select_set(em->bm, l->e->v1, TRUE); BM_vert_select_set(em->bm, l->e->v2, TRUE); } + + if (do_history) { + BM_select_history_store(em->bm, (BMElem *)l->e); + } } else { MLoopUV *luv1, *luv2; @@ -464,7 +474,7 @@ int uvedit_uv_selected(BMEditMesh *em, Scene *scene, BMLoop *l) } } -void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l) +void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) { ToolSettings *ts = scene->toolsettings; @@ -473,6 +483,10 @@ void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l) BM_face_select_set(em->bm, l->f, TRUE); else BM_vert_select_set(em->bm, l->v, TRUE); + + if (do_history) { + BM_select_history_remove(em->bm, (BMElem *)l->v); + } } else { MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); @@ -998,17 +1012,13 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit BM_mesh_elem_index_ensure(em->bm, BM_VERT); - count = 0; - BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { - if (!extend) { - uvedit_face_deselect(scene, em, efa); - } - + if (!extend) { + select_all_perform(scene, ima, em, SEL_DESELECT); + } + + BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, count) { BMO_elem_flag_disable(em->bm, efa, EFA_F1_FLAG); - BM_elem_index_set(efa, count); /* set_inline */ - - count++; } em->bm->elem_index_dirty &= ~BM_FACE; @@ -1083,7 +1093,7 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit iterv1 = uv_vertex_map_get(vmap, efa, a); if (iterv1->flag) { - if (select) uvedit_uv_select(em, scene, l); + if (select) uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); } @@ -1582,30 +1592,20 @@ static void UV_OT_weld(wmOperatorType *ot) /* ******************** (de)select all operator **************** */ -static void select_all_perform(bContext *C, int action) +static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action) { - Scene *scene; - ToolSettings *ts; - Object *obedit; - BMEditMesh *em; + ToolSettings *ts = scene->toolsettings; BMFace *efa; BMLoop *l; BMIter iter, liter; - Image *ima; MTexPoly *tf; MLoopUV *luv; - - scene = CTX_data_scene(C); - ts = CTX_data_tool_settings(C); - obedit = CTX_data_edit_object(C); - em = BMEdit_FromObject(obedit); - ima = CTX_data_edit_image(C); - + if (ts->uv_flag & UV_SYNC_SELECTION) { switch (action) { case SEL_TOGGLE: - EDBM_select_toggle_all(BMEdit_FromObject(obedit)); + EDBM_select_toggle_all(em); break; case SEL_SELECT: EDBM_flag_enable_all(em, BM_ELEM_SELECT); @@ -1667,10 +1667,14 @@ static void select_all_perform(bContext *C, int action) static int select_all_exec(bContext *C, wmOperator *op) { + Scene *scene = CTX_data_scene(C); Object *obedit = CTX_data_edit_object(C); + Image *ima = CTX_data_edit_image(C); + BMEditMesh *em = BMEdit_FromObject(obedit); + int action = RNA_enum_get(op->ptr, "action"); - select_all_perform(C, action); + select_all_perform(scene, ima, em, action); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); @@ -1731,7 +1735,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) MTexPoly *tf; MLoopUV *luv; NearestHit hit; - int i, select = 1, selectmode, sticky, sync, *hitv = NULL, nvert; + int i, select = 1, selectmode, sticky, sync, *hitv = NULL; BLI_array_declare(hitv); int flush = 0, hitlen = 0; /* 0 == don't flush, 1 == sel, -1 == desel; only use when selection sync is enabled */ float limit[2], **hituv = NULL; @@ -1811,16 +1815,12 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) /* mark 2 edge vertices as being hit */ BLI_array_growitems(hitv, hit.efa->len); BLI_array_growitems(hituv, hit.efa->len); - for (i = 0; i < hit.efa->len; i++) { - hitv[i] = 0xFFFFFFFF; - } - - nvert = hit.efa->len; + fill_vn_i(hitv, hit.efa->len, 0xFFFFFFFF); hitv[hit.lindex] = hit.vert1; - hitv[(hit.lindex + 1) % nvert] = hit.vert2; + hitv[(hit.lindex + 1) % hit.efa->len] = hit.vert2; hituv[hit.lindex] = hit.luv->uv; - hituv[(hit.lindex + 1) % nvert] = hit.nextluv->uv; + hituv[(hit.lindex + 1) % hit.efa->len] = hit.nextluv->uv; hitlen = hit.efa->len; } @@ -1883,7 +1883,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) select = 0; } else { - uvedit_uv_select(em, scene, hit.l); + uvedit_uv_select(em, scene, hit.l, TRUE); select = 1; } flush = 1; @@ -1895,7 +1895,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) select = 0; } else { - uvedit_edge_select(em, scene, hit.l); + uvedit_edge_select(em, scene, hit.l, TRUE); select = 1; } flush = 1; @@ -1907,12 +1907,19 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) select = 0; } else { - uvedit_face_select(scene, em, hit.efa); + uvedit_face_select(scene, em, hit.efa, TRUE); select = 1; } flush = -1; } + /* de-selecting an edge may deselect a face too - validate */ + if (ts->uv_flag & UV_SYNC_SELECTION) { + if (select == FALSE) { + BM_select_history_validate(em->bm); + } + } + /* (de)select sticky uv nodes */ if (sticky != SI_STICKY_DISABLE) { @@ -1943,7 +1950,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen)) - uvedit_uv_select(em, scene, l); + uvedit_uv_select(em, scene, l, FALSE); } } @@ -1953,23 +1960,21 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) } else { /* deselect all */ - BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { - uvedit_face_deselect(scene, em, efa); - } + select_all_perform(scene, ima, em, SEL_DESELECT); if (selectmode == UV_SELECT_VERTEX) { /* select vertex */ - uvedit_uv_select(em, scene, hit.l); + uvedit_uv_select(em, scene, hit.l, TRUE); flush = 1; } else if (selectmode == UV_SELECT_EDGE) { /* select edge */ - uvedit_edge_select(em, scene, hit.l); + uvedit_edge_select(em, scene, hit.l, TRUE); flush = 1; } else if (selectmode == UV_SELECT_FACE) { /* select face */ - uvedit_face_select(scene, em, hit.efa); + uvedit_face_select(scene, em, hit.efa, TRUE); } /* select sticky uvs */ @@ -1984,7 +1989,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen)) - uvedit_uv_select(em, scene, l); + uvedit_uv_select(em, scene, l, FALSE); flush = 1; } @@ -2317,7 +2322,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) { if (select) - uvedit_uv_select(em, scene, l); + uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); } @@ -2351,7 +2356,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { if (select) - uvedit_uv_select(em, scene, l); + uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); @@ -2378,7 +2383,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje /* tf_vlist = CustomData_bmesh_get(&em->bm->pdata, efa_vlist->head.data, CD_MTEXPOLY); */ /* UNUSED */ if (select) - uvedit_uv_select(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex)); + uvedit_uv_select(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex), FALSE); else uvedit_uv_deselect(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex)); } @@ -2395,7 +2400,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { if (BM_elem_flag_test(efa, BM_ELEM_TAG)) { if (select) - uvedit_face_select(scene, em, efa); + uvedit_face_select(scene, em, efa, FALSE); else uvedit_face_deselect(scene, em, efa); } @@ -2436,7 +2441,7 @@ static int border_select_exec(bContext *C, wmOperator *op) extend = RNA_boolean_get(op->ptr, "extend"); if (!extend) - select_all_perform(C, SEL_DESELECT); + select_all_perform(scene, ima, em, SEL_DESELECT); if (ts->uv_flag & UV_SYNC_SELECTION) faces = (ts->selectmode == SCE_SELECT_FACE); @@ -2483,14 +2488,14 @@ static int border_select_exec(bContext *C, wmOperator *op) /* UV_SYNC_SELECTION - can't do pinned selection */ if (BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) { - if (select) uvedit_uv_select(em, scene, l); + if (select) uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); } } else if (pinned) { if ((luv->flag & MLOOPUV_PINNED) && BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) { - if (select) uvedit_uv_select(em, scene, l); + if (select) uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); } } @@ -2509,6 +2514,12 @@ static int border_select_exec(bContext *C, wmOperator *op) } #endif + if (ts->uv_flag & UV_SYNC_SELECTION) { + if (select == FALSE) { + BM_select_history_validate(em->bm); + } + } + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); return OPERATOR_FINISHED; @@ -2556,7 +2567,7 @@ static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), S r2 = x * x + y * y; if (r2 < 1.0f) { - if (select) uvedit_uv_select(em, scene, l); + if (select) uvedit_uv_select(em, scene, l, FALSE); else uvedit_uv_deselect(em, scene, l); } } @@ -2952,7 +2963,7 @@ static int select_pinned_exec(bContext *C, wmOperator *UNUSED(op)) luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (luv->flag & MLOOPUV_PINNED) - uvedit_uv_select(em, scene, l); + uvedit_uv_select(em, scene, l, FALSE); } } diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c index 448072ebb72..1513979568d 100644 --- a/source/blender/editors/uvedit/uvedit_smart_stitch.c +++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c @@ -860,7 +860,7 @@ static int stitch_process_data(StitchState *state, Scene *scene, int final) if (final) { copy_v2_v2(luv->uv, final_position[i].uv); - uvedit_uv_select(state->em, scene, l); + uvedit_uv_select(state->em, scene, l, FALSE); } else { int face_preview_pos = preview_position[BM_elem_index_get(element_iter->face)].data_position; diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 5a0fb69a26c..8c8242a940c 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -139,7 +139,7 @@ static int ED_uvedit_ensure_uvs(bContext *C, Scene *scene, Object *obedit) /* select new UV's */ BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { - uvedit_face_select(scene, em, efa); + uvedit_face_select(scene, em, efa, FALSE); } return 1; From 25b6260c58287619dc9a2c4dae5db899c315bbc4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 19:53:00 +0000 Subject: [PATCH 080/158] bmesh: fix selection flushing when editing UV's and sync selection is enabled, and edge mode is in the 3D view. --- source/blender/editors/uvedit/uvedit_ops.c | 28 ++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 0c1e5b771d7..b3671c3c8fe 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -996,7 +996,8 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first return 1; } -static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit, float limit[2], int extend) +static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit *hit, + float limit[2], const short extend) { BMFace *efa; BMIter iter, liter; @@ -1914,7 +1915,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) } /* de-selecting an edge may deselect a face too - validate */ - if (ts->uv_flag & UV_SYNC_SELECTION) { + if (sync) { if (select == FALSE) { BM_select_history_validate(em->bm); } @@ -1997,19 +1998,32 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) } } -#if 0 /* BM_elem_select_set API handles all of this? */ - if (sync) { /* flush for mesh selection */ + + /* before bmesh */ +#if 0 if (ts->selectmode != SCE_SELECT_FACE) { if (flush == 1) EDBM_select_flush(em); else if (flush == -1) EDBM_deselect_flush(em); } - } #else - (void)flush; /* flush is otherwise UNUSED */ - (void)sync; /* sync is otherwise UNUSED */ + if (flush != 0) { + if (loop) { + /* push vertex -> edge selection */ + if (select) { + EDBM_select_flush(em); + } + else { + EDBM_deselect_flush(em); + } + } + else { + EDBM_selectmode_flush(em); + } + } #endif + } DAG_id_tag_update(obedit->data, 0); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); From e017621f6a42753443c121c765bfd20ff761eb5c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 19:59:06 +0000 Subject: [PATCH 081/158] code cleanup: rename UV functions to closer match bmesh api --- source/blender/editors/include/ED_uvedit.h | 24 +-- .../blender/editors/space_image/space_image.c | 2 +- .../editors/space_view3d/view3d_select.c | 2 +- .../editors/transform/transform_conversions.c | 8 +- .../blender/editors/uvedit/uvedit_buttons.c | 6 +- source/blender/editors/uvedit/uvedit_draw.c | 24 +-- source/blender/editors/uvedit/uvedit_ops.c | 180 +++++++++--------- .../editors/uvedit/uvedit_smart_stitch.c | 4 +- .../editors/uvedit/uvedit_unwrap_ops.c | 12 +- 9 files changed, 131 insertions(+), 131 deletions(-) diff --git a/source/blender/editors/include/ED_uvedit.h b/source/blender/editors/include/ED_uvedit.h index 89a21026ec4..3569c0e8243 100644 --- a/source/blender/editors/include/ED_uvedit.h +++ b/source/blender/editors/include/ED_uvedit.h @@ -51,25 +51,25 @@ void ED_operatortypes_uvedit(void); void ED_keymap_uvedit(struct wmKeyConfig *keyconf); void ED_uvedit_assign_image(struct Main *bmain, struct Scene *scene, struct Object *obedit, struct Image *ima, struct Image *previma); -int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float *min, float *max); +int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float *min, float *max); -int ED_object_get_active_image(struct Object *ob, int mat_nr, struct Image **ima, struct ImageUser **iuser, struct bNode **node); +int ED_object_get_active_image(struct Object *ob, int mat_nr, struct Image **ima, struct ImageUser **iuser, struct bNode **node); void ED_object_assign_active_image(struct Main *bmain, struct Object *ob, int mat_nr, struct Image *ima); int ED_uvedit_test(struct Object *obedit); /* visibility and selection */ -int uvedit_face_visible(struct Scene *scene, struct Image *ima, struct BMFace *efa, struct MTexPoly *tf); -int uvedit_face_selected(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); -int uvedit_edge_selected(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -int uvedit_uv_selected(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +int uvedit_face_visible_test(struct Scene *scene, struct Image *ima, struct BMFace *efa, struct MTexPoly *tf); +int uvedit_face_select_test(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); +int uvedit_edge_select_test(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +int uvedit_uv_select_test(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -int uvedit_face_select(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa, const short do_history); -int uvedit_face_deselect(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); -void uvedit_edge_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); -void uvedit_edge_deselect(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -void uvedit_uv_select(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); -void uvedit_uv_deselect(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +int uvedit_face_select_enable(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa, const short do_history); +int uvedit_face_select_disable(struct Scene *scene, struct BMEditMesh *em, struct BMFace *efa); +void uvedit_edge_select_enable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); +void uvedit_edge_select_disable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); +void uvedit_uv_select_enable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); +void uvedit_uv_select_disable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, float co[2], float uv[2]); diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 6d0f0c9323f..08aa69fe499 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -88,7 +88,7 @@ void ED_space_image_set(SpaceImage *sima, Scene *scene, Object *obedit, Image *i /* context may be NULL, so use global */ ED_uvedit_assign_image(G.main, scene, obedit, ima, sima->image); - /* change the space ima after because uvedit_face_visible uses the space ima + /* change the space ima after because uvedit_face_visible_test uses the space ima * to check if the face is displayed in UV-localview */ sima->image = ima; diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index c6a93a80b2e..ac9c32816dd 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -602,7 +602,7 @@ static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select) else { /* Vert Sel*/ for (efa = em->faces.first; efa; efa = efa->next) { tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { nverts = efa->v4 ? 4 : 3; for (i = 0; i < nverts; i++) { if ((select) != (simaUVSel_Check(efa, tf, i))) { diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 57540b58f61..062f88f8837 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2455,14 +2455,14 @@ static void createTransUVs(bContext *C, TransInfo *t) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf= CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) { + if (!uvedit_face_visible_test(scene, ima, efa, tf)) { BM_elem_flag_disable(efa, BM_ELEM_TAG); continue; } BM_elem_flag_enable(efa, BM_ELEM_TAG); BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) + if (uvedit_uv_select_test(em, scene, l)) countsel++; if (propmode) @@ -2490,11 +2490,11 @@ static void createTransUVs(bContext *C, TransInfo *t) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (!propmode && !uvedit_uv_selected(em, scene, l)) + if (!propmode && !uvedit_uv_select_test(em, scene, l)) continue; luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - UVsToTransData(sima, td++, td2d++, luv->uv, uvedit_uv_selected(em, scene, l)); + UVsToTransData(sima, td++, td2d++, luv->uv, uvedit_uv_select_test(em, scene, l)); } } diff --git a/source/blender/editors/uvedit/uvedit_buttons.c b/source/blender/editors/uvedit/uvedit_buttons.c index 394b8952a13..ec645f86848 100644 --- a/source/blender/editors/uvedit/uvedit_buttons.c +++ b/source/blender/editors/uvedit/uvedit_buttons.c @@ -74,12 +74,12 @@ static int uvedit_center(Scene *scene, BMEditMesh *em, Image *ima, float center[ zero_v2(center); BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, f->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, f, tf)) + if (!uvedit_face_visible_test(scene, ima, f, tf)) continue; BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { add_v2_v2(center, luv->uv); tot++; } @@ -104,7 +104,7 @@ static void uvedit_translate(Scene *scene, BMEditMesh *em, Image *UNUSED(ima), f BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) { BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { add_v2_v2(luv->uv, delta); } } diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c index 9084e5770ed..e772ff5a87a 100644 --- a/source/blender/editors/uvedit/uvedit_draw.c +++ b/source/blender/editors/uvedit/uvedit_draw.c @@ -204,7 +204,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe //totuvarea += tf_area(tf, efa->v4!=0); totuvarea += poly_uv_area(tf_uv, efa->len); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { BM_elem_flag_enable(efa, BM_ELEM_TAG); } else { @@ -294,7 +294,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { nverts = efa->len; BM_elem_flag_enable(efa, BM_ELEM_TAG); BLI_array_empty(tf_uv); @@ -506,11 +506,11 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { BM_elem_flag_enable(efa, BM_ELEM_TAG); if (tf == activetf) continue; /* important the temp boolean is set above */ - if (uvedit_face_selected(scene, em, efa)) + if (uvedit_face_select_test(scene, em, efa)) glColor4ubv((GLubyte *)col2); else glColor4ubv((GLubyte *)col1); @@ -536,7 +536,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { BM_elem_flag_enable(efa, BM_ELEM_TAG); } else { @@ -552,7 +552,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) if (activef) { tf = CustomData_bmesh_get(&bm->pdata, activef->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, activef, tf)) { + if (uvedit_face_visible_test(scene, ima, activef, tf)) { glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); UI_ThemeColor4(TH_EDITMESH_ACTIVE); @@ -670,7 +670,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) glBegin(GL_LINE_LOOP); BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - sel = (uvedit_uv_selected(em, scene, l) ? 1 : 0); + sel = (uvedit_uv_select_test(em, scene, l) ? 1 : 0); glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); luv = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MLOOPUV); @@ -688,7 +688,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) glBegin(GL_LINES); BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - sel = (uvedit_edge_selected(em, scene, l) ? 1 : 0); + sel = (uvedit_edge_select_test(em, scene, l) ? 1 : 0); if (sel != lastsel) { glColor4ubv(sel ? (GLubyte *)col1 : (GLubyte *)col2); lastsel = sel; @@ -741,7 +741,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) if (!BM_elem_flag_test(efa, BM_ELEM_TAG)) continue; - if (!uvedit_face_selected(scene, em, efa)) { + if (!uvedit_face_select_test(scene, em, efa)) { poly_uv_center(em, efa, cent); bglVertex2fv(cent); } @@ -756,7 +756,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) if (!BM_elem_flag_test(efa, BM_ELEM_TAG)) continue; - if (uvedit_face_selected(scene, em, efa)) { + if (uvedit_face_select_test(scene, em, efa)) { poly_uv_center(em, efa, cent); bglVertex2fv(cent); } @@ -779,7 +779,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MLOOPUV); - if (!uvedit_uv_selected(em, scene, l)) + if (!uvedit_uv_select_test(em, scene, l)) bglVertex2fv(luv->uv); } } @@ -816,7 +816,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MLOOPUV); - if (uvedit_uv_selected(em, scene, l)) + if (uvedit_uv_select_test(em, scene, l)) bglVertex2fv(luv->uv); } } diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index b3671c3c8fe..7e094aefe2a 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -209,7 +209,7 @@ void ED_uvedit_assign_image(Main *bmain, Scene *scene, Object *obedit, Image *im BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, previma, efa, tf)) { + if (uvedit_face_visible_test(scene, previma, efa, tf)) { if (ima) { tf->tpage = ima; @@ -295,7 +295,7 @@ int uvedit_face_visible_nolocal(Scene *scene, BMFace *efa) return (BM_elem_flag_test(efa, BM_ELEM_HIDDEN) == 0 && BM_elem_flag_test(efa, BM_ELEM_SELECT)); } -int uvedit_face_visible(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf) +int uvedit_face_visible_test(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf) { ToolSettings *ts = scene->toolsettings; @@ -305,7 +305,7 @@ int uvedit_face_visible(Scene *scene, Image *ima, BMFace *efa, MTexPoly *tf) return uvedit_face_visible_nolocal(scene, efa); } -int uvedit_face_selected(Scene *scene, BMEditMesh *em, BMFace *efa) +int uvedit_face_select_test(Scene *scene, BMEditMesh *em, BMFace *efa) { ToolSettings *ts = scene->toolsettings; @@ -326,7 +326,7 @@ int uvedit_face_selected(Scene *scene, BMEditMesh *em, BMFace *efa) } } -int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa, const short do_history) +int uvedit_face_select_enable(Scene *scene, BMEditMesh *em, BMFace *efa, const short do_history) { ToolSettings *ts = scene->toolsettings; @@ -352,7 +352,7 @@ int uvedit_face_select(Scene *scene, BMEditMesh *em, BMFace *efa, const short do return 0; } -int uvedit_face_deselect(Scene *scene, BMEditMesh *em, BMFace *efa) +int uvedit_face_select_disable(Scene *scene, BMEditMesh *em, BMFace *efa) { ToolSettings *ts = scene->toolsettings; @@ -375,7 +375,7 @@ int uvedit_face_deselect(Scene *scene, BMEditMesh *em, BMFace *efa) return 0; } -int uvedit_edge_selected(BMEditMesh *em, Scene *scene, BMLoop *l) +int uvedit_edge_select_test(BMEditMesh *em, Scene *scene, BMLoop *l) { ToolSettings *ts = scene->toolsettings; @@ -401,7 +401,7 @@ int uvedit_edge_selected(BMEditMesh *em, Scene *scene, BMLoop *l) } } -void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) +void uvedit_edge_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) { ToolSettings *ts = scene->toolsettings; @@ -431,7 +431,7 @@ void uvedit_edge_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_ } } -void uvedit_edge_deselect(BMEditMesh *em, Scene *scene, BMLoop *l) +void uvedit_edge_select_disable(BMEditMesh *em, Scene *scene, BMLoop *l) { ToolSettings *ts = scene->toolsettings; @@ -457,7 +457,7 @@ void uvedit_edge_deselect(BMEditMesh *em, Scene *scene, BMLoop *l) } } -int uvedit_uv_selected(BMEditMesh *em, Scene *scene, BMLoop *l) +int uvedit_uv_select_test(BMEditMesh *em, Scene *scene, BMLoop *l) { ToolSettings *ts = scene->toolsettings; @@ -474,7 +474,7 @@ int uvedit_uv_selected(BMEditMesh *em, Scene *scene, BMLoop *l) } } -void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) +void uvedit_uv_select_enable(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_history) { ToolSettings *ts = scene->toolsettings; @@ -495,7 +495,7 @@ void uvedit_uv_select(BMEditMesh *em, Scene *scene, BMLoop *l, const short do_hi } } -void uvedit_uv_deselect(BMEditMesh *em, Scene *scene, BMLoop *l) +void uvedit_uv_select_disable(BMEditMesh *em, Scene *scene, BMLoop *l) { ToolSettings *ts = scene->toolsettings; @@ -598,11 +598,11 @@ int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float sel = 0; BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); DO_MINMAX2(luv->uv, min, max); sel = 1; @@ -626,12 +626,12 @@ static int ED_uvedit_median(Scene *scene, Image *ima, Object *obedit, float co[2 zero_v2(co); BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { add_v2_v2(co, luv->uv); sel++; } @@ -682,7 +682,7 @@ void uv_find_nearest_edge(Scene *scene, Image *ima, BMEditMesh *em, float co[2], BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; i = 0; @@ -731,7 +731,7 @@ static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, float BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; cent[0] = cent[1] = 0.0f; @@ -822,14 +822,14 @@ void uv_find_nearest_vert(Scene *scene, Image *ima, BMEditMesh *em, BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; i = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (penalty && uvedit_uv_selected(em, scene, l)) + if (penalty && uvedit_uv_select_test(em, scene, l)) dist = fabs(co[0] - luv->uv[0]) + penalty[0] + fabs(co[1] - luv->uv[1]) + penalty[1]; else dist = fabs(co[0] - luv->uv[0]) + fabs(co[1] - luv->uv[1]); @@ -875,7 +875,7 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -1046,7 +1046,7 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG) && uvedit_face_visible(scene, ima, efa, tf)) { + if (!BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG) && uvedit_face_visible_test(scene, ima, efa, tf)) { nverts = efa->len; for (a = 0; a < nverts; a++) { /* check face not hidden and not tagged */ @@ -1080,7 +1080,7 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit iterv2->flag = 1; if (extend) { - if (uvedit_uv_selected(em, scene, hit->l)) + if (uvedit_uv_select_test(em, scene, hit->l)) select = 0; else select = 1; @@ -1094,8 +1094,8 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit iterv1 = uv_vertex_map_get(vmap, efa, a); if (iterv1->flag) { - if (select) uvedit_uv_select(em, scene, l, FALSE); - else uvedit_uv_deselect(em, scene, l); + if (select) uvedit_uv_select_enable(em, scene, l, FALSE); + else uvedit_uv_select_disable(em, scene, l); } a++; @@ -1137,7 +1137,7 @@ static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[ BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, a) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); @@ -1296,10 +1296,10 @@ static float *uv_sel_co_from_eve(Scene *scene, Image *ima, BMEditMesh *em, BMVer BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) { MTexPoly *tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, l->f, tf)) + if (!uvedit_face_visible_test(scene, ima, l->f, tf)) continue; - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); return luv->uv; } @@ -1337,11 +1337,11 @@ static void weld_align_uv(bContext *C, int tool) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); DO_MINMAX2(luv->uv, min, max); } @@ -1359,11 +1359,11 @@ static void weld_align_uv(bContext *C, int tool) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); luv->uv[0] = cent[0]; } @@ -1378,11 +1378,11 @@ static void weld_align_uv(bContext *C, int tool) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); luv->uv[1] = cent[1]; } @@ -1408,10 +1408,10 @@ static void weld_align_uv(bContext *C, int tool) BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) { tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, l->f, tf)) + if (!uvedit_face_visible_test(scene, ima, l->f, tf)) continue; - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { BM_elem_flag_enable(eve, BM_ELEM_TAG); break; } @@ -1498,10 +1498,10 @@ static void weld_align_uv(bContext *C, int tool) BM_ITER_ELEM (l, &liter, eve_line[i], BM_LOOPS_OF_VERT) { tf = CustomData_bmesh_get(&em->bm->pdata, l->f->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, l->f, tf)) + if (!uvedit_face_visible_test(scene, ima, l->f, tf)) continue; - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); /* Projection of point (x, y) over line (x1, y1, x2, y2) along X axis: * new_y = (y2 - y1) / (x2 - x1) * (x - x1) + y1 @@ -1626,7 +1626,7 @@ static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int act BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -1644,7 +1644,7 @@ static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int act BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -1879,36 +1879,36 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) else if (extend) { if (selectmode == UV_SELECT_VERTEX) { /* (de)select uv vertex */ - if (uvedit_uv_selected(em, scene, hit.l)) { - uvedit_uv_deselect(em, scene, hit.l); + if (uvedit_uv_select_test(em, scene, hit.l)) { + uvedit_uv_select_disable(em, scene, hit.l); select = 0; } else { - uvedit_uv_select(em, scene, hit.l, TRUE); + uvedit_uv_select_enable(em, scene, hit.l, TRUE); select = 1; } flush = 1; } else if (selectmode == UV_SELECT_EDGE) { /* (de)select edge */ - if (uvedit_edge_selected(em, scene, hit.l)) { - uvedit_edge_deselect(em, scene, hit.l); + if (uvedit_edge_select_test(em, scene, hit.l)) { + uvedit_edge_select_disable(em, scene, hit.l); select = 0; } else { - uvedit_edge_select(em, scene, hit.l, TRUE); + uvedit_edge_select_enable(em, scene, hit.l, TRUE); select = 1; } flush = 1; } else if (selectmode == UV_SELECT_FACE) { /* (de)select face */ - if (uvedit_face_selected(scene, em, hit.efa)) { - uvedit_face_deselect(scene, em, hit.efa); + if (uvedit_face_select_test(scene, em, hit.efa)) { + uvedit_face_select_disable(scene, em, hit.efa); select = 0; } else { - uvedit_face_select(scene, em, hit.efa, TRUE); + uvedit_face_select_enable(scene, em, hit.efa, TRUE); select = 1; } flush = -1; @@ -1930,13 +1930,13 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) if (select == 0) { BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen)) - uvedit_uv_deselect(em, scene, l); + uvedit_uv_select_disable(em, scene, l); } } flush = -1; @@ -1945,13 +1945,13 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) else { BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen)) - uvedit_uv_select(em, scene, l, FALSE); + uvedit_uv_select_enable(em, scene, l, FALSE); } } @@ -1965,24 +1965,24 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) if (selectmode == UV_SELECT_VERTEX) { /* select vertex */ - uvedit_uv_select(em, scene, hit.l, TRUE); + uvedit_uv_select_enable(em, scene, hit.l, TRUE); flush = 1; } else if (selectmode == UV_SELECT_EDGE) { /* select edge */ - uvedit_edge_select(em, scene, hit.l, TRUE); + uvedit_edge_select_enable(em, scene, hit.l, TRUE); flush = 1; } else if (selectmode == UV_SELECT_FACE) { /* select face */ - uvedit_face_select(scene, em, hit.efa, TRUE); + uvedit_face_select_enable(scene, em, hit.efa, TRUE); } /* select sticky uvs */ if (sticky != SI_STICKY_DISABLE) { BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -1990,7 +1990,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (sticky_select(limit, hitv, BM_elem_index_get(l->v), hituv, luv->uv, sticky, hitlen)) - uvedit_uv_select(em, scene, l, FALSE); + uvedit_uv_select_enable(em, scene, l, FALSE); flush = 1; } @@ -2249,7 +2249,7 @@ static int unlink_selection_exec(bContext *C, wmOperator *op) int desel = 0; tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -2336,9 +2336,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) { if (select) - uvedit_uv_select(em, scene, l, FALSE); + uvedit_uv_select_enable(em, scene, l, FALSE); else - uvedit_uv_deselect(em, scene, l); + uvedit_uv_select_disable(em, scene, l); } } } @@ -2370,9 +2370,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { if (select) - uvedit_uv_select(em, scene, l, FALSE); + uvedit_uv_select_enable(em, scene, l, FALSE); else - uvedit_uv_deselect(em, scene, l); + uvedit_uv_select_disable(em, scene, l); vlist_iter = EDBM_uv_vert_map_at_index(vmap, BM_elem_index_get(l->v)); @@ -2397,9 +2397,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje /* tf_vlist = CustomData_bmesh_get(&em->bm->pdata, efa_vlist->head.data, CD_MTEXPOLY); */ /* UNUSED */ if (select) - uvedit_uv_select(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex), FALSE); + uvedit_uv_select_enable(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex), FALSE); else - uvedit_uv_deselect(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex)); + uvedit_uv_select_disable(em, scene, BM_iter_at_index(em->bm, BM_LOOPS_OF_FACE, efa_vlist, vlist_iter->tfindex)); } vlist_iter = vlist_iter->next; } @@ -2414,9 +2414,9 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { if (BM_elem_flag_test(efa, BM_ELEM_TAG)) { if (select) - uvedit_face_select(scene, em, efa, FALSE); + uvedit_face_select_enable(scene, em, efa, FALSE); else - uvedit_face_deselect(scene, em, efa); + uvedit_face_select_disable(scene, em, efa); } } } @@ -2474,7 +2474,7 @@ static int border_select_exec(bContext *C, wmOperator *op) BM_elem_flag_disable(efa, BM_ELEM_TAG); tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, efa, tf)) { + if (uvedit_face_visible_test(scene, ima, efa, tf)) { poly_uv_center(em, efa, cent); if (BLI_in_rctf(&rectf, cent[0], cent[1])) { BM_elem_flag_enable(efa, BM_ELEM_TAG); @@ -2493,7 +2493,7 @@ static int border_select_exec(bContext *C, wmOperator *op) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) + if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); @@ -2502,15 +2502,15 @@ static int border_select_exec(bContext *C, wmOperator *op) /* UV_SYNC_SELECTION - can't do pinned selection */ if (BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) { - if (select) uvedit_uv_select(em, scene, l, FALSE); - else uvedit_uv_deselect(em, scene, l); + if (select) uvedit_uv_select_enable(em, scene, l, FALSE); + else uvedit_uv_select_disable(em, scene, l); } } else if (pinned) { if ((luv->flag & MLOOPUV_PINNED) && BLI_in_rctf(&rectf, luv->uv[0], luv->uv[1])) { - if (select) uvedit_uv_select(em, scene, l, FALSE); - else uvedit_uv_deselect(em, scene, l); + if (select) uvedit_uv_select_enable(em, scene, l, FALSE); + else uvedit_uv_select_disable(em, scene, l); } } } @@ -2581,8 +2581,8 @@ static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), S r2 = x * x + y * y; if (r2 < 1.0f) { - if (select) uvedit_uv_select(em, scene, l, FALSE); - else uvedit_uv_deselect(em, scene, l); + if (select) uvedit_uv_select_enable(em, scene, l, FALSE); + else uvedit_uv_select_disable(em, scene, l); } } @@ -2740,11 +2740,11 @@ static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceIma BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tface)) + if (!uvedit_face_visible_test(scene, ima, efa, tface)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); copy_v2_v2(luv->uv, sima->cursor); change = 1; @@ -2770,10 +2770,10 @@ static int snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object *obe * get unique indices and to count how much to malloc */ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) { tface = CustomData_bmesh_get(&bm->pdata, f->head.data, CD_MTEXPOLY); - if (uvedit_face_visible(scene, ima, f, tface)) { + if (uvedit_face_visible_test(scene, ima, f, tface)) { BM_elem_flag_enable(f, BM_ELEM_TAG); BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { - BM_elem_flag_set(l, BM_ELEM_TAG, uvedit_uv_selected(em, scene, l)); + BM_elem_flag_set(l, BM_ELEM_TAG, uvedit_uv_select_test(em, scene, l)); } } else { @@ -2831,11 +2831,11 @@ static int snap_uvs_to_pixels(SpaceImage *sima, Scene *scene, Object *obedit) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tface)) + if (!uvedit_face_visible_test(scene, ima, efa, tface)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); snap_uv_to_pixel(luv->uv, w, h); } @@ -2916,18 +2916,18 @@ static int pin_exec(bContext *C, wmOperator *op) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tface)) + if (!uvedit_face_visible_test(scene, ima, efa, tface)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (!clear) { - if (uvedit_uv_selected(em, scene, l)) + if (uvedit_uv_select_test(em, scene, l)) luv->flag |= MLOOPUV_PINNED; } else { - if (uvedit_uv_selected(em, scene, l)) + if (uvedit_uv_select_test(em, scene, l)) luv->flag &= ~MLOOPUV_PINNED; } } @@ -2970,14 +2970,14 @@ static int select_pinned_exec(bContext *C, wmOperator *UNUSED(op)) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tface = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tface)) + if (!uvedit_face_visible_test(scene, ima, efa, tface)) continue; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); if (luv->flag & MLOOPUV_PINNED) - uvedit_uv_select(em, scene, l, FALSE); + uvedit_uv_select_enable(em, scene, l, FALSE); } } @@ -3050,7 +3050,7 @@ static int hide_exec(bContext *C, wmOperator *op) tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!uvedit_face_visible(scene, ima, efa, tf)) { + if (!uvedit_face_visible_test(scene, ima, efa, tf)) { continue; } @@ -3072,7 +3072,7 @@ static int hide_exec(bContext *C, wmOperator *op) if (bm_face_is_all_uv_sel(em->bm, efa, TRUE) == !swap) { BM_face_select_set(em->bm, efa, FALSE); } - uvedit_face_deselect(scene, em, efa); + uvedit_face_select_disable(scene, em, efa); } else { if (bm_face_is_all_uv_sel(em->bm, efa, TRUE) == !swap) { @@ -3083,7 +3083,7 @@ static int hide_exec(bContext *C, wmOperator *op) } } } - if (!swap) uvedit_face_deselect(scene, em, efa); + if (!swap) uvedit_face_select_disable(scene, em, efa); } @@ -3092,7 +3092,7 @@ static int hide_exec(bContext *C, wmOperator *op) /* check if a UV is de-selected */ if (bm_face_is_all_uv_sel(em->bm, efa, FALSE) != !swap) { BM_face_select_set(em->bm, efa, FALSE); - uvedit_face_deselect(scene, em, efa); + uvedit_face_select_disable(scene, em, efa); } } else { @@ -3523,7 +3523,7 @@ static int mark_seam_exec(bContext *C, wmOperator *UNUSED(op)) BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) { BM_ITER_ELEM (loop, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_edge_selected(em, scene, loop)) { + if (uvedit_edge_select_test(em, scene, loop)) { BM_elem_flag_enable(loop->e, BM_ELEM_SEAM); } } diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c index 1513979568d..36b1e77e5e5 100644 --- a/source/blender/editors/uvedit/uvedit_smart_stitch.c +++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c @@ -860,7 +860,7 @@ static int stitch_process_data(StitchState *state, Scene *scene, int final) if (final) { copy_v2_v2(luv->uv, final_position[i].uv); - uvedit_uv_select(state->em, scene, l, FALSE); + uvedit_uv_select_enable(state->em, scene, l, FALSE); } else { int face_preview_pos = preview_position[BM_elem_index_get(element_iter->face)].data_position; @@ -1180,7 +1180,7 @@ static int stitch_init(bContext *C, wmOperator *op) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { i = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { UvElement *element = ED_uv_element_get(state->element_map, efa, l); stitch_select_uv(element, state, 1); } diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 8c8242a940c..2a9d472c204 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -139,7 +139,7 @@ static int ED_uvedit_ensure_uvs(bContext *C, Scene *scene, Object *obedit) /* select new UV's */ BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { - uvedit_face_select(scene, em, efa, FALSE); + uvedit_face_select_enable(scene, em, efa, FALSE); } return 1; @@ -169,7 +169,7 @@ static int uvedit_have_selection(Scene *scene, BMEditMesh *em, short implicit) if (!luv) return 1; - if (uvedit_uv_selected(em, scene, l)) + if (uvedit_uv_select_test(em, scene, l)) break; } @@ -231,7 +231,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, lsel = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - if (uvedit_uv_selected(em, scene, l)) { + if (uvedit_uv_select_test(em, scene, l)) { lsel = 1; break; } @@ -253,7 +253,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, co[i] = l->v->co; uv[i] = luv->uv; pin[i] = (luv->flag & MLOOPUV_PINNED) != 0; - select[i] = uvedit_uv_selected(em, scene, l) != 0; + select[i] = uvedit_uv_select_test(em, scene, l) != 0; i++; } @@ -300,7 +300,7 @@ static ParamHandle *construct_param_handle(Scene *scene, BMEditMesh *em, co[i] = ls[i]->v->co; uv[i] = luv->uv; pin[i] = (luv->flag & MLOOPUV_PINNED) != 0; - select[i] = uvedit_uv_selected(em, scene, ls[i]) != 0; + select[i] = uvedit_uv_select_test(em, scene, ls[i]) != 0; } param_face_add(handle, key, 3, vkeys, co, uv, pin, select); @@ -345,7 +345,7 @@ static void texface_from_original_index(BMFace *efa, int index, float **uv, Para luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); *uv = luv->uv; *pin = (luv->flag & MLOOPUV_PINNED) ? 1 : 0; - *select = (uvedit_uv_selected(em, scene, l) != 0); + *select = (uvedit_uv_select_test(em, scene, l) != 0); } } } From d92a4ceb351d6e7d1324e97892bff0b6252c24d5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 20:33:39 +0000 Subject: [PATCH 082/158] code cleanup: dont use bmesh operator flags outside a bmesh operator, use hflag tagging instead. --- source/blender/editors/uvedit/uvedit_ops.c | 78 ++++++++++------------ 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 7e094aefe2a..45a4772d475 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -82,8 +82,6 @@ #include "uvedit_intern.h" -#define EFA_F1_FLAG 2 - static void select_all_perform(Scene *scene, Image *ima, BMEditMesh *em, int action); /************************* state testing ************************/ @@ -895,9 +893,22 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], return found; } +UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l) +{ + UvElement *element; + + element = map->vert[BM_elem_index_get(l->v)]; + + for (; element; element = element->next) + if (element->face == efa) + return element; + + return NULL; +} + /*********************** loop select ***********************/ -static void uv_vertex_loop_flag(UvMapVert *first) +static void select_edgeloop_uv_vertex_loop_flag(UvMapVert *first) { UvMapVert *iterv; int count = 0; @@ -913,7 +924,7 @@ static void uv_vertex_loop_flag(UvMapVert *first) first->flag = 1; } -static UvMapVert *uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a) +static UvMapVert *select_edgeloop_uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a) { UvMapVert *iterv, *first; BMLoop *l; @@ -931,20 +942,7 @@ static UvMapVert *uv_vertex_map_get(UvVertMap *vmap, BMFace *efa, int a) return NULL; } -UvElement *ED_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l) -{ - UvElement *element; - - element = map->vert[BM_elem_index_get(l->v)]; - - for (; element; element = element->next) - if (element->face == efa) - return element; - - return NULL; -} - -static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface) +static int select_edgeloop_uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first2, int *totface) { UvMapVert *iterv1, *iterv2; BMFace *efa; @@ -962,7 +960,7 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first if (iterv1->f == iterv2->f) { /* if face already tagged, don't do this edge */ efa = EDBM_face_at_index(em, iterv1->f); - if (BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG)) + if (BM_elem_flag_test(efa, BM_ELEM_TAG)) return 0; tot++; @@ -987,7 +985,7 @@ static int uv_edge_tag_faces(BMEditMesh *em, UvMapVert *first1, UvMapVert *first if (iterv1->f == iterv2->f) { efa = EDBM_face_at_index(em, iterv1->f); - BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG); + BM_elem_flag_enable(efa, BM_ELEM_TAG); break; } } @@ -1005,33 +1003,29 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit MTexPoly *tf; UvVertMap *vmap; UvMapVert *iterv1, *iterv2; - int a, count, looking, nverts, starttotf, select; + int a, looking, nverts, starttotf, select; /* setup */ EDBM_index_arrays_init(em, 0, 0, 1); vmap = EDBM_uv_vert_map_create(em, 0, 0, limit); - BM_mesh_elem_index_ensure(em->bm, BM_VERT); + BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE); if (!extend) { select_all_perform(scene, ima, em, SEL_DESELECT); } - BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, count) { - BMO_elem_flag_disable(em->bm, efa, EFA_F1_FLAG); - BM_elem_index_set(efa, count); /* set_inline */ - } - em->bm->elem_index_dirty &= ~BM_FACE; + BM_mesh_elem_hflag_disable_all(em->bm, BM_FACE, BM_ELEM_TAG, FALSE); /* set flags for first face and verts */ nverts = hit->efa->len; - iterv1 = uv_vertex_map_get(vmap, hit->efa, hit->lindex); - iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts); - uv_vertex_loop_flag(iterv1); - uv_vertex_loop_flag(iterv2); + iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex); + iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts); + select_edgeloop_uv_vertex_loop_flag(iterv1); + select_edgeloop_uv_vertex_loop_flag(iterv2); starttotf = 0; - uv_edge_tag_faces(em, iterv1, iterv2, &starttotf); + select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf); /* sorry, first edge isn't even ok */ if (iterv1->flag == 0 && iterv2->flag == 0) looking = 0; @@ -1046,24 +1040,24 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!BMO_elem_flag_test(em->bm, efa, EFA_F1_FLAG) && uvedit_face_visible_test(scene, ima, efa, tf)) { + if (!BM_elem_flag_test(efa, BM_ELEM_TAG) && uvedit_face_visible_test(scene, ima, efa, tf)) { nverts = efa->len; for (a = 0; a < nverts; a++) { /* check face not hidden and not tagged */ - iterv1 = uv_vertex_map_get(vmap, efa, a); - iterv2 = uv_vertex_map_get(vmap, efa, (a + 1) % nverts); + iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a); + iterv2 = select_edgeloop_uv_vertex_map_get(vmap, efa, (a + 1) % nverts); if (!iterv1 || !iterv2) continue; /* check if vertex is tagged and has right valence */ if (iterv1->flag || iterv2->flag) { - if (uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) { + if (select_edgeloop_uv_edge_tag_faces(em, iterv1, iterv2, &starttotf)) { looking = 1; - BMO_elem_flag_enable(em->bm, efa, EFA_F1_FLAG); + BM_elem_flag_enable(efa, BM_ELEM_TAG); - uv_vertex_loop_flag(iterv1); - uv_vertex_loop_flag(iterv2); + select_edgeloop_uv_vertex_loop_flag(iterv1); + select_edgeloop_uv_vertex_loop_flag(iterv2); break; } } @@ -1074,8 +1068,8 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit /* do the actual select/deselect */ nverts = hit->efa->len; - iterv1 = uv_vertex_map_get(vmap, hit->efa, hit->lindex); - iterv2 = uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts); + iterv1 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, hit->lindex); + iterv2 = select_edgeloop_uv_vertex_map_get(vmap, hit->efa, (hit->lindex + 1) % nverts); iterv1->flag = 1; iterv2->flag = 1; @@ -1091,7 +1085,7 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { a = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - iterv1 = uv_vertex_map_get(vmap, efa, a); + iterv1 = select_edgeloop_uv_vertex_map_get(vmap, efa, a); if (iterv1->flag) { if (select) uvedit_uv_select_enable(em, scene, l, FALSE); From 47b6b60e5afd498337653356a52d399b7bf1da38 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 21:19:18 +0000 Subject: [PATCH 083/158] code cleanup: no functional change - had both EDBM_editselection_* and BM_editselection_* funcs, replace EDBM_ funcs. --- source/blender/bmesh/intern/bmesh_construct.c | 33 ++++--- source/blender/bmesh/intern/bmesh_core.c | 2 +- source/blender/bmesh/intern/bmesh_marking.c | 86 ++++++++++++++----- source/blender/bmesh/intern/bmesh_marking.h | 22 +++-- source/blender/editors/include/ED_mesh.h | 6 +- .../blender/editors/mesh/editmesh_loopcut.c | 4 +- source/blender/editors/mesh/editmesh_rip.c | 8 +- source/blender/editors/mesh/editmesh_select.c | 22 ++--- source/blender/editors/mesh/editmesh_slide.c | 8 +- source/blender/editors/mesh/editmesh_utils.c | 73 ---------------- source/blender/editors/mesh/mesh_intern.h | 3 - .../editors/space_view3d/view3d_snap.c | 4 +- .../editors/transform/transform_generics.c | 4 +- .../editors/transform/transform_manipulator.c | 4 +- .../transform/transform_orientations.c | 6 +- source/blender/editors/uvedit/uvedit_ops.c | 2 +- 16 files changed, 132 insertions(+), 155 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index dee18e62930..cbdd5dd6983 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -803,6 +803,7 @@ BMesh *BM_mesh_copy(BMesh *bm_old) BMesh *bm_new; BMVert *v, *v2, **vtable = NULL; BMEdge *e, *e2, **edges = NULL, **etable = NULL; + BMElem **eletable; BLI_array_declare(edges); BMLoop *l, /* *l2, */ **loops = NULL; BLI_array_declare(loops); @@ -913,21 +914,29 @@ BMesh *BM_mesh_copy(BMesh *bm_old) /* copy over edit selection history */ for (ese = bm_old->selected.first; ese; ese = ese->next) { - void *ele = NULL; + BMElem *ele = NULL; - if (ese->htype == BM_VERT) - ele = vtable[BM_elem_index_get(ese->ele)]; - else if (ese->htype == BM_EDGE) - ele = etable[BM_elem_index_get(ese->ele)]; - else if (ese->htype == BM_FACE) { - ele = ftable[BM_elem_index_get(ese->ele)]; + switch (ese->htype) { + case BM_VERT: + eletable = (BMElem **)vtable; + break; + case BM_EDGE: + eletable = (BMElem **)etable; + break; + case BM_FACE: + eletable = (BMElem **)ftable; + break; + default: + eletable = NULL; + break; } - else { - BLI_assert(0); + + if (eletable) { + ele = eletable[BM_elem_index_get(ese->ele)]; + if (ele) { + BM_select_history_store(bm_new, ele); + } } - - if (ele) - BM_select_history_store(bm_new, ele); } MEM_freeN(etable); diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 7d4129b1205..f3f7614fe02 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -453,7 +453,7 @@ static void bm_kill_only_vert(BMesh *bm, BMVert *v) bm->totvert--; bm->elem_index_dirty |= BM_VERT; - BM_select_history_remove(bm, (BMElem *)v); + BM_select_history_remove(bm, v); if (v->head.data) CustomData_bmesh_free_block(&bm->vdata, &v->head.data); diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index 9200d7d2a98..57a5b20b689 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -566,7 +566,7 @@ BMFace *BM_active_face_get(BMesh *bm, int sloppy) * - #EM_editselection_normal * - #EM_editselection_plane */ -void BM_editselection_center(float r_center[3], BMEditSelection *ese) +void BM_editselection_center(BMEditSelection *ese, float r_center[3]) { if (ese->htype == BM_VERT) { BMVert *eve = (BMVert *)ese->ele; @@ -583,7 +583,7 @@ void BM_editselection_center(float r_center[3], BMEditSelection *ese) } } -void BM_editselection_normal(float r_normal[3], BMEditSelection *ese) +void BM_editselection_normal(BMEditSelection *ese, float r_normal[3]) { if (ese->htype == BM_VERT) { BMVert *eve = (BMVert *)ese->ele; @@ -617,14 +617,14 @@ void BM_editselection_normal(float r_normal[3], BMEditSelection *ese) /* Calculate a plane that is rightangles to the edge/vert/faces normal * also make the plane run along an axis that is related to the geometry, * because this is used for the manipulators Y axis. */ -void BM_editselection_plane(BMesh *bm, float r_plane[3], BMEditSelection *ese) +void BM_editselection_plane(BMEditSelection *ese, float r_plane[3]) { if (ese->htype == BM_VERT) { BMVert *eve = (BMVert *)ese->ele; float vec[3] = {0.0f, 0.0f, 0.0f}; if (ese->prev) { /* use previously selected data to make a useful vertex plane */ - BM_editselection_center(vec, ese->prev); + BM_editselection_center(ese->prev, vec); sub_v3_v3v3(r_plane, vec, eve->co); } else { @@ -674,7 +674,7 @@ void BM_editselection_plane(BMesh *bm, float r_plane[3], BMEditSelection *ese) else { BMVert *verts[4] = {NULL}; - BM_iter_as_array(bm, BM_VERTS_OF_FACE, efa, (void **)verts, 4); + BM_iter_as_array(NULL, BM_VERTS_OF_FACE, efa, (void **)verts, 4); if (efa->len == 4) { float vecA[3], vecB[3]; @@ -713,12 +713,14 @@ void BM_editselection_plane(BMesh *bm, float r_plane[3], BMEditSelection *ese) normalize_v3(r_plane); } -int BM_select_history_check(BMesh *bm, const BMElem *ele) + +/* --- macro wrapped funcs --- */ +int _bm_select_history_check(BMesh *bm, const BMHeader *ele) { BMEditSelection *ese; for (ese = bm->selected.first; ese; ese = ese->next) { - if (ese->ele == ele) { + if (ese->ele == (BMElem *)ele) { return TRUE; } } @@ -726,11 +728,11 @@ int BM_select_history_check(BMesh *bm, const BMElem *ele) return FALSE; } -int BM_select_history_remove(BMesh *bm, BMElem *ele) +int _bm_select_history_remove(BMesh *bm, BMHeader *ele) { BMEditSelection *ese; for (ese = bm->selected.first; ese; ese = ese->next) { - if (ese->ele == ele) { + if (ese->ele == (BMElem *)ele) { BLI_freelinkN(&(bm->selected), ese); return TRUE; } @@ -739,26 +741,29 @@ int BM_select_history_remove(BMesh *bm, BMElem *ele) return FALSE; } +void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele) +{ + BMEditSelection *ese = (BMEditSelection *) MEM_callocN(sizeof(BMEditSelection), "BMEdit Selection"); + ese->htype = ele->htype; + ese->ele = (BMElem *)ele; + BLI_addtail(&(bm->selected), ese); +} + +void _bm_select_history_store(BMesh *bm, BMHeader *ele) +{ + if (!BM_select_history_check(bm, (BMElem *)ele)) { + BM_select_history_store_notest(bm, (BMElem *)ele); + } +} +/* --- end macro wrapped funcs --- */ + + void BM_select_history_clear(BMesh *bm) { BLI_freelistN(&bm->selected); bm->selected.first = bm->selected.last = NULL; } -void BM_select_history_store_notest(BMesh *bm, BMElem *ele) -{ - BMEditSelection *ese = (BMEditSelection *) MEM_callocN(sizeof(BMEditSelection), "BMEdit Selection"); - ese->htype = ((BMHeader *)ele)->htype; - ese->ele = ele; - BLI_addtail(&(bm->selected), ese); -} - -void BM_select_history_store(BMesh *bm, BMElem *ele) -{ - if (!BM_select_history_check(bm, ele)) { - BM_select_history_store_notest(bm, ele); - } -} void BM_select_history_validate(BMesh *bm) { @@ -775,6 +780,41 @@ void BM_select_history_validate(BMesh *bm) } } +/* utility function */ +int BM_select_history_active_get(BMesh *bm, BMEditSelection *ese) +{ + BMEditSelection *ese_last = bm->selected.last; + BMFace *efa = BM_active_face_get(bm, FALSE); + + ese->next = ese->prev = NULL; + + if (ese_last) { + if (ese_last->htype == BM_FACE) { /* if there is an active face, use it over the last selected face */ + if (efa) { + ese->ele = (BMElem *)efa; + } + else { + ese->ele = ese_last->ele; + } + ese->htype = BM_FACE; + } + else { + ese->ele = ese_last->ele; + ese->htype = ese_last->htype; + } + } + else if (efa) { /* no */ + ese->ele = (BMElem *)efa; + ese->htype = BM_FACE; + } + else { + ese->ele = NULL; + return FALSE; + } + + return TRUE; +} + void BM_mesh_elem_hflag_disable_test(BMesh *bm, const char htype, const char hflag, int respecthide, const char hflag_test) { diff --git a/source/blender/bmesh/intern/bmesh_marking.h b/source/blender/bmesh/intern/bmesh_marking.h index a3e97ea9677..03681707826 100644 --- a/source/blender/bmesh/intern/bmesh_marking.h +++ b/source/blender/bmesh/intern/bmesh_marking.h @@ -73,15 +73,23 @@ int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hf /* edit selection stuff */ void BM_active_face_set(BMesh *bm, BMFace *f); BMFace *BM_active_face_get(BMesh *bm, int sloppy); -void BM_editselection_center(float r_center[3], BMEditSelection *ese); -void BM_editselection_normal(float r_normal[3], BMEditSelection *ese); -void BM_editselection_plane(BMesh *bm, float r_plane[3], BMEditSelection *ese); -int BM_select_history_check(BMesh *bm, const BMElem *ele); -int BM_select_history_remove(BMesh *bm, BMElem *ele); -void BM_select_history_store_notest(BMesh *bm, BMElem *ele); -void BM_select_history_store(BMesh *bm, BMElem *ele); +void BM_editselection_center(BMEditSelection *ese, float r_center[3]); +void BM_editselection_normal(BMEditSelection *ese, float r_normal[3]); +void BM_editselection_plane(BMEditSelection *ese, float r_plane[3]); + +#define BM_select_history_check(bm, ele) _bm_select_history_check(bm, &(ele)->head) +#define BM_select_history_remove(bm, ele) _bm_select_history_remove(bm, &(ele)->head) +#define BM_select_history_store_notest(bm, ele) _bm_select_history_store_notest(bm, &(ele)->head) +#define BM_select_history_store(bm, ele) _bm_select_history_store(bm, &(ele)->head) + +int _bm_select_history_check(BMesh *bm, const BMHeader *ele); +int _bm_select_history_remove(BMesh *bm, BMHeader *ele); +void _bm_select_history_store_notest(BMesh *bm, BMHeader *ele); +void _bm_select_history_store(BMesh *bm, BMHeader *ele); + void BM_select_history_validate(BMesh *bm); void BM_select_history_clear(BMesh *em); +int BM_select_history_active_get(BMesh *bm, struct BMEditSelection *ese); #endif /* __BMESH_MARKING_H__ */ diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 10137a5a259..4c503a2687c 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -114,12 +114,8 @@ void EDBM_selectmode_set(struct BMEditMesh *em); void EDBM_selectmode_convert(struct BMEditMesh *em, short oldmode, short selectmode); void undo_push_mesh(struct bContext *C, const char *name); -int EDBM_editselection_active_get(struct BMEditMesh *em, struct BMEditSelection *ese); -void EDBM_editselection_center(float *center, struct BMEditSelection *ese); -void EDBM_editselection_plane(struct BMEditMesh *em, float *plane, struct BMEditSelection *ese); -void EDBM_editselection_normal(float *normal, struct BMEditSelection *ese); int EDBM_vert_color_check(struct BMEditMesh *em); -void EDBM_editselection_validate(struct BMEditMesh *em); + void EDBM_mesh_hide(struct BMEditMesh *em, int swap); void EDBM_mesh_reveal(struct BMEditMesh *em); diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c index d7201394855..12174d5b9fa 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.c +++ b/source/blender/editors/mesh/editmesh_loopcut.c @@ -337,9 +337,9 @@ static void ringsel_finish(bContext *C, wmOperator *op) /* sets as active, useful for other tools */ if (em->selectmode & SCE_SELECT_VERTEX) - EDBM_editselection_store(em, &lcd->eed->v1->head); /* low priority TODO, get vertrex close to mouse */ + BM_select_history_store(em->bm, lcd->eed->v1); /* low priority TODO, get vertrex close to mouse */ if (em->selectmode & SCE_SELECT_EDGE) - EDBM_editselection_store(em, &lcd->eed->head); + BM_select_history_store(em->bm, lcd->eed); EDBM_selectmode_flush(lcd->em); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, lcd->ob->data); diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index 15e77458e5e..e755df1f076 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -384,7 +384,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) ED_view3d_ob_project_mat_get(rv3d, obedit, projectMat); /* find selected vert - same some time and check history first */ - if (EDBM_editselection_active_get(em, &ese) && ese.htype == BM_VERT) { + if (BM_select_history_active_get(em->bm, &ese) && ese.htype == BM_VERT) { v = (BMVert *)ese.ele; } else { @@ -450,7 +450,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) int vi_best = 0; if (ese.ele) { - EDBM_editselection_remove(em, &ese.ele->head); + BM_select_history_remove(em->bm, ese.ele); } dist = FLT_MAX; @@ -480,7 +480,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) BM_vert_select_set(bm, v, TRUE); if (ese.ele) { - EDBM_editselection_store(em, &v->head); + BM_select_history_store(em->bm, v); } /* splice all others back together */ @@ -573,7 +573,7 @@ static int edbm_rip_invoke__vert(bContext *C, wmOperator *op, wmEvent *event) if (v_best) { BM_vert_select_set(bm, v_best, TRUE); if (ese.ele) { - EDBM_editselection_store(em, &v_best->head); + BM_select_history_store(em->bm, v_best); } } } diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 6c3984f0979..05352938aba 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -1049,10 +1049,10 @@ static void mouse_mesh_loop(bContext *C, int mval[2], short extend, short ring) /* TODO: would be nice if the edge vertex chosen here * was the one closer to the selection pointer, instead * of arbitrarily selecting the first one */ - EDBM_editselection_store(em, &eed->v1->head); + BM_select_history_store(em->bm, eed->v1); } else if (em->selectmode & SCE_SELECT_EDGE) { - EDBM_editselection_store(em, &eed->head); + BM_select_history_store(em->bm, eed); } /* TODO: would be nice if the nearest face that * belongs to the selected edge could be set to @@ -1364,7 +1364,7 @@ static int mouse_mesh_shortest_path(bContext *C, int mval[2]) e_act = (BMEdge *)ese->ele; if (e_act != e) { if (edgetag_shortest_path(vc.scene, em, e_act, e)) { - EDBM_editselection_remove(em, &e_act->head); + BM_select_history_remove(em->bm, e_act); path = 1; } } @@ -1379,9 +1379,9 @@ static int mouse_mesh_shortest_path(bContext *C, int mval[2]) /* even if this is selected it may not be in the selection list */ if (edgetag_context_check(vc.scene, em, e) == 0) - EDBM_editselection_remove(em, &e->head); + BM_select_history_remove(em->bm, e); else - EDBM_editselection_store(em, &e->head); + BM_select_history_store(em->bm, e); /* force drawmode for mesh */ switch (CTX_data_tool_settings(C)->edge_mode) { @@ -1476,31 +1476,31 @@ int mouse_mesh(bContext *C, const int mval[2], short extend) BM_active_face_set(vc.em->bm, efa); if (!BM_elem_flag_test(efa, BM_ELEM_SELECT)) { - EDBM_editselection_store(vc.em, &efa->head); + BM_select_history_store(vc.em->bm, efa); BM_face_select_set(vc.em->bm, efa, TRUE); } else if (extend) { - EDBM_editselection_remove(vc.em, &efa->head); + BM_select_history_remove(vc.em->bm, efa); BM_face_select_set(vc.em->bm, efa, FALSE); } } else if (eed) { if (!BM_elem_flag_test(eed, BM_ELEM_SELECT)) { - EDBM_editselection_store(vc.em, &eed->head); + BM_select_history_store(vc.em->bm, eed); BM_edge_select_set(vc.em->bm, eed, TRUE); } else if (extend) { - EDBM_editselection_remove(vc.em, &eed->head); + BM_select_history_remove(vc.em->bm, eed); BM_edge_select_set(vc.em->bm, eed, FALSE); } } else if (eve) { if (!BM_elem_flag_test(eve, BM_ELEM_SELECT)) { - EDBM_editselection_store(vc.em, &eve->head); + BM_select_history_store(vc.em->bm, eve); BM_vert_select_set(vc.em->bm, eve, TRUE); } else if (extend) { - EDBM_editselection_remove(vc.em, &eve->head); + BM_select_history_remove(vc.em->bm, eve); BM_vert_select_set(vc.em->bm, eve, FALSE); } } diff --git a/source/blender/editors/mesh/editmesh_slide.c b/source/blender/editors/mesh/editmesh_slide.c index 44f7c388a74..3cbb099a0a9 100644 --- a/source/blender/editors/mesh/editmesh_slide.c +++ b/source/blender/editors/mesh/editmesh_slide.c @@ -216,13 +216,13 @@ static void vtx_slide_confirm(bContext *C, wmOperator *op) } else { /* Store in historty if not merging */ - EDBM_editselection_store(em, &vso->start_vtx->head); + BM_select_history_store(em->bm, vso->start_vtx); } } else { /* Store edit selection of the active vertex, allows other * ops to run without reselecting */ - EDBM_editselection_store(em, &vso->start_vtx->head); + BM_select_history_store(em->bm, vso->start_vtx); } EDBM_selectmode_flush(em); @@ -664,8 +664,8 @@ static int edbm_vertex_slide_exec(bContext *C, wmOperator *op) BM_edge_select_set(bm, vso->sel_edge, TRUE); BM_vert_select_set(bm, vso->start_vtx, TRUE); - EDBM_editselection_store(em, &vso->sel_edge->head); - EDBM_editselection_store(em, &vso->start_vtx->head); + BM_select_history_store(em->bm, vso->sel_edge); + BM_select_history_store(em->bm, vso->start_vtx); ese = (BMEditSelection *)em->bm->selected.last; } distance_t = vso->distance; diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c index 074c37850f7..4ec3c22d1df 100644 --- a/source/blender/editors/mesh/editmesh_utils.c +++ b/source/blender/editors/mesh/editmesh_utils.c @@ -465,39 +465,6 @@ void EDBM_select_less(BMEditMesh *em) EDBM_selectmode_flush(em); } -int EDBM_editselection_active_get(BMEditMesh *em, BMEditSelection *ese) -{ - BMEditSelection *ese_last = em->bm->selected.last; - BMFace *efa = BM_active_face_get(em->bm, FALSE); - - ese->next = ese->prev = NULL; - - if (ese_last) { - if (ese_last->htype == BM_FACE) { /* if there is an active face, use it over the last selected face */ - if (efa) { - ese->ele = (BMElem *)efa; - } - else { - ese->ele = ese_last->ele; - } - ese->htype = BM_FACE; - } - else { - ese->ele = ese_last->ele; - ese->htype = ese_last->htype; - } - } - else if (efa) { /* no */ - ese->ele = (BMElem *)efa; - ese->htype = BM_FACE; - } - else { - ese->ele = NULL; - return 0; - } - return 1; -} - void EDBM_flag_disable_all(BMEditMesh *em, const char hflag) { BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT | BM_EDGE | BM_FACE, hflag, FALSE); @@ -1272,43 +1239,3 @@ void EDBM_update_generic(bContext *C, BMEditMesh *em, const short do_tessface) BMEdit_RecalcTessellation(em); } } - -/* * Selection History ***************************************************** */ -/* these wrap equivalent bmesh functions. I'm in two minds of it we should - * just use the bm functions directly; on the one hand, there's no real - * need (at the moment) to wrap them, but on the other hand having these - * wrapped avoids a confusing mess of mixing BM_ and EDBM_ namespaces. */ - -void EDBM_editselection_center(float *center, BMEditSelection *ese) -{ - BM_editselection_center(center, ese); -} - -void EDBM_editselection_normal(float *normal, BMEditSelection *ese) -{ - BM_editselection_normal(normal, ese); -} - -/* Calculate a plane that is rightangles to the edge/vert/faces normal - * also make the plane run along an axis that is related to the geometry, - * because this is used for the manipulators Y axis. */ -void EDBM_editselection_plane(BMEditMesh *em, float *plane, BMEditSelection *ese) -{ - BM_editselection_plane(em->bm, plane, ese); -} - -void EDBM_editselection_remove(BMEditMesh *em, BMHeader *ele) -{ - BM_select_history_remove(em->bm, (BMElem *)ele); -} - -void EDBM_editselection_store(BMEditMesh *em, BMHeader *ele) -{ - BM_select_history_store(em->bm, (BMElem *)ele); -} - -void EDBM_editselection_validate(BMEditMesh *em) -{ - BM_select_history_validate(em->bm); -} -/* end select history */ diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 27b1cb6ad54..70ae9704d3e 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -78,9 +78,6 @@ int EDBM_op_finish(struct BMEditMesh *em, struct BMOperator *bmop, struct wmOperator *op, const int report); void EDBM_flag_disable_all(struct BMEditMesh *em, const char hflag); -void EDBM_editselection_store(struct BMEditMesh *em, struct BMHeader *ele); -void EDBM_editselection_validate(struct BMEditMesh *em); -void EDBM_editselection_remove(struct BMEditMesh *em, struct BMHeader *ele); void EDBM_stats_update(struct BMEditMesh *em); /* TODO, move to math_geometry.c */ diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index f19c8891f96..1c1fa4c7fac 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -993,8 +993,8 @@ static int snap_curs_to_active(bContext *C, wmOperator *UNUSED(op)) Mesh *me = obedit->data; BMEditSelection ese; - if (EDBM_editselection_active_get(me->edit_btmesh, &ese)) { - EDBM_editselection_center(curs, &ese); + if (BM_select_history_active_get(me->edit_btmesh->bm, &ese)) { + BM_editselection_center(&ese, curs); } mul_m4_v3(obedit->obmat, curs); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 0af4830e3c6..b500398dd76 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1523,8 +1523,8 @@ void calculateCenter(TransInfo *t) BMEditSelection ese; BMEditMesh *em = BMEdit_FromObject(t->obedit); - if (EDBM_editselection_active_get(em, &ese)) { - EDBM_editselection_center(t->center, &ese); + if (BM_select_history_active_get(em->bm, &ese)) { + BM_editselection_center(&ese, t->center); calculateCenter2D(t); break; } diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 82e57cca705..5b70b25c894 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -300,8 +300,8 @@ int calc_manipulator_stats(const bContext *C) float vec[3]= {0,0,0}; /* USE LAST SELECTE WITH ACTIVE */ - if (v3d->around==V3D_ACTIVE && EDBM_editselection_active_get(em, &ese)) { - EDBM_editselection_center(vec, &ese); + if ((v3d->around == V3D_ACTIVE) && BM_select_history_active_get(em->bm, &ese)) { + BM_editselection_center(&ese, vec); calc_tw_center(scene, vec); totsel= 1; } diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 2cc9d8fca93..0f929003e8f 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -577,9 +577,9 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], float vec[3]= {0,0,0}; /* USE LAST SELECTED WITH ACTIVE */ - if (activeOnly && EDBM_editselection_active_get(em, &ese)) { - EDBM_editselection_normal(normal, &ese); - EDBM_editselection_plane(em, plane, &ese); + if (activeOnly && BM_select_history_active_get(em->bm, &ese)) { + BM_editselection_normal(&ese, normal); + BM_editselection_plane(&ese, plane); switch (ese.htype) { diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 45a4772d475..d0486807e8f 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -3105,7 +3105,7 @@ static int hide_exec(bContext *C, wmOperator *op) if (em->selectmode != SCE_SELECT_FACE) EDBM_selectmode_flush_ex(em, SCE_SELECT_VERTEX | SCE_SELECT_EDGE); - EDBM_editselection_validate(em); + BM_select_history_validate(em->bm); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); return OPERATOR_FINISHED; From 48893dba2459580ff73f04196e44342b56c0a035 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 22:50:49 +0000 Subject: [PATCH 084/158] style cleanup: no functional changes --- source/blender/blenkernel/intern/collision.c | 18 +++++++++--------- source/blender/blenkernel/intern/customdata.c | 2 +- source/blender/blenkernel/intern/mball.c | 6 +++--- .../editors/interface/interface_widgets.c | 3 ++- .../blender/editors/sculpt_paint/paint_image.c | 2 +- .../blender/editors/space_text/text_python.c | 3 ++- .../blender/editors/space_view3d/view3d_edit.c | 8 ++++---- source/blender/editors/transform/transform.c | 3 ++- source/blender/makesrna/intern/rna_curve.c | 2 +- source/blender/windowmanager/intern/wm_jobs.c | 4 ++-- 10 files changed, 27 insertions(+), 24 deletions(-) diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index 7195fb9c425..5b03f73e120 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -666,8 +666,8 @@ static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap *overlap, CollPair *collpair, GHash *visithash, MemArena *arena) { - ClothModifierData *clmd = ( ClothModifierData * ) md1; - CollisionModifierData *collmd = ( CollisionModifierData * ) md2; + ClothModifierData *clmd = (ClothModifierData *)md1; + CollisionModifierData *collmd = (CollisionModifierData *) md2; MFace *face1=NULL, *face2 = NULL; ClothVertex *verts1 = clmd->clothObject->verts; double distance = 0; @@ -1185,8 +1185,8 @@ int cloth_point_tri_moving_v3v3_f(float v1[2][3], int i1, float v2[2][3], int i2 static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap *overlap, CollPair *collpair, double dt, GHash *gh, MemArena *arena) { - ClothModifierData *clmd = ( ClothModifierData * ) md1; - CollisionModifierData *collmd = ( CollisionModifierData * ) md2; + ClothModifierData *clmd = (ClothModifierData *)md1; + CollisionModifierData *collmd = (CollisionModifierData *) md2; MFace *face1=NULL, *face2 = NULL; ClothVertex *verts1 = clmd->clothObject->verts; double distance = 0; @@ -1400,8 +1400,8 @@ static void machine_epsilon_offset(Cloth *cloth) static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap *overlap, CollPair *collpair, float dt ) { - ClothModifierData *clmd = ( ClothModifierData * ) md1; - CollisionModifierData *collmd = ( CollisionModifierData * ) md2; + ClothModifierData *clmd = (ClothModifierData *)md1; + CollisionModifierData *collmd = (CollisionModifierData *) md2; Cloth *cloth = clmd->clothObject; MFace *face1=NULL, *face2 = NULL; #ifdef USE_BULLET @@ -2285,13 +2285,13 @@ static void cloth_bvh_objcollisions_nearcheck ( ClothModifierData * clmd, Collis for ( i = 0; i < numresult; i++ ) { - *collisions_index = cloth_collision ( ( ModifierData * ) clmd, ( ModifierData * ) collmd, + *collisions_index = cloth_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, dt, tri_visithash, arena ); } for ( i = 0; i < numresult; i++ ) { - *collisions_index = cloth_edge_collision ( ( ModifierData * ) clmd, ( ModifierData * ) collmd, + *collisions_index = cloth_edge_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, visithash, arena ); } BLI_ghash_free(visithash, NULL, NULL); @@ -2300,7 +2300,7 @@ static void cloth_bvh_objcollisions_nearcheck ( ClothModifierData * clmd, Collis #else /* WITH_ELTOPO */ for ( i = 0; i < numresult; i++ ) { - *collisions_index = cloth_collision ( ( ModifierData * ) clmd, ( ModifierData * ) collmd, + *collisions_index = cloth_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, dt ); } #endif /* WITH_ELTOPO */ diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index afb5e85ffa8..1514716d717 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -167,7 +167,7 @@ static void layerCopy_bmesh_elem_py_ptr(const void *UNUSED(source), void *dest, int i, size = sizeof(void *); for (i = 0; i < count; ++i) { - void **ptr = (void **)((char *)dest + i * size); + void **ptr = (void **)((char *)dest + i * size); *ptr = NULL; } } diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index da5e02c17f1..c06d796d562 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -525,7 +525,7 @@ Object *find_basis_mball(Scene *scene, Object *basis) void calc_mballco(MetaElem *ml, float vec[3]) { if (ml->mat) { - mul_m4_v3((float ( * )[4])ml->mat, vec); + mul_m4_v3((float (*)[4])ml->mat, vec); } } @@ -537,7 +537,7 @@ float densfunc(MetaElem *ball, float x, float y, float z) vec[0]= x; vec[1]= y; vec[2]= z; - mul_m4_v3((float ( * )[4])ball->imat, vec); + mul_m4_v3((float (*)[4])ball->imat, vec); dx= vec[0]; dy= vec[1]; dz= vec[2]; @@ -1738,7 +1738,7 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */ /* transformation of Metalem bb */ for (i=0; i<8; i++) - mul_m4_v3((float ( * )[4])mat, mainb[a]->bb->vec[i]); + mul_m4_v3((float (*)[4])mat, mainb[a]->bb->vec[i]); /* find max and min of transformed bb */ for (i=0; i<8; i++) { diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 4c6819f44b1..cce037822e3 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -3264,7 +3264,8 @@ void ui_draw_menu_back(uiStyle *UNUSED(style), uiBlock *block, rcti *rect) } } -uiWidgetColors *ui_tooltip_get_theme(void) { +uiWidgetColors *ui_tooltip_get_theme(void) +{ uiWidgetType *wt = widget_type(UI_WTYPE_TOOLTIP); return wt->wcol_theme; } diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 3b6e21cb3f2..55cf827fea6 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -2621,7 +2621,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i //fac = line_point_factor_v2(uv, uv_seam_quad[0], uv_seam_quad[1]); fac = line_point_factor_v2(uv, seam_subsection[0], seam_subsection[1]); - if (fac < 0.0f) { copy_v3_v3(pixelScreenCo, edge_verts_inset_clip[0]); } + if (fac < 0.0f) { copy_v3_v3(pixelScreenCo, edge_verts_inset_clip[0]); } else if (fac > 1.0f) { copy_v3_v3(pixelScreenCo, edge_verts_inset_clip[1]); } else { interp_v3_v3v3(pixelScreenCo, edge_verts_inset_clip[0], edge_verts_inset_clip[1], fac); } diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c index c24af998835..23fff8fb274 100644 --- a/source/blender/editors/space_text/text_python.c +++ b/source/blender/editors/space_text/text_python.c @@ -367,7 +367,8 @@ static short UNUSED_FUNCTION(do_texttools) (SpaceText * st, char ascii, unsigned #if 0 #ifdef WITH_PYTHON /* Run text plugin scripts if enabled */ -if (st->doplugins && event && val) { +if (st->doplugins && event && val) +{ if (BPY_menu_do_shortcut(PYMENU_TEXTPLUGIN, event, qual)) { do_draw = 1; } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 082e7676daa..6f637afd293 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -2985,10 +2985,10 @@ static int viewpan_exec(bContext *C, wmOperator *op) pandir = RNA_enum_get(op->ptr, "type"); initgrabz(rv3d, 0.0, 0.0, 0.0); - if (pandir == V3D_VIEW_PANRIGHT) { mval_f[0] = -32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } - else if (pandir == V3D_VIEW_PANLEFT) { mval_f[0] = 32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } - else if (pandir == V3D_VIEW_PANUP) { mval_f[1] = -25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } - else if (pandir == V3D_VIEW_PANDOWN) { mval_f[1] = 25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } + if (pandir == V3D_VIEW_PANRIGHT) { mval_f[0] = -32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } + else if (pandir == V3D_VIEW_PANLEFT) { mval_f[0] = 32.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } + else if (pandir == V3D_VIEW_PANUP) { mval_f[1] = -25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } + else if (pandir == V3D_VIEW_PANDOWN) { mval_f[1] = 25.0f; ED_view3d_win_to_delta(ar, mval_f, vec); } add_v3_v3(rv3d->ofs, vec); if (rv3d->viewlock & RV3D_BOXVIEW) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 62c82c58adf..fcc9092242d 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4785,7 +4785,8 @@ void projectSVData(TransInfo *t, int final) BLI_smallhash_release(&visit); } -void freeSlideTempFaces(SlideData *sld) { +void freeSlideTempFaces(SlideData *sld) +{ if (sld->origfaces_init) { SmallHashIter hiter; BMFace *copyf; diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 5bf52c0d552..97cf73ab998 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -558,7 +558,7 @@ static void rna_Curve_spline_bezpoints_add(ID *id, Nurb *nu, ReportList *reports static Nurb *rna_Curve_spline_new(Curve *cu, int type) { - Nurb *nu = ( Nurb * ) MEM_callocN( sizeof( Nurb ), "spline.new" ); + Nurb *nu = (Nurb *) MEM_callocN( sizeof( Nurb ), "spline.new" ); if (type == CU_BEZIER) { BezTriple *bezt = (BezTriple *)MEM_callocN(sizeof(BezTriple), "spline.new.bezt"); diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index a55a8df3301..774aec51216 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -240,8 +240,8 @@ void WM_jobs_timer(wmJob *steve, double timestep, unsigned int note, unsigned in void WM_jobs_callbacks(wmJob *steve, void (*startjob)(void *, short *, short *, float *), void (*initjob)(void *), - void (*update)(void *), - void (*endjob)(void *)) + void (*update)(void *), + void (*endjob)(void *)) { steve->startjob = startjob; steve->initjob = initjob; From 0943f4bc775f960251aa4acf62d84887007ad58a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Apr 2012 23:47:10 +0000 Subject: [PATCH 085/158] now vertex paint uses the same overrides as weight paint - so wire draw mode allows vertex paint to be unlit (which is quite handy, previously you had to hide lamps). --- source/blender/editors/space_view3d/drawmesh.c | 4 ++-- source/blender/editors/space_view3d/drawobject.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 3b5ebbee42a..f5f3b4c3f16 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -349,7 +349,7 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, O /* texture draw is abused for mask selection mode, do this so wire draw * with face selection in weight paint is not lit. */ - if ((v3d->drawtype <= OB_WIRE) && (ob->mode & OB_MODE_WEIGHT_PAINT)) { + if ((v3d->drawtype <= OB_WIRE) && (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT))) { solidtex = FALSE; Gtexdraw.islit = 0; } @@ -953,7 +953,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o glEnable(GL_LIGHTING); - if (ob->mode & OB_MODE_WEIGHT_PAINT) { + if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) { /* weight paint mode exception */ dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions_material, GPU_enable_material, NULL, ob->data, DM_DRAW_USE_COLORS | DM_DRAW_ALWAYS_SMOOTH); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index effaa405218..4508dae36e7 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -3306,7 +3306,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } } else if (dt == OB_SOLID) { - if (is_obact && ob->mode & OB_MODE_WEIGHT_PAINT) { + if (is_obact && ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) { /* weight paint in solid mode, special case. focus on making the weights clear * rather than the shading, this is also forced in wire view */ GPU_enable_material(0, NULL); From b12fd22791acd7a709c98ffa3b9ce977b41b35bc Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Wed, 25 Apr 2012 01:24:29 +0000 Subject: [PATCH 086/158] ndof: avoid potential buffer overflow in libspnav --- intern/ghost/intern/GHOST_NDOFManagerX11.cpp | 38 +++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp index 1e025cd738a..1e78cafd4f6 100644 --- a/intern/ghost/intern/GHOST_NDOFManagerX11.cpp +++ b/intern/ghost/intern/GHOST_NDOFManagerX11.cpp @@ -75,28 +75,32 @@ bool GHOST_NDOFManagerX11::available() bool GHOST_NDOFManagerX11::processEvents() { - GHOST_TUns64 now = m_system.getMilliSeconds(); - bool anyProcessed = false; - spnav_event e; - while (spnav_poll_event(&e)) { - switch (e.type) { - case SPNAV_EVENT_MOTION: - { - /* convert to blender view coords */ - short t[3] = {e.motion.x, e.motion.y, -e.motion.z}; - short r[3] = {-e.motion.rx, -e.motion.ry, e.motion.rz}; - updateTranslation(t, now); - updateRotation(r, now); - break; + if (m_available) { + GHOST_TUns64 now = m_system.getMilliSeconds(); + + spnav_event e; + while (spnav_poll_event(&e)) { + switch (e.type) { + case SPNAV_EVENT_MOTION: + { + /* convert to blender view coords */ + short t[3] = {e.motion.x, e.motion.y, -e.motion.z}; + short r[3] = {-e.motion.rx, -e.motion.ry, e.motion.rz}; + + updateTranslation(t, now); + updateRotation(r, now); + break; + } + case SPNAV_EVENT_BUTTON: + updateButton(e.button.bnum, e.button.press, now); + break; } - case SPNAV_EVENT_BUTTON: - updateButton(e.button.bnum, e.button.press, now); - break; + anyProcessed = true; } - anyProcessed = true; } + return anyProcessed; } From c4abd6cf5a8f650794f80d3f9a36ae35e9f6d23c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 01:24:55 +0000 Subject: [PATCH 087/158] code cleanup: edge slide code had oddly named variables, added some comments and renamed vars. also made BM_elem_select_set() a function (was a macro calling a function). --- source/blender/bmesh/intern/bmesh_marking.c | 10 +- source/blender/bmesh/intern/bmesh_marking.h | 3 +- source/blender/editors/transform/transform.c | 107 ++++++++++--------- 3 files changed, 64 insertions(+), 56 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index 57a5b20b689..a69558eeeca 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -496,17 +496,17 @@ int BM_mesh_elem_hflag_count_disabled(BMesh *bm, const char htype, const char hf * \note use BM_elem_flag_test(ele, BM_ELEM_SELECT) to test selection * \note by design, this will not touch the editselection history stuff */ -void _bm_elem_select_set(BMesh *bm, BMHeader *head, int select) +void BM_elem_select_set(BMesh *bm, BMElem *ele, int select) { - switch (head->htype) { + switch (ele->head.htype) { case BM_VERT: - BM_vert_select_set(bm, (BMVert *)head, select); + BM_vert_select_set(bm, (BMVert *)ele, select); break; case BM_EDGE: - BM_edge_select_set(bm, (BMEdge *)head, select); + BM_edge_select_set(bm, (BMEdge *)ele, select); break; case BM_FACE: - BM_face_select_set(bm, (BMFace *)head, select); + BM_face_select_set(bm, (BMFace *)ele, select); break; default: BLI_assert(0); diff --git a/source/blender/bmesh/intern/bmesh_marking.h b/source/blender/bmesh/intern/bmesh_marking.h index 03681707826..12ebaedac60 100644 --- a/source/blender/bmesh/intern/bmesh_marking.h +++ b/source/blender/bmesh/intern/bmesh_marking.h @@ -42,8 +42,7 @@ void BM_edge_hide_set(BMEdge *e, int hide); void BM_face_hide_set(BMFace *f, int hide); /* Selection code */ -#define BM_elem_select_set(bm, ele, hide) _bm_elem_select_set(bm, &(ele)->head, hide) -void _bm_elem_select_set(BMesh *bm, BMHeader *ele, int select); +void BM_elem_select_set(BMesh *bm, BMElem *ele, int select); void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hflag, int respecthide, const char hflag_test); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index fcc9092242d..18dbd38fc1c 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4394,7 +4394,7 @@ static int createSlideVerts(TransInfo *t) BMEdge *e, *e1 /*, *ee, *le */ /* UNUSED */; BMVert *v, *v2, *first; BMLoop *l, *l1, *l2; - TransDataSlideVert *tempsv; + TransDataSlideVert *sv_array; BMBVHTree *btree = BMBVH_NewBVH(em, 0, NULL, NULL); SmallHash table; SlideData *sld = MEM_callocN(sizeof(*sld), "sld"); @@ -4468,7 +4468,7 @@ static int createSlideVerts(TransInfo *t) return 0; } - tempsv = MEM_callocN(sizeof(TransDataSlideVert)*j, "tempsv"); + sv_array = MEM_callocN(sizeof(TransDataSlideVert) * j, "sv_array"); j = 0; while (1) { @@ -4527,7 +4527,7 @@ static int createSlideVerts(TransInfo *t) /*iterate over the loop*/ first = v; do { - TransDataSlideVert *sv = tempsv + j; + TransDataSlideVert *sv = sv_array + j; sv->v = v; sv->origvert = *v; @@ -4550,7 +4550,7 @@ static int createSlideVerts(TransInfo *t) if (!e) { //v2=v, v = BM_edge_other_vert(l1->e, v); - sv = tempsv + j + 1; + sv = sv_array + j + 1; sv->v = v; sv->origvert = *v; @@ -4583,7 +4583,7 @@ static int createSlideVerts(TransInfo *t) //EDBM_flag_disable_all(em, BM_ELEM_SELECT); - sld->sv = tempsv; + sld->sv = sv_array; sld->totsv = j; /*find mouse vector*/ @@ -4611,19 +4611,19 @@ static int createSlideVerts(TransInfo *t) j = GET_INT_FROM_POINTER(BLI_smallhash_lookup(&table, (uintptr_t)v)); - if (tempsv[j].down) { - ED_view3d_project_float_v3(ar, tempsv[j].down->co, vec1, projectMat); + if (sv_array[j].down) { + ED_view3d_project_float_v3(ar, sv_array[j].down->co, vec1, projectMat); } else { - add_v3_v3v3(vec1, v->co, tempsv[j].downvec); + add_v3_v3v3(vec1, v->co, sv_array[j].downvec); ED_view3d_project_float_v3(ar, vec1, vec1, projectMat); } - if (tempsv[j].up) { - ED_view3d_project_float_v3(ar, tempsv[j].up->co, vec2, projectMat); + if (sv_array[j].up) { + ED_view3d_project_float_v3(ar, sv_array[j].up->co, vec2, projectMat); } else { - add_v3_v3v3(vec1, v->co, tempsv[j].upvec); + add_v3_v3v3(vec1, v->co, sv_array[j].upvec); ED_view3d_project_float_v3(ar, vec2, vec2, projectMat); } @@ -4642,13 +4642,13 @@ static int createSlideVerts(TransInfo *t) bmesh_edit_begin(bm, BMO_OP_FLAG_UNTAN_MULTIRES); /*create copies of faces for customdata projection*/ - tempsv = sld->sv; - for (i=0; itotsv; i++, tempsv++) { + sv_array = sld->sv; + for (i=0; itotsv; i++, sv_array++) { BMIter fiter, liter; BMFace *f; BMLoop *l; - BM_ITER_ELEM (f, &fiter, tempsv->v, BM_FACES_OF_VERT) { + BM_ITER_ELEM (f, &fiter, sv_array->v, BM_FACES_OF_VERT) { if (!BLI_smallhash_haskey(&sld->origfaces, (uintptr_t)f)) { BMFace *copyf = BM_face_copy(bm, f, TRUE, TRUE); @@ -4666,7 +4666,7 @@ static int createSlideVerts(TransInfo *t) } } - BLI_smallhash_insert(&sld->vhash, (uintptr_t)tempsv->v, tempsv); + BLI_smallhash_insert(&sld->vhash, (uintptr_t)sv_array->v, sv_array); } sld->origfaces_init = TRUE; @@ -4698,7 +4698,7 @@ static int createSlideVerts(TransInfo *t) void projectSVData(TransInfo *t, int final) { SlideData *sld = t->customData; - TransDataSlideVert *tempsv; + TransDataSlideVert *sv; BMEditMesh *em = sld->em; SmallHash visit; int i; @@ -4716,15 +4716,19 @@ void projectSVData(TransInfo *t, int final) BLI_smallhash_init(&visit); - for (i=0, tempsv=sld->sv; itotsv; i++, tempsv++) { + for (i=0, sv = sld->sv; i < sld->totsv; sv++, i++) { BMIter fiter; BMFace *f; - BM_ITER_ELEM (f, &fiter, tempsv->v, BM_FACES_OF_VERT) { - BMIter liter2; - BMFace *copyf, *copyf2; - BMLoop *l2; - int sel, hide; + BM_ITER_ELEM (f, &fiter, sv->v, BM_FACES_OF_VERT) { + BMIter liter; + BMLoop *l; + + BMFace *f_copy; /* the copy of 'f' */ + BMFace *f_copy_flip; /* the copy of 'f' or detect if we need to flip to the shorter side. */ + + char is_sel, is_hide; + if (BLI_smallhash_haskey(&visit, (uintptr_t)f)) continue; @@ -4734,50 +4738,55 @@ void projectSVData(TransInfo *t, int final) /* the face attributes of the copied face will get * copied over, so its necessary to save the selection * and hidden state*/ - sel = BM_elem_flag_test(f, BM_ELEM_SELECT); - hide = BM_elem_flag_test(f, BM_ELEM_HIDDEN); + is_sel = BM_elem_flag_test(f, BM_ELEM_SELECT); + is_hide = BM_elem_flag_test(f, BM_ELEM_HIDDEN); - copyf2 = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)f); + f_copy = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)f); /* project onto copied projection face */ - BM_ITER_ELEM (l2, &liter2, f, BM_LOOPS_OF_FACE) { - copyf = copyf2; + BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { + f_copy_flip = f_copy; - if (BM_elem_flag_test(l2->e, BM_ELEM_SELECT) || BM_elem_flag_test(l2->prev->e, BM_ELEM_SELECT)) { - BMLoop *l3 = l2; + if (BM_elem_flag_test(l->e, BM_ELEM_SELECT) || BM_elem_flag_test(l->prev->e, BM_ELEM_SELECT)) { + BMLoop *l_ed_sel = l; - if (!BM_elem_flag_test(l2->e, BM_ELEM_SELECT)) - l3 = l3->prev; + if (!BM_elem_flag_test(l->e, BM_ELEM_SELECT)) + l_ed_sel = l_ed_sel->prev; - if (sld->perc < 0.0 && BM_vert_in_face(l3->radial_next->f, tempsv->down)) { - copyf = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l3->radial_next->f); + if (sld->perc < 0.0 && BM_vert_in_face(l_ed_sel->radial_next->f, sv->down)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); } - else if (sld->perc > 0.0 && BM_vert_in_face(l3->radial_next->f, tempsv->up)) { - copyf = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l3->radial_next->f); + else if (sld->perc > 0.0 && BM_vert_in_face(l_ed_sel->radial_next->f, sv->up)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); } - if (!copyf) + + BLI_assert(f_copy_flip != NULL); + if (!f_copy_flip) { continue; /* shouldn't happen, but protection */ + } } /* only loop data, no vertex data since that contains shape keys, * and we do not want to mess up other shape keys */ - BM_loop_interp_from_face(em->bm, l2, copyf, FALSE, FALSE); + BM_loop_interp_from_face(em->bm, l, f_copy_flip, FALSE, FALSE); if (final) { - BM_loop_interp_multires(em->bm, l2, copyf); - if (copyf2 != copyf) { - BM_loop_interp_multires(em->bm, l2, copyf2); + BM_loop_interp_multires(em->bm, l, f_copy_flip); + if (f_copy != f_copy_flip) { + BM_loop_interp_multires(em->bm, l, f_copy); } } } /* make sure face-attributes are correct (e.g. MTexPoly) */ - BM_elem_attrs_copy(em->bm, em->bm, copyf2, f); + BM_elem_attrs_copy(em->bm, em->bm, f_copy, f); /* restore selection and hidden flags */ - BM_face_select_set(em->bm, f, sel); - if (!hide) { /* this check is a workaround for bug, see note - [#30735], without this edge can be hidden and selected */ - BM_elem_hide_set(em->bm, f, hide); + BM_face_select_set(em->bm, f, is_sel); + if (!is_hide) { + /* this check is a workaround for bug, see note - [#30735], + * without this edge can be hidden and selected */ + BM_elem_hide_set(em->bm, f, is_hide); } } } @@ -4809,14 +4818,14 @@ void freeSlideVerts(TransInfo *t) #if 0 /*BMESH_TODO*/ if (me->drawflag & ME_DRAWEXTRA_EDGELEN) { - TransDataSlideVert *tempsv; + TransDataSlideVert *sv; LinkNode *look = sld->vertlist; GHash *vertgh = sld->vhash; while (look) { - tempsv = BLI_ghash_lookup(vertgh,(EditVert*)look->link); - if (tempsv != NULL) { - tempsv->up->f &= !SELECT; - tempsv->down->f &= !SELECT; + sv = BLI_ghash_lookup(vertgh,(EditVert*)look->link); + if (sv != NULL) { + sv->up->f &= !SELECT; + sv->down->f &= !SELECT; } look = look->next; } From e7eac6c3f2b69b21c9695067b233447bb7124ff3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 02:46:32 +0000 Subject: [PATCH 088/158] fix [#31080], edge slide UV correction wasnt working for UVs surrounding the end of the slide selection (one edge sliding on a grid for example). --- source/blender/editors/transform/transform.c | 57 ++++++++++++++++++-- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 18dbd38fc1c..6b46a7bce8e 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4720,6 +4720,10 @@ void projectSVData(TransInfo *t, int final) BMIter fiter; BMFace *f; + + /* BMESH_TODO, this interpolates between vertex/loops which are not moved + * (are only apart of a face attached to a slide vert), couldn't we iterate BM_LOOPS_OF_VERT + * here and only iterpolate those? */ BM_ITER_ELEM (f, &fiter, sv->v, BM_FACES_OF_VERT) { BMIter liter; BMLoop *l; @@ -4746,18 +4750,23 @@ void projectSVData(TransInfo *t, int final) /* project onto copied projection face */ BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { f_copy_flip = f_copy; - + if (BM_elem_flag_test(l->e, BM_ELEM_SELECT) || BM_elem_flag_test(l->prev->e, BM_ELEM_SELECT)) { + /* the loop is attached of the selected edges that are sliding */ BMLoop *l_ed_sel = l; if (!BM_elem_flag_test(l->e, BM_ELEM_SELECT)) l_ed_sel = l_ed_sel->prev; - if (sld->perc < 0.0 && BM_vert_in_face(l_ed_sel->radial_next->f, sv->down)) { - f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); + if (sld->perc < 0.0f) { + if (BM_vert_in_face(l_ed_sel->radial_next->f, sv->down)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); + } } - else if (sld->perc > 0.0 && BM_vert_in_face(l_ed_sel->radial_next->f, sv->up)) { - f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); + else if (sld->perc > 0.0f) { + if (BM_vert_in_face(l_ed_sel->radial_next->f, sv->up)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)l_ed_sel->radial_next->f); + } } BLI_assert(f_copy_flip != NULL); @@ -4765,6 +4774,44 @@ void projectSVData(TransInfo *t, int final) continue; /* shouldn't happen, but protection */ } } + else { + /* the loop is attached to only one vertex and not a selected edge, + * this means we have to find a selected edges face going in the right direction + * to copy from else we get bad distortion see: [#31080] */ + BMIter eiter; + BMEdge *e_sel; + + BM_ITER_ELEM (e_sel, &eiter, l->v, BM_EDGES_OF_VERT) { + if (BM_elem_flag_test(e_sel, BM_ELEM_SELECT)) {; + break; + } + } + + if (e_sel) { + /* warning if the UV's are not contiguiys, this will copy from the _wrong_ UVs + * in fact whenever the face being copied is not 'f_copy' this can happen, + * we could be a lot smarter about this but would need to deal with every UV channel or + * add a way to mask out lauers when calling #BM_loop_interp_from_face() */ + if (sld->perc < 0.0f) { + if (BM_vert_in_face(e_sel->l->f, sv->down)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)e_sel->l->f); + } + else if (BM_vert_in_face(e_sel->l->radial_next->f, sv->down)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)e_sel->l->radial_next->f); + } + + } + else if (sld->perc > 0.0f) { + if (BM_vert_in_face(e_sel->l->f, sv->up)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)e_sel->l->f); + } + else if (BM_vert_in_face(e_sel->l->radial_next->f, sv->up)) { + f_copy_flip = BLI_smallhash_lookup(&sld->origfaces, (uintptr_t)e_sel->l->radial_next->f); + } + } + } + + } /* only loop data, no vertex data since that contains shape keys, * and we do not want to mess up other shape keys */ From d87ca16fb889231c03ad41ea555683d8f8493f7d Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Wed, 25 Apr 2012 03:44:01 +0000 Subject: [PATCH 089/158] Small type fix for BMEditMesh.lastDataMask, should be 64-bit. --- source/blender/blenkernel/BKE_tessmesh.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_tessmesh.h b/source/blender/blenkernel/BKE_tessmesh.h index d9d2c21e2b3..3a806651d61 100644 --- a/source/blender/blenkernel/BKE_tessmesh.h +++ b/source/blender/blenkernel/BKE_tessmesh.h @@ -23,6 +23,7 @@ #ifndef __BKE_TESSMESH_H__ #define __BKE_TESSMESH_H__ +#include "BKE_customdata.h" #include "bmesh.h" struct BMesh; @@ -58,7 +59,7 @@ typedef struct BMEditMesh { /*derivedmesh stuff*/ struct DerivedMesh *derivedFinal, *derivedCage; - int lastDataMask; + CustomDataMask lastDataMask; /* index tables, to map indices to elements via * EDBM_index_arrays_init and associated functions. don't From ee6aaafd31f81c6b493c7f6b83ca186ce369d104 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 06:06:40 +0000 Subject: [PATCH 090/158] code cleanup: typos and set gcc attributes for string formatting. --- source/blender/blenkernel/BKE_report.h | 6 +++++- source/blender/blenkernel/intern/anim_sys.c | 2 +- .../blender/blenkernel/intern/cdderivedmesh.c | 2 +- source/blender/blenkernel/intern/idprop.c | 2 +- source/blender/blenkernel/intern/mesh.c | 4 ++-- source/blender/blenkernel/intern/packedFile.c | 2 +- source/blender/editors/include/UI_interface.h | 18 +++++++++++++++--- source/blender/editors/transform/transform.c | 2 +- 8 files changed, 27 insertions(+), 11 deletions(-) diff --git a/source/blender/blenkernel/BKE_report.h b/source/blender/blenkernel/BKE_report.h index f6307806491..aa625fab3b2 100644 --- a/source/blender/blenkernel/BKE_report.h +++ b/source/blender/blenkernel/BKE_report.h @@ -54,7 +54,11 @@ __attribute__ ((format (printf, 3, 4))) ; void BKE_reports_prepend(ReportList *reports, const char *prepend); -void BKE_reports_prependf(ReportList *reports, const char *prepend, ...); +void BKE_reports_prependf(ReportList *reports, const char *prepend, ...) +#ifdef __GNUC__ +__attribute__ ((format (printf, 2, 3))) +#endif +; ReportType BKE_report_print_level(ReportList *reports); void BKE_report_print_level_set(ReportList *reports, ReportType level); diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index fc58799eb18..75b9ae59e26 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -2171,7 +2171,7 @@ static void animsys_evaluate_overrides (PointerRNA *ptr, AnimData *adt) * * Current Status: * - Currently (as of September 2009), overrides we haven't needed to (fully) implement overrides. - * However, the code fo this is relatively harmless, so is left in the code for now. + * However, the code for this is relatively harmless, so is left in the code for now. */ /* Evaluation loop for evaluation animation data diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 474aa84fec6..4de7df098c3 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -230,7 +230,7 @@ static int can_pbvh_draw(Object *ob, DerivedMesh *dm) int deformed= 0; /* active modifiers means extra deformation, which can't be handled correct - * on bith of PBVH and sculpt "layer" levels, so use PBVH only for internal brush + * on birth of PBVH and sculpt "layer" levels, so use PBVH only for internal brush * stuff and show final DerivedMesh so user would see actual object shape */ deformed|= ob->sculpt->modifiers_active; diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index 1fee5cfa359..bb51325a6ef 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -484,7 +484,7 @@ void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src) } /* * replaces a property with the same name in a group, or adds - * it if the propery doesn't exist. + * it if the properly doesn't exist. */ void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) { diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 7280af18493..514380dc980 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -327,7 +327,7 @@ static void mesh_ensure_tessellation_customdata(Mesh *me) /* TODO - add some --debug-mesh option */ if (G.debug & G_DEBUG) { - /* note: this warning may be un-called for if we are inirializing the mesh for the + /* note: this warning may be un-called for if we are initializing the mesh for the * first time from bmesh, rather then giving a warning about this we could be smarter * and check if there was any data to begin with, for now just print the warning with * some info to help troubleshoot whats going on - campbell */ @@ -1104,7 +1104,7 @@ void mesh_strip_loose_polysloops(Mesh *me) b++; } else { - /* XXX Theorically, we should be able to not do this, as no remaining poly + /* XXX Theoretically, we should be able to not do this, as no remaining poly * should use any stripped loop. But for security's sake... */ new_idx[a] = -a; } diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 8a940e339bc..b55033b8493 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -392,7 +392,7 @@ int checkPackedFile(const char *filename, PackedFile *pf) /* unpackFile() looks at the existing files (abs_name, local_name) and a packed file. * * It returns a char *to the existing file name / new file name or NULL when - * there was an error or when the user desides to cancel the operation. + * there was an error or when the user decides to cancel the operation. */ char *unpackFile(ReportList *reports, const char *abs_name, const char *local_name, PackedFile *pf, int how) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index cdb2472706c..d262c650e1c 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -322,10 +322,22 @@ uiPopupMenu *uiPupMenuBegin(struct bContext *C, const char *title, int icon); void uiPupMenuEnd(struct bContext *C, struct uiPopupMenu *head); struct uiLayout *uiPupMenuLayout(uiPopupMenu *head); -void uiPupMenuOkee(struct bContext *C, const char *opname, const char *str, ...); +void uiPupMenuOkee(struct bContext *C, const char *opname, const char *str, ...) +#ifdef __GNUC__ +__attribute__ ((format (printf, 3, 4))) +#endif +; void uiPupMenuSaveOver(struct bContext *C, struct wmOperator *op, const char *filename); -void uiPupMenuNotice(struct bContext *C, const char *str, ...); -void uiPupMenuError(struct bContext *C, const char *str, ...); +void uiPupMenuNotice(struct bContext *C, const char *str, ...) +#ifdef __GNUC__ +__attribute__ ((format (printf, 2, 3))) +#endif +; +void uiPupMenuError(struct bContext *C, const char *str, ...) +#ifdef __GNUC__ +__attribute__ ((format (printf, 2, 3))) +#endif +; void uiPupMenuReports(struct bContext *C, struct ReportList *reports); void uiPupMenuInvoke(struct bContext *C, const char *idname); /* popup registered menu */ diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 6b46a7bce8e..f3819a1b83c 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -4788,7 +4788,7 @@ void projectSVData(TransInfo *t, int final) } if (e_sel) { - /* warning if the UV's are not contiguiys, this will copy from the _wrong_ UVs + /* warning if the UV's are not contiguous, this will copy from the _wrong_ UVs * in fact whenever the face being copied is not 'f_copy' this can happen, * we could be a lot smarter about this but would need to deal with every UV channel or * add a way to mask out lauers when calling #BM_loop_interp_from_face() */ From 398cf78c25370cc1aa695c781337cec9dabc0c0a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 25 Apr 2012 06:28:45 +0000 Subject: [PATCH 091/158] Update for startup.blend: remove vertex color layer from default cube Pardon for updating this so close to release, but it's annoying to have such a layer and in some cases it leads to unwanted sideeffects. This layer was added by accident when was fixing flags for brushes, didn't notice entering vertex paint mode automatically creates vertex color layer. --- .../blender/editors/datafiles/startup.blend.c | 20321 ++++++++-------- 1 file changed, 10152 insertions(+), 10169 deletions(-) diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c index 177fe320ed7..681c8cd8948 100644 --- a/source/blender/editors/datafiles/startup.blend.c +++ b/source/blender/editors/datafiles/startup.blend.c @@ -1,12 +1,12 @@ /* DataToC output of file */ -int datatoc_startup_blend_size= 358796; -char datatoc_startup_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 54, 50, - 82, 69, 78, 68, 32, 0, 0, 0, 56,211, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 48, 4, 0, 0, -224,206, 35, 0, 0, 0, 0, 0,216, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 51, 3, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, -248, 9,215, 3, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0,126,176, 0, 0, 0, 0, 0, 0, +int datatoc_startup_blend_size = 358256; +char datatoc_startup_blend[] = { + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 54, 50, 82, 69, 78, 68, + 32, 0, 0, 0,240,135,236,191,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 48, 4, 0, 0,224,131,236,191, +255,127, 0, 0,216, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 52, 4, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,152, 62, 19, 6, + 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0,131,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -38,5102 +38,133 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 77, 0, 0, 88, 1, 0, 0, 8, 78,210, 3, 0, 0, 0, 0,146, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,122,199, 3, 0, 0, 0, 0, 56,122,199, 3, 0, 0, 0, 0, - 56,122,199, 3, 0, 0, 0, 0, 56,122,199, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,232, 89,178, 3, 0, 0, 0, 0, -120, 93,178, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 60,171, 3, 0, 0, 0, 0, -104,164,152, 15, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 58,171, 3, 0, 0, 0, 0,120, 58,171, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 86,178, 3, 0, 0, 0, 0,184, 88,178, 3, 0, 0, 0, 0, - 88, 86,178, 3, 0, 0, 0, 0,136, 87,178, 3, 0, 0, 0, 0,184, 88,178, 3, 0, 0, 0, 0,232,255,210, 3, 0, 0, 0, 0, -232,255,210, 3, 0, 0, 0, 0,232,255,210, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 56,122,199, 3, 0, 0, 0, 0, -147, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,198, 3, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 70, 5,178, 2, - 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 0, 0, 1, 0, 0, 0,152,127,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,136, 39,205, 15, 0, 0, 0, 0,152, 0,212, 15, 0, 0, 0, 0, -168,255,211, 15, 0, 0, 0, 0,104, 12,163, 3, 0, 0, 0, 0, 56, 9,163, 3, 0, 0, 0, 0, 88, 11,163, 3, 0, 0, 0, 0, - 88, 11,163, 3, 0, 0, 0, 0,152, 84,171, 3, 0, 0, 0, 0,120,149,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0,136, 7,214, 3, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 9,201, 3, 0, 0, 0, 0, - 72, 20,201, 3, 0, 0, 0, 0,184, 88,171, 3, 0, 0, 0, 0,248,107,171, 3, 0, 0, 0, 0, 24, 9,214, 3, 0, 0, 0, 0, -248,150,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 9,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 72, 10,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 72, 10,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 10,201, 3, 0, 0, 0, 0, -168, 9,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -232, 10,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 11,201, 3, 0, 0, 0, 0, 72, 10,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 4,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 11,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 40, 12,201, 3, 0, 0, 0, 0,232, 10,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 12,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -200, 12,201, 3, 0, 0, 0, 0,136, 11,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, - 40, 12,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -104, 13,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,168, 14,201, 3, 0, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 4,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 14,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 72, 15,201, 3, 0, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 60, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 15,201, 3, 0, 0, 0, 0, -168, 14,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 60, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -232, 15,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0,232, 15,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 4, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -200, 17,201, 3, 0, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 88, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, - 40, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -104, 18,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,168, 19,201, 3, 0, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 1, 4, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 19,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 72, 20,201, 3, 0, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 60, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 60, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184, 88,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104, 89,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 10,201, 3, 0, 0, 0, 0,232, 10,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104, 89,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24, 90,171, 3, 0, 0, 0, 0,184, 88,171, 3, 0, 0, 0, 0, - 72, 10,201, 3, 0, 0, 0, 0, 40, 12,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24, 90,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 90,171, 3, 0, 0, 0, 0,104, 89,171, 3, 0, 0, 0, 0, -232, 10,201, 3, 0, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200, 90,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 91,171, 3, 0, 0, 0, 0, 24, 90,171, 3, 0, 0, 0, 0, - 40, 12,201, 3, 0, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120, 91,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 92,171, 3, 0, 0, 0, 0,200, 90,171, 3, 0, 0, 0, 0, -168, 9,201, 3, 0, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40, 92,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 92,171, 3, 0, 0, 0, 0,120, 91,171, 3, 0, 0, 0, 0, -136, 11,201, 3, 0, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216, 92,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136, 93,171, 3, 0, 0, 0, 0, 40, 92,171, 3, 0, 0, 0, 0, -200, 12,201, 3, 0, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136, 93,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56, 94,171, 3, 0, 0, 0, 0,216, 92,171, 3, 0, 0, 0, 0, -104, 13,201, 3, 0, 0, 0, 0,168, 14,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56, 94,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 94,171, 3, 0, 0, 0, 0,136, 93,171, 3, 0, 0, 0, 0, -136, 11,201, 3, 0, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -232, 94,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 95,171, 3, 0, 0, 0, 0, 56, 94,171, 3, 0, 0, 0, 0, -168, 14,201, 3, 0, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152, 95,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72, 96,171, 3, 0, 0, 0, 0,232, 94,171, 3, 0, 0, 0, 0, -168, 9,201, 3, 0, 0, 0, 0,232, 15,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72, 96,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 96,171, 3, 0, 0, 0, 0,152, 95,171, 3, 0, 0, 0, 0, - 8, 14,201, 3, 0, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248, 96,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168, 97,171, 3, 0, 0, 0, 0, 72, 96,171, 3, 0, 0, 0, 0, -104, 13,201, 3, 0, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168, 97,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88, 98,171, 3, 0, 0, 0, 0,248, 96,171, 3, 0, 0, 0, 0, -232, 15,201, 3, 0, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 88, 98,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8, 99,171, 3, 0, 0, 0, 0,168, 97,171, 3, 0, 0, 0, 0, -232, 15,201, 3, 0, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 8, 99,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184, 99,171, 3, 0, 0, 0, 0, 88, 98,171, 3, 0, 0, 0, 0, -136, 16,201, 3, 0, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184, 99,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,100,171, 3, 0, 0, 0, 0, 8, 99,171, 3, 0, 0, 0, 0, - 40, 12,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104,100,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,101,171, 3, 0, 0, 0, 0,184, 99,171, 3, 0, 0, 0, 0, - 8, 14,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24,101,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,101,171, 3, 0, 0, 0, 0,104,100,171, 3, 0, 0, 0, 0, - 40, 17,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200,101,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,102,171, 3, 0, 0, 0, 0, 24,101,171, 3, 0, 0, 0, 0, -232, 15,201, 3, 0, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120,102,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,103,171, 3, 0, 0, 0, 0,200,101,171, 3, 0, 0, 0, 0, - 40, 17,201, 3, 0, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40,103,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,103,171, 3, 0, 0, 0, 0,120,102,171, 3, 0, 0, 0, 0, -104, 18,201, 3, 0, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216,103,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,104,171, 3, 0, 0, 0, 0, 40,103,171, 3, 0, 0, 0, 0, -168, 14,201, 3, 0, 0, 0, 0,168, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136,104,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,105,171, 3, 0, 0, 0, 0,216,103,171, 3, 0, 0, 0, 0, - 8, 14,201, 3, 0, 0, 0, 0,168, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56,105,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,105,171, 3, 0, 0, 0, 0,136,104,171, 3, 0, 0, 0, 0, -200, 12,201, 3, 0, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -232,105,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,106,171, 3, 0, 0, 0, 0, 56,105,171, 3, 0, 0, 0, 0, - 72, 15,201, 3, 0, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152,106,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,107,171, 3, 0, 0, 0, 0,232,105,171, 3, 0, 0, 0, 0, -168, 19,201, 3, 0, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72,107,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,107,171, 3, 0, 0, 0, 0,152,106,171, 3, 0, 0, 0, 0, - 40, 12,201, 3, 0, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248,107,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,107,171, 3, 0, 0, 0, 0, -200, 17,201, 3, 0, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 24, 9,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 56, 10,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 12,201, 3, 0, 0, 0, 0, 72, 10,201, 3, 0, 0, 0, 0,232, 10,201, 3, 0, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,196, 2, 0, 0,222, 2, 0, 0, 7, 7,241, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,197,207, 3, 0, 0, 0, 0,152,197,207, 3, 0, 0, 0, 0, -136,221,175, 3, 0, 0, 0, 0, 56,223,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,221,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 56,223,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,148, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,196, 2, 0, 0,221, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,223,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,221,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0,222, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56, 10,214, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0, 88, 11,214, 3, 0, 0, 0, 0, 24, 9,214, 3, 0, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, -168, 14,201, 3, 0, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0,136, 11,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 4, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0, 4, 4,216, 0, 60, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,123,199, 3, 0, 0, 0, 0,184,123,199, 3, 0, 0, 0, 0,232,224,175, 3, 0, 0, 0, 0, -152,226,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,224,175, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -152,226,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, - 98, 39, 38, 54, 0, 0, 88, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 87, 67, 0, 0,200, 65, 0, 0, 87, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,216, 0, 26, 0,216, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 4, 0, 0,240, 4, 0, 0, 34, 1, 0, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,226,175, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,224,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 67, 0, 0, 61,196, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 71, 67, 1, 0,145,195, 0, 0, 0, 0,199, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, - 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,216, 0, 34, 1,199, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 4, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 51,214, 3, 0, 0, 0, 0, -216, 71,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 51,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, - 24, 53,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255,199, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 24, 53,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248, 54,214, 3, 0, 0, 0, 0, 56, 51,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,199, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 54,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -216, 56,214, 3, 0, 0, 0, 0, 24, 53,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,111,255,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -216, 56,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184, 58,214, 3, 0, 0, 0, 0,248, 54,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, -105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, -105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,199, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 58,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -152, 60,214, 3, 0, 0, 0, 0,216, 56,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58,254,199, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -152, 60,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120, 62,214, 3, 0, 0, 0, 0,184, 58,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105,111,110, 32, 66, -108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,199, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 62,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, - 88, 64,214, 3, 0, 0, 0, 0,152, 60,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10,254,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 88, 64,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56, 66,214, 3, 0, 0, 0, 0,120, 62,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, -109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, -109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 66,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, - 24, 68,214, 3, 0, 0, 0, 0, 88, 64,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,218,253,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 24, 68,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248, 69,214, 3, 0, 0, 0, 0, 56, 66,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253,199, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 69,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -216, 71,214, 3, 0, 0, 0, 0, 24, 68,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40,253,199, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -216, 71,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 69,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,123,199, 3, 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 88, 11,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,120, 12,214, 3, 0, 0, 0, 0, 56, 10,214, 3, 0, 0, 0, 0, -168, 9,201, 3, 0, 0, 0, 0,232, 15,201, 3, 0, 0, 0, 0,136, 16,201, 3, 0, 0, 0, 0,104, 13,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 15, 15, 24, 4, 88, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 92,200, 3, 0, 0, 0, 0,216, 92,200, 3, 0, 0, 0, 0, - 72,228,175, 3, 0, 0, 0, 0,248,229,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,228,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,248,229,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,140, 68, - 0, 0, 0, 0, 0, 0,208, 65, 39,182,158, 55, 0, 0,131, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,130, 68, 0, 0,200, 65, 0,224,130, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 24, 4, 26, 0, 24, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,229,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,228,175, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, - 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 24, 4, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,216, 92,200, 3, 0, 0, 0, 0, -190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -120, 12,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 40, 14,214, 3, 0, 0, 0, 0, 88, 11,214, 3, 0, 0, 0, 0, -168, 14,201, 3, 0, 0, 0, 0,168, 19,201, 3, 0, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0, 72, 15,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 1, 0, 0, 59, 2, 0, 0, 3, 3,216, 0,255, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,255,208, 3, 0, 0, 0, 0, 40,255,208, 3, 0, 0, 0, 0, -168,231,175, 3, 0, 0, 0, 0, 88,233,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,231,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 88,233,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, - 0, 0, 0, 0, 0, 0,208, 65, 98, 39, 38, 54, 0, 0, 88, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 87, 67, 0, 0,200, 65, 0, 0, 87, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,216, 0, 26, 0,216, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 34, 2, 0, 0, 59, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,233,175, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,231,175, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, - 0, 0,244,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 67, 0, 0, 83,195, 0, 0, 0, 0,199, 0, 0, 0,216, 0, 0, 0, - 18, 0, 0, 0,228, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, - 18, 0, 0, 0,228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 12, 4, 6, 0,216, 0,229, 0,199, 0,211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 1, 0, 0, 33, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0, 40,255,208, 3, 0, 0, 0, 0, -183, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 13,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 16, 0, 0, 0,152, 13,214, 3, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, -248, 30,199, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,248, 30,199, 3, 0, 0, 0, 0,236, 0, 0, 0, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 24, 51,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,184,219,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,136, 48,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,152, 7,218, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,216, 29,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,225,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,120,209,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,213,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 24, 98,200, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0, 40, 14,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 72, 15,214, 3, 0, 0, 0, 0, -120, 12,214, 3, 0, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0, -136, 16,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0, 89, 0, 0, 0,194, 2, 0, 0, - 1, 1, 87, 2,106, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 73,214, 3, 0, 0, 0, 0, -184, 73,214, 3, 0, 0, 0, 0, 8,235,175, 3, 0, 0, 0, 0, 72, 88,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 8,235,175, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 56, 83,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 21, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 21, 68, 0, 0,200, 65, 0,128, 21, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 87, 2, 26, 0, 87, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56, 83,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232, 84,214, 3, 0, 0, 0, 0, 8,235,175, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,115, 0, 0, 0,194, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 80, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -232, 84,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152, 86,214, 3, 0, 0, 0, 0, 56, 83,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,115, 0, 0, 0,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -152, 86,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72, 88,214, 3, 0, 0, 0, 0,232, 84,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 23, 4, 0, 0,115, 0, 0, 0,194, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 72, 88,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 86,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0,115, 0, 0, 0,194, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 2, 80, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,115,214, 3, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, - 8,115,214, 3, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,167,141, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,209,162,227,190, 48,180, 81,191,184,158, 81,191, -117, 90,127, 63, 13,114, 91, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,105,147,125, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 64,185, 70,188, 0, 0, 82,180, - 48,221,185,190, 44, 45, 51, 62, 28, 11, 79, 63, 0, 0, 56,179, 67,108,117,194,183,204,216, 65,105,156, 5,194,212,247,159,192, -235, 62,114, 66, 59,254,213,193,158,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,209,162,227,190, 48,180, 81,191,184,158, 81,191, -117, 90,127, 63, 13,114, 91, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,105,147,125, 63,138, 84,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,163, 91, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12,163, 91, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,163, 91, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,236, 15, 72, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 32, 33, 12, 66, 86,152,137, 66,113, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 1, 0, 0,184, 73,214, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,200,213,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, - 0, 0,128, 63,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 72, 15,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,104, 16,214, 3, 0, 0, 0, 0, 40, 14,214, 3, 0, 0, 0, 0, -232, 15,201, 3, 0, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, 8, 19,201, 3, 0, 0, 0, 0, 40, 17,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 89, 0, 0, 0, 3, 1, 0, 0, 2, 2,192, 1,171, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,149,199, 3, 0, 0, 0, 0, 8,149,199, 3, 0, 0, 0, 0, -248, 89,214, 3, 0, 0, 0, 0, 8, 95,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 89,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,168, 91,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,223, 67, 0, 0,200, 65, 0,128,223, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 91,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 88, 93,214, 3, 0, 0, 0, 0,248, 89,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, - 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 93,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 8, 95,214, 3, 0, 0, 0, 0,168, 91,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 95,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 93,214, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, - 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, - 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 8,149,199, 3, 0, 0, 0, 0, -178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,119,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 0, 0, 0, - 40,119,214, 3, 0, 0, 0, 0, 37, 1, 0, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,104, 16,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248,150,214, 3, 0, 0, 0, 0, - 72, 15,214, 3, 0, 0, 0, 0,104, 18,201, 3, 0, 0, 0, 0, 40, 12,201, 3, 0, 0, 0, 0,200, 17,201, 3, 0, 0, 0, 0, - 8, 19,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 5, 1, 0, 0,194, 2, 0, 0, - 12, 12,192, 1,190, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,230,208, 3, 0, 0, 0, 0, -200,230,208, 3, 0, 0, 0, 0,184, 96,214, 3, 0, 0, 0, 0, 24,100,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -184, 96,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104, 98,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192, 94, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,223, 67, 0, 0,200, 65, 0,128,223, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 5, 1, 0, 0, 30, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -104, 98,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 24,100,214, 3, 0, 0, 0, 0,184, 96,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,201,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,164, 1,200, 0,146, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 31, 1, 0, 0,194, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,164, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 24,100,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 98,214, 3, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,104, 68, 0, 0, 72,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,201,195, 0, 0, 0, 0, -231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, - 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,164, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 31, 1, 0, 0,194, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 1, 0, 0, -200,230,208, 3, 0, 0, 0, 0, 38, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -248,150,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 16,214, 3, 0, 0, 0, 0, -168, 19,201, 3, 0, 0, 0, 0, 8, 14,201, 3, 0, 0, 0, 0,200, 12,201, 3, 0, 0, 0, 0, 72, 20,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0,194, 2, 0, 0, 1, 1,216, 0,134, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 75,214, 3, 0, 0, 0, 0,152, 75,214, 3, 0, 0, 0, 0, -200,101,214, 3, 0, 0, 0, 0,120,103,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,101,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,120,103,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,165, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 1, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0,128,164, 67, 0, 0,200, 65, 0,128,164, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 74, 1, 24, 0, 74, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,103,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,101,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0,134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,152,214, 3, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, 24,152,214, 3, 0, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 56,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,100, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, 88,126,162,190,229,251,159, 62, - 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 78,255,170, 64, 0, 0,128, 63, 47,201,194, 63, 61, 73,145,191,244,250, 39,191, 8,165, 39,191,190,164,206, 63,209, 10,143, 63, -180,164, 28, 63,149, 84, 28, 63,224,153,196,188,136,239, 76, 64, 10,108,228,190, 52,247,227,190,125, 21, 64,191,126,113,172,191, -216, 49, 49, 65,152, 9, 52, 65,149, 70,158, 62, 24,234,167, 62,192,214,159,187, 0, 0, 6,181,196,188,181,189, 71,238,178, 61, -127, 45,128, 62, 0, 0,226, 51,168,120, 21,194,107, 5, 2, 66,203,135,213,193,147,214,159,192,177, 38, 19, 66,124,173,255,193, - 96,101,210, 65,128, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190, -152, 9, 52,193, 0, 0,128, 63, 47,201,194, 63, 61, 73,145,191,244,250, 39,191, 8,165, 39,191,190,164,206, 63,209, 10,143, 63, -180,164, 28, 63,149, 84, 28, 63,224,153,196,188,136,239, 76, 64, 10,108,228,190, 52,247,227,190,125, 21, 64,191,126,113,172,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,102,103, 97, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,103, 97, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,103, 97, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,253,191,136, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 1, 2, 0, 0, -255,255, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63,190,133, 65, 66, - 99,212, 90, 66, 27,183,118, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0, -152, 75,214, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, - 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 3, 0, 8, 0,128, 0, 0, 0, 12, 66, 0, 0,128, 63, 10,215, 35, 60, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 8,156,214, 3, 0, 0, 0, 0, -210, 0, 0, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 20,201, 3, 0, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0,168,108,171, 3, 0, 0, 0, 0, 24,123,171, 3, 0, 0, 0, 0, -152,157,214, 3, 0, 0, 0, 0, 40,231,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 20,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,136, 21,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 21,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 40, 22,201, 3, 0, 0, 0, 0,232, 20,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 22,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 22,201, 3, 0, 0, 0, 0, -136, 21,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200, 22,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0, 40, 22,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0,200, 22,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -168, 24,201, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, - 8, 24,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72, 25,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 6,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 40, 27,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0, -136, 26,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200, 27,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 3,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,108,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,109,171, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 21,201, 3, 0, 0, 0, 0, 40, 22,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,109,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,110,171, 3, 0, 0, 0, 0, -168,108,171, 3, 0, 0, 0, 0,136, 21,201, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,110,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,110,171, 3, 0, 0, 0, 0, - 88,109,171, 3, 0, 0, 0, 0, 40, 22,201, 3, 0, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184,110,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,111,171, 3, 0, 0, 0, 0, - 8,110,171, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,111,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,112,171, 3, 0, 0, 0, 0, -184,110,171, 3, 0, 0, 0, 0,200, 22,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,112,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,112,171, 3, 0, 0, 0, 0, -104,111,171, 3, 0, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,200,112,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,113,171, 3, 0, 0, 0, 0, - 24,112,171, 3, 0, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,120,113,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,114,171, 3, 0, 0, 0, 0, -200,112,171, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 40,114,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,114,171, 3, 0, 0, 0, 0, -120,113,171, 3, 0, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,216,114,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,115,171, 3, 0, 0, 0, 0, - 40,114,171, 3, 0, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,136,115,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,116,171, 3, 0, 0, 0, 0, -216,114,171, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 56,116,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,116,171, 3, 0, 0, 0, 0, -136,115,171, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,232,116,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,117,171, 3, 0, 0, 0, 0, - 56,116,171, 3, 0, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,152,117,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,118,171, 3, 0, 0, 0, 0, -232,116,171, 3, 0, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 72,118,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,118,171, 3, 0, 0, 0, 0, -152,117,171, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,248,118,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,119,171, 3, 0, 0, 0, 0, - 72,118,171, 3, 0, 0, 0, 0,232, 20,201, 3, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,168,119,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,120,171, 3, 0, 0, 0, 0, -248,118,171, 3, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 88,120,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,121,171, 3, 0, 0, 0, 0, -168,119,171, 3, 0, 0, 0, 0,200, 22,201, 3, 0, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 8,121,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,121,171, 3, 0, 0, 0, 0, - 88,120,171, 3, 0, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,184,121,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,122,171, 3, 0, 0, 0, 0, - 8,121,171, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,104,122,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,123,171, 3, 0, 0, 0, 0, -184,121,171, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, 8, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 24,123,171, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104,122,171, 3, 0, 0, 0, 0,232, 20,201, 3, 0, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,152,157,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,184,158,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0,136, 21,201, 3, 0, 0, 0, 0, 40, 22,201, 3, 0, 0, 0, 0, - 8, 24,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 5, 4, 0, 0, - 7, 7,127, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,198,207, 3, 0, 0, 0, 0, - 88,198,207, 3, 0, 0, 0, 0, 40,105,214, 3, 0, 0, 0, 0,216,106,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 40,105,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,106,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 4, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,106,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,105,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 5, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -184,158,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,216,159,214, 3, 0, 0, 0, 0,152,157,214, 3, 0, 0, 0, 0, - 8, 29,201, 3, 0, 0, 0, 0,168, 24,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0,200, 22,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 15, 15, 94, 1, 92, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 94,200, 3, 0, 0, 0, 0, 40, 94,200, 3, 0, 0, 0, 0, -136,108,214, 3, 0, 0, 0, 0, 56,110,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,108,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 56,110,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,115, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,110,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,108,214, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, - 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, - 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 94, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 40, 94,200, 3, 0, 0, 0, 0, -190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -216,159,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248,224,214, 3, 0, 0, 0, 0,184,158,214, 3, 0, 0, 0, 0, -168, 24,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 8, 24,201, 3, 0, 0, 0, 0, 72, 25,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 93, 0, 0, 0,233, 3, 0, 0, 4, 4, 94, 1,141, 3, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,125,199, 3, 0, 0, 0, 0, 56,125,199, 3, 0, 0, 0, 0, -232,111,214, 3, 0, 0, 0, 0, 40,161,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,111,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 40,161,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0,208, 3, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,161,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,111,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174, 67, - 0,128, 92,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,166, 67,255,191, 92,196, 0, 0, 0, 0, 77, 1, 0, 0, 94, 1, 0, 0, - 0, 0, 0, 0,114, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, - 0, 0, 0, 0,114, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 94, 1,115, 3, 77, 1,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 93, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 1,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 77,214, 3, 0, 0, 0, 0, 8,210,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 77,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 88, 79,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 76, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 79,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40,193,214, 3, 0, 0, 0, 0, -120, 77,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40,193,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 8,195,214, 3, 0, 0, 0, 0, 88, 79,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 8,195,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232,196,214, 3, 0, 0, 0, 0, - 40,193,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 76, 1,203, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,196,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,200,198,214, 3, 0, 0, 0, 0, 8,195,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,200,198,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168,200,214, 3, 0, 0, 0, 0, -232,196,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, - 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 76, 1, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168,200,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,136,202,214, 3, 0, 0, 0, 0,200,198,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,254, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,136,202,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104,204,214, 3, 0, 0, 0, 0, -168,200,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, -110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, 76, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104,204,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 72,206,214, 3, 0, 0, 0, 0,136,202,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 72,206,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40,208,214, 3, 0, 0, 0, 0, -104,204,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, 76, 1, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40,208,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 8,210,214, 3, 0, 0, 0, 0, 72,206,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,253, 76, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 8,210,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,208,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, 76, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,125,199, 3, 0, 0, 0, 0, -179, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,248,224,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 8,230,214, 3, 0, 0, 0, 0, -216,159,214, 3, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, - 8, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, - 1, 1, 27, 3,140, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,211,214, 3, 0, 0, 0, 0, -232,211,214, 3, 0, 0, 0, 0,216,162,214, 3, 0, 0, 0, 0,152,169,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -216,162,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,164,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 70, 68, 0, 0,200, 65, 0,128, 70, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 27, 3, 26, 0, 27, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,164,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 56,166,214, 3, 0, 0, 0, 0,216,162,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 5, 3, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,114, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56,166,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232,167,214, 3, 0, 0, 0, 0,136,164,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -232,167,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152,169,214, 3, 0, 0, 0, 0, 56,166,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -152,169,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,167,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,226,214, 3, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, - 24,226,214, 3, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 93,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 30,133,119, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, - 87,126,162,190,228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0, -110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 42, 6,158, 63, 99, 28,157,191,244,250, 39,191, 8,165, 39,191, -211,164,167, 63, 55,175,154, 63,180,164, 28, 63,149, 84, 28, 63, 39,127,159,188,135,157, 93, 64, 8,108,228,190, 50,247,227,190, - 4,213, 27,191,122,122,186,191,216, 49, 49, 65,152, 9, 52, 65, 25, 25,195, 62,176,249,206, 62,128,238,196,187, 0, 0,192,179, - 55, 15,168,189,201,118,165, 61,152, 15,109, 62, 0, 0,152, 51,211,120, 21,194,144, 5, 2, 66, 6,136,213,193,193,214,159,192, -219, 38, 19, 66,196,173,255,193,154,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, - 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, - 90, 38,173,190,254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 42, 6,158, 63, 99, 28,157,191,244,250, 39,191, 8,165, 39,191, -211,164,167, 63, 55,175,154, 63,180,164, 28, 63,149, 84, 28, 63, 39,127,159,188,135,157, 93, 64, 8,108,228,190, 50,247,227,190, - 4,213, 27,191,122,122,186,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,250,150, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 62,250,150, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,250,150, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 80, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,160, 65, 1, 2, 0, 0,255,255, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, - 0, 0,128, 63,190,133, 65, 66,100,212, 90, 66, 31,183,118, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 1, 0, 0,232,211,214, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,200,213,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, - 0, 0,128, 63,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 8,230,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 40,231,214, 3, 0, 0, 0, 0,248,224,214, 3, 0, 0, 0, 0, -136, 26,201, 3, 0, 0, 0, 0,104, 23,201, 3, 0, 0, 0, 0,232, 25,201, 3, 0, 0, 0, 0, 40, 27,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,141, 1, 0, 0,233, 3, 0, 0, 16, 16, 32, 6, 93, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,174,214, 3, 0, 0, 0, 0,168,174,214, 3, 0, 0, 0, 0, - 72,171,214, 3, 0, 0, 0, 0,248,172,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,171,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,248,172,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 66, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,195, 68, 0, 0,200, 65, 0,224,195, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 32, 6, 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,172,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,171,214, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,128,195,217,195,192,225,108, 68, 96,240,187, 64, 62, 16,253, 67, 15, 6, 0, 0, 32, 6, 0, 0, - 18, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 14, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 14, 6, 0, 0, - 18, 0, 0, 0, 66, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 32, 6, 67, 2, 15, 6, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,168,174,214, 3, 0, 0, 0, 0, -191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10,206, 97, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 40,231,214, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,230,214, 3, 0, 0, 0, 0, -232, 20,201, 3, 0, 0, 0, 0,136, 26,201, 3, 0, 0, 0, 0,200, 27,201, 3, 0, 0, 0, 0,104, 28,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 6, 6, 4, 3,140, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,232,214, 3, 0, 0, 0, 0, 72,232,214, 3, 0, 0, 0, 0, - 88,176,214, 3, 0, 0, 0, 0,184,179,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,176,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 8,178,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 65, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 64, 68, 0, 0,200, 65, 0,192, 64, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 4, 3, 26, 0, 4, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,178,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,184,179,214, 3, 0, 0, 0, 0, 88,176,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,179,214, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,178,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0,129,191, 0,128, 0, 64, 0, 0,100,190, 0,128,156, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 0, - 0, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 3,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 33, 0, 0, 72,232,214, 3, 0, 0, 0, 0, -184, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, - 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0,248, 9,215, 3, 0, 0, 0, 0, -210, 0, 0, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 29,201, 3, 0, 0, 0, 0,136, 36,201, 3, 0, 0, 0, 0,200,123,171, 3, 0, 0, 0, 0,120,135,171, 3, 0, 0, 0, 0, -184, 11,215, 3, 0, 0, 0, 0, 56, 16,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,102, 10, 64, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 29,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 72, 30,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 30,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -232, 30,201, 3, 0, 0, 0, 0,168, 29,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,178, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232, 30,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 31,201, 3, 0, 0, 0, 0, - 72, 30,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 5,178, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136, 31,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0,232, 30,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0,136, 31,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,151, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -104, 33,201, 3, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 5,151, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8, 34,201, 3, 0, 0, 0, 0, -200, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 8, 34,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 4,151, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 72, 35,201, 3, 0, 0, 0, 0, 8, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 4, 56, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 35,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -232, 35,201, 3, 0, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 5, 56, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,232, 35,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 36,201, 3, 0, 0, 0, 0, - 72, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -136, 36,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 35,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,123,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,120,124,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 30,201, 3, 0, 0, 0, 0, -232, 30,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,124,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 40,125,171, 3, 0, 0, 0, 0,200,123,171, 3, 0, 0, 0, 0, 72, 30,201, 3, 0, 0, 0, 0, - 40, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,125,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,216,125,171, 3, 0, 0, 0, 0,120,124,171, 3, 0, 0, 0, 0,232, 30,201, 3, 0, 0, 0, 0, -200, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,125,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,136,126,171, 3, 0, 0, 0, 0, 40,125,171, 3, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, -200, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,126,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 56,127,171, 3, 0, 0, 0, 0,216,125,171, 3, 0, 0, 0, 0,168, 29,201, 3, 0, 0, 0, 0, -104, 33,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,127,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,232,127,171, 3, 0, 0, 0, 0,136,126,171, 3, 0, 0, 0, 0,136, 31,201, 3, 0, 0, 0, 0, -104, 33,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,127,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,152,128,171, 3, 0, 0, 0, 0, 56,127,171, 3, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, - 8, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,128,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 72,129,171, 3, 0, 0, 0, 0,232,127,171, 3, 0, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0, - 8, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,129,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,248,129,171, 3, 0, 0, 0, 0,152,128,171, 3, 0, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0, -168, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,129,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,168,130,171, 3, 0, 0, 0, 0, 72,129,171, 3, 0, 0, 0, 0, 8, 34,201, 3, 0, 0, 0, 0, -168, 34,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,130,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 88,131,171, 3, 0, 0, 0, 0,248,129,171, 3, 0, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0, - 72, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,131,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 8,132,171, 3, 0, 0, 0, 0,168,130,171, 3, 0, 0, 0, 0,136, 31,201, 3, 0, 0, 0, 0, - 72, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,132,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,184,132,171, 3, 0, 0, 0, 0, 88,131,171, 3, 0, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0, - 72, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,132,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,104,133,171, 3, 0, 0, 0, 0, 8,132,171, 3, 0, 0, 0, 0,168, 29,201, 3, 0, 0, 0, 0, -232, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,133,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 24,134,171, 3, 0, 0, 0, 0,184,132,171, 3, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, -232, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,134,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,200,134,171, 3, 0, 0, 0, 0,104,133,171, 3, 0, 0, 0, 0, 8, 34,201, 3, 0, 0, 0, 0, -136, 36,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,134,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,120,135,171, 3, 0, 0, 0, 0, 24,134,171, 3, 0, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0, -136, 36,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,135,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,134,171, 3, 0, 0, 0, 0,232, 35,201, 3, 0, 0, 0, 0, -136, 36,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 11,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0,216, 12,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, - 72, 30,201, 3, 0, 0, 0, 0,232, 30,201, 3, 0, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70, 5, 0, 0,152, 2, 0, 0,178, 2, 0, 0, 7, 7, 71, 5, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, - 72,207,177, 3, 0, 0, 0, 0, 24,199,207, 3, 0, 0, 0, 0, 24,199,207, 3, 0, 0, 0, 0,104,181,214, 3, 0, 0, 0, 0, - 24,183,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,196,207, 3, 0, 0, 0, 0, -216,196,207, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,181,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 24,183,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,168, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,168, 68, 0, 0,200, 65, 0,192,168, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0, 71, 5, 26, 0, 71, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70, 5, 0, 0,152, 2, 0, 0,177, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 5, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 6,178, 3, 0, 0, 0, 0,120,128,214, 15, 0, 0, 0, 0,120,128,214, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120, 13,163, 3, 0, 0, 0, 0,216, 19,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,183,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,181,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0, 0,192,168, 68, 0, 0, 0, 0, 0, 0, 0, 64, 70, 5, 0, 0, 87, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 69, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0, 87, 5, 2, 0, 70, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,178, 2, 0, 0,178, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 5,178, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 20,163, 3, 0, 0, 0, 0,248,116,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 12,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, -248, 13,215, 3, 0, 0, 0, 0,184, 11,215, 3, 0, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0, - 72, 35,201, 3, 0, 0, 0, 0,136, 31,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 4, 0, 0, 70, 5, 0, 0, - 0, 0, 0, 0, 55, 2, 0, 0, 4, 4,214, 0, 56, 2, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,248,205,177, 3, 0, 0, 0, 0, -184,126,199, 3, 0, 0, 0, 0,184,126,199, 3, 0, 0, 0, 0,200,184,214, 3, 0, 0, 0, 0,120,186,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,205,207, 3, 0, 0, 0, 0, 88,195,207, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,200,184,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120,186,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 86, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 85, 67, 0, 0,200, 65, - 0, 0, 85, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,214, 0, - 26, 0,214, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, 4, 0, 0, 70, 5, 0, 0, - 30, 2, 0, 0, 55, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 0, 26, 0, 4, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 3,178, 3, 0, 0, 0, 0, -200, 53,163, 3, 0, 0, 0, 0,200, 53,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8,118,208, 3, 0, 0, 0, 0, 56,121,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,120,186,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200,184,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, 0, 0, 61,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 67, - 0,128, 7,196, 0, 0, 0, 0,197, 0, 0, 0,214, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,214, 0, - 30, 2,197, 0, 30, 2, 0, 0, 72, 91,192, 15, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,113, 4, 0, 0, 70, 5, 0, 0, - 0, 0, 0, 0, 29, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 0, 30, 2, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 2,178, 3, 0, 0, 0, 0, - 8,150,212, 15, 0, 0, 0, 0,152, 72,163, 3, 0, 0, 0, 0,200,213,214, 3, 0, 0, 0, 0,184, 75,215, 3, 0, 0, 0, 0, - 72,122,208, 3, 0, 0, 0, 0,152,127,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,200,213,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168,215,214, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 35,178, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,197, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168,215,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,136,217,214, 3, 0, 0, 0, 0,200,213,214, 3, 0, 0, 0, 0, 40, 34,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,197, 0, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,136,217,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104,219,214, 3, 0, 0, 0, 0, -168,215,214, 3, 0, 0, 0, 0,200, 35,221, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,197, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104,219,214, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 72,221,214, 3, 0, 0, 0, 0,136,217,214, 3, 0, 0, 0, 0,104, 37,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,197, 0,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 72,221,214, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184, 43,215, 3, 0, 0, 0, 0, -104,219,214, 3, 0, 0, 0, 0, 8, 39,221, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,197, 0, 58, 0, - 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 43,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,152, 45,215, 3, 0, 0, 0, 0, 72,221,214, 3, 0, 0, 0, 0,168, 40,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,197, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 45,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120, 47,215, 3, 0, 0, 0, 0, -184, 43,215, 3, 0, 0, 0, 0, 72, 42,221, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,254,197, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 47,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 88, 49,215, 3, 0, 0, 0, 0,152, 45,215, 3, 0, 0, 0, 0,232, 43,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253,197, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 49,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56, 51,215, 3, 0, 0, 0, 0, -120, 47,215, 3, 0, 0, 0, 0,136, 45,221, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, - 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,253,197, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 51,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 24, 53,215, 3, 0, 0, 0, 0, 88, 49,215, 3, 0, 0, 0, 0, 72, 48,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253,197, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 53,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248, 54,215, 3, 0, 0, 0, 0, - 56, 51,215, 3, 0, 0, 0, 0,232, 49,221, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253,197, 0,134, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 54,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,216, 56,215, 3, 0, 0, 0, 0, 24, 53,215, 3, 0, 0, 0, 0, 40, 53,221, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,253,197, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 56,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184, 58,215, 3, 0, 0, 0, 0, -248, 54,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 41, 1, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 58,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,152, 60,215, 3, 0, 0, 0, 0,216, 56,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,255, 41, 1, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,152, 60,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120, 62,215, 3, 0, 0, 0, 0, -184, 58,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83, -101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191,254, 41, 1, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120, 62,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 88, 64,215, 3, 0, 0, 0, 0,152, 60,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131,254, 41, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88, 64,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56, 66,215, 3, 0, 0, 0, 0, -120, 62,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, - 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,105,109,112,108,105,102,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,254, 41, 1, 80, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 66,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 24, 68,215, 3, 0, 0, 0, 0, 88, 64,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115,116,111,109, 95,112,114,111,112,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,253, 41, 1, 36, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24, 68,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248, 69,215, 3, 0, 0, 0, 0, - 56, 66,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,255,187, 0,204, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 69,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,216, 71,215, 3, 0, 0, 0, 0, 24, 68,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,254,187, 0,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216, 71,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184, 75,215, 3, 0, 0, 0, 0, -248, 69,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, - 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,252,187, 0, 86, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 75,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 71,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 67,111,110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,255,187, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,184,126,199, 3, 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,232,198,226, 3, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248, 13,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0, 24, 15,215, 3, 0, 0, 0, 0,216, 12,215, 3, 0, 0, 0, 0,168, 29,201, 3, 0, 0, 0, 0, -232, 35,201, 3, 0, 0, 0, 0,136, 36,201, 3, 0, 0, 0, 0,104, 33,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15,112, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152,104,177, 3, 0, 0, 0, 0,120, 95,200, 3, 0, 0, 0, 0,120, 95,200, 3, 0, 0, 0, 0, 40,188,214, 3, 0, 0, 0, 0, -216,189,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,207,207, 3, 0, 0, 0, 0, -216,205,207, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,188,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -216,189,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,146, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,142, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,141, 68, 0, 0,200, 65, 0,224,141, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,112, 4, 26, 0,112, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 4, 26, 0, 6, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232,186,177, 3, 0, 0, 0, 0,232,169,209, 15, 0, 0, 0, 0,232,169,209, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,128,208, 3, 0, 0, 0, 0,216,131,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,189,214, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,188,214, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 88,218,103,194, 40,147,141, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,112, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 4, 58, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,185,177, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,132,208, 3, 0, 0, 0, 0, 88,140,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,120, 95,200, 3, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 15,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0, 56, 16,215, 3, 0, 0, 0, 0,248, 13,215, 3, 0, 0, 0, 0,168, 34,201, 3, 0, 0, 0, 0, - 8, 34,201, 3, 0, 0, 0, 0,200, 32,201, 3, 0, 0, 0, 0, 72, 35,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 4, 0, 0, 70, 5, 0, 0, 57, 2, 0, 0,150, 2, 0, 0, 3, 3,214, 0, 94, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, - 72,103,177, 3, 0, 0, 0, 0,200, 0,209, 3, 0, 0, 0, 0,200, 0,209, 3, 0, 0, 0, 0,184,107,215, 3, 0, 0, 0, 0, -104,109,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,209,207, 3, 0, 0, 0, 0, - 24,208,207, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,107,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -104,109,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 86, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 85, 67, 0, 0,200, 65, 0, 0, 85, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,214, 0, 26, 0,214, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 4, 0, 0, 70, 5, 0, 0,125, 2, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136,184,177, 3, 0, 0, 0, 0, 40, 59,163, 3, 0, 0, 0, 0, 40, 59,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,141,208, 3, 0, 0, 0, 0,152,144,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,109,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,107,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, - 0, 0, 0, 64, 0, 0, 71, 67, 0, 0,143,194, 0, 0,172,193,197, 0, 0, 0,214, 0, 0, 0, 18, 0, 0, 0, 67, 0, 0, 0, - 0, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 18, 0, 0, 0, 67, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, - 0, 0, 12, 4, 6, 0,214, 0, 68, 0,197, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 4, 0, 0, 70, 5, 0, 0, 57, 2, 0, 0,124, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 68, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88,183,177, 3, 0, 0, 0, 0,232, 69,163, 3, 0, 0, 0, 0,232, 69,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,145,208, 3, 0, 0, 0, 0, 8,231,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0,200, 0,209, 3, 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,120,243,211, 15, 0, 0, 0, 0,120,243,211, 15, 0, 0, 0, 0,136, 17,214, 3, 0, 0, 0, 0, - 0,115,101, 32, 83, 99,117,108,112,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, -136, 17,214, 3, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 42, 11, 0, 0, 42, 11, 0, 0,136,139,215, 3, 0, 0, 0, 0, - 68, 65, 84, 65,160,178, 0, 0,136,139,215, 3, 0, 0, 0, 0,236, 0, 0, 0, 42, 11, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -168,194,217, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, -168,194,217, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 24, 51,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,184,219,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -136, 48,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,152, 7,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -216, 29,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,225,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -120,209,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 24, 98,200, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, -200, 66,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 30, 0,255,255, 3, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 40, 77,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -200, 85,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -104, 94,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 8,103,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -168,111,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 72,120,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -232,128,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -136,137,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -104,176,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 72,183,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 40,190,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 8,197,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -232,203,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -200,210,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -168,217,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -136,224,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -184,212,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -200,219,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -216,226,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -232,233,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -248,240,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -152,231,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -168,238,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -184,245,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -200,252,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -216, 3,219, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -232, 10,219, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -248, 17,219, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, - 8, 25,219, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, - 24, 98,200, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -120,209,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0, -152, 7,218, 3, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, -136, 48,218, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0, -200,213,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0, -184,219,217, 3, 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0, -168,225,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -136, 7,214, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -136, 7,214, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -136, 7,214, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -136, 7,214, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,136, 7,214, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -136, 7,214, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,156,214, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 8,156,214, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248, 9,215, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -152, 66,216, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 56, 43,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 24,157,217, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 24,157,217, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 24,157,217, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 24,157,217, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 24,157,217, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, -216, 29,218, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, - 8, 78,210, 3, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, - 24, 51,163, 3, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 56, 16,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 15,215, 3, 0, 0, 0, 0, -232, 35,201, 3, 0, 0, 0, 0, 40, 32,201, 3, 0, 0, 0, 0, 8, 34,201, 3, 0, 0, 0, 0,136, 36,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0, 85, 0, 0, 0,150, 2, 0, 0, 1, 1,112, 4, 66, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 8, 0,232,105,177, 3, 0, 0, 0, 0,152, 92,215, 3, 0, 0, 0, 0,152, 92,215, 3, 0, 0, 0, 0, - 24,111,215, 3, 0, 0, 0, 0,216,117,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24,214,207, 3, 0, 0, 0, 0, 88,210,207, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,111,215, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,200,112,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,142, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,141, 68, 0, 0,200, 65, 0,224,141, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,112, 4, 26, 0,112, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 4, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,199,177, 3, 0, 0, 0, 0,248, 77,163, 3, 0, 0, 0, 0,248, 77,163, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,233,207, 3, 0, 0, 0, 0,120,238,207, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,112,215, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,120,114,215, 3, 0, 0, 0, 0, 24,111,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, - 0,192, 5,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,168,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 80, 1,143, 0, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 71, 1, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 80, 1, 11, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,195,177, 3, 0, 0, 0, 0,136, 64,163, 3, 0, 0, 0, 0,136, 64,163, 3, 0, 0, 0, 0, -152, 77,215, 3, 0, 0, 0, 0, 8,165,165, 15, 0, 0, 0, 0,136,239,207, 3, 0, 0, 0, 0,184,242,207, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152, 77,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,120, 79,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,235,223, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, -100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233,253,143, 0,255, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120, 79,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 88, 81,215, 3, 0, 0, 0, 0, -152, 77,215, 3, 0, 0, 0, 0,136, 0,225, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 81,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 56, 83,215, 3, 0, 0, 0, 0,120, 79,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,254,143, 0, 61, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56, 83,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24, 85,215, 3, 0, 0, 0, 0, - 88, 81,215, 3, 0, 0, 0, 0,200, 3,225, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,254,143, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24, 85,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,248, 86,215, 3, 0, 0, 0, 0, 56, 83,215, 3, 0, 0, 0, 0,104, 5,225, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248, 86,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,216, 88,215, 3, 0, 0, 0, 0, - 24, 85,215, 3, 0, 0, 0, 0, 72, 10,225, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, - 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,253,143, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216, 88,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,200,168,165, 15, 0, 0, 0, 0,248, 86,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116,101,120,112, 97, -105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116,101,120,112, 97, -105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,253,143, 0,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,200,168,165, 15, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232,166,165, 15, 0, 0, 0, 0, -216, 88,215, 3, 0, 0, 0, 0, 40, 2,225, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,254,143, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,166,165, 15, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 8,165,165, 15, 0, 0, 0, 0,200,168,165, 15, 0, 0, 0, 0, 8, 7,225, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 8,165,165, 15, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232,166,165, 15, 0, 0, 0, 0,168, 8,225, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,121,109,109,101,116,114,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253,253,143, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,114,215, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 40,116,215, 3, 0, 0, 0, 0,200,112,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, - 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,111, 0, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 12, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,196,177, 3, 0, 0, 0, 0, 88, 83,163, 3, 0, 0, 0, 0, 88, 83,163, 3, 0, 0, 0, 0, -184, 90,215, 3, 0, 0, 0, 0,184, 90,215, 3, 0, 0, 0, 0,200,243,207, 3, 0, 0, 0, 0,248,246,207, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 90,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,197,177, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,117,108,112,116, 32, 77,111,100,101, 0, 32, 77,111,100,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 40,116,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,117,215, 3, 0, 0, 0, 0, -120,114,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0, 96,158,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 96,158,196, 0,128,142,195,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,213, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,213, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,180, 0, -214, 3,163, 0,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 4, 0, 0,111, 4, 0, 0, -111, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,189,177, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216,117,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,116,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0,111, 4, 0, 0, -111, 0, 0, 0,150, 2, 0, 0,160, 0, 0, 0,111, 4, 0, 0,111, 0, 0, 0,150, 2, 0, 0,208, 3, 40, 2, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,188,177, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,151,207, 3, 0, 0, 0, 0,168, 34,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 62,216, 3, 0, 0, 0, 0, - 68, 65, 84, 65,112, 3, 0, 0,168, 62,216, 3, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,137,247, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 6,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 11,210, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,210,111,193, 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0, 62, 95, 68, 65, 51,120,173,192,115,208,213, 64, 0, 0,128, 63,178,157,229, 62, 69,228, 70,191, -116,169, 81,191,184,158, 81,191,117, 90,127, 63, 69,188,191, 62,158, 53,185, 62, 35, 44,185, 62,145,180,109,188, 86,142,221, 63, -218, 72,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 33,171,108, 65, 33,210,111, 65,100,240,191, 62,110,116, 85, 63, - 48,185, 70,188, 0, 0, 82,180,137,185, 84,190, 30, 18,205, 61, 77,247,236, 62, 0, 0, 40, 51,197,112,117,194,178,208,216, 65, -220,158, 5,194,231,251,159,192,221, 54,114, 66, 29,247,213,193, 58,221, 3, 66, 25, 4,160, 64, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,210,111,193, 0, 0,128, 63,178,157,229, 62, 69,228, 70,191, -116,169, 81,191,184,158, 81,191,117, 90,127, 63, 69,188,191, 62,158, 53,185, 62, 35, 44,185, 62,145,180,109,188, 86,142,221, 63, -218, 72,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 33,171,108, 65, 33,210,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,203, 6, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,203, 6, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 60,203, 6, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190, 33,210,111, 65, 33,210,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,114,145,245, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,113, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,152, 92,215, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, -200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, - 8, 24,128, 0, 0, 0, 12, 66, 0, 0,128, 63,205,204,204, 61, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 78, 0, 0, 8, 1, 0, 0,152, 66,216, 3, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, 56, 43,217, 3, 0, 0, 0, 0, -248, 9,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76, -111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0, 72, 45,201, 3, 0, 0, 0, 0, - 40,136,171, 3, 0, 0, 0, 0,184, 80,216, 3, 0, 0, 0, 0, 88, 17,215, 3, 0, 0, 0, 0,248, 22,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 37,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200, 37,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 38,201, 3, 0, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 38,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 8, 39,201, 3, 0, 0, 0, 0,200, 37,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 39,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -168, 39,201, 3, 0, 0, 0, 0,104, 38,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0, - 8, 39,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72, 40,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 40, 42,201, 3, 0, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,140, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 40, 42,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 42,201, 3, 0, 0, 0, 0, -136, 41,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -200, 42,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, 40, 42,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126, 7,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0, 8, 44,201, 3, 0, 0, 0, 0,200, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 5,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 44,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -168, 44,201, 3, 0, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5,234, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,168, 44,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 45,201, 3, 0, 0, 0, 0, - 8, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 72, 45,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 44,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,136,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,216,136,171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 37,201, 3, 0, 0, 0, 0, -104, 38,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,136,171, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 88, 68,216, 3, 0, 0, 0, 0, 40,136,171, 3, 0, 0, 0, 0,200, 37,201, 3, 0, 0, 0, 0, -168, 39,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 68,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 8, 69,216, 3, 0, 0, 0, 0,216,136,171, 3, 0, 0, 0, 0,104, 38,201, 3, 0, 0, 0, 0, - 72, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 69,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,184, 69,216, 3, 0, 0, 0, 0, 88, 68,216, 3, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, - 72, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 69,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,104, 70,216, 3, 0, 0, 0, 0, 8, 69,216, 3, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, -232, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104, 70,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 24, 71,216, 3, 0, 0, 0, 0,184, 69,216, 3, 0, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0, -136, 41,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24, 71,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,200, 71,216, 3, 0, 0, 0, 0,104, 70,216, 3, 0, 0, 0, 0, 8, 39,201, 3, 0, 0, 0, 0, - 40, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200, 71,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,120, 72,216, 3, 0, 0, 0, 0, 24, 71,216, 3, 0, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0, - 40, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120, 72,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 40, 73,216, 3, 0, 0, 0, 0,200, 71,216, 3, 0, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0, -232, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40, 73,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,216, 73,216, 3, 0, 0, 0, 0,120, 72,216, 3, 0, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0, - 40, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216, 73,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,136, 74,216, 3, 0, 0, 0, 0, 40, 73,216, 3, 0, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0, -200, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 74,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 56, 75,216, 3, 0, 0, 0, 0,216, 73,216, 3, 0, 0, 0, 0, 8, 39,201, 3, 0, 0, 0, 0, -200, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56, 75,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,232, 75,216, 3, 0, 0, 0, 0,136, 74,216, 3, 0, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0, -200, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232, 75,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,152, 76,216, 3, 0, 0, 0, 0, 56, 75,216, 3, 0, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, - 8, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152, 76,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 72, 77,216, 3, 0, 0, 0, 0,232, 75,216, 3, 0, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0, - 8, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72, 77,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,248, 77,216, 3, 0, 0, 0, 0,152, 76,216, 3, 0, 0, 0, 0,200, 42,201, 3, 0, 0, 0, 0, -104, 43,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248, 77,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,168, 78,216, 3, 0, 0, 0, 0, 72, 77,216, 3, 0, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0, -168, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168, 78,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 88, 79,216, 3, 0, 0, 0, 0,248, 77,216, 3, 0, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, -168, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 79,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 8, 80,216, 3, 0, 0, 0, 0,168, 78,216, 3, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, - 72, 45,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8, 80,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0,184, 80,216, 3, 0, 0, 0, 0, 88, 79,216, 3, 0, 0, 0, 0, 8, 44,201, 3, 0, 0, 0, 0, - 72, 45,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184, 80,216, 3, 0, 0, 0, 0, -212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80,216, 3, 0, 0, 0, 0,168, 44,201, 3, 0, 0, 0, 0, - 72, 45,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 17,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0,120, 18,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, -200, 37,201, 3, 0, 0, 0, 0,104, 38,201, 3, 0, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,199,207, 3, 0, 0, 0, 0,216,199,207, 3, 0, 0, 0, 0,136,119,215, 3, 0, 0, 0, 0, - 56,121,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,119,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 56,121,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,121,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136,119,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,238, 68, 0, 0, 0, 0, 0, 0, 0, 64,112, 7, 0, 0,129, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 18,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, -152, 19,215, 3, 0, 0, 0, 0, 88, 17,215, 3, 0, 0, 0, 0, 40, 42,201, 3, 0, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0, -200, 42,201, 3, 0, 0, 0, 0, 8, 39,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, - 0, 0, 0, 0,139, 1, 0, 0, 4, 4, 94, 1,140, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,128,199, 3, 0, 0, 0, 0, 56,128,199, 3, 0, 0, 0, 0,232,122,215, 3, 0, 0, 0, 0,152,124,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,232,122,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152,124,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, - 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, - 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, -114, 1, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,152,124,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232,122,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174, 67, 0, 0, 61,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,166, 67, -255,255,184,195, 0, 0, 0, 0, 77, 1, 0, 0, 94, 1, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 94, 1, -114, 1, 77, 1,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, - 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 1,114, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 94,215, 3, 0, 0, 0, 0,184,205,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,120, 94,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 88, 96,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 76, 1, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 96,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 56, 98,215, 3, 0, 0, 0, 0,120, 94,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 56, 98,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24,100,215, 3, 0, 0, 0, 0, - 88, 96,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,100,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,248,101,215, 3, 0, 0, 0, 0, 56, 98,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 76, 1,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,248,101,215, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,216,103,215, 3, 0, 0, 0, 0, - 24,100,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, 76, 1, 58, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,103,215, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 88,196,216, 3, 0, 0, 0, 0,248,101,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 88,196,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56,198,216, 3, 0, 0, 0, 0, -216,103,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,254, 76, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,198,216, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 24,200,216, 3, 0, 0, 0, 0, 88,196,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0, 24,200,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248,201,216, 3, 0, 0, 0, 0, - 56,198,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, - 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,253, 76, 1, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,201,216, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0,216,203,216, 3, 0, 0, 0, 0, 24,200,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 88, 1, 0, 0,216,203,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184,205,216, 3, 0, 0, 0, 0, -248,201,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,253, 76, 1,130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,205,216, 3, 0, 0, 0, 0, -213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,203,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 56,128,199, 3, 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 19,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0,184, 20,215, 3, 0, 0, 0, 0,120, 18,215, 3, 0, 0, 0, 0, 40, 37,201, 3, 0, 0, 0, 0, -232, 40,201, 3, 0, 0, 0, 0,136, 41,201, 3, 0, 0, 0, 0, 40, 42,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 17, 17, 32, 6,140, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248,217,208, 3, 0, 0, 0, 0,248,217,208, 3, 0, 0, 0, 0, 72,126,215, 3, 0, 0, 0, 0, -168,129,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,126,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -248,127,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,195, 68, 0, 0,200, 65, 0,224,195, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0, 32, 6, 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,127,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -168,129,215, 3, 0, 0, 0, 0, 72,126,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,185,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,185,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,220, 0,114, 1,203, 0,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0,114, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,207,216, 3, 0, 0, 0, 0, -152,207,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,207,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -168,129,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,127,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 0, 80, 31,195, 0,234,179, 68,224,198,182,194,184,177,165, 67, - 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,113, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, - 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5,114, 1, 51, 5, 96, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0, -248,217,208, 3, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, -184, 20,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,216, 21,215, 3, 0, 0, 0, 0,152, 19,215, 3, 0, 0, 0, 0, -104, 43,201, 3, 0, 0, 0, 0, 8, 44,201, 3, 0, 0, 0, 0, 72, 40,201, 3, 0, 0, 0, 0,200, 42,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,141, 1, 0, 0,233, 3, 0, 0, 9, 9, 62, 2, 93, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,228,216, 3, 0, 0, 0, 0, 40,228,216, 3, 0, 0, 0, 0, - 88,131,215, 3, 0, 0, 0, 0, 8,133,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,131,215, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 8,133,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 15, 68, 0, 0,200, 65, 0, 64, 15, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 62, 2, 26, 0, 62, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,133,215, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,131,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, - 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, 86, 26, 3, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 2, 0, 0, - 0, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, - 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 62, 2, 67, 2, 62, 2, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 2, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 2, 0, 0, 40,228,216, 3, 0, 0, 0, 0, -186, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 21,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, -248, 22,215, 3, 0, 0, 0, 0,184, 20,215, 3, 0, 0, 0, 0,168, 44,201, 3, 0, 0, 0, 0, 72, 45,201, 3, 0, 0, 0, 0, - 8, 44,201, 3, 0, 0, 0, 0,104, 43,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0, -141, 1, 0, 0,233, 3, 0, 0, 1, 1,251, 3, 93, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120,209,216, 3, 0, 0, 0, 0,120,209,216, 3, 0, 0, 0, 0,184,134,215, 3, 0, 0, 0, 0,216,234,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,184,134,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104,136,215, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,126, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,126, 68, 0, 0,200, 65, - 0,128,126, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,251, 3, - 26, 0,251, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0, -141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,104,136,215, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120,231,216, 3, 0, 0, 0, 0, -184,134,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 69, 1, 0, 0, -167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 67, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,120,231,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 40,233,216, 3, 0, 0, 0, 0, -104,136,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0, -167, 1, 0, 0,167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 40,233,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,234,216, 3, 0, 0, 0, 0, -120,231,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0, 0,109,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0,109,196, 0,128,145,195,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,144, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,180, 0, -145, 2,163, 0,145, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 5, 0, 0, 63, 5, 0, 0, -167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,216,234,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,233,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0, -167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 67, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 7,217, 3, 0, 0, 0, 0, - 68, 65, 84, 65,112, 3, 0, 0, 72, 7,217, 3, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,107, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,207, 3,116, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,207, 3,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 3,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 65, 0, 0, 5, 0,251,251, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, - 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,180, 66, 0, 0,180, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,120,209,216, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, -200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, - 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63,205,204,204, 61, 0, 0,122, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,248, 22,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 21,215, 3, 0, 0, 0, 0,232, 40,201, 3, 0, 0, 0, 0,168, 39,201, 3, 0, 0, 0, 0, 72, 45,201, 3, 0, 0, 0, 0, -168, 44,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0,141, 1, 0, 0,233, 3, 0, 0, - 3, 3, 68, 1, 93, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 2,209, 3, 0, 0, 0, 0, -104, 2,209, 3, 0, 0, 0, 0,136,236,216, 3, 0, 0, 0, 0, 56,238,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -136,236,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 56,238,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,162, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 68, 1, 26, 0, 68, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0,141, 1, 0, 0,166, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 56,238,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,236,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,153, 67, 0, 64, 12,196, 0, 0, 0, 0, - 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 12, 4, 6, 0, 68, 1, 67, 2, 51, 1, 49, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0,167, 1, 0, 0,233, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0, -104, 2,209, 3, 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104, 11,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,104, 11,217, 3, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, - 14, 0, 0, 0, 14, 0, 0, 0, 88, 32,199, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 88, 32,199, 3, 0, 0, 0, 0, -236, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, -168,194,217, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, -168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24, 51,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -184,219,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136, 48,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -152, 7,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216, 29,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -168,225,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,120,209,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24, 98,200, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, -168,194,217, 3, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 56, 43,217, 3, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, -232,117,217, 3, 0, 0, 0, 0,152, 66,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 45,201, 3, 0, 0, 0, 0, - 8, 54,201, 3, 0, 0, 0, 0,104, 81,216, 3, 0, 0, 0, 0,216, 95,216, 3, 0, 0, 0, 0, 24, 24,215, 3, 0, 0, 0, 0, -184, 29,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 45,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -136, 46,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,136, 46,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 47,201, 3, 0, 0, 0, 0, -232, 45,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 40, 47,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 47,201, 3, 0, 0, 0, 0,136, 46,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 47,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,104, 48,201, 3, 0, 0, 0, 0, 40, 47,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 48,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 8, 49,201, 3, 0, 0, 0, 0,200, 47,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 8, 49,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 49,201, 3, 0, 0, 0, 0, -104, 48,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,168, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -168, 49,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, 8, 49,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,168, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,232, 50,201, 3, 0, 0, 0, 0,168, 49,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 50,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, -136, 51,201, 3, 0, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 1, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 52,201, 3, 0, 0, 0, 0, -232, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,104, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, - 40, 52,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 2,104, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0, -211, 0, 0, 0, 1, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0, 40, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,236, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, - 8, 54,201, 3, 0, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,236, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 32, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 53,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2,168, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104, 81,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24, 82,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 46,201, 3, 0, 0, 0, 0, 40, 47,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24, 82,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 82,216, 3, 0, 0, 0, 0,104, 81,216, 3, 0, 0, 0, 0, -136, 46,201, 3, 0, 0, 0, 0,104, 48,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200, 82,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 83,216, 3, 0, 0, 0, 0, 24, 82,216, 3, 0, 0, 0, 0, - 40, 47,201, 3, 0, 0, 0, 0, 8, 49,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120, 83,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 84,216, 3, 0, 0, 0, 0,200, 82,216, 3, 0, 0, 0, 0, -104, 48,201, 3, 0, 0, 0, 0, 8, 49,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40, 84,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 84,216, 3, 0, 0, 0, 0,120, 83,216, 3, 0, 0, 0, 0, - 8, 49,201, 3, 0, 0, 0, 0,168, 49,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216, 84,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136, 85,216, 3, 0, 0, 0, 0, 40, 84,216, 3, 0, 0, 0, 0, -200, 47,201, 3, 0, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -136, 85,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56, 86,216, 3, 0, 0, 0, 0,216, 84,216, 3, 0, 0, 0, 0, -232, 45,201, 3, 0, 0, 0, 0,232, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 56, 86,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 86,216, 3, 0, 0, 0, 0,136, 85,216, 3, 0, 0, 0, 0, -104, 48,201, 3, 0, 0, 0, 0,232, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -232, 86,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 87,216, 3, 0, 0, 0, 0, 56, 86,216, 3, 0, 0, 0, 0, -168, 49,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -152, 87,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72, 88,216, 3, 0, 0, 0, 0,232, 86,216, 3, 0, 0, 0, 0, - 72, 50,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 72, 88,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 88,216, 3, 0, 0, 0, 0,152, 87,216, 3, 0, 0, 0, 0, -232, 50,201, 3, 0, 0, 0, 0, 40, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -248, 88,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168, 89,216, 3, 0, 0, 0, 0, 72, 88,216, 3, 0, 0, 0, 0, -136, 51,201, 3, 0, 0, 0, 0, 40, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -168, 89,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88, 90,216, 3, 0, 0, 0, 0,248, 88,216, 3, 0, 0, 0, 0, - 72, 50,201, 3, 0, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 88, 90,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8, 91,216, 3, 0, 0, 0, 0,168, 89,216, 3, 0, 0, 0, 0, -168, 49,201, 3, 0, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 8, 91,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184, 91,216, 3, 0, 0, 0, 0, 88, 90,216, 3, 0, 0, 0, 0, - 8, 49,201, 3, 0, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -184, 91,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104, 92,216, 3, 0, 0, 0, 0, 8, 91,216, 3, 0, 0, 0, 0, -200, 47,201, 3, 0, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -104, 92,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24, 93,216, 3, 0, 0, 0, 0,184, 91,216, 3, 0, 0, 0, 0, -200, 52,201, 3, 0, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 24, 93,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 93,216, 3, 0, 0, 0, 0,104, 92,216, 3, 0, 0, 0, 0, -104, 48,201, 3, 0, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -200, 93,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 94,216, 3, 0, 0, 0, 0, 24, 93,216, 3, 0, 0, 0, 0, -168, 49,201, 3, 0, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -120, 94,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 95,216, 3, 0, 0, 0, 0,200, 93,216, 3, 0, 0, 0, 0, - 40, 52,201, 3, 0, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, - 40, 95,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 95,216, 3, 0, 0, 0, 0,120, 94,216, 3, 0, 0, 0, 0, -232, 50,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, -216, 95,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 95,216, 3, 0, 0, 0, 0, -232, 45,201, 3, 0, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 24, 24,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 56, 25,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 48,201, 3, 0, 0, 0, 0,136, 46,201, 3, 0, 0, 0, 0, 40, 47,201, 3, 0, 0, 0, 0, 8, 49,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,169, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, 93, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,200,207, 3, 0, 0, 0, 0,152,200,207, 3, 0, 0, 0, 0, -232,239,216, 3, 0, 0, 0, 0,152,241,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,239,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,152,241,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,236, 3, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,241,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,239,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,239, 68, - 0, 0, 0, 0, 0, 0, 28, 66, 0, 0, 0, 0, 0,192,237, 68, 0, 0, 0, 0, 0, 0,134, 66,110, 7, 0, 0,127, 7, 0, 0, - 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,109, 7, 0, 0, - 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,127, 7, 67, 0,110, 7, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,169, 3, 0, 0,235, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56, 25,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0, 88, 26,215, 3, 0, 0, 0, 0, 24, 24,215, 3, 0, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, -200, 52,201, 3, 0, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0,200, 47,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 5, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,235, 2, 0, 0, 4, 4,142, 1,236, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,129,199, 3, 0, 0, 0, 0,184,129,199, 3, 0, 0, 0, 0, 72,243,216, 3, 0, 0, 0, 0, -248,244,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,243,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -248,244,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,199, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,198, 67, 0, 0,200, 65, 0,128,198, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,142, 1, 26, 0,142, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 5, 0, 0,126, 7, 0, 0,210, 2, 0, 0,235, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,244,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,243,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,198, 67, 0, 0, 61,196, 0, 0, 0, 0, - 0, 0, 0, 0,254,127,190, 67,254,127, 52,196, 0, 0, 0, 0,125, 1, 0, 0,142, 1, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, - 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,142, 1,210, 2,125, 1,210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 5, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 1,210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,211,216, 3, 0, 0, 0, 0, -152, 50,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,211,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, - 56,213,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255,124, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 56,213,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24,215,216, 3, 0, 0, 0, 0, 88,211,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,124, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,215,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -248,216,216, 3, 0, 0, 0, 0, 56,213,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,111,255,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -248,216,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,216,218,216, 3, 0, 0, 0, 0, 24,215,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, -105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, -105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,124, 1,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,218,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -184,220,216, 3, 0, 0, 0, 0,248,216,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58,254,124, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -184,220,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,152,222,216, 3, 0, 0, 0, 0,216,218,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105,111,110, 32, 66, -108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,124, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,222,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -120,224,216, 3, 0, 0, 0, 0,184,220,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10,254,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -120,224,216, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248, 44,217, 3, 0, 0, 0, 0,152,222,216, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, -109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, -109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248, 44,217, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -216, 46,217, 3, 0, 0, 0, 0,120,224,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,218,253,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -216, 46,217, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184, 48,217, 3, 0, 0, 0, 0,248, 44,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253,124, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184, 48,217, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, -152, 50,217, 3, 0, 0, 0, 0,216, 46,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40,253,124, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -152, 50,217, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 48,217, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,129,199, 3, 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, - 88, 26,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,120, 27,215, 3, 0, 0, 0, 0, 56, 25,215, 3, 0, 0, 0, 0, - 40, 52,201, 3, 0, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0,168, 49,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,105, 1, 0, 0,167, 3, 0, 0, 1, 1,247, 2, 63, 2, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 52,217, 3, 0, 0, 0, 0,120, 52,217, 3, 0, 0, 0, 0, -168,246,216, 3, 0, 0, 0, 0,104,253,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,246,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 88,248,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,113, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 61, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,246, 2, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 61, 68, 0, 0,200, 65, 0,128, 61, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,247, 2, 26, 0,247, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,105, 1, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,248,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 8,250,216, 3, 0, 0, 0, 0,168,246,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,249, 2, 0, 0,131, 1, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,250,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,184,251,216, 3, 0, 0, 0, 0, 88,248,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,131, 1, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,251,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0,104,253,216, 3, 0, 0, 0, 0, 8,250,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,131, 1, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,253,216, 3, 0, 0, 0, 0, -215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,251,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,131, 1, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 76,217, 3, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0,200, 76,217, 3, 0, 0, 0, 0, -173, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,141,193, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, -166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, -248,209,213, 64, 0, 0,128, 63,178,157,229, 62, 30,132, 27,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63,166,235,149, 62, - 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,212, 60,173, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,160, 32,182,252, 5,136,190, 43, 33, 3, 62, -235,135, 23, 63, 0, 0, 96, 53,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195, -205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, - 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214,211,111,193, 0, 0,128, 63,178,157,229, 62, 30,132, 27,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63,166,235,149, 62, - 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,212, 60,173, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0,107,227, 29, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, - 86,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0, -120, 52,217, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, - 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63, 10,215, 35, 60, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 27,215, 3, 0, 0, 0, 0, -214, 0, 0, 0, 1, 0, 0, 0,152, 28,215, 3, 0, 0, 0, 0, 88, 26,215, 3, 0, 0, 0, 0,232, 45,201, 3, 0, 0, 0, 0, -232, 50,201, 3, 0, 0, 0, 0,136, 51,201, 3, 0, 0, 0, 0, 72, 50,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 18, 18,240, 5,104, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184, 80,217, 3, 0, 0, 0, 0,184, 80,217, 3, 0, 0, 0, 0, 24,255,216, 3, 0, 0, 0, 0, -200, 0,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,255,216, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, -200, 0,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,160, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 0, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 0,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24,255,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0, 0, 51, 67, - 0, 0, 0, 0, 0,224,187, 68, 0, 0, 0, 0, 0, 0,167, 67,223, 5, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 77, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 77, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,240, 5, 78, 1,223, 5, 78, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 78, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136, 96,216, 3, 0, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,182,117, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 40,182,117, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,184, 80,217, 3, 0, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 96,216, 3, 0, 0, 0, 0,136, 96,216, 3, 0, 0, 0, 0, 62, 62, 62, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104, -111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, - 8, 4, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 28,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,184, 29,215, 3, - 0, 0, 0, 0,120, 27,215, 3, 0, 0, 0, 0,200, 52,201, 3, 0, 0, 0, 0,168, 49,201, 3, 0, 0, 0, 0, 8, 49,201, 3, - 0, 0, 0, 0,104, 53,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0,237, 2, 0, 0, -167, 3, 0, 0, 3, 3,142, 1,187, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4,209, 3, - 0, 0, 0, 0, 8, 4,209, 3, 0, 0, 0, 0,120, 2,217, 3, 0, 0, 0, 0, 40, 4,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,120, 2,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 40, 4,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,199, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,198, 67, 0, 0,200, 65, 0,128,198, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,142, 1, 26, 0,142, 1, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0,237, 2, 0, 0, - 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 40, 4,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 2,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,190, 67, 0, 0, 15,195, - 0, 0, 0, 0,125, 1, 0, 0,142, 1, 0, 0, 18, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 18, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 12, 4, 6, 0,142, 1,161, 0,125, 1, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0, 7, 3, 0, 0, -167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 1, 0, 0, 8, 4,209, 3, 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 11,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,248, 11,217, 3, 0, 0, 0, 0,237, 0, 0, 0, - 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,184, 33,199, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,184, 33,199, 3, - 0, 0, 0, 0,236, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 19, 0, 0, 0, - 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 21, 0, 1, 0, - 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24, 51,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,184,219,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,136, 48,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,152, 7,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216, 29,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,168,225,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,120,209,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24, 98,200, 3, 0, 0, 0, 0, 21, 0, 0, 0, - 1, 0, 1, 0,168,194,217, 3, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 29,215, 3, 0, 0, 0, 0,214, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 28,215, 3, 0, 0, 0, 0,232, 50,201, 3, 0, 0, 0, 0,104, 48,201, 3, - 0, 0, 0, 0, 8, 54,201, 3, 0, 0, 0, 0, 40, 52,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 2, 0, 0,105, 1, 0, 0,167, 3, 0, 0, 9, 9,248, 2, 63, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,114,217, 3, 0, 0, 0, 0,200,114,217, 3, 0, 0, 0, 0,248, 82,217, 3, 0, 0, 0, 0,168, 84,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 82,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,168, 84,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 62, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 61, 68, - 0, 0,200, 65, 0,192, 61, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, - 10, 0,248, 2, 26, 0,248, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 2, 0, 0,105, 1, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 84,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 82,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,248,150, 23, 68, - 8, 41,100, 68, 46,224, 62, 67,233, 15,206, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0, 0, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, - 10, 0,248, 2, 37, 2,248, 2, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 2, 0, 0,131, 1, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 37, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 2, 0, 0,200,114,217, 3, 0, 0, 0, 0,186, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0, -124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, - 8, 1, 0, 0,232,117,217, 3, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, 24,157,217, 3, 0, 0, 0, 0, 56, 43,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0, + 88, 1, 0, 0, 56,107, 18, 6, 0, 0, 0, 0,146, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 54,201, 3, 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0, 56, 97,216, 3, - 0, 0, 0, 0, 24,104,216, 3, 0, 0, 0, 0,216, 30,215, 3, 0, 0, 0, 0, 24, 33,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,108, 18, 6, 0, 0, 0, 0,216,108, 18, 6, 0, 0, 0, 0,216,108, 18, 6, + 0, 0, 0, 0,216,108, 18, 6, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 26,135,109,161,127, 0, 0, 72, 26,135,109, +161,127, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 1, 3,108,161,127, 0, 0,152, 3, 3,108,161,127, 0, 0,184, 1, 3,108, +161,127, 0, 0,168, 2, 3,108,161,127, 0, 0,152, 3, 3,108,161,127, 0, 0,136, 4, 3,108,161,127, 0, 0,136, 4, 3,108, +161,127, 0, 0,136, 4, 3,108,161,127, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,216,108, 18, 6, 0, 0, 0, 0,147, 1, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3,108,161,127, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 6, 1, 0,126, 7,146, 4, 0, 0, 0, 0, + 1, 0,238, 3, 0, 0, 0, 0, 1, 0, 0, 0, 88,205, 12,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,232,254, 12,108,161,127, 0, 0,232, 17, 69,109,161,127, 0, 0,232, 17, 69,109, +161,127, 0, 0,152,207, 12,108,161,127, 0, 0, 8,183, 12,108,161,127, 0, 0, 24,206, 12,108,161,127, 0, 0, 24,206, 12,108, +161,127, 0, 0,104,208, 12,108,161,127, 0, 0,184, 12, 13,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 40,110, 18, 6, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110, +105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 53, 18, 6, 0, 0, 0, 0, 8,118, 18, 6, + 0, 0, 0, 0,120,118, 18, 6, 0, 0, 0, 0,184,130, 18, 6, 0, 0, 0, 0, 40,131, 18, 6, 0, 0, 0, 0, 72,200, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 53, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 53, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,168, 54,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 55,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 55,201, 3, - 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0,168, 54,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0,211, 0, 0, 0, - 1, 0, 0, 0,136, 56,201, 3, 0, 0, 0, 0, 72, 55,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136, 56,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 57,201, 3, - 0, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0,136, 56,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 57,201, 3, - 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0,211, 0, 0, 0, - 1, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 3,234, 3, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 56, 97,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 97,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 72, 55,201, 3, 0, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,232, 97,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 98,216, 3, 0, 0, 0, 0, 56, 97,216, 3, - 0, 0, 0, 0, 72, 55,201, 3, 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,152, 98,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72, 99,216, 3, 0, 0, 0, 0,232, 97,216, 3, - 0, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 72, 99,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 99,216, 3, 0, 0, 0, 0,152, 98,216, 3, - 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,248, 99,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,100,216, 3, 0, 0, 0, 0, 72, 99,216, 3, - 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,168,100,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,101,216, 3, 0, 0, 0, 0,248, 99,216, 3, - 0, 0, 0, 0,168, 54,201, 3, 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 88,101,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,102,216, 3, 0, 0, 0, 0,168,100,216, 3, - 0, 0, 0, 0,168, 54,201, 3, 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 8,102,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,102,216, 3, 0, 0, 0, 0, 88,101,216, 3, - 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,184,102,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,103,216, 3, 0, 0, 0, 0, 8,102,216, 3, - 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,104,103,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,104,216, 3, 0, 0, 0, 0,184,102,216, 3, - 0, 0, 0, 0,136, 56,201, 3, 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 24,104,216, 3, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,103,216, 3, - 0, 0, 0, 0,136, 56,201, 3, 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0,216, 30,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248, 31,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0, 72, 55,201, 3, 0, 0, 0, 0,232, 55,201, 3, 0, 0, 0, 0,200, 57,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,201,207, 3, 0, 0, 0, 0, 88,201,207, 3, - 0, 0, 0, 0, 88, 86,217, 3, 0, 0, 0, 0, 8, 88,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 86,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 8, 88,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 88,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 86,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, -129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248, 31,215, 3, - 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 24, 33,215, 3, 0, 0, 0, 0,216, 30,215, 3, 0, 0, 0, 0,168, 54,201, 3, - 0, 0, 0, 0, 40, 57,201, 3, 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 6, 6,200, 3,234, 3, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,119,217, 3, 0, 0, 0, 0,120,119,217, 3, 0, 0, 0, 0,184, 89,217, 3, - 0, 0, 0, 0, 24, 93,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 89,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0,104, 91,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,114, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,192,113, 68, 0, 0,200, 65, 0,192,113, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,200, 3, 26, 0,200, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 91,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0, 24, 93,217, 3, 0, 0, 0, 0,184, 89,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 67, 0,192,115,196, - 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254,255,115,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, -207, 3, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, -207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,208, 3,203, 0,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 0,208, 3, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 54,217, 3, - 0, 0, 0, 0, 88, 54,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88, 54,217, 3, 0, 0, 0, 0,213, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,152,255,202, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 24, 93,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 91,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 51, 51, 43,191,154,153,213, 63, 51, 51,131,191, -154,153, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,199, 3, 0, 0, 26, 0, 0, 0, -233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236, 2,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 33, 0, 0,120,119,217, 3, 0, 0, 0, 0,184, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0, 24, 33,215, 3, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 31,215, 3, - 0, 0, 0, 0, 8, 59,201, 3, 0, 0, 0, 0,104, 58,201, 3, 0, 0, 0, 0,200, 57,201, 3, 0, 0, 0, 0,136, 56,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, 1, 1,182, 3, -234, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 59,217, 3, 0, 0, 0, 0,248, 59,217, 3, - 0, 0, 0, 0,200, 94,217, 3, 0, 0, 0, 0,136,101,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 94,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120, 96,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,109, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64,109, 68, 0, 0,200, 65, 0, 64,109, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,182, 3, 26, 0,182, 3, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 96,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 40, 98,217, 3, 0, 0, 0, 0,200, 94,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 67, 0, 0, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0, 86,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 87, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 88, 3,143, 0, 88, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,104, 4, 0, 0,146, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 88, 3, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 56,217, 3, 0, 0, 0, 0, 56, 56,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 56,217, 3, - 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, - 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, - 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233,253,143, 0,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 98,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216, 99,217, 3, - 0, 0, 0, 0,120, 96,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0, -231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0, -104, 4, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, - 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 58,217, 3, 0, 0, 0, 0, 24, 58,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24, 58,217, 3, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, - 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255, -144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 99,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,101,217, 3, 0, 0, 0, 0, 40, 98,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0, -180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,126, 7, 0, 0, 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,101,217, 3, - 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 99,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 4, 0, 0,126, 7, 0, 0, 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 3,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,153,217, 3, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, 40,153,217, 3, - 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 72,246,172, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64, -136, 95,161,191,147,231,198, 63, 0, 0,128, 63,185,214, 13, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,189,188,157, 63, -140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,241,213,146,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64,121, 92,155, 62,151,198, 44, 63,192,214, 32,188, 0, 0, 40,180,195, 15,188,190, -132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,203,247,159,192,233, 74, 87, 65, -247, 46,190,192, 88,106,234, 64, 45, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63,185,214, 13, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,189,188,157, 63, -140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,241,213,146,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,201,250, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248,201,250, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,201,250, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, - 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,114,145,245, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 1, 0, 0,248, 59,217, 3, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, -205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,200,213,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63, -205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 24,157,217, 3, - 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,117,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 59,201, 3, 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0,200,104,216, 3, 0, 0, 0, 0,120,116,216, 3, - 0, 0, 0, 0, 56, 34,215, 3, 0, 0, 0, 0,184, 38,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 59,201, 3, - 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 60,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 60,201, 3, 0, 0, 0, 0,211, 0, 0, 0, - 1, 0, 0, 0,232, 60,201, 3, 0, 0, 0, 0,168, 59,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 60,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 61,201, 3, - 0, 0, 0, 0, 72, 60,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,136, 61,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 62,201, 3, 0, 0, 0, 0,232, 60,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0,136, 61,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0,211, 0, 0, 0, - 1, 0, 0, 0,104, 63,201, 3, 0, 0, 0, 0, 40, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4,195, 2, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 63,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8, 64,201, 3, - 0, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 92, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 8, 64,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0,104, 63,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 64,201, 3, - 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 8, 64,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 2,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0,211, 0, 0, 0, - 1, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 66,201, 3, - 0, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 92, 1, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 65,201, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 68, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,104,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,105,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 60,201, 3, - 0, 0, 0, 0,232, 60,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,105,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,106,216, 3, 0, 0, 0, 0,200,104,216, 3, 0, 0, 0, 0, 72, 60,201, 3, - 0, 0, 0, 0, 40, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,106,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,106,216, 3, 0, 0, 0, 0,120,105,216, 3, 0, 0, 0, 0,232, 60,201, 3, - 0, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,106,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,107,216, 3, 0, 0, 0, 0, 40,106,216, 3, 0, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,107,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,108,216, 3, 0, 0, 0, 0,216,106,216, 3, 0, 0, 0, 0,200, 62,201, 3, - 0, 0, 0, 0,104, 63,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,108,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,108,216, 3, 0, 0, 0, 0,136,107,216, 3, 0, 0, 0, 0,168, 59,201, 3, - 0, 0, 0, 0, 8, 64,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,108,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,109,216, 3, 0, 0, 0, 0, 56,108,216, 3, 0, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,109,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,110,216, 3, 0, 0, 0, 0,232,108,216, 3, 0, 0, 0, 0, 8, 64,201, 3, - 0, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,110,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,110,216, 3, 0, 0, 0, 0,152,109,216, 3, 0, 0, 0, 0, 72, 65,201, 3, - 0, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,110,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,111,216, 3, 0, 0, 0, 0, 72,110,216, 3, 0, 0, 0, 0,168, 64,201, 3, - 0, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,111,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,112,216, 3, 0, 0, 0, 0,248,110,216, 3, 0, 0, 0, 0,104, 63,201, 3, - 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,112,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,113,216, 3, 0, 0, 0, 0,168,111,216, 3, 0, 0, 0, 0,136, 61,201, 3, - 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,113,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,113,216, 3, 0, 0, 0, 0, 88,112,216, 3, 0, 0, 0, 0, 8, 64,201, 3, - 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,113,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,114,216, 3, 0, 0, 0, 0, 8,113,216, 3, 0, 0, 0, 0,168, 59,201, 3, - 0, 0, 0, 0,136, 61,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,114,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,115,216, 3, 0, 0, 0, 0,184,113,216, 3, 0, 0, 0, 0,200, 62,201, 3, - 0, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,115,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,115,216, 3, 0, 0, 0, 0,104,114,216, 3, 0, 0, 0, 0,104, 63,201, 3, - 0, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,115,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,116,216, 3, 0, 0, 0, 0, 24,115,216, 3, 0, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,116,216, 3, - 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,115,216, 3, 0, 0, 0, 0,104, 63,201, 3, - 0, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56, 34,215, 3, - 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 88, 35,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0, 72, 60,201, 3, 0, 0, 0, 0,232, 60,201, 3, 0, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0,200, 53, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,120,111, 18, 6, 0, 0, 0, 0, 88, 53, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,111, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232,111, 18, 6, 0, 0, 0, 0,200, 53, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 4,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,111, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 88,112, 18, 6, 0, 0, 0, 0,120,111, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,112, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200,112, 18, 6, + 0, 0, 0, 0,232,111, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 88,112, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,113, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 24,114, 18, 6, 0, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4,195, 2, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,114, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136,114, 18, 6, + 0, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 60, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,248,114, 18, 6, 0, 0, 0, 0, 24,114, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 60, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,114, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0,248,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 88, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72,116, 18, 6, + 0, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0,216,115, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,116, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,152,117, 18, 6, 0, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 4, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,117, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8,118, 18, 6, + 0, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 60, 2, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,117, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 60, 2, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,118, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,118, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 53, 18, 6, + 0, 0, 0, 0,120,111, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,118, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,119, 18, 6, 0, 0, 0, 0,120,118, 18, 6, 0, 0, 0, 0,200, 53, 18, 6, + 0, 0, 0, 0, 88,112, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,119, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,119, 18, 6, 0, 0, 0, 0,232,118, 18, 6, 0, 0, 0, 0,120,111, 18, 6, + 0, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,119, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,120, 18, 6, 0, 0, 0, 0, 88,119, 18, 6, 0, 0, 0, 0, 88,112, 18, 6, + 0, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,120, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,120, 18, 6, 0, 0, 0, 0,200,119, 18, 6, 0, 0, 0, 0, 88, 53, 18, 6, + 0, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,120, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,121, 18, 6, 0, 0, 0, 0, 56,120, 18, 6, 0, 0, 0, 0,232,111, 18, 6, + 0, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,121, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,121, 18, 6, 0, 0, 0, 0,168,120, 18, 6, 0, 0, 0, 0,200,112, 18, 6, + 0, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,121, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,121, 18, 6, 0, 0, 0, 0, 24,121, 18, 6, 0, 0, 0, 0, 56,113, 18, 6, + 0, 0, 0, 0, 24,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,121, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,122, 18, 6, 0, 0, 0, 0,136,121, 18, 6, 0, 0, 0, 0,232,111, 18, 6, + 0, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,122, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,122, 18, 6, 0, 0, 0, 0,248,121, 18, 6, 0, 0, 0, 0, 24,114, 18, 6, + 0, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,122, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,123, 18, 6, 0, 0, 0, 0,104,122, 18, 6, 0, 0, 0, 0, 88, 53, 18, 6, + 0, 0, 0, 0,248,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,123, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,123, 18, 6, 0, 0, 0, 0,216,122, 18, 6, 0, 0, 0, 0,168,113, 18, 6, + 0, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,123, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,124, 18, 6, 0, 0, 0, 0, 72,123, 18, 6, 0, 0, 0, 0, 56,113, 18, 6, + 0, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,124, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,124, 18, 6, 0, 0, 0, 0,184,123, 18, 6, 0, 0, 0, 0,248,114, 18, 6, + 0, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,124, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,125, 18, 6, 0, 0, 0, 0, 40,124, 18, 6, 0, 0, 0, 0,248,114, 18, 6, + 0, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,125, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,125, 18, 6, 0, 0, 0, 0,152,124, 18, 6, 0, 0, 0, 0,104,115, 18, 6, + 0, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,125, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,125, 18, 6, 0, 0, 0, 0, 8,125, 18, 6, 0, 0, 0, 0, 88,112, 18, 6, + 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,125, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,126, 18, 6, 0, 0, 0, 0,120,125, 18, 6, 0, 0, 0, 0,168,113, 18, 6, + 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,126, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,126, 18, 6, 0, 0, 0, 0,232,125, 18, 6, 0, 0, 0, 0,216,115, 18, 6, + 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,126, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,127, 18, 6, 0, 0, 0, 0, 88,126, 18, 6, 0, 0, 0, 0,248,114, 18, 6, + 0, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,127, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,127, 18, 6, 0, 0, 0, 0,200,126, 18, 6, 0, 0, 0, 0,216,115, 18, 6, + 0, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,127, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,128, 18, 6, 0, 0, 0, 0, 56,127, 18, 6, 0, 0, 0, 0,184,116, 18, 6, + 0, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,128, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,128, 18, 6, 0, 0, 0, 0,168,127, 18, 6, 0, 0, 0, 0, 24,114, 18, 6, + 0, 0, 0, 0,152,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,128, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,128, 18, 6, 0, 0, 0, 0, 24,128, 18, 6, 0, 0, 0, 0,168,113, 18, 6, + 0, 0, 0, 0,152,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,128, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,129, 18, 6, 0, 0, 0, 0,136,128, 18, 6, 0, 0, 0, 0,200,112, 18, 6, + 0, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,129, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,129, 18, 6, 0, 0, 0, 0,248,128, 18, 6, 0, 0, 0, 0,136,114, 18, 6, + 0, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,129, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,130, 18, 6, 0, 0, 0, 0,104,129, 18, 6, 0, 0, 0, 0,152,117, 18, 6, + 0, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,130, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,130, 18, 6, 0, 0, 0, 0,216,129, 18, 6, 0, 0, 0, 0, 88,112, 18, 6, + 0, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,130, 18, 6, + 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,130, 18, 6, 0, 0, 0, 0, 72,116, 18, 6, + 0, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 40,131, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248,134, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,112, 18, 6, + 0, 0, 0, 0,200, 53, 18, 6, 0, 0, 0, 0,120,111, 18, 6, 0, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,196, 2, 0, 0,222, 2, 0, 0, 7, 7,241, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,202,207, 3, 0, 0, 0, 0, 24,202,207, 3, 0, 0, 0, 0, 56,103,217, 3, - 0, 0, 0, 0,232,104,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,103,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0,232,104,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,148, 68, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,209, 18, 6, 0, 0, 0, 0,136,209, 18, 6, 0, 0, 0, 0, 24,132, 18, 6, + 0, 0, 0, 0,136,133, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,132, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,136,133, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, @@ -5142,8 +173,8 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0,241, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,104,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,103,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,133, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,132, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, @@ -5152,229 +183,498 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 35,215, 3, 0, 0, 0, 0,214, 0, 0, 0, - 1, 0, 0, 0,120, 36,215, 3, 0, 0, 0, 0, 56, 34,215, 3, 0, 0, 0, 0,168, 59,201, 3, 0, 0, 0, 0, 8, 64,201, 3, - 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0,136, 61,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 15, 15,241, 4, 68, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200, 96,200, 3, 0, 0, 0, 0,200, 96,200, 3, 0, 0, 0, 0,152,106,217, 3, 0, 0, 0, 0, 72,108,217, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,134, 18, 6, 0, 0, 0, 0,214, 0, 0, 0, + 1, 0, 0, 0,136,159, 18, 6, 0, 0, 0, 0, 40,131, 18, 6, 0, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 24,114, 18, 6, + 0, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0,232,111, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0, +240, 4, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0, 4, 4,216, 0, 60, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72,158, 18, 6, 0, 0, 0, 0, 72,158, 18, 6, 0, 0, 0, 0,232,135, 18, 6, 0, 0, 0, 0, 88,137, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,106,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72,108,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, - 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, - 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,135, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 88,137, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, 98, 39, 38, 54, + 0, 0, 88, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 87, 67, + 0, 0,200, 65, 0, 0, 87, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, + 10, 0,216, 0, 26, 0,216, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0, +240, 4, 0, 0, 34, 1, 0, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 26, 0, + 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,108,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,106,217, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, -246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 0, 0,128, 63, - 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, - 8, 0,241, 4, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 26, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 42, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,137, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232,135, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 67, 0, 0, 61,196, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 71, 67, 1, 0,145,195, 0, 0, 0, 0,199, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, + 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, + 6, 0,216, 0, 34, 1,199, 0, 34, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0, +240, 4, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 34, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,138, 18, 6, 0, 0, 0, 0,168,156, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200,138, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104,140, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, + 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, + 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116, +101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, +199, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104,140, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 8,142, 18, 6, 0, 0, 0, 0,200,138, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,200, 96,200, 3, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,199, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8,142, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168,143, 18, 6, + 0, 0, 0, 0,104,140, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101, +114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, +199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168,143, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 72,145, 18, 6, 0, 0, 0, 0, 8,142, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,199, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72,145, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232,146, 18, 6, + 0, 0, 0, 0,168,143, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, + 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254, +199, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,146, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,136,148, 18, 6, 0, 0, 0, 0, 72,145, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117, +114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117, +114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,199, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136,148, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40,150, 18, 6, + 0, 0, 0, 0,232,146, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100, +105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,254, +199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40,150, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,200,151, 18, 6, 0, 0, 0, 0,136,148, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200,151, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104,153, 18, 6, + 0, 0, 0, 0, 40,150, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, + 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,253, +199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104,153, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 8,155, 18, 6, 0, 0, 0, 0,200,151, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253,199, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8,155, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168,156, 18, 6, + 0, 0, 0, 0,104,153, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112, +117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,253, +199, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168,156, 18, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,155, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253,199, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,158, 18, 6, 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 36,215, 3, 0, 0, 0, 0,214, 0, 0, 0, - 1, 0, 0, 0,152, 37,215, 3, 0, 0, 0, 0, 88, 35,215, 3, 0, 0, 0, 0, 8, 64,201, 3, 0, 0, 0, 0, 72, 65,201, 3, - 0, 0, 0, 0,104, 63,201, 3, 0, 0, 0, 0,136, 66,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 69, 0, 0, 0, 91, 1, 0, 0, 8, 8,241, 4, 23, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,120,150,199, 3, 0, 0, 0, 0,120,150,199, 3, 0, 0, 0, 0,248,109,217, 3, 0, 0, 0, 0,136,160,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,109,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,168,111,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 26, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, - 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, - 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 4, 0, 0, 69, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, +160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136,159, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,120,164, 18, 6, 0, 0, 0, 0,248,134, 18, 6, 0, 0, 0, 0, 88, 53, 18, 6, + 0, 0, 0, 0,248,114, 18, 6, 0, 0, 0, 0,104,115, 18, 6, 0, 0, 0, 0, 56,113, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 15, 15, 24, 4, 88, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,163, 18, 6, 0, 0, 0, 0, 88,163, 18, 6, 0, 0, 0, 0,120,160, 18, 6, + 0, 0, 0, 0,232,161, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,160, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,232,161, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,140, 68, 0, 0, 0, 0, + 0, 0,208, 65, 39,182,158, 55, 0, 0,131, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,224,130, 68, 0, 0,200, 65, 0,224,130, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 24, 4, 26, 0, 24, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,111,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,158,217, 3, - 0, 0, 0, 0,248,109,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,125,195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 75, 67, 1, 0,125,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,220, 0,253, 0,203, 0,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, -240, 4, 0, 0, 95, 0, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,253, 0, - 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,161, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,160, 18, 6, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, + 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 18, 0, 0, 0, + 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 24, 4, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 4, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,158,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,160,217, 3, - 0, 0, 0, 0,168,111,217, 3, 0, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 0, 0, 91, 1, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,160,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216,158,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,252, 0, 0, 0, 18, 0, 0, 0, - 20, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 20, 4, 0, 0, 18, 0, 0, 0,252, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 63, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 8, 0, 21, 4,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 0, 0, 95, 0, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4,253, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88,163, 18, 6, 0, 0, 0, 0,190, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,120,150,199, 3, 0, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,164, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 56,171, 18, 6, 0, 0, 0, 0,136,159, 18, 6, 0, 0, 0, 0, 24,114, 18, 6, + 0, 0, 0, 0,152,117, 18, 6, 0, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0,136,114, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 1, 0, 0, 59, 2, 0, 0, 3, 3,216, 0,255, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,168, 18, 6, 0, 0, 0, 0, 72,168, 18, 6, 0, 0, 0, 0,104,165, 18, 6, + 0, 0, 0, 0,216,166, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,165, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,216,166, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, + 0, 0,208, 65, 98, 39, 38, 54, 0, 0, 88, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 87, 67, 0, 0,200, 65, 0, 0, 87, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,216, 0, 26, 0,216, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 34, 2, 0, 0, 59, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,166, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,165, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 67, 0, 0, 83,195, 0, 0, 0, 0,199, 0, 0, 0,216, 0, 0, 0, 18, 0, 0, 0, +228, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,198, 0, 0, 0, 18, 0, 0, 0, +228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, + 2, 0, 3, 3, 0, 0, 12, 4, 6, 0,216, 0,229, 0,199, 0,211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 1, 0, 0, 33, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 0,229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0, 72,168, 18, 6, 0, 0, 0, 0,183, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,169, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, + 16, 0, 0, 0,168,169, 18, 6, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 8,170, 18, 6, + 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 8,170, 18, 6, 0, 0, 0, 0,236, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 20, 0, 0, 0, + 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0,152,136, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,146, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0,168,200, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,159, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0,248,181, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,153, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0,216,131, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0,200,130, 21, 6, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 56,171, 18, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,200,184, 18, 6, 0, 0, 0, 0,120,164, 18, 6, + 0, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0,104,115, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0, 89, 0, 0, 0,194, 2, 0, 0, 1, 1, 87, 2, +106, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,183, 18, 6, 0, 0, 0, 0, 24,183, 18, 6, + 0, 0, 0, 0, 40,172, 18, 6, 0, 0, 0, 0,232,177, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,172, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152,173, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 21, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 21, 68, 0, 0,200, 65, 0,128, 21, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 87, 2, 26, 0, 87, 2, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,173, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 8,175, 18, 6, 0, 0, 0, 0, 40,172, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,115, 0, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 80, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,175, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120,176, 18, 6, 0, 0, 0, 0,152,173, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,115, 0, 0, 0,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,176, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232,177, 18, 6, 0, 0, 0, 0, 8,175, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0, +180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 23, 4, 0, 0,115, 0, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,177, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,176, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 23, 4, 0, 0,115, 0, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 2, 80, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,179, 18, 6, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, 88,179, 18, 6, + 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,167,141, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, + 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, +143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, +142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, +111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,209,162,227,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63, + 13,114, 91, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,105,147,125, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 64,185, 70,188, 0, 0, 82,180, 48,221,185,190, + 44, 45, 51, 62, 28, 11, 79, 63, 0, 0, 56,179, 67,108,117,194,183,204,216, 65,105,156, 5,194,212,247,159,192,235, 62,114, 66, + 59,254,213,193,158,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, +143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,209,162,227,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63, + 13,114, 91, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,105,147,125, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 37,215, 3, 0, 0, 0, 0,214, 0, 0, 0, - 1, 0, 0, 0,184, 38,215, 3, 0, 0, 0, 0,120, 36,215, 3, 0, 0, 0, 0, 72, 65,201, 3, 0, 0, 0, 0, 40, 62,201, 3, - 0, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0,232, 65,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 2, 0, 0, 93, 1, 0, 0,194, 2, 0, 0, 2, 2, 48, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232,151,199, 3, 0, 0, 0, 0,232,151,199, 3, 0, 0, 0, 0, 56,162,217, 3, 0, 0, 0, 0, 72,167,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,162,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232,163,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, 68, 0, 0, 0, 0, 0, 0,208, 65,154,216, 65, 55, - 0, 0, 12, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 11, 68, - 0, 0,200, 65, 0,192, 11, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, - 10, 0, 48, 2, 26, 0, 48, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 2, 0, 0, 93, 1, 0, 0,118, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,163,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152,165,217, 3, - 0, 0, 0, 0, 56,162,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, - 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,165,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72,167,217, 3, - 0, 0, 0, 0,232,163,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,163, 91, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12,163, 91, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,163, 91, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, +214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,236, 15, 72, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 32, 33, 12, 66, 86,152,137, 66,113, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 1, 0, 0, 24,183, 18, 6, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, +205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, - 47, 2, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200,184, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,120,193, 18, 6, 0, 0, 0, 0, 56,171, 18, 6, 0, 0, 0, 0,248,114, 18, 6, + 0, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0, 40,117, 18, 6, 0, 0, 0, 0,216,115, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 89, 0, 0, 0, 3, 1, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,191, 18, 6, 0, 0, 0, 0,120,191, 18, 6, 0, 0, 0, 0,184,185, 18, 6, + 0, 0, 0, 0, 8,190, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184,185, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 40,187, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,223, 67, 0, 0,200, 65, 0,128,223, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,167,217, 3, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,165,217, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, - 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 86, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58, -111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 0, 87, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, - 47, 2, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 1, 76, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40,187, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,152,188, 18, 6, 0, 0, 0, 0,184,185, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,232,151,199, 3, 0, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,188, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 8,190, 18, 6, 0, 0, 0, 0, 40,187, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24,120,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 0, 0, 0, 24,120,214, 3, 0, 0, 0, 0, 37, 1, 0, 0, - 1, 0, 0, 0,168,194,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 38,215, 3, - 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 37,215, 3, 0, 0, 0, 0,232, 65,201, 3, - 0, 0, 0, 0,168, 64,201, 3, 0, 0, 0, 0,200, 62,201, 3, 0, 0, 0, 0,104, 63,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0, 93, 1, 0, 0,194, 2, 0, 0, 8, 8,192, 2,102, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,153,199, 3, 0, 0, 0, 0, 88,153,199, 3, 0, 0, 0, 0,248,168,217, 3, - 0, 0, 0, 0, 8,174,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,168,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0,168,170,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,192, 47, 68, 0, 0,200, 65, 0,192, 47, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 2, 26, 0,192, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0, 93, 1, 0, 0,118, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,170,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0, 88,172,217, 3, 0, 0, 0, 0,248,168,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 4, 0, 0,240, 4, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,172,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0, 8,174,217, 3, 0, 0, 0, 0,168,170,217, 3, 0, 0, 0, 0, 0, 0,240,195, 0, 0,240, 67, 0, 0,135,195, - 0, 0,135, 67,238, 33,143,196,238, 33,143, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 2, 0, 0, 0, 0, 0, 0, - 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,192, 2, 76, 1,192, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,190, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,188, 18, 6, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, + 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, +144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,115, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,174,217, 3, 0, 0, 0, 0,215, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,172,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, - 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, - 75, 1, 0, 0, 0, 0, 32, 65, 0, 0, 0, 63, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, 88,153,199, 3, 0, 0, 0, 0,180, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,120,191, 18, 6, 0, 0, 0, 0,178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 0, 0,216, 11, 0, 0,168,194,217, 3, - 0, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,173,200, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,213,217, 3, 0, 0, 0, 0, 24, 51,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40,117,216, 3, 0, 0, 0, 0,136,118,216, 3, 0, 0, 0, 0, 40,117,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,207,217, 3, 0, 0, 0, 0,232,141,214, 15, - 0, 0, 0, 0, 17, 2, 24, 0, 90, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,192, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 0, 0, 0,184,192, 18, 6, + 0, 0, 0, 0, 37, 1, 0, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, - 68,172, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 24, 0, 17, 0, 0, 0, 90, 0, 1, 0, 81, 0, 0, 0, 23, 0, 33, 0, - 2, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24,174,200, 3, 0, 0, 0, 0, 24,174,200, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, - 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 92, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,120,193, 18, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 72,200, 18, 6, 0, 0, 0, 0,200,184, 18, 6, + 0, 0, 0, 0,184,116, 18, 6, 0, 0, 0, 0, 88,112, 18, 6, 0, 0, 0, 0, 72,116, 18, 6, 0, 0, 0, 0, 40,117, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 5, 1, 0, 0,194, 2, 0, 0, 12, 12,192, 1, +190, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,198, 18, 6, 0, 0, 0, 0,184,198, 18, 6, + 0, 0, 0, 0,104,194, 18, 6, 0, 0, 0, 0, 72,197, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,194, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,195, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,192, 94, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,223, 67, 0, 0,200, 65, 0,128,223, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 5, 1, 0, 0, 30, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,195, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72,197, 18, 6, 0, 0, 0, 0,104,194, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,201,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +199, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,164, 1,200, 0,146, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 31, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,164, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,197, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,195, 18, 6, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,104, 68, 0, 0, 72,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,201,195, 0, 0, 0, 0,231, 0, 0, 0, +248, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +230, 0, 0, 0, 18, 0, 0, 0,163, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, + 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 31, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 1, 0, 0,184,198, 18, 6, + 0, 0, 0, 0, 38, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72,200, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,193, 18, 6, 0, 0, 0, 0,152,117, 18, 6, + 0, 0, 0, 0,168,113, 18, 6, 0, 0, 0, 0,200,112, 18, 6, 0, 0, 0, 0, 8,118, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0,194, 2, 0, 0, 1, 1,216, 0,134, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,207, 18, 6, 0, 0, 0, 0,216,207, 18, 6, 0, 0, 0, 0, 56,201, 18, 6, + 0, 0, 0, 0,168,202, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,201, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,168,202, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,165, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 0,128,164, 67, 0, 0,200, 65, 0,128,164, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 74, 1, 24, 0, 74, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,202, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,201, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 4, 0, 0,240, 4, 0, 0, 61, 2, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 0,134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24,204, 18, 6, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, 24,204, 18, 6, 0, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 56,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,100, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, + 0, 0, 0, 0,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, + 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190,152, 9, 52,193, + 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, 88,126,162,190,229,251,159, 62, 55, 53,101, 63, + 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 78,255,170, 64, + 0, 0,128, 63, 47,201,194, 63, 61, 73,145,191,244,250, 39,191, 8,165, 39,191,190,164,206, 63,209, 10,143, 63,180,164, 28, 63, +149, 84, 28, 63,224,153,196,188,136,239, 76, 64, 10,108,228,190, 52,247,227,190,125, 21, 64,191,126,113,172,191,216, 49, 49, 65, +152, 9, 52, 65,149, 70,158, 62, 24,234,167, 62,192,214,159,187, 0, 0, 6,181,196,188,181,189, 71,238,178, 61,127, 45,128, 62, + 0, 0,226, 51,168,120, 21,194,107, 5, 2, 66,203,135,213,193,147,214,159,192,177, 38, 19, 66,124,173,255,193, 96,101,210, 65, +128, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, + 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190,152, 9, 52,193, + 0, 0,128, 63, 47,201,194, 63, 61, 73,145,191,244,250, 39,191, 8,165, 39,191,190,164,206, 63,209, 10,143, 63,180,164, 28, 63, +149, 84, 28, 63,224,153,196,188,136,239, 76, 64, 10,108,228,190, 52,247,227,190,125, 21, 64,191,126,113,172,191,216, 49, 49, 65, +152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5382,507 +682,5213 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,102,103, 97, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,103, 97, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,103, 97, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,253,191,136, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 1, 2, 0, 0,255,255, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63,190,133, 65, 66, 99,212, 90, 66, + 27,183,118, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,216,207, 18, 6, + 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 3, 0, 8, 0,128, 0, 0, 0, 12, 66, 0, 0,128, 63, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 24,210, 18, 6, 0, 0, 0, 0,210, 0, 0, 0, + 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63, -205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, - 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, - 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,209,117, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,149,158, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 87,171, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, -205,204,204, 61,154,153,153, 62,205,204, 76, 62,219, 15, 73, 63,102,102,102, 63, 0, 0, 0, 64,154,153, 25, 63, 0, 0, 64, 65, -102,102,166, 63, 0, 0, 0, 65, 0, 0,160, 65, 6, 0, 0, 0, 0, 0,192, 64, 0, 0,128, 63, 0, 0, 0, 0,205,204, 28, 65, - 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 1, 0,128, 0, 5, 0,218, 0, 0, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,128, 0, 0, 0, 24,173,200, 3, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,211, 18, 6, + 0, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0,136,217, 18, 6, 0, 0, 0, 0,184,226, 18, 6, 0, 0, 0, 0, 40,227, 18, 6, + 0, 0, 0, 0, 88, 23, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,211, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,216,211, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,211, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72,212, 18, 6, + 0, 0, 0, 0,104,211, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 72,212, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184,212, 18, 6, 0, 0, 0, 0,216,211, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,212, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0, 72,212, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0,184,212, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 3, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8,214, 18, 6, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0,152,213, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,214, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126, 7, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,234, 3, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200,215, 18, 6, + 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0, 88,215, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,216, 18, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 3,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,136,217, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,217, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,211, 18, 6, 0, 0, 0, 0, 72,212, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248,217, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,218, 18, 6, 0, 0, 0, 0,136,217, 18, 6, + 0, 0, 0, 0,216,211, 18, 6, 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,104,218, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,218, 18, 6, 0, 0, 0, 0,248,217, 18, 6, + 0, 0, 0, 0, 72,212, 18, 6, 0, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216,218, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,219, 18, 6, 0, 0, 0, 0,104,218, 18, 6, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72,219, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,219, 18, 6, 0, 0, 0, 0,216,218, 18, 6, + 0, 0, 0, 0,184,212, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,184,219, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,220, 18, 6, 0, 0, 0, 0, 72,219, 18, 6, + 0, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 40,220, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,220, 18, 6, 0, 0, 0, 0,184,219, 18, 6, + 0, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,152,220, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,221, 18, 6, 0, 0, 0, 0, 40,220, 18, 6, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 8,221, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,221, 18, 6, 0, 0, 0, 0,152,220, 18, 6, + 0, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,120,221, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,221, 18, 6, 0, 0, 0, 0, 8,221, 18, 6, + 0, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,232,221, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,222, 18, 6, 0, 0, 0, 0,120,221, 18, 6, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 88,222, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,222, 18, 6, 0, 0, 0, 0,232,221, 18, 6, + 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,200,222, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,223, 18, 6, 0, 0, 0, 0, 88,222, 18, 6, + 0, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 56,223, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,223, 18, 6, 0, 0, 0, 0,200,222, 18, 6, + 0, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,168,223, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,224, 18, 6, 0, 0, 0, 0, 56,223, 18, 6, + 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 24,224, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,224, 18, 6, 0, 0, 0, 0,168,223, 18, 6, + 0, 0, 0, 0,104,211, 18, 6, 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,136,224, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,224, 18, 6, 0, 0, 0, 0, 24,224, 18, 6, + 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248,224, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,225, 18, 6, 0, 0, 0, 0,136,224, 18, 6, + 0, 0, 0, 0,184,212, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,104,225, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,225, 18, 6, 0, 0, 0, 0,248,224, 18, 6, + 0, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216,225, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,226, 18, 6, 0, 0, 0, 0,104,225, 18, 6, + 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72,226, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,226, 18, 6, 0, 0, 0, 0,216,225, 18, 6, + 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,184,226, 18, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,226, 18, 6, + 0, 0, 0, 0,104,211, 18, 6, 0, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 40,227, 18, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248,230, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0,216,211, 18, 6, 0, 0, 0, 0, 72,212, 18, 6, 0, 0, 0, 0,152,213, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 62, 19, 6, 0, 0, 0, 0, 8, 62, 19, 6, + 0, 0, 0, 0, 24,228, 18, 6, 0, 0, 0, 0,136,229, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,228, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,229, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 40,117,216, 3, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0,216,117,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,232, 1, 20, 1,184,219,217, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,216,117,216, 3, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0,136,118,216, 3, 0, 0, 0, 0, 40,117,216, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,118, 2,238, 1,168,225,217, 3, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0,136,118,216, 3, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,117,216, 3, - 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,108, 0, 86, 1,200,213,217, 3, 0, 0, 0, 0, 68, 65, 84, 65, -232, 1, 0, 0, 8,207,217, 3, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,216,202,207, 3, 0, 0, 0, 0,152,203,207, 3, - 0, 0, 0, 0,168, 1,211, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, - 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 10,219, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, - 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 35, 0, 0, 0,204,197,121, 63, 0, 0, 0, 63, 35, 0, 0, 0,204,197,121, 63, 0, 0, 0, 63, 17, 0, 0, 0, 68, 65, 84, 65, - 56, 0, 0, 0,216,202,207, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,152,203,207, 3, 0, 0, 0, 0,164, 0, 0, 0, - 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,168, 1,211, 3, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0,120, 58,171, 3, - 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,155, 9, 25, 67, -190, 23,237, 64, 75, 1,147, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 24,174,200, 3, - 0, 0, 0, 0,149, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, -101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 0, 0,200, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97, -109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, - 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 66, 0, 0,144, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,229, 18, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,228, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, +129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 65, 0, 0, 16, 2, 0, 0,120,209,217, 3, 0, 0, 0, 0, 36, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97, -109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,248,230, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,232,235, 18, 6, 0, 0, 0, 0, 40,227, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, + 0, 0, 0, 0, 8,214, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0,184,212, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 15, 15, 94, 1, 92, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,234, 18, 6, 0, 0, 0, 0,200,234, 18, 6, 0, 0, 0, 0,232,231, 18, 6, + 0, 0, 0, 0, 88,233, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,231, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 88,233, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,115, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,233, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,231, 18, 6, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 18, 0, 0, 0, + 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, + 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 94, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,200,234, 18, 6, 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 8,212,217, 3, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, - 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,119,216, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,212,217, 3, 0, 0, 0, 0,119, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 40, 67,201, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,232,235, 18, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,120, 4, 19, 6, 0, 0, 0, 0,248,230, 18, 6, 0, 0, 0, 0, 8,214, 18, 6, + 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0,152,213, 18, 6, 0, 0, 0, 0,120,214, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 93, 0, 0, 0,233, 3, 0, 0, 4, 4, 94, 1,141, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3, 19, 6, 0, 0, 0, 0, 56, 3, 19, 6, 0, 0, 0, 0,216,236, 18, 6, + 0, 0, 0, 0, 72,238, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,236, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 72,238, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0,208, 3, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72,238, 18, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,236, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174, 67, 0,128, 92,196, + 0, 0, 0, 0, 0, 0, 0, 0,255,127,166, 67,255,191, 92,196, 0, 0, 0, 0, 77, 1, 0, 0, 94, 1, 0, 0, 0, 0, 0, 0, +114, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0, +114, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 94, 1,115, 3, 77, 1,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 93, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1,115, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,239, 18, 6, + 0, 0, 0, 0,152, 1, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,239, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 88,241, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,220,255, 76, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 88,241, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248,242, 18, 6, 0, 0, 0, 0,184,239, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,242, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,152,244, 18, 6, 0, 0, 0, 0, 88,241, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,152,244, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56,246, 18, 6, 0, 0, 0, 0,248,242, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 76, 1,203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,246, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,216,247, 18, 6, 0, 0, 0, 0,152,244, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,216,247, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120,249, 18, 6, 0, 0, 0, 0, 56,246, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105, +111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 76, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,249, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 24,251, 18, 6, 0, 0, 0, 0,216,247, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10,254, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 24,251, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184,252, 18, 6, 0, 0, 0, 0,120,249, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, 76, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,252, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 88,254, 18, 6, 0, 0, 0, 0, 24,251, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,218,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 88,254, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248,255, 18, 6, 0, 0, 0, 0,184,252, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, 76, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,255, 18, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,152, 1, 19, 6, 0, 0, 0, 0, 88,254, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 40,253, 76, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,152, 1, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, 76, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 3, 19, 6, 0, 0, 0, 0,179, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,120, 4, 19, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 8, 18, 19, 6, 0, 0, 0, 0,232,235, 18, 6, + 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 24,217, 18, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 1, 1, 27, 3, +140, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 16, 19, 6, 0, 0, 0, 0, 88, 16, 19, 6, + 0, 0, 0, 0,104, 5, 19, 6, 0, 0, 0, 0, 40, 11, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 5, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216, 6, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 70, 68, 0, 0,200, 65, 0,128, 70, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 27, 3, 26, 0, 27, 3, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 6, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72, 8, 19, 6, 0, 0, 0, 0,104, 5, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 5, 3, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,114, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72, 8, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,184, 9, 19, 6, 0, 0, 0, 0,216, 6, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, +160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 9, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 40, 11, 19, 6, 0, 0, 0, 0, 72, 8, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0, +180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 11, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 9, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 12, 19, 6, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0,152, 12, 19, 6, + 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 93,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30,133,119, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63, +225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, +254,221,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190, +228,251,159, 62, 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64, +151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 42, 6,158, 63, 99, 28,157,191,244,250, 39,191, 8,165, 39,191,211,164,167, 63, + 55,175,154, 63,180,164, 28, 63,149, 84, 28, 63, 39,127,159,188,135,157, 93, 64, 8,108,228,190, 50,247,227,190, 4,213, 27,191, +122,122,186,191,216, 49, 49, 65,152, 9, 52, 65, 25, 25,195, 62,176,249,206, 62,128,238,196,187, 0, 0,192,179, 55, 15,168,189, +201,118,165, 61,152, 15,109, 62, 0, 0,152, 51,211,120, 21,194,144, 5, 2, 66, 6,136,213,193,193,214,159,192,219, 38, 19, 66, +196,173,255,193,154,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63, +225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, +254,221,192,190,152, 9, 52,193, 0, 0,128, 63, 42, 6,158, 63, 99, 28,157,191,244,250, 39,191, 8,165, 39,191,211,164,167, 63, + 55,175,154, 63,180,164, 28, 63,149, 84, 28, 63, 39,127,159,188,135,157, 93, 64, 8,108,228,190, 50,247,227,190, 4,213, 27,191, +122,122,186,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 67,201, 3, 0, 0, 0, 0,117, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,119,216, 3, - 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, 24, 2, 0, 0, 24, 51,163, 3, - 0, 0, 0, 0,142, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,250,150, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 62,250,150, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,250,150, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 3, 35,171,190,214,211,111, 65, +214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 80, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 65, + 1, 2, 0, 0,255,255, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, +190,133, 65, 66,100,212, 90, 66, 31,183,118, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 96, 1, 0, 0, 88, 16, 19, 6, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, +205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63, +205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8, 18, 19, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 88, 23, 19, 6, 0, 0, 0, 0,120, 4, 19, 6, 0, 0, 0, 0, 88,215, 18, 6, + 0, 0, 0, 0, 40,213, 18, 6, 0, 0, 0, 0,232,214, 18, 6, 0, 0, 0, 0,200,215, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,141, 1, 0, 0,233, 3, 0, 0, 16, 16, 32, 6, 93, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 21, 19, 6, 0, 0, 0, 0,216, 21, 19, 6, 0, 0, 0, 0,248, 18, 19, 6, + 0, 0, 0, 0,104, 20, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 18, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,104, 20, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 66, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,224,195, 68, 0, 0,200, 65, 0,224,195, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 32, 6, 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 20, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 18, 19, 6, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, + 0, 0, 0, 68,128,195,217,195,192,225,108, 68, 96,240,187, 64, 62, 16,253, 67, 15, 6, 0, 0, 32, 6, 0, 0, 18, 0, 0, 0, + 66, 2, 0, 0, 0, 0, 0, 0, 14, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 14, 6, 0, 0, 18, 0, 0, 0, + 66, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, 10, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 32, 6, 67, 2, 15, 6, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 6, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,216, 21, 19, 6, 0, 0, 0, 0,191, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,206, 97, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 23, 19, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 18, 19, 6, 0, 0, 0, 0,104,211, 18, 6, + 0, 0, 0, 0, 88,215, 18, 6, 0, 0, 0, 0, 56,216, 18, 6, 0, 0, 0, 0,168,216, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 6, 6, 4, 3,140, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 28, 19, 6, 0, 0, 0, 0,152, 28, 19, 6, 0, 0, 0, 0, 72, 24, 19, 6, + 0, 0, 0, 0, 40, 27, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72, 24, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,184, 25, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 65, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,192, 64, 68, 0, 0,200, 65, 0,192, 64, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 4, 3, 26, 0, 4, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 25, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 40, 27, 19, 6, 0, 0, 0, 0, 72, 24, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 27, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 25, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 67, 0, 0,129,191, 0,128, 0, 64, 0, 0,100,190, 0,128,156, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, +114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 3,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 33, 0, 0,152, 28, 19, 6, 0, 0, 0, 0,184, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0, +100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0,152, 62, 19, 6, 0, 0, 0, 0,210, 0, 0, 0, + 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 63, 19, 6, + 0, 0, 0, 0, 8,244, 12,108,161,127, 0, 0, 40, 69, 19, 6, 0, 0, 0, 0, 40, 37, 34,109,161,127, 0, 0, 8, 77, 19, 6, + 0, 0, 0, 0, 24, 55, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,162,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 63, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 88, 64, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 64, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 64, 19, 6, + 0, 0, 0, 0,232, 63, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200, 64, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56, 65, 19, 6, 0, 0, 0, 0, 88, 64, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,146, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 65, 19, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0,200, 64, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0, 56, 65, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136, 66, 19, 6, + 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,104, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0, 24, 66, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 66, 19, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 6,104, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6,196, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 68, 19, 6, + 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,196, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 68, 19, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184, 8, 38,109,161,127, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 6,144, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 8, 38,109,161,127, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 8,244, 12,108,161,127, 0, 0,184, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,244, 12,108,161,127, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,184, 8, 38,109,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6,224, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 40, 69, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 69, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88, 64, 19, 6, 0, 0, 0, 0,200, 64, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,152, 69, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8, 70, 19, 6, 0, 0, 0, 0, 40, 69, 19, 6, + 0, 0, 0, 0, 88, 64, 19, 6, 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 8, 70, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 70, 19, 6, 0, 0, 0, 0,152, 69, 19, 6, + 0, 0, 0, 0,200, 64, 19, 6, 0, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,120, 70, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 70, 19, 6, 0, 0, 0, 0, 8, 70, 19, 6, + 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,232, 70, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88, 71, 19, 6, 0, 0, 0, 0,120, 70, 19, 6, + 0, 0, 0, 0,232, 63, 19, 6, 0, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 88, 71, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 71, 19, 6, 0, 0, 0, 0,232, 70, 19, 6, + 0, 0, 0, 0, 56, 65, 19, 6, 0, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,200, 71, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56, 72, 19, 6, 0, 0, 0, 0, 88, 71, 19, 6, + 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 56, 72, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168, 72, 19, 6, 0, 0, 0, 0,200, 71, 19, 6, + 0, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,168, 72, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24, 73, 19, 6, 0, 0, 0, 0, 56, 72, 19, 6, + 0, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 24, 73, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136, 73, 19, 6, 0, 0, 0, 0,168, 72, 19, 6, + 0, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,136, 73, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 73, 19, 6, 0, 0, 0, 0, 24, 73, 19, 6, + 0, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248, 73, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104, 74, 19, 6, 0, 0, 0, 0,136, 73, 19, 6, + 0, 0, 0, 0, 56, 65, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,104, 74, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 74, 19, 6, 0, 0, 0, 0,248, 73, 19, 6, + 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216, 74, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 76, 19, 6, 0, 0, 0, 0,104, 74, 19, 6, + 0, 0, 0, 0,232, 63, 19, 6, 0, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 40, 76, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 76, 19, 6, 0, 0, 0, 0,216, 74, 19, 6, + 0, 0, 0, 0,136, 66, 19, 6, 0, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,152, 76, 19, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,111,135,109,161,127, 0, 0, 40, 76, 19, 6, + 0, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72,111,135,109,161,127, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 37, 34,109,161,127, 0, 0,152, 76, 19, 6, + 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 40, 37, 34,109,161,127, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,111,135,109, +161,127, 0, 0,248, 66, 19, 6, 0, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 8, 77, 19, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,216, 80, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0, 88, 64, 19, 6, 0, 0, 0, 0,200, 64, 19, 6, 0, 0, 0, 0, 24, 66, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,105, 4, 0, 0,146, 4, 0, 0, 7, 7,127, 7, + 42, 0, 1, 0, 0, 0, 0, 0, 7, 0, 8, 0, 24,172,243, 5, 0, 0, 0, 0,136, 86, 20, 6, 0, 0, 0, 0,136, 86, 20, 6, + 0, 0, 0, 0,248, 77, 19, 6, 0, 0, 0, 0,104, 79, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 54, 48,109,161,127, 0, 0,104,215, 34,109,161,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 77, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104, 79, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,105, 4, 0, 0,130, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,174,243, 5, 0, 0, 0, 0,104,247, 48,109,161,127, 0, 0,104,247, 48,109, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,208, 40,109,161,127, 0, 0, 72,215, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 79, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 77, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,192,239, 68, 0, 0, 0, 0, 0, 0,200, 65, 0, 0, 0, 0, 1,192,237, 68, 0, 0, 0, 0, 0, 0,128, 65,110, 7, 0, 0, +127, 7, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +109, 7, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,127, 7, 16, 0,110, 7, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,131, 4, 0, 0,146, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 16, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,173,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 52,135,109,161,127, 0, 0,248,218, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216, 80, 19, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,168,121, 19, 6, 0, 0, 0, 0, 8, 77, 19, 6, 0, 0, 0, 0,136, 66, 19, 6, + 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, 0, 0, 0, 0, 56, 65, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,195, 3, 0, 0, 4, 4, 46, 1,196, 3, 1, 0, 0, 0, 0, 0, + 0, 0, 8, 0,184,167,243, 5, 0, 0, 0, 0,104,120, 19, 6, 0, 0, 0, 0,104,120, 19, 6, 0, 0, 0, 0,200, 81, 19, 6, + 0, 0, 0, 0, 56, 83, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,116, 13,108, +161,127, 0, 0,216,163, 48,109,161,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 81, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 56, 83, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,151, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,150, 67, 0, 0,200, 65, 0,128,150, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 46, 1, 26, 0, 46, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0,170, 3, 0, 0,195, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 1, 26, 0, 4, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40,171,243, 5, 0, 0, 0, 0,232, 10, 36,109,161,127, 0, 0,232, 10, 36,109,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,193, 32,109,161,127, 0, 0, 88,224, 12,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 83, 19, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 81, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, 0,128,106,196, + 0, 0, 0, 0, 0, 0, 0, 0, 1,128,142, 67, 2,128,106,196, 0, 0, 0, 0, 29, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, +169, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, +169, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 46, 1,170, 3, 29, 1,170, 3, 0, 0,200,105, 35,109,161,127, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,169, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 1,170, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,168,243, 5, 0, 0, 0, 0,136,239, 48,109,161,127, 0, 0,216,232, 48,109,161,127, 0, 0,168, 84, 19, 6, + 0, 0, 0, 0,200,118, 19, 6, 0, 0, 0, 0,200, 5, 13,108,161,127, 0, 0,168,229, 12,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168, 84, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 72, 86, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,169,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,220,255, 29, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 72, 86, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232, 87, 19, 6, 0, 0, 0, 0,168, 84, 19, 6, + 0, 0, 0, 0,216,150,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 29, 1, 61, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232, 87, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,136, 89, 19, 6, 0, 0, 0, 0, 72, 86, 19, 6, 0, 0, 0, 0, 72,153,122,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,111,255, 29, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,136, 89, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40, 91, 19, 6, 0, 0, 0, 0,232, 87, 19, 6, + 0, 0, 0, 0,184,155,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 29, 1,203, 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40, 91, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,200, 92, 19, 6, 0, 0, 0, 0,136, 89, 19, 6, 0, 0, 0, 0, 40,158,122,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58,254, 29, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,200, 92, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104, 94, 19, 6, 0, 0, 0, 0, 40, 91, 19, 6, + 0, 0, 0, 0,152,160,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105, +111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 29, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 6, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104, 94, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 8, 96, 19, 6, 0, 0, 0, 0,200, 92, 19, 6, 0, 0, 0, 0, 24,184, 80,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10,254, 29, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 8, 96, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168, 97, 19, 6, 0, 0, 0, 0,104, 94, 19, 6, + 0, 0, 0, 0, 40,170,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, 29, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 6, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168, 97, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 72, 99, 19, 6, 0, 0, 0, 0, 8, 96, 19, 6, 0, 0, 0, 0,152,172,122,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,218,253, 29, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 72, 99, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232,100, 19, 6, 0, 0, 0, 0,168, 97, 19, 6, + 0, 0, 0, 0, 8,175,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, 29, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 6, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,100, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,136,102, 19, 6, 0, 0, 0, 0, 72, 99, 19, 6, 0, 0, 0, 0,120,177,122,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36,253, 29, 1,134, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,136,102, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40,104, 19, 6, 0, 0, 0, 0,232,100, 19, 6, + 0, 0, 0, 0, 88,182,122,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,253, 29, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 7, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40,104, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,200,105, 19, 6, 0, 0, 0, 0,136,102, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,135,255, 41, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,200,105, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,104,107, 19, 6, 0, 0, 0, 0, 40,104, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,255, 41, 1, 83, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,104,107, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 8,109, 19, 6, 0, 0, 0, 0,200,105, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,191,254, 41, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 8,109, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,168,110, 19, 6, 0, 0, 0, 0,104,107, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121, +115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121, +115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131,254, 41, 1, 36, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,168,110, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 72,112, 19, 6, 0, 0, 0, 0, 8,109, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,105,109,112,108,105,102,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27,254, 41, 1, 80, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 72,112, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,232,113, 19, 6, 0, 0, 0, 0,168,110, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115, +116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 99,117,115, +116,111,109, 95,112,114,111,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,115,116,111,109, 32, 80,114,111,112,101, +114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,253, 41, 1, 36, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,113, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,136,115, 19, 6, 0, 0, 0, 0, 72,112, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16,255,187, 0,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,136,115, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 40,117, 19, 6, 0, 0, 0, 0,232,113, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, + 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,109, + 97,112,112,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 97,112,112,105,110,103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,254,187, 0,171, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 40,117, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,200,118, 19, 6, 0, 0, 0, 0,136,115, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,223,252,187, 0, 86, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,200,118, 19, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,117, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111, +110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111, +110,115,116,114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 67,111,110,115,116, +114, 97,105,110,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,255,187, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,120, 19, 6, 0, 0, 0, 0,179, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,184,229, 34,109, +161,127, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,168,121, 19, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,152,126, 19, 6, 0, 0, 0, 0,216, 80, 19, 6, + 0, 0, 0, 0,232, 63, 19, 6, 0, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0,136, 66, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0, 0, 0, 0, 0,143, 0, 0, 0, 15, 15, 80, 6, +144, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,123,243, 5, 0, 0, 0, 0,120,125, 19, 6, 0, 0, 0, 0,120,125, 19, 6, + 0, 0, 0, 0,152,122, 19, 6, 0, 0, 0, 0, 8,124, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 87, 41,109,161,127, 0, 0,152,144, 47,109,161,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,122, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 8,124, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,202, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0,128, 56, 0, 0,202, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,201, 68, 0, 0,200, 65, 0,224,201, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 80, 6, 26, 0, 80, 6, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6, 26, 0, 6, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,125,243, 5, 0, 0, 0, 0,136,234,135,109,161,127, 0, 0,136,234,135,109, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,147, 36,109,161,127, 0, 0, 8,235, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,124, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,122, 19, 6, 0, 0, 0, 0, 0, 0, 64,192, + 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 88,218,103,194, 40,147,141, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 79, 6, 0, 0, 18, 0, 0, 0,117, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, + 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 80, 6,118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0, 26, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6,118, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,124,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,236, 12,108,161,127, 0, 0,248,241, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,120,125, 19, 6, + 0, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,152,126, 19, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 24, 55, 20, 6, 0, 0, 0, 0,168,121, 19, 6, + 0, 0, 0, 0,104, 67, 19, 6, 0, 0, 0, 0,248, 66, 19, 6, 0, 0, 0, 0, 24, 66, 19, 6, 0, 0, 0, 0,216, 67, 19, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0,197, 3, 0, 0,103, 4, 0, 0, 3, 3, 46, 1, +163, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,136,120,243, 5, 0, 0, 0, 0,104,130, 19, 6, 0, 0, 0, 0,104,130, 19, 6, + 0, 0, 0, 0,136,127, 19, 6, 0, 0, 0, 0,248,128, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 29, 82,109,161,127, 0, 0,120, 31, 49,109,161,127, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,127, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,248,128, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,151, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,151, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,150, 67, 0, 0,200, 65, 0,128,150, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 46, 1, 26, 0, 46, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0, 78, 4, 0, 0,103, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 1, 26, 0, 8, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,122,243, 5, 0, 0, 0, 0, 88, 78, 38,109,161,127, 0, 0, 88, 78, 38,109, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,186, 32,109,161,127, 0, 0, 88,247, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,128, 19, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,127, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,142, 67, 0, 0,242,194, 0, 0, 0,192, 29, 1, 0, 0, + 46, 1, 0, 0, 18, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 28, 1, 0, 0, 18, 0, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 18, 4, 0, 0, 2, 0, 3, 3, 0, 0, 12, 4, 6, 0, 46, 1,137, 0, 29, 1,119, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 6, 0, 0,126, 7, 0, 0,197, 3, 0, 0, 77, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 1,137, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,121,243, 5, 0, 0, 0, 0, 88, 90, 36,109,161,127, 0, 0, 88, 90, 36,109, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 42, 41,109,161,127, 0, 0, 8,251, 12,108, +161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0,104,130, 19, 6, + 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 17, 49,109,161,127, 0, 0,248, 17, 49,109, +161,127, 0, 0,200,131, 19, 6, 0, 0, 0, 0, 0,115,101, 32, 83, 99,117,108,112,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,200,131, 19, 6, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 42, 11, 0, 0, + 42, 11, 0, 0, 40,132, 19, 6, 0, 0, 0, 0, 68, 65, 84, 65,160,178, 0, 0, 40,132, 19, 6, 0, 0, 0, 0,236, 0, 0, 0, + 42, 11, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, + 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,152,136, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,146, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,200, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,159, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,248,181, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,153, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216,131, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,139, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,130, 21, 6, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,216,221, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 3, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 30, 0,255,255, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,248,227, 22, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,200,130, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,216,131, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,168,200, 21, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0,104,139, 21, 6, + 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 21, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 22, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 23, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 24, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 25, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 26, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 27, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 28, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 29, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 30, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 31, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 32, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 33, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 34, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 35, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 36, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 37, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 38, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 39, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 40, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 41, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 42, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 43, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 44, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 45, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 46, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 47, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 48, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 49, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 50, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 51, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 52, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 53, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 54, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 55, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 56, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 57, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 58, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 59, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 60, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 61, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 62, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 63, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 64, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 65, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 66, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 67, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 68, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 69, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 70, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 71, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 72, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 73, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 74, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 75, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 76, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 77, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 78, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 79, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 80, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 81, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 82, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 83, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 84, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 85, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 86, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 87, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 88, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 89, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 90, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 91, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 92, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 93, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 94, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 95, 0, 1, 0, 0, 0, 72,153, 21, 6, + 0, 0, 0, 0, 31, 0, 96, 0, 1, 0, 0, 0, 72,153, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40,110, 18, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 40,110, 18, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24,210, 18, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 24,210, 18, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152, 62, 19, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 24, 87, 20, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 24, 87, 20, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 24, 87, 20, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 24, 87, 20, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 24, 87, 20, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152,246, 20, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152,246, 20, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152,246, 20, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152,246, 20, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152,246, 20, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,184, 61, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,184, 61, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,184, 61, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,184, 61, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,184, 61, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,184, 61, 21, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0, 56,107, 18, 6, + 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0, 56,107, 18, 6, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 1, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 2, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 3, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 4, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 5, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 6, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 7, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 8, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 9, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 10, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 11, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 12, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 13, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 14, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 15, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 16, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 17, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 18, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 31, 0, 19, 0, 1, 0, 0, 0,152,136, 21, 6, 0, 0, 0, 0, 31, 0, 20, 0, 1, 0, 0, 0,152,136, 21, 6, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 24, 55, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,126, 19, 6, 0, 0, 0, 0, 72, 68, 19, 6, 0, 0, 0, 0,168, 65, 19, 6, 0, 0, 0, 0,248, 66, 19, 6, + 0, 0, 0, 0,184, 68, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0,145, 0, 0, 0, +103, 4, 0, 0, 1, 1, 80, 6,215, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0,136,126,243, 5, 0, 0, 0, 0,216, 84, 20, 6, + 0, 0, 0, 0,216, 84, 20, 6, 0, 0, 0, 0, 8, 56, 20, 6, 0, 0, 0, 0,168, 79, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 32, 82,109,161,127, 0, 0,216,185, 34,109,161,127, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 8, 56, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120, 57, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,192,108, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,202, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,201, 68, 0, 0,200, 65, 0,224,201, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 80, 6, 26, 0, 80, 6, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 6, 0, 0,145, 0, 0, 0, +170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 6, 26, 0, 10, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,136,243, 5, 0, 0, 0, 0,248,212, 33,109, +161,127, 0, 0,248,212, 33,109,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 50, 48,109, +161,127, 0, 0,136, 4, 13,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,120, 57, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 40, 75, 20, 6, 0, 0, 0, 0, 8, 56, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, 0, 64, 57,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 57,196, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,229, 2,143, 0, +229, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,131, 1, 0, 0, +103, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,229, 2, 11, 0, 5, 0, 3, 0, 0, 0, + 0, 0, 0, 0,160, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,133,243, 5, 0, 0, 0, 0,216,230, 34,109, +161,127, 0, 0,216,230, 34,109,161,127, 0, 0,232, 58, 20, 6, 0, 0, 0, 0,136, 73, 20, 6, 0, 0, 0, 0,152,232, 12,108, +161,127, 0, 0, 56, 8, 13,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,232, 58, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,136, 60, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8,218,125,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233,253,143, 0,255, 1, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136, 60, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 40, 62, 20, 6, 0, 0, 0, 0,232, 58, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,117,254,143, 0,115, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 40, 62, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,200, 63, 20, 6, 0, 0, 0, 0,136, 60, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,254,143, 0, 61, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,200, 63, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,104, 65, 20, 6, 0, 0, 0, 0, 40, 62, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,104, 65, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 8, 67, 20, 6, 0, 0, 0, 0,200, 63, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,254,143, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 8, 67, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,168, 68, 20, 6, 0, 0, 0, 0,104, 65, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 97,112,112,101, 97,114, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,112,112,101, 97,114, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,229,253,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,168, 68, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 72, 70, 20, 6, 0, 0, 0, 0, 8, 67, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,253,143, 0,146, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 72, 70, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,232, 71, 20, 6, 0, 0, 0, 0,168, 68, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 93,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,232, 71, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,136, 73, 20, 6, 0, 0, 0, 0, 72, 70, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99, +117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99, +117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,254,143, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,136, 73, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 71, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,115,121,109,109,101,116,114,121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,121,109,109,101,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,253,253,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 40, 75, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 56, 78, 20, 6, 0, 0, 0, 0,120, 57, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, 0, 0, 90,195, 0, 0, 0, 0, 0, 0, 0, 0,227,102, 16, 67, 24, 30, 90,195, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,216, 0,143, 0, +216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,171, 0, 0, 0, +130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,216, 0, 12, 0, 6, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,134,243, 5, 0, 0, 0, 0,136,136, 41,109, +161,127, 0, 0,136,136, 41,109,161,127, 0, 0,152, 76, 20, 6, 0, 0, 0, 0,152, 76, 20, 6, 0, 0, 0, 0,248,179, 41,109, +161,127, 0, 0,232, 11, 13,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,152, 76, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,136,135,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, +115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97, +115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0,100,101, 0, + 32, 77,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 78, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,168, 79, 20, 6, 0, 0, 0, 0, 40, 75, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0, 96,158,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 96,158,196, 0,128,142,195,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, +213, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, +213, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,180, 0,214, 3,163, 0,214, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 6, 0, 0, 79, 6, 0, 0,171, 0, 0, 0,103, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,152,128,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 79, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 78, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 0, 0, 0, 79, 6, 0, 0,171, 0, 0, 0,103, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176, 5,189, 3, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168,127,243, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 45, 13,108,161,127, 0, 0,216, 44, 13,108,161,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 81, 20, 6, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0, 24, 81, 20, 6, 0, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,255,212, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 6,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 11,210, 76,190, + 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,210,111,193, + 0, 0,128, 63, 68,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, + 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, 62, 95, 68, 65, 51,120,173,192,115,208,213, 64, + 0, 0,128, 63,180,157,229, 62, 57, 36, 43,191,116,169, 81,191,184,158, 81,191,118, 90,127, 63,212,251,164, 62,158, 53,185, 62, + 35, 44,185, 62,147,180,109,188,194,164,190, 63,218, 72,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 33,171,108, 65, + 33,210,111, 65,100,240,191, 62,110,116, 85, 63, 32,185, 70,188, 0, 0, 80,180,122, 55,119,190, 96, 82,238, 61,227,177, 9, 63, + 0, 0,248, 51,197,112,117,194,179,208,216, 65,220,158, 5,194,231,251,159,192,221, 54,114, 66, 30,247,213,193, 58,221, 3, 66, + 25, 4,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, + 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,210,111,193, + 0, 0,128, 63,180,157,229, 62, 57, 36, 43,191,116,169, 81,191,184,158, 81,191,118, 90,127, 63,212,251,164, 62,158, 53,185, 62, + 35, 44,185, 62,147,180,109,188,194,164,190, 63,218, 72,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 33,171,108, 65, + 33,210,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,182,180, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,182,180, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,182,180, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 33,210,111, 65, 33,210,111, 65, 0, 0, 0, 0, + 0, 0, 0, 0,146,156,164, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,255,255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66, +113, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,216, 84, 20, 6, + 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 24,128, 0, 0, 0, 12, 66, 0, 0,128, 63,205,204,204, 61, 0, 0,122, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0,210, 0, 0, 0, + 1, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0,152, 62, 19, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 88, 20, 6, + 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0,136, 94, 20, 6, 0, 0, 0, 0, 72,103, 20, 6, 0, 0, 0, 0,184,103, 20, 6, + 0, 0, 0, 0,216,159, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 88, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,216, 88, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 88, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72, 89, 20, 6, + 0, 0, 0, 0,104, 88, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 72, 89, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184, 89, 20, 6, 0, 0, 0, 0,216, 88, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 89, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0, 72, 89, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0,184, 89, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 3, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 8, 91, 20, 6, + 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0,152, 90, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 91, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 6,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200, 92, 20, 6, + 0, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0, 88, 92, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5,140, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56, 93, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 5,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,140, 1, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,136, 94, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 94, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216, 88, 20, 6, 0, 0, 0, 0, 72, 89, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248, 94, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104, 95, 20, 6, 0, 0, 0, 0,136, 94, 20, 6, + 0, 0, 0, 0,216, 88, 20, 6, 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,104, 95, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 95, 20, 6, 0, 0, 0, 0,248, 94, 20, 6, + 0, 0, 0, 0, 72, 89, 20, 6, 0, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216, 95, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72, 96, 20, 6, 0, 0, 0, 0,104, 95, 20, 6, + 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72, 96, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184, 96, 20, 6, 0, 0, 0, 0,216, 95, 20, 6, + 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,184, 96, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 97, 20, 6, 0, 0, 0, 0, 72, 96, 20, 6, + 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 40, 97, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 97, 20, 6, 0, 0, 0, 0,184, 96, 20, 6, + 0, 0, 0, 0,184, 89, 20, 6, 0, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,152, 97, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8, 98, 20, 6, 0, 0, 0, 0, 40, 97, 20, 6, + 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 8, 98, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 98, 20, 6, 0, 0, 0, 0,152, 97, 20, 6, + 0, 0, 0, 0,104, 88, 20, 6, 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,120, 98, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 98, 20, 6, 0, 0, 0, 0, 8, 98, 20, 6, + 0, 0, 0, 0,104, 88, 20, 6, 0, 0, 0, 0,232, 91, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,232, 98, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88, 99, 20, 6, 0, 0, 0, 0,120, 98, 20, 6, + 0, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 88, 99, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 99, 20, 6, 0, 0, 0, 0,232, 98, 20, 6, + 0, 0, 0, 0,184, 89, 20, 6, 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,200, 99, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,100, 20, 6, 0, 0, 0, 0, 88, 99, 20, 6, + 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 56,100, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,100, 20, 6, 0, 0, 0, 0,200, 99, 20, 6, + 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,168,100, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,101, 20, 6, 0, 0, 0, 0, 56,100, 20, 6, + 0, 0, 0, 0,152, 90, 20, 6, 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 24,101, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,101, 20, 6, 0, 0, 0, 0,168,100, 20, 6, + 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,136,101, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,101, 20, 6, 0, 0, 0, 0, 24,101, 20, 6, + 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,248,101, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,102, 20, 6, 0, 0, 0, 0,136,101, 20, 6, + 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,104,102, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,102, 20, 6, 0, 0, 0, 0,248,101, 20, 6, + 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,216,102, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,103, 20, 6, 0, 0, 0, 0,104,102, 20, 6, + 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 72,103, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,102, 20, 6, + 0, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,184,103, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,136,107, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 90, 20, 6, 0, 0, 0, 0,216, 88, 20, 6, 0, 0, 0, 0, 72, 89, 20, 6, 0, 0, 0, 0,152, 90, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, + 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,166, 20, 6, 0, 0, 0, 0,152,166, 20, 6, + 0, 0, 0, 0,168,104, 20, 6, 0, 0, 0, 0, 24,106, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,104, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 24,106, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,235, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,106, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,104, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 68, 0, 0, 0, 0, 0, 0, 0, 64,112, 7, 0, 0, +129, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +111, 7, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136,107, 20, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 24,132, 20, 6, 0, 0, 0, 0,184,103, 20, 6, 0, 0, 0, 0,232, 91, 20, 6, + 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0,184, 89, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 4, 4, 94, 1,140, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,130, 20, 6, 0, 0, 0, 0,216,130, 20, 6, 0, 0, 0, 0,120,108, 20, 6, + 0, 0, 0, 0,232,109, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,108, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,232,109, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 67, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0,175, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,174, 67, 0, 0,200, 65, 0,128,174, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 94, 1, 26, 0, 94, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0,114, 1, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,109, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,108, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,174, 67, 0, 0, 61,196, + 0, 0, 0, 0, 0, 0, 0, 0,255,127,166, 67,255,255,184,195, 0, 0, 0, 0, 77, 1, 0, 0, 94, 1, 0, 0, 0, 0, 0, 0, +113, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 0, 0, +113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 94, 1,114, 1, 77, 1,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 6, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 1,114, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,111, 20, 6, + 0, 0, 0, 0, 56,129, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,111, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,248,112, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,220,255, 76, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,248,112, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,152,114, 20, 6, 0, 0, 0, 0, 88,111, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, +110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,114, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 56,116, 20, 6, 0, 0, 0, 0,248,112, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 56,116, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,216,117, 20, 6, 0, 0, 0, 0,152,114, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105, +109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, 76, 1,203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,117, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,120,119, 20, 6, 0, 0, 0, 0, 56,116, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,120,119, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24,121, 20, 6, 0, 0, 0, 0,216,117, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111, +116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112,108,101,100, 32, 77,111,116,105, +111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, 76, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,121, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,184,122, 20, 6, 0, 0, 0, 0,120,119, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10,254, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,184,122, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 88,124, 20, 6, 0, 0, 0, 0, 24,121, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, +114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, 76, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,124, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0,248,125, 20, 6, 0, 0, 0, 0,184,122, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,218,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0,248,125, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,152,127, 20, 6, 0, 0, 0, 0, 88,124, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, + 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, 76, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,127, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, + 1, 0, 0, 0, 56,129, 20, 6, 0, 0, 0, 0,248,125, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 40,253, 76, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 88, 1, 0, 0, 56,129, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,127, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97, +107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, 76, 1, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,130, 20, 6, 0, 0, 0, 0,179, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 24,132, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,136,139, 20, 6, 0, 0, 0, 0,136,107, 20, 6, + 0, 0, 0, 0,104, 88, 20, 6, 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0,120, 91, 20, 6, 0, 0, 0, 0,232, 91, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, 17, 17, 32, 6, +140, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,138, 20, 6, 0, 0, 0, 0,248,138, 20, 6, + 0, 0, 0, 0, 8,133, 20, 6, 0, 0, 0, 0,136,137, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,133, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120,134, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,195, 68, 0, 0,200, 65, 0,224,195, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 32, 6, 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,134, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,137, 20, 6, 0, 0, 0, 0, 8,133, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 67, 0, 0,185,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,185,195, 0, 0, 0, 0,203, 0, 0, 0, +220, 0, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +202, 0, 0, 0, 0, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,114, 1,203, 0,114, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,114, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232,135, 20, 6, 0, 0, 0, 0,232,135, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,232,135, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,137, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,120,134, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 0, 80, 31,195, + 0,234,179, 68,224,198,182,194,184,177,165, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, + 50, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,113, 1, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, + 0, 0, 68, 5,114, 1, 51, 5, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, + 31, 6, 0, 0, 26, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 5,114, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,248,138, 20, 6, 0, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136,139, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 72,146, 20, 6, + 0, 0, 0, 0, 24,132, 20, 6, 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0,152, 90, 20, 6, + 0, 0, 0, 0, 88, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,141, 1, 0, 0, +233, 3, 0, 0, 9, 9, 62, 2, 93, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,143, 20, 6, + 0, 0, 0, 0, 88,143, 20, 6, 0, 0, 0, 0,120,140, 20, 6, 0, 0, 0, 0,232,141, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,120,140, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232,141, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 15, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 61, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 15, 68, 0, 0,200, 65, 0, 64, 15, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 62, 2, 26, 0, 62, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,141, 1, 0, 0, +166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,232,141, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,140, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0, + 86, 26, 3, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 61, 2, 0, 0, 0, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 62, 2, 67, 2, 62, 2, + 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 5, 0, 0,126, 7, 0, 0,167, 1, 0, 0, +233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 2, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 2, 0, 0, 88,143, 20, 6, 0, 0, 0, 0,186, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 72,146, 20, 6, + 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,216,159, 20, 6, 0, 0, 0, 0,136,139, 20, 6, 0, 0, 0, 0,168, 93, 20, 6, + 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0, 56, 93, 20, 6, 0, 0, 0, 0,200, 92, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0,141, 1, 0, 0,233, 3, 0, 0, 1, 1,251, 3, 93, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,158, 20, 6, 0, 0, 0, 0, 40,158, 20, 6, 0, 0, 0, 0, 56,147, 20, 6, + 0, 0, 0, 0,248,152, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,147, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,168,148, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0,192,126, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 3, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0,128,126, 68, 0, 0,200, 65, 0,128,126, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,251, 3, 26, 0,251, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0,141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,148, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 24,150, 20, 6, 0, 0, 0, 0, 56,147, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, + 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 69, 1, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 67, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,150, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,136,151, 20, 6, 0, 0, 0, 0,168,148, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, + 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, +119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0,167, 1, 0, 0,167, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,151, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0,248,152, 20, 6, 0, 0, 0, 0, 24,150, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 67, 0, 0,109,196, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,109,196, 0,128,145,195,163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, +144, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, +144, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, + 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,180, 0,145, 2,163, 0,145, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 63, 5, 0, 0, 63, 5, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,152, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,151, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 63, 5, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,251, 3, 67, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104,154, 20, 6, 0, 0, 0, 0, 68, 65, 84, 65,112, 3, 0, 0,104,154, 20, 6, 0, 0, 0, 0,173, 0, 0, 0, + 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128, 0, 0, 0,128, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,107, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,249,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 40,139, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18, 3,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,207, 3,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,207, 3,116, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,207, 3,116, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, + 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 65, 0, 0, 5, 0,251,251, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,180, 66, 0, 0,180, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0, 40,158, 20, 6, + 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63,205,204,204, 61, 0, 0,122, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216,159, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,146, 20, 6, 0, 0, 0, 0, 8, 91, 20, 6, 0, 0, 0, 0, 40, 90, 20, 6, + 0, 0, 0, 0, 24, 94, 20, 6, 0, 0, 0, 0,168, 93, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 1, 0, 0,141, 1, 0, 0,233, 3, 0, 0, 3, 3, 68, 1, 93, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168,163, 20, 6, 0, 0, 0, 0,168,163, 20, 6, 0, 0, 0, 0,200,160, 20, 6, 0, 0, 0, 0, 56,162, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,160, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 56,162, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0,162, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,161, 67, + 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, + 10, 0, 68, 1, 26, 0, 68, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 1, 0, 0,141, 1, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 26, 0, + 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,162, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,160, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,153, 67, 0, 64, 12,196, 0, 0, 0, 0, 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, + 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, 0, 0, 12, 4, + 6, 0, 68, 1, 67, 2, 51, 1, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 1, 0, 0,167, 1, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 67, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0,168,163, 20, 6, 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,165, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 8,165, 20, 6, + 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0,104,165, 20, 6, 0, 0, 0, 0, 68, 65, 84, 65, +224, 0, 0, 0,104,165, 20, 6, 0, 0, 0, 0,236, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8,110, 21, 6, + 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, + 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,152,136, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,146, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,168,200, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,159, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,248,181, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,153, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,216,131, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,130, 21, 6, + 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0, 40,167, 20, 6, + 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0,152,246, 20, 6, 0, 0, 0, 0, 24, 87, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, -199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0, -128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,120,168, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0,152,174, 20, 6, 0, 0, 0, 0,200,183, 20, 6, + 0, 0, 0, 0, 56,184, 20, 6, 0, 0, 0, 0, 72,239, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,168, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 88,169, 20, 6, 0, 0, 0, 0,120,168, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,169, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200,169, 20, 6, + 0, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,200,169, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0, 88,169, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,170, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0,200,169, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,168, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,168, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136,171, 20, 6, + 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,168, 3, 0, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,171, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,104, 1, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,104, 1, + 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 72,173, 20, 6, + 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2,104, 1, 1, 0, 0, 0, 68, 65, 84, 65, + 32, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0,216,172, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,236, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,173, 20, 6, + 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,126, 7,236, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2,168, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,174, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,175, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0, 88,169, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,175, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,175, 20, 6, + 0, 0, 0, 0,152,174, 20, 6, 0, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,175, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,175, 20, 6, + 0, 0, 0, 0, 8,175, 20, 6, 0, 0, 0, 0, 88,169, 20, 6, 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,175, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,176, 20, 6, + 0, 0, 0, 0,120,175, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,176, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,176, 20, 6, + 0, 0, 0, 0,232,175, 20, 6, 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,176, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56,177, 20, 6, + 0, 0, 0, 0, 88,176, 20, 6, 0, 0, 0, 0,200,169, 20, 6, 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,177, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168,177, 20, 6, + 0, 0, 0, 0,200,176, 20, 6, 0, 0, 0, 0,120,168, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,177, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24,178, 20, 6, + 0, 0, 0, 0, 56,177, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,178, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136,178, 20, 6, + 0, 0, 0, 0,168,177, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,178, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248,178, 20, 6, + 0, 0, 0, 0, 24,178, 20, 6, 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,178, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104,179, 20, 6, + 0, 0, 0, 0,136,178, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,179, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216,179, 20, 6, + 0, 0, 0, 0,248,178, 20, 6, 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,179, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72,180, 20, 6, + 0, 0, 0, 0,104,179, 20, 6, 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,180, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184,180, 20, 6, + 0, 0, 0, 0,216,179, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,180, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40,181, 20, 6, + 0, 0, 0, 0, 72,180, 20, 6, 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,181, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152,181, 20, 6, + 0, 0, 0, 0,184,180, 20, 6, 0, 0, 0, 0,200,169, 20, 6, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,181, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8,182, 20, 6, + 0, 0, 0, 0, 40,181, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,182, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120,182, 20, 6, + 0, 0, 0, 0,152,181, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,182, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232,182, 20, 6, + 0, 0, 0, 0, 8,182, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,182, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88,183, 20, 6, + 0, 0, 0, 0,120,182, 20, 6, 0, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,183, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200,183, 20, 6, + 0, 0, 0, 0,232,182, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,183, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88,183, 20, 6, 0, 0, 0, 0,120,168, 20, 6, 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56,184, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 8,188, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0,232,168, 20, 6, 0, 0, 0, 0, 88,169, 20, 6, + 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,169, 3, 0, 0, + 5, 4, 0, 0, 7, 7,127, 7, 93, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,246, 20, 6, + 0, 0, 0, 0, 8,246, 20, 6, 0, 0, 0, 0, 40,185, 20, 6, 0, 0, 0, 0,152,186, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 40,185, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152,186, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, 0,192,239, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, 26, 0,127, 7, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,236, 3, 0, 0, + 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,152,186, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,185, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0,192,239, 68, 0, 0, 0, 0, 0, 0, 28, 66, 0, 0, 0, 0, 0,192,237, 68, 0, 0, 0, 0, + 0, 0,134, 66,110, 7, 0, 0,127, 7, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,109, 7, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,127, 7, 67, 0,110, 7, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,169, 3, 0, 0, +235, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 8,188, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,152,212, 20, 6, 0, 0, 0, 0, 56,184, 20, 6, + 0, 0, 0, 0,136,171, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0,200,169, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,235, 2, 0, 0, 4, 4,142, 1, +236, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,211, 20, 6, 0, 0, 0, 0, 88,211, 20, 6, + 0, 0, 0, 0,248,188, 20, 6, 0, 0, 0, 0,104,190, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,188, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104,190, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,148, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,199, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +141, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,198, 67, 0, 0,200, 65, 0,128,198, 67, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,142, 1, 26, 0,142, 1, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0,210, 2, 0, 0,235, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,190, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,188, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,198, 67, 0, 0, 61,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,190, 67,254,127, 52,196, 0, 0, 0, 0,125, 1, 0, 0, +142, 1, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +124, 1, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,142, 1,210, 2,125, 1,210, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,126, 7, 0, 0, 0, 0, 0, 0,209, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1,210, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,216,191, 20, 6, 0, 0, 0, 0,184,209, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,191, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120,193, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,124, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,193, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24,195, 20, 6, + 0, 0, 0, 0,216,191, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, +101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, +124, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,119,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,119,216, 3, 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 0, 0,112, 5, 0, 0,200,213,217, 3, 0, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0,184,219,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97, -109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,195, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184,196, 20, 6, 0, 0, 0, 0,120,193, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,196, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 88,198, 20, 6, + 0, 0, 0, 0, 24,195, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, +110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, +124, 1,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 98,200, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 88,198, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,248,199, 20, 6, 0, 0, 0, 0,184,196, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, +110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, +110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,124, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,248,199, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,152,201, 20, 6, + 0, 0, 0, 0, 88,198, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 97,109,112, +108,101,100, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, +124, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,152,201, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 56,203, 20, 6, 0, 0, 0, 0,248,199, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,254,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56,203, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,216,204, 20, 6, + 0, 0, 0, 0,152,201, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, +111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,253, +124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,216,204, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,120,206, 20, 6, 0, 0, 0, 0, 56,203, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, +115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, +115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218,253,124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,120,206, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 24,208, 20, 6, + 0, 0, 0, 0,216,204, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109, +112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,253, +124, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 24,208, 20, 6, + 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0,184,209, 20, 6, 0, 0, 0, 0,120,206, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,253,124, 1,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64, -150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, - 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63, -149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, - 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, - 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63,221,149, 47, 63, - 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, - 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,184,209, 20, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24,208, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, + 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,253, +124, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,211, 20, 6, + 0, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,212, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 40,226, 20, 6, + 0, 0, 0, 0, 8,188, 20, 6, 0, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0, 24,171, 20, 6, + 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,105, 1, 0, 0, +167, 3, 0, 0, 1, 1,247, 2, 63, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,224, 20, 6, + 0, 0, 0, 0,120,224, 20, 6, 0, 0, 0, 0,136,213, 20, 6, 0, 0, 0, 0, 72,219, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,136,213, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,248,214, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 61, 68, 0, 0, 0, 0, + 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,246, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128, 61, 68, 0, 0,200, 65, 0,128, 61, 68, + 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,247, 2, 26, 0,247, 2, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,105, 1, 0, 0, +130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,248,214, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104,216, 20, 6, 0, 0, 0, 0,136,213, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, + 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,249, 2, 0, 0,131, 1, 0, 0, +167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 37, 2, 0, 0, 5, 0, 3, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,104,216, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,216,217, 20, 6, 0, 0, 0, 0,248,214, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, + 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,131, 1, 0, 0, +131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,216,217, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72,219, 20, 6, 0, 0, 0, 0,104,216, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, + 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,131, 1, 0, 0, +167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 72,219, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,217, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0,239, 5, 0, 0,131, 1, 0, 0, +167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,220, 20, 6, 0, 0, 0, 0, 68, 65, 84, 65, +112, 3, 0, 0,184,220, 20, 6, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 74,141,193, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, + 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, + 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, + 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, + 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62, 30,132, 27,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63,166,235,149, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,212, 60,173, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, + 0,160, 32,182,252, 5,136,190, 43, 33, 3, 62,235,135, 23, 63, 0, 0, 96, 53,215,104, 25,196,133,132,135, 67, 37, 9,167,195, +136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, + 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62, 30,132, 27,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63,166,235,149, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,212, 60,173, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 86, 45, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,107,227, 29, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 86,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,120,224, 20, 6, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62, -237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 2, 0, 1, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 40,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, 8, 8,128, 0, + 0, 0, 12, 66, 0, 0,128, 63, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 40,226, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,136,232, 20, 6, 0, 0, 0, 0,152,212, 20, 6, + 0, 0, 0, 0,120,168, 20, 6, 0, 0, 0, 0,248,171, 20, 6, 0, 0, 0, 0,104,172, 20, 6, 0, 0, 0, 0,136,171, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 18, 18,240, 5, +104, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,230, 20, 6, 0, 0, 0, 0,184,230, 20, 6, + 0, 0, 0, 0, 24,227, 20, 6, 0, 0, 0, 0,136,228, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,227, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136,228, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0,248, 40,215, 3, 0, 0, 0, 0,132, 0, 0, 0, - 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, +239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, -205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 79, 66, 0, 0, -112, 5, 0, 0,184,219,217, 3, 0, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0,168,225,217, 3, 0, 0, 0, 0,200,213,217, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,228, 20, 6, + 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0,224,189, 68, 0, 0, 0, 0, 0, 0, 51, 67, 0, 0, 0, 0, 0,224,187, 68, 0, 0, 0, 0, 0, 0,167, 67,223, 5, 0, 0, +240, 5, 0, 0, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +222, 5, 0, 0, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,240, 5, 78, 1,223, 5, 78, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 78, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,229, 20, 6, + 0, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,104,230, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,104,230, 20, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,136, 1, 0, 0,184,230, 20, 6, 0, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,229, 20, 6, 0, 0, 0, 0, +248,229, 20, 6, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 0, 0, 8, 4, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,136,232, 20, 6, 0, 0, 0, 0, +214, 0, 0, 0, 1, 0, 0, 0, 72,239, 20, 6, 0, 0, 0, 0, 40,226, 20, 6, 0, 0, 0, 0, 72,173, 20, 6, 0, 0, 0, 0, + 24,171, 20, 6, 0, 0, 0, 0,168,170, 20, 6, 0, 0, 0, 0,184,173, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 5, 0, 0,126, 7, 0, 0,237, 2, 0, 0,167, 3, 0, 0, 3, 3,142, 1,187, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,236, 20, 6, 0, 0, 0, 0, 88,236, 20, 6, 0, 0, 0, 0,120,233, 20, 6, 0, 0, 0, 0, +232,234, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120,233, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, +232,234, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,199, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,198, 67, 0, 0,200, 65, 0,128,198, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 0, 10, 0,142, 1, 26, 0,142, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 5, 0, 0,126, 7, 0, 0,237, 2, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +142, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232,234, 20, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,233, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,244,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,190, 67, 0, 0, 15,195, 0, 0, 0, 0,125, 1, 0, 0,142, 1, 0, 0, 18, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,124, 1, 0, 0, 18, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 12, 4, 6, 0,142, 1,161, 0,125, 1,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 5, 0, 0,126, 7, 0, 0, 7, 3, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +142, 1,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 1, 0, 0, 88,236, 20, 6, 0, 0, 0, 0,183, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,237, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, +184,237, 20, 6, 0, 0, 0, 0,237, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 24,238, 20, 6, 0, 0, 0, 0, + 68, 65, 84, 65,224, 0, 0, 0, 24,238, 20, 6, 0, 0, 0, 0,236, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 8,110, 21, 6, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, + 8,110, 21, 6, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +152,136, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,146, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +168,200, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,159, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +248,181, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,153, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +216,131, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +200,130, 21, 6, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 8,110, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 72,239, 20, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,232, 20, 6, 0, 0, 0, 0, +248,171, 20, 6, 0, 0, 0, 0, 56,170, 20, 6, 0, 0, 0, 0, 40,174, 20, 6, 0, 0, 0, 0,216,172, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0,105, 1, 0, 0,167, 3, 0, 0, 9, 9,248, 2, 63, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,243, 20, 6, 0, 0, 0, 0, 24,243, 20, 6, 0, 0, 0, 0, + 56,240, 20, 6, 0, 0, 0, 0,168,241, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,240, 20, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0,168,241, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 62, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 61, 68, 0, 0,200, 65, 0,192, 61, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,248, 2, 26, 0,248, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0,105, 1, 0, 0,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,241, 20, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,240, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, + 0, 0, 0, 0, 0,192, 22, 68,248,150, 23, 68, 8, 41,100, 68, 46,224, 62, 67,233, 15,206, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0, + 0, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, + 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 2, 37, 2,248, 2, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 2, 0, 0,131, 1, 0, 0,167, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 2, 0, 0, 24,243, 20, 6, 0, 0, 0, 0, +186, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, +231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, 8, 1, 0, 0,152,246, 20, 6, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, +184, 61, 21, 6, 0, 0, 0, 0, 40,167, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,247, 20, 6, 0, 0, 0, 0, +248,250, 20, 6, 0, 0, 0, 0,104,251, 20, 6, 0, 0, 0, 0,200,255, 20, 6, 0, 0, 0, 0, 56, 0, 21, 6, 0, 0, 0, 0, + 88, 44, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,247, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, + 88,248, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 88,248, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,200,248, 20, 6, 0, 0, 0, 0, +232,247, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +200,248, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0, 88,248, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 5, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0, +211, 0, 0, 0, 1, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0,200,248, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +126, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, + 24,250, 20, 6, 0, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, +168,249, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136,250, 20, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 3,234, 3, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0, +211, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,251, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +216,251, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,248, 20, 6, 0, 0, 0, 0,200,248, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,251, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, + 72,252, 20, 6, 0, 0, 0, 0,104,251, 20, 6, 0, 0, 0, 0, 88,248, 20, 6, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,252, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +184,252, 20, 6, 0, 0, 0, 0,216,251, 20, 6, 0, 0, 0, 0,200,248, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,252, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, + 40,253, 20, 6, 0, 0, 0, 0, 72,252, 20, 6, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,253, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +152,253, 20, 6, 0, 0, 0, 0,184,252, 20, 6, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,253, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, + 8,254, 20, 6, 0, 0, 0, 0, 40,253, 20, 6, 0, 0, 0, 0,232,247, 20, 6, 0, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,254, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +120,254, 20, 6, 0, 0, 0, 0,152,253, 20, 6, 0, 0, 0, 0,232,247, 20, 6, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,254, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +232,254, 20, 6, 0, 0, 0, 0, 8,254, 20, 6, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,254, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, + 88,255, 20, 6, 0, 0, 0, 0,120,254, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,255, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, +200,255, 20, 6, 0, 0, 0, 0,232,254, 20, 6, 0, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,255, 20, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,255, 20, 6, 0, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 56, 0, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, + 8, 4, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0, 88,248, 20, 6, 0, 0, 0, 0, +200,248, 20, 6, 0, 0, 0, 0, 24,250, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, +235, 3, 0, 0, 5, 4, 0, 0, 7, 7,127, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 61, 21, 6, 0, 0, 0, 0, 40, 61, 21, 6, 0, 0, 0, 0, 40, 1, 21, 6, 0, 0, 0, 0,152, 2, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 40, 1, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,152, 2, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,239, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,239, 68, 0, 0,200, 65, + 0,192,239, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,127, 7, + 26, 0,127, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0, +235, 3, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,152, 2, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40, 1, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 4, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 8, 4, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 88, 44, 21, 6, 0, 0, 0, 0, + 56, 0, 21, 6, 0, 0, 0, 0,232,247, 20, 6, 0, 0, 0, 0,168,249, 20, 6, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, +248,250, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0,233, 3, 0, 0, + 6, 6,200, 3,234, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 10, 21, 6, 0, 0, 0, 0, +232, 10, 21, 6, 0, 0, 0, 0,248, 4, 21, 6, 0, 0, 0, 0,120, 9, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248, 4, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,104, 6, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,215, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,114, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,113, 68, 0, 0,200, 65, 0,192,113, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,200, 3, 26, 0,200, 3, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104, 6, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,120, 9, 21, 6, 0, 0, 0, 0,248, 4, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254,255,115,196, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,207, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,208, 3,203, 0,208, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,233, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,208, 3, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 7, 21, 6, 0, 0, 0, 0,216, 7, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +216, 7, 21, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,255,202, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 9, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 6, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, + 51, 51, 43,191,154,153,213, 63, 51, 51,131,191,154,153, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,208, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 0, 0, 0,199, 3, 0, 0, 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +236, 2,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 33, 0, 0,232, 10, 21, 6, 0, 0, 0, 0,184, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, +154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 88, 44, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 21, 6, 0, 0, 0, 0,248,250, 20, 6, 0, 0, 0, 0,136,250, 20, 6, 0, 0, 0, 0, + 24,250, 20, 6, 0, 0, 0, 0, 56,249, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,126, 7, 0, 0, + 0, 0, 0, 0,233, 3, 0, 0, 1, 1,182, 3,234, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120, 59, 21, 6, 0, 0, 0, 0,120, 59, 21, 6, 0, 0, 0, 0, 72, 45, 21, 6, 0, 0, 0, 0, 72, 54, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 72, 45, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,184, 46, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,113, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,109, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64,109, 68, 0, 0,200, 65, + 0, 64,109, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,182, 3, + 26, 0,182, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,126, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182, 3, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184, 46, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,200, 49, 21, 6, 0, 0, 0, 0, + 72, 45, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 0, 0, 86,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 0, 86,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 87, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, + 88, 3,143, 0, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,104, 4, 0, 0, +146, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 88, 3, 0, 0, 5, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 48, 21, 6, 0, 0, 0, 0, 40, 48, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 40, 48, 21, 6, 0, 0, 0, 0,213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84, +111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233,253,143, 0,255, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 49, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0,216, 52, 21, 6, 0, 0, 0, 0,184, 46, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, + 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,201, 3, 0, 0,104, 4, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 51, 21, 6, 0, 0, 0, 0, 56, 51, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 56, 51, 21, 6, 0, 0, 0, 0, +213, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216, 52, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 72, 54, 21, 6, 0, 0, 0, 0, +200, 49, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, +255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, + 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126, 7, 0, 0,126, 7, 0, 0, + 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 72, 54, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 52, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 4, 0, 0,126, 7, 0, 0, + 26, 0, 0, 0,233, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 3,208, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 55, 21, 6, 0, 0, 0, 0, + 68, 65, 84, 65,112, 3, 0, 0,184, 55, 21, 6, 0, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 72,246,172, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63,185,214, 13, 63,208,249,224,190, + 48,180, 81,191,184,158, 81,191,189,188,157, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,241,213,146,188,206,156,122, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64,121, 92,155, 62,151,198, 44, 63, +192,214, 32,188, 0, 0, 40,180,195, 15,188,190,132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64, +181,148,248,192,203,247,159,192,233, 74, 87, 65,247, 46,190,192, 88,106,234, 64, 45, 8,160, 64, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63,185,214, 13, 63,208,249,224,190, + 48,180, 81,191,184,158, 81,191,189,188,157, 63,140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62,241,213,146,188,206,156,122, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0,100, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,201,250, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,201,250, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,201,250, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,114,145,245, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 1, 0, 0,120, 59, 21, 6, 0, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65,205,204, 76, 62, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, +104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 3, 0, + 8, 8,128, 0, 0, 0, 12, 66, 0, 0,128, 63,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 10, 0, 7, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0, 8, 1, 0, 0,184, 61, 21, 6, 0, 0, 0, 0,210, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,246, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, + 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 63, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, + 72, 68, 21, 6, 0, 0, 0, 0,184, 75, 21, 6, 0, 0, 0, 0, 40, 76, 21, 6, 0, 0, 0, 0,136,101, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 8, 63, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,120, 63, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +120, 63, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, 8, 63, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, +211, 0, 0, 0, 1, 0, 0, 0, 88, 64, 21, 6, 0, 0, 0, 0,120, 63, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 4,222, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88, 64, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, +200, 64, 21, 6, 0, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0, + 88, 64, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 56, 65, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 4,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0, +211, 0, 0, 0, 1, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 4, 92, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, +136, 66, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0, + 24, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2,195, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +248, 66, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, +211, 0, 0, 0, 1, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 2, 92, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0,211, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 68, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 68, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184, 68, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 63, 21, 6, 0, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184, 68, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 40, 69, 21, 6, 0, 0, 0, 0, + 72, 68, 21, 6, 0, 0, 0, 0,120, 63, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40, 69, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,152, 69, 21, 6, 0, 0, 0, 0, +184, 68, 21, 6, 0, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152, 69, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 8, 70, 21, 6, 0, 0, 0, 0, + 40, 69, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8, 70, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,120, 70, 21, 6, 0, 0, 0, 0, +152, 69, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120, 70, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,232, 70, 21, 6, 0, 0, 0, 0, + 8, 70, 21, 6, 0, 0, 0, 0, 8, 63, 21, 6, 0, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232, 70, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 88, 71, 21, 6, 0, 0, 0, 0, +120, 70, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88, 71, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,200, 71, 21, 6, 0, 0, 0, 0, +232, 70, 21, 6, 0, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200, 71, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 56, 72, 21, 6, 0, 0, 0, 0, + 88, 71, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56, 72, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,168, 72, 21, 6, 0, 0, 0, 0, +200, 71, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168, 72, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 24, 73, 21, 6, 0, 0, 0, 0, + 56, 72, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24, 73, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,136, 73, 21, 6, 0, 0, 0, 0, +168, 72, 21, 6, 0, 0, 0, 0, 88, 64, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136, 73, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,248, 73, 21, 6, 0, 0, 0, 0, + 24, 73, 21, 6, 0, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248, 73, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,104, 74, 21, 6, 0, 0, 0, 0, +136, 73, 21, 6, 0, 0, 0, 0, 8, 63, 21, 6, 0, 0, 0, 0, 88, 64, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104, 74, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,216, 74, 21, 6, 0, 0, 0, 0, +248, 73, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216, 74, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 72, 75, 21, 6, 0, 0, 0, 0, +104, 74, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 75, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0,184, 75, 21, 6, 0, 0, 0, 0, +216, 74, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184, 75, 21, 6, 0, 0, 0, 0,212, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 75, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 40, 76, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,248, 79, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0,120, 63, 21, 6, 0, 0, 0, 0,232, 63, 21, 6, 0, 0, 0, 0, + 56, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,196, 2, 0, 0,222, 2, 0, 0, + 7, 7,241, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,109, 21, 6, 0, 0, 0, 0, +120,109, 21, 6, 0, 0, 0, 0, 24, 77, 21, 6, 0, 0, 0, 0,136, 78, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 24, 77, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,136, 78, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,196, 2, 0, 0,221, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136, 78, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 77, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0,222, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +248, 79, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,232, 84, 21, 6, 0, 0, 0, 0, 40, 76, 21, 6, 0, 0, 0, 0, + 8, 63, 21, 6, 0, 0, 0, 0, 24, 66, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, 88, 64, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 15, 15,241, 4, 68, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 83, 21, 6, 0, 0, 0, 0,200, 83, 21, 6, 0, 0, 0, 0, +232, 80, 21, 6, 0, 0, 0, 0, 88, 82, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 80, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 88, 82, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,140, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 82, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 80, 21, 6, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, + 18, 0, 0, 0, 41, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,241, 4, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 26, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,200, 83, 21, 6, 0, 0, 0, 0, +190, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,107,205, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 48,218, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +232, 84, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,216, 92, 21, 6, 0, 0, 0, 0,248, 79, 21, 6, 0, 0, 0, 0, + 24, 66, 21, 6, 0, 0, 0, 0,248, 66, 21, 6, 0, 0, 0, 0,168, 65, 21, 6, 0, 0, 0, 0,216, 67, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 69, 0, 0, 0, 91, 1, 0, 0, 8, 8,241, 4, 23, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 91, 21, 6, 0, 0, 0, 0,152, 91, 21, 6, 0, 0, 0, 0, +216, 85, 21, 6, 0, 0, 0, 0, 40, 90, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 85, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 72, 87, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 26, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,158, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0,158, 68, 0, 0,200, 65, 0, 0,158, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,241, 4, 26, 0,241, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0, 69, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 12,217, 3, - 0, 0, 0, 0,168,182,117, 3, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 72, 87, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0,184, 88, 21, 6, 0, 0, 0, 0,216, 85, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, + 0, 0,125,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 1, 0,125,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,253, 0,203, 0,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,240, 4, 0, 0, 95, 0, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0,253, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 0, 0, 7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, - 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, -143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 1, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,184, 88, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 40, 90, 21, 6, 0, 0, 0, 0, 72, 87, 21, 6, 0, 0, 0, 0, 0, 0,112,196, 0, 0,112, 68, + 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 91, 1, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 90, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 88, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,252, 0, 0, 0, 18, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 20, 4, 0, 0, + 18, 0, 0, 0,252, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 63, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 21, 4,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 95, 0, 0, 0, 91, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 4,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,152, 91, 21, 6, 0, 0, 0, 0, +180, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +216, 92, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0,136,101, 21, 6, 0, 0, 0, 0,232, 84, 21, 6, 0, 0, 0, 0, +248, 66, 21, 6, 0, 0, 0, 0,200, 64, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, 93, 1, 0, 0,194, 2, 0, 0, 2, 2, 48, 2,102, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 99, 21, 6, 0, 0, 0, 0,136, 99, 21, 6, 0, 0, 0, 0, +200, 93, 21, 6, 0, 0, 0, 0, 24, 98, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200, 93, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 56, 95, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89, 68, + 0, 0, 0, 0, 0, 0,208, 65,154,216, 65, 55, 0, 0, 12, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 11, 68, 0, 0,200, 65, 0,192, 11, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 48, 2, 26, 0, 48, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, 93, 1, 0, 0,118, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56, 95, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0,168, 96, 21, 6, 0, 0, 0, 0,200, 93, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168, 96, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 24, 98, 21, 6, 0, 0, 0, 0, 56, 95, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, 47, 2, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24, 98, 21, 6, 0, 0, 0, 0, +215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 96, 21, 6, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, + 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 86, 1, 0, 0, + 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 87, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 47, 2, 0, 0,119, 1, 0, 0,194, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0,136, 99, 21, 6, 0, 0, 0, 0, +178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,100, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,112, 0, 0, 0, +200,100, 21, 6, 0, 0, 0, 0, 37, 1, 0, 0, 1, 0, 0, 0, 8,110, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,136,101, 21, 6, 0, 0, 0, 0,214, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216, 92, 21, 6, 0, 0, 0, 0,104, 67, 21, 6, 0, 0, 0, 0,136, 66, 21, 6, 0, 0, 0, 0, 56, 65, 21, 6, 0, 0, 0, 0, +168, 65, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0, 93, 1, 0, 0,194, 2, 0, 0, + 8, 8,192, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,108, 21, 6, 0, 0, 0, 0, + 56,108, 21, 6, 0, 0, 0, 0,120,102, 21, 6, 0, 0, 0, 0,200,106, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +120,102, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,232,103, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 48, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 47, 68, 0, 0,200, 65, 0,192, 47, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,192, 2, 26, 0,192, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0, 93, 1, 0, 0,118, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +232,103, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 88,105, 21, 6, 0, 0, 0, 0,120,102, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4, 0, 0,240, 4, 0, 0,119, 1, 0, 0,194, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88,105, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0,200,106, 21, 6, 0, 0, 0, 0,232,103, 21, 6, 0, 0, 0, 0, + 0, 0,240,195, 0, 0,240, 67, 0, 0,135,195, 0, 0,135, 67,238, 33,143,196,238, 33,143, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,191, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, +172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,192, 2, 76, 1,192, 2, 76, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 2, 0, 0,240, 4, 0, 0,119, 1, 0, 0,194, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,106, 21, 6, 0, 0, 0, 0,215, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,105, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0, 0, 63, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, + 56,108, 21, 6, 0, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 0, 0,216, 11, 0, 0, 8,110, 21, 6, 0, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0, +116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,122, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, +152,136, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,122, 21, 6, 0, 0, 0, 0,216,123, 21, 6, 0, 0, 0, 0, +248,122, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,124, 21, 6, 0, 0, 0, 0,120,105, 34,109,161,127, 0, 0, 17, 2, 24, 0, 90, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0, 68,172, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 24, 0, 17, 0, 0, 0, + 90, 0, 1, 0, 81, 0, 0, 0, 23, 0, 33, 0, 2, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,128, 21, 6, 0, 0, 0, 0, 40,128, 21, 6, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, +173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 54, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,205, 89,108,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,212, 21, 6, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,205,204,204, 61,154,153,153, 62,205,204, 76, 62,219, 15, 73, 63,102,102,102, 63, + 0, 0, 0, 64,154,153, 25, 63, 0, 0, 64, 65,102,102,166, 63, 0, 0, 0, 65, 0, 0,160, 65, 6, 0, 0, 0, 0, 0,192, 64, + 0, 0,128, 63, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 1, 0,128, 0, 5, 0,218, 0, 0, 0, + 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,128, 0, 0, 0, 40,122, 21, 6, 0, 0, 0, 0, + 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,122, 21, 6, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0, +104,123, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,216, 2,222, 1, + 8,146, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,123, 21, 6, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0, +216,123, 21, 6, 0, 0, 0, 0,248,122, 21, 6, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,173, 3, 35, 3, + 72,153, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,123, 21, 6, 0, 0, 0, 0,143, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104,123, 21, 6, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,161, 0, 65, 2, +104,139, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65,232, 1, 0, 0, 72,124, 21, 6, 0, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, +120,126, 21, 6, 0, 0, 0, 0,248,126, 21, 6, 0, 0, 0, 0,120,127, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 1, 0, 0, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, + 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, + 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61, +102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 0,204,197,121, 63, 0, 0, 0, 63, 35, 0, 0, 0,204,197,121, 63, + 0, 0, 0, 63, 17, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,120,126, 21, 6, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, +136, 45, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, +248,126, 21, 6, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,127, 21, 6, 0, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, +120,158, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0,155, 9, 25, 67,190, 23,237, 64, 75, 1,147, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,120, 0, 0, 0, 40,128, 21, 6, 0, 0, 0, 0,149, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0, +255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,200, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, + 22, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 42,215, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,243,206, 3, 0, 0, 0, 0,136,250,206, 3, 0, 0, 0, 0, 25, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, + 0, 0, 0, 63, 0, 0, 0, 66, 0, 0,144, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, 16, 2, 0, 0,216,131, 21, 6, 0, 0, 0, 0, + 36, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,136, 12,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,168,182,117, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,152, 0, 0, 0, 24, 42,215, 3, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66, +154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 56,134, 21, 6, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, + 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 11, 3, 0, 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,112, 5, 0, 0,168,225,217, 3, 0, 0, 0, 0, -129, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,219,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,136, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, + 56,134, 21, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, +200,135, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,135, 21, 6, 0, 0, 0, 0, +117, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,136, 21, 6, 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 0, 0, 24, 2, 0, 0,152,136, 21, 6, 0, 0, 0, 0,142, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, +205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, + 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, + 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,138, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,138, 21, 6, 0, 0, 0, 0, + 12, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,112, 5, 0, 0,104,139, 21, 6, 0, 0, 0, 0, +129, 0, 0, 0, 1, 0, 0, 0, 8,146, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,209,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,130, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, - 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63, -112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, + 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, + 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, - 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, - 1, 0,128, 39, 0, 0,128, 63, 54,236,148,190,221,102, 69,191, 38,255, 16, 63, 0, 0, 0, 0, 24,134,116, 63, 57,174, 76,190, -239,161, 95, 62, 0, 0, 0, 0,237, 13, 98,189, 35,194, 26, 63,166,111, 75, 63, 0, 0, 0, 0,209, 19, 13, 63,241, 65,102,190, - 10, 10,231,192, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, + 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, + 1, 0,128,168, 0, 0,128, 63,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190, +152, 9, 52,193, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, -169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 1, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, +187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,231,217, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,145, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0, -200,231,217, 3, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 40,145, 21, 6, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 77, 65, 0, 0,128, 3, 0, 0,152, 7,218, 3, 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 79, 66, 0, 0,112, 5, 0, 0, 8,146, 21, 6, 0, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, + 72,153, 21, 6, 0, 0, 0, 0,104,139, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, - 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168,122,142,109,161,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,151, 21, 6, 0, 0, 0, 0, 24,152, 21, 6, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 0, 0, 7, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63, +205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 5, 0, 1, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,152, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 74, 34,109,161,127, 0, 0, + 56, 83, 34,109,161,127, 0, 0, 25, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,200,151, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 24,152, 21, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0,104,152, 21, 6, 0, 0, 0, 0,132, 0, 0, 0, + 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61, +205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0, +112, 5, 0, 0, 72,153, 21, 6, 0, 0, 0, 0,129, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,146, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,131, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,229,123, 38, 63, + 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, + 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, + 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, + 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 54,236,148,190,221,102, 69,191, 38,255, 16, 63, + 0, 0, 0, 0, 24,134,116, 63, 57,174, 76,190,239,161, 95, 62, 0, 0, 0, 0,237, 13, 98,189, 35,194, 26, 63,166,111, 75, 63, + 0, 0, 0, 0,209, 19, 13, 63,241, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 1, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63,152, 11,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8,159, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,120,216, 3, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63, -111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,152, 11,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 68, 65, 84, 65,152, 0, 0, 0, 8,159, 21, 6, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 77, 65, 0, 0,128, 3, 0, 0,232,159, 21, 6, + 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 90, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0,152,120,216, 3, 0, 0, 0, 0, - 12, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 53, 0, 53, 0, - 88, 13,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 88, 13,218, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, - 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, - 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, - 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, - 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, - 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, - 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,153, - 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, - 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, - 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 37, 37, 37,255, - 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, - 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, - 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, - 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, - 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, - 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, - 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, - 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, - 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, - 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, - 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, - 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, - 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, - 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, - 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, - 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, - 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, - 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, - 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, - 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, - 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, - 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, - 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, - 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,100,100,100,255, -102,102,102,255,102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, - 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, - 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, - 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,107,107,107,255, -109,109,109,255,109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,100,100,100,255, - 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, - 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, - 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,114,114,114,255, -116,116,116,255,116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,107,107,107,255, -104,104,104,255,100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, - 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, - 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,121,121,121,255, -122,122,122,255,123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,114,114,114,255, -110,110,110,255,106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, - 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, - 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,127,127,127,255, -129,129,129,255,130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,125,125,125,255, -120,120,120,255,113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, - 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, - 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,134,134,134,255, -135,135,135,255,137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,142,142,142,255, -133,133,133,255,124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, - 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, - 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,140,140,140,255, -142,142,142,255,144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,168,168,168,255, -153,153,153,255,137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, - 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, - 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,145,145,145,255, -148,148,148,255,151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,204,204,204,255, -179,179,179,255,154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, - 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, - 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,150,150,150,255, -153,153,153,255,158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,237,237,237,255, -204,204,204,255,170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255, 97, 97, 97,255, - 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, - 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,154,154,154,255, -158,158,158,255,163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,255,255,255,255, -220,220,220,255,181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,100,100,100,255, - 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, - 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,157,157,157,255, -161,161,161,255,165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,250,250,250,255, -217,217,217,255,181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,103,103,103,255, - 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, - 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,159,159,159,255, -163,163,163,255,167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,224,224,224,255, -200,200,200,255,173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,105,105,105,255, - 98, 98, 98,255, 90, 90, 90,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,160,160,160,255, -164,164,164,255,167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,195,195,195,255, -180,180,180,255,163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,107,107,107,255, - 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,157,157,157,255, -164,164,164,255,167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,174,174,174,255, -165,165,165,255,155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,107,107,107,255, - 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255, -160,160,160,255,166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,164,164,164,255, -158,158,158,255,151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,106,106,106,255, - 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 80,153, -150,150,150,255,160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,160,160,160,255, -155,155,155,255,149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,105,105,105,255, - 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, + 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, + 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, 67, 0, 64, 3, + 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, + 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,184,163, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,165, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,184,163, 21, 6, 0, 0, 0, 0, 25, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,181, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, + 40, 0, 0, 0, 56,165, 21, 6, 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 53, 0, 53, 0,168,165, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 0, 16, 0, 0,168,165, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, + 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, + 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, + 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, + 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, + 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, + 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, + 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, + 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, + 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, + 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, + 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, + 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, + 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, + 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, + 11, 11, 11,255, 5, 5, 5,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, + 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, + 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, + 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, + 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, + 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, + 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, + 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, + 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, + 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, + 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, + 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, + 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, + 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, + 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, + 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, + 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, + 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, + 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, + 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, + 92, 92, 92,255, 97, 97, 97,255,100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, + 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, + 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, + 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255, +100,100,100,255,104,104,104,255,107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255, +106,106,106,255,103,103,103,255,100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, + 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, + 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255, +107,107,107,255,112,112,112,255,114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255, +112,112,112,255,110,110,110,255,107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, + 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, + 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255, +114,114,114,255,118,118,118,255,121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255, +120,120,120,255,118,118,118,255,114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, + 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, + 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255, +120,120,120,255,125,125,125,255,127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255, +131,131,131,255,129,129,129,255,125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, + 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, + 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255, +126,126,126,255,131,131,131,255,134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255, +149,149,149,255,148,148,148,255,142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, + 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, + 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255, +131,131,131,255,136,136,136,255,140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255, +176,176,176,255,177,177,177,255,168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255, +101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, + 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255, +136,136,136,255,142,142,142,255,145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255, +212,212,212,255,216,216,216,255,204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255, +106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, + 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255, +140,140,140,255,146,146,146,255,150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255, +246,246,246,255,254,254,254,255,237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255, +110,110,110,255,103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, + 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255, +142,142,142,255,149,149,149,255,154,154,154,255,158,158,158,255,163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255, +255,255,255,255,255,255,255,255,255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255, +113,113,113,255,106,106,106,255,100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, + 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255, +143,143,143,255,152,152,152,255,157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255, +253,253,253,255,255,255,255,255,250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255, +117,117,117,255,110,110,110,255,103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, + 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204, +141,141,141,255,153,153,153,255,159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255, +228,228,228,255,234,234,234,255,224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255, +119,119,119,255,112,112,112,255,105,105,105,255, 98, 98, 98,255, 90, 90, 90,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, + 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51, +134,134,134,255,151,151,151,255,160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255, +200,200,200,255,202,202,202,255,195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255, +121,121,121,255,114,114,114,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, + 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 49, 49,102,145,145,145,255,157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255, +180,180,180,255,179,179,179,255,174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255, +122,122,122,255,115,115,115,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, + 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255, +169,169,169,255,167,167,167,255,164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255, +123,123,123,255,115,115,115,255,106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, + 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255, +166,166,166,255,163,163,163,255,160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255, +121,121,121,255,113,113,113,255,105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, + 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255, +162,162,162,255,160,160,160,255,157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255, +119,119,119,255,110,110,110,255,101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 78, 78, 78,153,147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,157,157,157,255, -152,152,152,255,147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,101,101,101,255, - 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255, +155,155,155,255,154,154,154,255,152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255, +114,114,114,255,104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,152,152,152,255, -147,147,147,255,142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255, 93, 93, 93,255, - 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204, +137,137,137,255,140,140,140,255,140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255, +102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,140,140,140,255, -137,137,137,255,133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, - 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, - 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, + 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,168, 1, 0, 0,248,181, 21, 6, + 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,168, 1, 0, 0,216, 29,218, 3, 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,183, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,183, 21, 6, + 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 16, 0, 15, 0, 88,184, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 88,184, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,121,216, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,121,216, 3, 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 16, 0, 15, 0, 8, 32,218, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 8, 32,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6008,54 +6014,52 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 0, 0,232, 4, 0, 0,168,200, 21, 6, 0, 0, 0, 0, 50, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,205, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,221, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,217, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,208, 21, 6, 0, 0, 0, 0,184,211, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77, 69, 0, 0,232, 4, 0, 0,136, 48,218, 3, 0, 0, 0, 0, 50, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 40,206, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,209, 21, 6, 0, 0, 0, 0,255,255,255,255, +255,255,255,255,255,255,255,255, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 13,217, 3, 0, 0, 0, 0,200,218,208, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 98,198, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 2,211, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,232,217, 3, 0, 0, 0, 0, - 24, 7,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,122,209, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 53,218, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,218, 21, 6, 0, 0, 0, 0,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,136, 56,218, 3, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,156,173, 15, 0, 0, 0, 0, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,255,255,255,255, 1, 0, 0, 0,255,255,255,255, -255,255,255,255, 2, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255, 3, 0, 0, 0, 5, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 64,218, 3, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232,214, 21, 6, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 61,218, 3, 0, 0, 0, 0, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255, 1, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255, 2, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 67, 0, 30, 0, 6, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 0, 0, 0, 24, 13,217, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,152, 7,218, 3, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 2, 0, 0,248, 53,218, 3, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, + 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 67, 0, 30, 0, 6, 0, 1, 0, 1, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0,216,205, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,232,159, 21, 6, 0, 0, 0, 0, 68, 65, 84, 65, 8, 2, 0, 0, 40,206, 21, 6, 0, 0, 0, 0,124, 1, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,232,217, 3, 0, 0, 0, 0, + 0, 0, 0, 0,120,208, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6068,17 +6072,17 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,208, 21, 6, 0, 0, 0, 0, 56, 0, 0, 0, + 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182, 1, 0, 0, 0,128, 63, 0, 0,128,191, + 0, 0,128,191,230, 73, 26,182, 26,182, 1, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182, 1, 0, +250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182, 1, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63, +230, 73,230, 73,230, 73, 1, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73, 1, 0, 3, 0,128,191, +250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73, 1, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, +230, 73, 1, 0, 68, 65, 84, 65, 8, 2, 0, 0,104,209, 21, 6, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,232,232,217, 3, 0, 0, 0, 0, 56, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, - 0, 0,128,191,230, 73,230, 73, 26,182, 1, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182, 1, 0, - 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182, 1, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, - 26,182,230, 73, 26,182, 1, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73, 1, 0,245,255,127, 63, - 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73, 1, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182, -230, 73, 1, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73, 1, 0, 68, 65, 84, 65, 8, 2, 0, 0, -136, 56,218, 3, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,211, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 7,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6091,37 +6095,40 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, - 24, 7,163, 3, 0, 0, 0, 0, 53, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, - 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, - 68, 65, 84, 65, 8, 2, 0, 0, 72,156,173, 15, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,184,211, 21, 6, 0, 0, 0, 0, 53, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, + 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, + 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, 8, 2, 0, 0,232,214, 21, 6, 0, 0, 0, 0,124, 1, 0, 0, + 5, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 78, 71,111,110, 32, 70, 97, 99,101, 45, 86,101,114,116,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,232,217, 21, 6, 0, 0, 0, 0, 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 71,111,110, 32, 70, 97, 99,101, 45, 86,101,114,116,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,205,203, 15, 0, 0, 0, 0, - 6, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,217, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,122,209, 15, 0, 0, 0, 0, 9, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,136,205, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 8, 2, 0, 0,168, 61,218, 3, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 32, 70, 97, 99, -101, 45, 86,101,114,116,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 2,211, 3, 0, 0, 0, 0, - 26, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 78, 71,111,110, 32, 70, 97, 99,101, 45, 86,101,114,116,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0,232,217, 21, 6, 0, 0, 0, 0, 59, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 5, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, + 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, + 9, 0, 0, 0, 68, 65, 84, 65, 8, 2, 0, 0,248,218, 21, 6, 0, 0, 0, 0,124, 1, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 71,111,110, + 32, 70, 97, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,221, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 98,198, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6131,2364 +6138,2284 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,136, 2,211, 3, 0, 0, 0, 0, 62, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 68, 65, 84, 65,192, 0, 0, 0, - 56, 98,198, 3, 0, 0, 0, 0, 59, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 2, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, - 6, 0, 0, 0, 10, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, - 5, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 10, 0, 0, 0, - 6, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, - 7, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 9, 0, 0, 0, 68, 65, 84, 65, 8, 2, 0, 0, 56, 64,218, 3, 0, 0, 0, 0, -124, 1, 0, 0, 5, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 78, 71,111,110, 32, 70, 97, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200,218,208, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0, 72,221, 21, 6, 0, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, + 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 2, 0, 66, 82, 0, 0, 88, 6, 0, 0,216,221, 21, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 8,232, 21, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100, +100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248,229, 21, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,200,218,208, 3, 0, 0, 0, 0, - 58, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, - 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 2, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 66, 82, 0, 0, 88, 6, 0, 0,200, 66,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104, 75,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 96, 67,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104, 75,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,121,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,121,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0,200, 66,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 13, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8, 84,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,222, 21, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,248,229, 21, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,136,231, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,136,231, 21, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 8,232, 21, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,184,240, 21, 6, + 0, 0, 0, 0,216,221, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, +111, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,238, 21, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,192, 77,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8, 84,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,168,122,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,122,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200, 85,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 40, 77,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168, 92,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,160,232, 21, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,238, 21, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,240, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 56,240, 21, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,184,240, 21, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,104,249, 21, 6, + 0, 0, 0, 0, 8,232, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108, +117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,247, 21, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 96, 86,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168, 92,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88,123,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,123,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,104, 94,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0,200, 85,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,101,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 80,241, 21, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,247, 21, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,232,248, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,232,248, 21, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,104,249, 21, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 24, 2, 22, 6, + 0, 0, 0, 0,184,240, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,114, +117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8, 0, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0, 0, 95,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,101,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 8,124,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,124,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 8,103,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,168,205,210, 3, 0, 0, 0, 0,104, 94,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,109,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 0,250, 21, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8, 0, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,152, 1, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,152, 1, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,200, 10, 22, 6, + 0, 0, 0, 0,104,249, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, + 97,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 8, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,160,103,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,232,109,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,124,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184,124,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,168,205,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 8,103,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 32, 83,116,114,105,112,115, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 16, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,114,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,176, 2, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,184, 8, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 72, 10, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 72, 10, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200, 10, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,120, 19, 22, 6, + 0, 0, 0, 0, 24, 2, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, + 97,121, 32, 83,116,114,105,112,115, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104, 17, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0, 64,206,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,114,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,152, 62,171, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152, 62,171, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,168,111,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0,168,205,210, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,118,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 96, 11, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104, 17, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,248, 18, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,248, 18, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,120, 19, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 40, 28, 22, 6, + 0, 0, 0, 0,200, 10, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, +111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24, 26, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 64,112,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,136,118,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,104,125,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,125,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 72,120,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0,168,111,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114,101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 18, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,127,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 16, 20, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24, 26, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,168, 27, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,168, 27, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,216, 36, 22, 6, + 0, 0, 0, 0,120, 19, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,114, +101, 97,115,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 34, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,224,120,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40,127,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, 50,131,112, 63,218,243,127,191, 10,183,157,188, 24,126,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,126,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232,128,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 72,120,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,135,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,192, 28, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200, 34, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,228, 97,175,190, + 50,131,112, 63,218,243,127,191, 10,183,157,188, 88, 36, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 88, 36, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215, 35, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,216, 36, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,136, 45, 22, 6, + 0, 0, 0, 0, 40, 28, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97, +114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120, 43, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,128,129,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200,135,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,200,126,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,126,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,136,137,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0,232,128,218, 3, 0, 0, 0, 0, 0, 20, 1,160,255,255,255,255, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,146,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112, 37, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,120, 43, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 8, 45, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 8, 45, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,136, 45, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 56, 54, 22, 6, + 0, 0, 0, 0,216, 36, 22, 6, 0, 0, 0, 0, 0, 20, 1,160,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, + 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40, 52, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0, 32,138,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,146,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,127,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120,127,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,104,176,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0,136,137,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105,108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 20, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,148,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 35, 0, 0, 0, 0, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 32, 46, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40, 52, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,184, 53, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,184, 53, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,232, 62, 22, 6, + 0, 0, 0, 0,136, 45, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,105, +108,108, 47, 68,101,101,112,101,110, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216, 60, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0, 0,177,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,148,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 40,128,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,128,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 72,183,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0,104,176,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 21, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,149,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,208, 54, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216, 60, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,104, 62, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,104, 62, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232, 62, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,152, 71, 22, 6, + 0, 0, 0, 0, 56, 54, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, + 97,116,116,101,110, 47, 67,111,110,116,114, 97,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136, 69, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,224,183,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,149,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,216,128,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,128,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 40,190,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 72,183,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,151,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,128, 63, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,136, 69, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 24, 71, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 24, 71, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,152, 71, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 72, 80, 22, 6, + 0, 0, 0, 0,232, 62, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, + 97, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56, 78, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,192,190,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,151,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,136,129,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,129,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 8,197,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 40,190,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,153,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 48, 72, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 56, 78, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,200, 79, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,200, 79, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,248, 88, 22, 6, + 0, 0, 0, 0,152, 71, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110, +102,108, 97,116,101, 47, 68,101,102,108, 97,116,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232, 86, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, - 68, 65, 84, 65, 56, 1, 0, 0,160,197,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,153,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,130,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,130,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232,203,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 8,197,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 24, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,155,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 56, 1, 0, 0,224, 80, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,232, 86, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,120, 88, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,120, 88, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,248, 88, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,168, 97, 22, 6, + 0, 0, 0, 0, 72, 80, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97, +121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152, 95, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,128,204,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,155,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,232,130,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,130,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200,210,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0,232,203,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,156,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,144, 89, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152, 95, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 40, 97, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 40, 97, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,168, 97, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 88,106, 22, 6, + 0, 0, 0, 0,248, 88, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105, +103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 72,104, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 96,211,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,156,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,152,131,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,152,131,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,168,217,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0,200,210,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,158,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 64, 98, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 72,104, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216,105, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,216,105, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 88,106, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 8,115, 22, 6, + 0, 0, 0, 0,168, 97, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105, +120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,248,112, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 64,218,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,158,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 72,132,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 72,132,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,136,224,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0,168,217,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,160,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,240,106, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,248,112, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,136,114, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,136,114, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 8,115, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,184,123, 22, 6, + 0, 0, 0, 0, 88,106, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117, +108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,121, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 32,225,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,160,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248,132,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,248,132,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,184,212,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0,136,224,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117,100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 28, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,162,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,160,115, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,121, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,123, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 56,123, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,184,123, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,104,132, 22, 6, + 0, 0, 0, 0, 8,115, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 78,117, +100,103,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,130, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 80,213,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,162,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,168,133,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168,133,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200,219,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0,184,212,210, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 29, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,163,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 80,124, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,130, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,232,131, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,232,131, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,104,132, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 24,141, 22, 6, + 0, 0, 0, 0,184,123, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105, +110, 99,104, 47, 77, 97,103,110,105,102,121, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8,139, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, - 68, 65, 84, 65, 56, 1, 0, 0, 96,220,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,163,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 88,134,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 88,134,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,216,226,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0,200,219,210, 3, 0, 0, 0, 0,253, 21,192, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,111,108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 21, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,165,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 68, 65, 84, 65, 56, 1, 0, 0, 0,133, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 8,139, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,152,140, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,152,140, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 24,141, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,200,149, 22, 6, + 0, 0, 0, 0,104,132, 22, 6, 0, 0, 0, 0,253, 21,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,111, +108,105,115,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184,147, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 1, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,112,227,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,165,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 8,135,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 8,135,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232,233,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0,216,226,210, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,167,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 1, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0,176,141, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,184,147, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 72,149, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 72,149, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200,149, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,120,158, 22, 6, + 0, 0, 0, 0, 24,141, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, +114, 97,112,101, 47, 80,101, 97,107,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,104,156, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,128,234,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,167,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,184,135,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,184,135,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,248,240,210, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0,232,233,210, 3, 0, 0, 0, 0,168,205,210, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99,117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 31, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,169,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 20,174,199, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 96,150, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,104,156, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,248,157, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,248,157, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,120,158, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 40,167, 22, 6, + 0, 0, 0, 0,200,149, 22, 6, 0, 0, 0, 0,168,205,210, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83, 99, +117,108,112,116, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,165, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,144,241,210, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,169,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,104,136,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104,136,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,152,231,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0,248,240,210, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,170,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0,160,119, 78, 63, 0, 0,128, 63, + 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 16,159, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,165, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,168,166, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,168,166, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 40,167, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,216,175, 22, 6, + 0, 0, 0, 0,120,158, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200,173, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 48,232,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,170,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,137,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24,137,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,168,238,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0,152,231,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 33, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,172,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,192,167, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,200,173, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 88,175, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 88,175, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,216,175, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,136,184, 22, 6, + 0, 0, 0, 0, 40,167, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, +111,111,116,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120,182, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 64,239,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,172,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,200,137,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,200,137,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,184,245,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0,168,238,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 34, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,174,218, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0, 64, 63, + 0, 0, 64, 63, 0, 0, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,176, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,120,182, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 8,184, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 8,184, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,136,184, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 56,193, 22, 6, + 0, 0, 0, 0,216,175, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,110, + 97,107,101, 32, 72,111,111,107, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 40,191, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 80,246,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,174,218, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,120,138,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,120,138,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,200,252,218, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0,184,245,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,103,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 32,185, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 40,191, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,184,192, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,184,192, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 56,193, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,232,201, 22, 6, + 0, 0, 0, 0,136,184, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111, +102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,199, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0, 96,253,218, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,103,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40,139,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40,139,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,216, 3,219, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0,200,252,218, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 88,105,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,208,193, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,199, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61,104,201, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,104,201, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232,201, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,152,210, 22, 6, + 0, 0, 0, 0, 56,193, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, + 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,136,208, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,112, 4,219, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 88,105,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,216,139,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216,139,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,232, 10,219, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0,216, 3,219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,101,120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 24,107,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 12, 0, 35, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,128,202, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,136,208, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, + 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 24,210, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 24,210, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,152,210, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 72,219, 22, 6, + 0, 0, 0, 0,232,201, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,101, +120, 68,114, 97,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56,217, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, - 68, 65, 84, 65, 56, 1, 0, 0,128, 11,219, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 24,107,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,136,140,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,136,140,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,248, 17,219, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 8, 25,219, 3, 0, 0, 0, 0,232, 10,219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104,117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 38, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,216,108,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 35, 0, 0, 0, 4, 4, 0, 8, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 20,174,199, 62, 20,174,199, 62, 0, 0,128, 63, 68, 65, 84, 65, 56, 1, 0, 0, 48,211, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, 56,217, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,200,218, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,200,218, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 72,219, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0,248,227, 22, 6, + 0, 0, 0, 0,152,210, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,104, +117,109, 98, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,232,225, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 75, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,144, 18,219, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,216,108,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186, 56,141,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,141,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0, 8, 25,219, 3, 0, 0, 0, 0, -123, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 17,219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119,105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 39, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,110,219, 3, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 75, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,224,219, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,232,225, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186,120,227, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0,120,227, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 82, 0, 0, 88, 6, 0, 0,248,227, 22, 6, 0, 0, 0, 0,123, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72,219, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 84,119, +105,115,116, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,152,234, 22, 6, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 56, 1, 0, 0,160, 25,219, 3, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,110,219, 3, 0, 0, 0, 0, -119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, 46, 95,255,186,224,255,127,191,114, 97,255,186,232,141,216, 3, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,232,141,216, 3, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,112, 38, 0, 0, 96, 41,141, 67, 1, 0, 0, 0, -209, 0, 0, 0, 1, 0, 0, 0, 1, 8, 17, 1, 63, 6, 0, 0, 5, 0, 0, 0, 47,116,109,112, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8511,20 +8438,40 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, - 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97, -112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 75, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 0, 0, 0, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63,205,204,204, 62, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 62, 0, 0,128, 62, + 0, 0,128, 63, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,144,228, 22, 6, + 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,152,234, 22, 6, 0, 0, 0, 0,119, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,224,255,127,191, + 46, 95,255,186,224,255,127,191,114, 97,255,186, 40,236, 22, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 0, 0, 0, 40,236, 22, 6, 0, 0, 0, 0,117, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 62,215,163,112, 63, 0, 0, 0, 0, 0, 0, 64, 63,143,194,117, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 83, 69, 82,112, 38, 0, 0, 32,125, 29, 5, 0, 0, 0, 0,209, 0, 0, 0, 1, 0, 0, 0, 1, 8, 17, 1, + 63, 6, 0, 0, 5, 0, 0, 0, 47,116,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8535,7 +8482,6 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8548,6 +8494,9 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112, +111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, + 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8567,9 +8516,9 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8601,6 +8550,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8663,7 +8613,6 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8697,6 +8646,7 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8751,71 +8701,9 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, - 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, - 36, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 88,174,219, 3, 0, 0, 0, 0, - 88,174,219, 3, 0, 0, 0, 0,200,152,170, 3, 0, 0, 0, 0,200,152,170, 3, 0, 0, 0, 0,200,154,199, 3, 0, 0, 0, 0, -200,154,199, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,184,211,219, 3, 0, 0, 0, 0, 8,219,219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, - 25, 0, 0, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62, -205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 1, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 5, 0, -128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, - 10, 0, 50, 0, 20, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 60, 0, 0, 0, 0, 0, 2, 0, 2, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 68, 65, 84, 65,168, 36, 0, 0, - 88,174,219, 3, 0, 0, 0, 0,206, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,172,172,172,128,255,255,255,255, 0, 0, 0,255, 1, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,255,255,255,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, - 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, - 0, 0, 0,255,190,190,190,255,100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, -115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8823,2397 +8711,2492 @@ char datatoc_startup_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,170, 64,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 32,255,255,255, 75, 75, 75,255,204, 0,153,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 32, 0, 0,255, 0, 32, 0,255, 0, 0,128,255, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,200,255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255, 0, 0, 0, 0,250,250,250,255,250,250,250,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, -153, 64, 48,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255,240,175,144,255, 82, 96,110,255,124,137,150,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 82, 96,110,255,124,137,150,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 82, 96,110,255,124,137,150,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255, 32, 32,143,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255, -169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, -255,255,255, 10,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 18, 66,176, 38,255,133, 0,178,255,133, 0,127, 0,255, 0,255, -255, 0, 0,255,225,210,195, 35, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0,100, 0, 0,255, 0, 0,200,255, -128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51,127, 51, 76,130,135,140, 76,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5,155,155,155,160,100,104,111,255, -111,106,100,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,170, 64,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, 32,255,255,255, 75, 75, 75,255,204, 0,153,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 32, 0, 0,255, 0, 32, 0,255, 0, 0,128,255, 0, 0, 0, 0, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255, -219, 37, 18,255,240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, - 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,255, 0,255, 4, 0, 0, 0, -255,127,127, 0,255,255,255,255,255,255,255, 0,255,127, 0, 0,255,127,127,127,255,200,200,200,255,255, 0, 0,255, 0, 0,255, -255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0, -247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, - 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, - 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, - 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, - 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0, -108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0, -131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, -184,211,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,136,212,219, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105,111, 95,115, 99,101,110,101, 95, 51,100,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 80, 0, 0, 0,136,212,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 88,213,219, 3, 0, 0, 0, 0, -184,211,219, 3, 0, 0, 0, 0,105,111, 95,115, 99,101,110,101, 95,102, 98,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, 88,213,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, - 40,214,219, 3, 0, 0, 0, 0,136,212,219, 3, 0, 0, 0, 0,105,111, 95, 97,110,105,109, 95, 98,118,104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, 40,214,219, 3, 0, 0, 0, 0, -207, 0, 0, 0, 1, 0, 0, 0,248,214,219, 3, 0, 0, 0, 0, 88,213,219, 3, 0, 0, 0, 0,105,111, 95,109,101,115,104, 95, -112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, -248,214,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,200,215,219, 3, 0, 0, 0, 0, 40,214,219, 3, 0, 0, 0, 0, -105,111, 95,115, 99,101,110,101, 95,111, 98,106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 80, 0, 0, 0,200,215,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,152,216,219, 3, 0, 0, 0, 0, -248,214,219, 3, 0, 0, 0, 0,105,111, 95,115, 99,101,110,101, 95,120, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,152,216,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, -104,217,219, 3, 0, 0, 0, 0,200,215,219, 3, 0, 0, 0, 0,105,111, 95,109,101,115,104, 95,115,116,108, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,104,217,219, 3, 0, 0, 0, 0, -207, 0, 0, 0, 1, 0, 0, 0, 56,218,219, 3, 0, 0, 0, 0,152,216,219, 3, 0, 0, 0, 0,105,111, 95,109,101,115,104, 95, -117,118, 95,108, 97,121,111,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, - 56,218,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 8,219,219, 3, 0, 0, 0, 0,104,217,219, 3, 0, 0, 0, 0, -105,111, 95, 99,117,114,118,101, 95,115,118,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 80, 0, 0, 0, 8,219,219, 3, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56,218,219, 3, 0, 0, 0, 0, 99,121, 99,108,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,232, 0, 0, 0,200,154,199, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 32, 83,116,121,108,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,255,255, 0, 0,154,153, 25, 62, 0, 0,128, 63, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0,255,255, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0,255,255, 0, 0,154,153, 25, 62, 0, 0,128, 63, 0, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 5, 0, 5, 0, 8, 0, - 2, 0, 8, 0, 4, 0, 0, 0, 68, 78, 65, 49,136, 4, 1, 0,200,254,218, 15, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 83, 68, 78, 65, 78, 65, 77, 69, 58, 13, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102, -105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0, -121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112, -101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 54, 52, 93, 0,115, 97,118,101,100, 0,100, 97, -116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, - 91, 54, 54, 93, 0,112, 97,100, 0,117,115, 0,105, 99,111,110, 95,105,100, 0,112, 97,100, 50, 0, 42,112,114,111,112,101,114, -116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, - 49, 48, 50, 52, 93, 0,102,105,108,101,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,116,111,116, 0, 42,112, 97,114,101,110,116, - 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105, -109,101,115,116, 97,109,112, 91, 50, 93, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112, -101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97, -120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0, -101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100, -101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115, -104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101, -108,101,109, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 54, 52, 93, 0,115,108,105,100,101,114,109,105, -110, 0,115,108,105,100,101,114,109, 97,120, 0,117,105,100, 0,112, 97,100, 51, 0, 42, 97,100,116, 0, 42,114,101,102,107,101, -121, 0,101,108,101,109,115,116,114, 91, 54, 52, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112, -111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0,117,105,100,103,101,110, 0, 42,108,105, -110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, - 0,112, 97,100, 49, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109, -101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0, -115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0, -117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101, -101,107, 0,100,116,120, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108, -105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0, -115,101,110,115,111,114, 95,120, 0,115,101,110,115,111,114, 95,121, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, - 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,115,101,110,115,111,114, 95,102,105,116, 0,112, 97, -100, 91, 55, 93, 0, 42,115, 99,101,110,101, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101, -116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100, -101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, - 42, 97,110,105,109, 0, 42,114,114, 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111, -116, 0,108, 97,115,116, 95,114,101,110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, - 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0, -116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, - 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97, -115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, - 95,116,121,112,101, 0,103,101,110, 95,102,108, 97,103, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, - 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, - 42,116,101,120, 0,117,118,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106, -122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120, -102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, - 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95, -109, 97,112, 95,109,111,100,101, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0, -118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111, -108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, - 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114, -114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, - 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0, -115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116, -104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111, -117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,103,114, 97,118,105,116,121,102, 97, 99, 0,108,105,102,101, -102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,102,105,101,108,100,102, 97, 99, 0,115,104, 97, -100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100, -102, 97, 99, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112, -101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97, -116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, - 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116, -121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105, -109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, - 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, - 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100, -105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, - 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95, -115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111, -105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117, -101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, - 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0,102, 97,108,108,111,102,102, 95,115,112,101,101,100, 95,115, - 99, 97,108,101, 0,112,100,112, 97,100, 50, 0, 42, 99,111, 98, 97, 0, 42,102, 97,108,108,111,102,102, 95, 99,117,114,118,101, - 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97, -116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108, -105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 49, 48, 50, 52, - 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,111, 99,101, 97,110,109,111,100, 91, - 54, 52, 93, 0,111,117,116,112,117,116, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103, -104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, - 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114, -105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, - 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118, -110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116, -109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112, -101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, - 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112, -121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101, -112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111, -100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0, 42,111,116, 0, -117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, - 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0, 99,111, 98, 97, 0, 98,108,101,110,100, 95, 99,111,108,111,114, - 91, 51, 93, 0, 98,108,101,110,100, 95,102, 97, 99,116,111,114, 0, 98,108,101,110,100, 95,116,121,112,101, 0,112, 97,100, 91, - 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0, -115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111, -116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111, -102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101, -115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117, -102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, - 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97, -121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, - 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114, -101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, - 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100, -116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115, -117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116, -101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, - 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97, -116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99, -101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114, -101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, - 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 54, 91, 52, 93, 0,100,101,110,115,105,116,121, 0,101,109, -105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105, -115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, - 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, - 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, - 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, - 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0, -109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0, 97,108,112,104, 97, 95, 98,108,101, -110,100, 0,102, 97, 99,101, 95,111,114,105,101,110,116, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112, -101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105, -114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115, -112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, - 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,103, 97,109,101, - 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110, -101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108, -105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101, -112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105, -114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95, -103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, - 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, - 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95, -108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122, -101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115, -116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, - 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110, -100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 54, 52, 93, 0,115, 98, -105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115, -101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, - 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104, -110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115, -115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111, -108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, - 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, - 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, - 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, - 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114, -114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, - 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115, -115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101, -100, 0,115,104, 97,100,111,119,111,110,108,121, 95,102,108, 97,103, 0,105,110,100,101,120, 0,103,112,117,109, 97,116,101,114, -105, 97,108, 0, 42, 98, 98, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0, -101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42, -105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, - 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122, -101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, - 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, - 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101, -115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42, -107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117, -115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,119, 0,104, 0,110,117,114, 98,115, 0, - 42,107,101,121,105,110,100,101,120, 0,115,104, 97,112,101,110,114, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, - 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, - 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111, -100,101, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0, -112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, - 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, -115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, - 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, -101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, -108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, -110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, -104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, -116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0, 42,109,112, -111,108,121, 0, 42,109,116,112,111,108,121, 0, 42,109,108,111,111,112, 0, 42,109,108,111,111,112,117,118, 0, 42,109,108,111, -111,112, 99,111,108, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101, -114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, - 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95, 98,116,109,101,115,104, - 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,112,100, 97,116, 97, 0,108,100, 97,116, 97, 0,116, -111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0,116,111,116,112,111,108,121, - 0,116,111,116,108,111,111,112, 0, 97, 99,116, 95,102, 97, 99,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98, -100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0,101,100,105,116,102,108, 97,103, - 0, 42,109,114, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110, -115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100, -101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119, -101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,108,111,111,112,115,116, 97,114,116, 0,118, 0,101, 0, -117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0,108, -101,118,101,108, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0, 42,104,105,100,100,101,110, 0,118, 91, 52, 93, 0,109,105,100, - 0,112, 97,100, 91, 50, 93, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101, -100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99, -117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110, -100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, - 95, 99,114,101, 97,115,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102, -105,101,114, 0, 42,116,101,120,116,117,114,101, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, - 95,110, 97,109,101, 91, 54, 52, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0,116,101,120,109, 97,112,112,105,110,103, - 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, -101, 0, 42,109, 67, 97, 99,104,101, 0,115,116,114,101,110,103,116,104, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, - 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, - 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111, -102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103, -101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110, -116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105, -116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95, -102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, - 95,110, 97,109,101, 91, 54, 52, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105, -109,101, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0, 42,112,114,111,106,101, 99,116,111,114, -115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, - 99,116,120, 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110, -116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101, -110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, - 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102, -101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0, -115,117, 98,116, 97,114,103,101,116, 91, 54, 52, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101, -110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99, -108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109, -115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, - 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, - 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, - 97, 99,101,115, 0,116,105,109,101, 95,120, 0,116,105,109,101, 95,120,110,101,119, 0, 42, 98,118,104,116,114,101,101, 0, 42, -118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105, -110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101, -115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, - 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, - 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99, -101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, - 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110, -100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100, -103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115, -105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, - 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, - 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 54, 52, 93, - 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0, -112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, - 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, - 95,102, 97, 99, 0,111,102,102,115,101,116, 95,102, 97, 99, 95,118,103, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, - 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0,109, 97,116, 95,111,102,115, 0, -109, 97,116, 95,111,102,115, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110,100,101, -114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0, 42,111, 99, -101, 97,110, 0, 42,111, 99,101, 97,110, 99, 97, 99,104,101, 0,114,101,115,111,108,117,116,105,111,110, 0,115,112, 97,116,105, - 97,108, 95,115,105,122,101, 0,119,105,110,100, 95,118,101,108,111, 99,105,116,121, 0,115,109, 97,108,108,101,115,116, 95,119, - 97,118,101, 0,119, 97,118,101, 95, 97,108,105,103,110,109,101,110,116, 0,119, 97,118,101, 95,100,105,114,101, 99,116,105,111, -110, 0,119, 97,118,101, 95,115, 99, 97,108,101, 0, 99,104,111,112, 95, 97,109,111,117,110,116, 0,102,111, 97,109, 95, 99,111, -118,101,114, 97,103,101, 0, 98, 97,107,101,115,116, 97,114,116, 0, 98, 97,107,101,101,110,100, 0, 99, 97, 99,104,101,112, 97, -116,104, 91, 49, 48, 50, 52, 93, 0,102,111, 97,109,108, 97,121,101,114,110, 97,109,101, 91, 54, 52, 93, 0, 99, 97, 99,104,101, -100, 0,103,101,111,109,101,116,114,121, 95,109,111,100,101, 0,114,101,102,114,101,115,104, 0,114,101,112,101, 97,116, 95,120, - 0,114,101,112,101, 97,116, 95,121, 0,102,111, 97,109, 95,102, 97,100,101, 0, 42,111, 98,106,101, 99,116, 95,102,114,111,109, - 0, 42,111, 98,106,101, 99,116, 95,116,111, 0,102, 97,108,108,111,102,102, 95,114, 97,100,105,117,115, 0,101,100,105,116, 95, -102,108, 97,103,115, 0,100,101,102, 97,117,108,116, 95,119,101,105,103,104,116, 0, 42, 99,109, 97,112, 95, 99,117,114,118,101, - 0, 97,100,100, 95,116,104,114,101,115,104,111,108,100, 0,114,101,109, 95,116,104,114,101,115,104,111,108,100, 0,109, 97,115, -107, 95, 99,111,110,115,116, 97,110,116, 0,109, 97,115,107, 95,100,101,102,103,114,112, 95,110, 97,109,101, 91, 54, 52, 93, 0, -109, 97,115,107, 95,116,101,120, 95,117,115,101, 95, 99,104, 97,110,110,101,108, 0, 42,109, 97,115,107, 95,116,101,120,116,117, -114,101, 0, 42,109, 97,115,107, 95,116,101,120, 95,109, 97,112, 95,111, 98,106, 0,109, 97,115,107, 95,116,101,120, 95,109, 97, -112,112,105,110,103, 0,109, 97,115,107, 95,116,101,120, 95,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 54, 52, 93, 0, -112, 97,100, 95,105, 49, 0,100,101,102,103,114,112, 95,110, 97,109,101, 95, 97, 91, 54, 52, 93, 0,100,101,102,103,114,112, 95, -110, 97,109,101, 95, 98, 91, 54, 52, 93, 0,100,101,102, 97,117,108,116, 95,119,101,105,103,104,116, 95, 97, 0,100,101,102, 97, -117,108,116, 95,119,101,105,103,104,116, 95, 98, 0,109,105,120, 95,109,111,100,101, 0,109,105,120, 95,115,101,116, 0,112, 97, -100, 95, 99, 49, 91, 54, 93, 0,112,114,111,120,105,109,105,116,121, 95,109,111,100,101, 0,112,114,111,120,105,109,105,116,121, - 95,102,108, 97,103,115, 0, 42,112,114,111,120,105,109,105,116,121, 95,111, 98, 95,116, 97,114,103,101,116, 0,109,105,110, 95, -100,105,115,116, 0,109, 97,120, 95,100,105,115,116, 0,112, 97,100, 95,115, 49, 0, 42, 99, 97,110,118, 97,115, 0, 42, 98,114, -117,115,104, 0,116,104,114,101,115,104,111,108,100, 0,115, 99, 97,108,101, 0,104,101,114,109,105,116,101, 95,110,117,109, 0, - 42,108, 97,116,116, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, - 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100, -118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, - 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0, -112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, - 91, 54, 52, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, - 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111, -115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97, -110,110,101,108,115, 0,101,102,102,101, 99,116, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114, -101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, - 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,115, 99, 97,108,101, 91, 51, 93, 0,100, -114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65, -120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, - 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,105,109, 97,116, 95,114,101,110, 91, 52, 93, - 91, 52, 93, 0,108, 97,121, 0,112, 97,100, 54, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112, -114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102, -108, 97,103, 0,105,112,111,102,108, 97,103, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0,112, - 97,100, 53, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115, -102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111, -114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101, -108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,111, - 98,115,116, 97, 99,108,101, 82, 97,100, 0,114,111,116,109,111,100,101, 0, 98,111,117,110,100,116,121,112,101, 0, 99,111,108, -108,105,115,105,111,110, 95, 98,111,117,110,100,116,121,112,101, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,100,116, - 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100, -117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101, -114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97, -109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, - 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105, -110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116, -101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0, 98,111,100,121, 95,116,121,112,101, 0,115,104, - 97,112,101,102,108, 97,103, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118, -101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, - 97,115,107, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115, -116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0,105, -109, 97, 95,111,102,115, 91, 50, 93, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97, -121, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,110,111, 95,100,114, 97,119, 0, 97,110,105, -109, 97,116,101,100, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116, -101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116, -114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111, -119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97, -120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, - 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99, -116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, - 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108, -117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, - 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98, -108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97, -108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,116,111,116,100, 97,116, 97, 0,102,114, 97,109,101, 0,116,111, -116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, - 56, 93, 0,101,120,116,114, 97,100, 97,116, 97, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116, -102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, - 97, 99,116, 0,108, 97,115,116, 95,118, 97,108,105,100, 0, 99,111,109,112,114,101,115,115,105,111,110, 0,112,114,101,118, 95, -110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0, 42, 99, 97, - 99,104,101,100, 95,102,114, 97,109,101,115, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114, -101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108, -117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101, -114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, - 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, - 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0, -107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, - 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101, -114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98, -112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117, -101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 54, 52, 93, 0,103,114, 97,118, - 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101, -100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, - 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, - 95, 83,111,102,116,103,111, 97,108, 91, 54, 52, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, - 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 54, 52, 93, 0,101,102, -114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42, -107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111, -108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100, -101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111, -107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, - 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112, -111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, - 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,108, 97,115,116, - 95,102,114, 97,109,101, 0,118,101,108, 91, 51, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100, -111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115, -120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100, -101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, - 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97, -118, 91, 51, 93, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, - 0, 98, 97,107,101, 69,110,100, 0,102,114, 97,109,101, 79,102,102,115,101,116, 0,103,115,116, 97,114, 0,109, 97,120, 82,101, -102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114, -103, 77,101,115,104, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 49, 48, 50, 52, 93, - 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0, -100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97, -114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101, -114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115, -117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97, -114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115, -104, 86,101,108,111, 99,105,116,105,101,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, - 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110, -103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102, -111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, - 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0, 97,110,105,109, 82, 97,116,101, 0,109,105,115,116,121,112,101, 0, -104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,102, 97, -115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0, -108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, - 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103, -105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115, -116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116, -100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, - 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115, -116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102, -109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110, -101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, - 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, - 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112, -112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114, -103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105, -114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104, -111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97, -115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99,111,108, 0, -115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97, -116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75, -101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101, -114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114, -121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97, -100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84, -121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111, -100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97, -108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101, -109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97, -116,101, 0, 97,117,100,105,111, 99,111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116, -101, 0, 97,117,100,105,111, 66,105,116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117, -100,105,111, 67,111,100,101, 99, 70,108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, - 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97, -116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95, 99,104, 97,110,110,101,108,115, 0, - 97,117,100,105,111, 95,112, 97,100, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0, -114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101, -114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0, -109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112, -108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111, -118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115, -107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0,105,109,116,121, -112,101, 0,112,108, 97,110,101,115, 0,113,117, 97,108,105,116,121, 0, 99,111,109,112,114,101,115,115, 0,101,120,114, 95, 99, -111,100,101, 99, 0, 99,105,110,101,111,110, 95,102,108, 97,103, 0, 99,105,110,101,111,110, 95,119,104,105,116,101, 0, 99,105, -110,101,111,110, 95, 98,108, 97, 99,107, 0, 99,105,110,101,111,110, 95,103, 97,109,109, 97, 0,106,112, 50, 95,102,108, 97,103, - 0,105,109, 95,102,111,114,109, 97,116, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, - 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, - 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, - 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0, -101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, - 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,102,114, 97,109,101, 95,115, -116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0, -109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116, -115, 0,115,117, 98,105,109,116,121,112,101, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,115, 99,101,109,111,100,101, 0, -114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116, -117,114,101, 0,111, 99,114,101,115, 0,112, 97,100, 52, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, - 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, -101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, -120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, -111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, -115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, - 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, - 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, -116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, -101, 95,112, 97,100, 0,112,105, 99, 91, 49, 48, 50, 52, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, - 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 55, 54, 56, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, - 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114, -101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105, -102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102, -121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108, -101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105, -110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, - 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100, -101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, - 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,110, 97,109,101, 91, 51, 50, 93, 0,112, 97, -114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, - 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42, -119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0, 99,101,108,108,115,105,122,101, 0, 99,101,108,108,104,101,105, -103,104,116, 0, 97,103,101,110,116,109, 97,120,115,108,111,112,101, 0, 97,103,101,110,116,109, 97,120, 99,108,105,109, 98, 0, - 97,103,101,110,116,104,101,105,103,104,116, 0, 97,103,101,110,116,114, 97,100,105,117,115, 0,101,100,103,101,109, 97,120,108, -101,110, 0,101,100,103,101,109, 97,120,101,114,114,111,114, 0,114,101,103,105,111,110,109,105,110,115,105,122,101, 0,114,101, -103,105,111,110,109,101,114,103,101,115,105,122,101, 0,118,101,114,116,115,112,101,114,112,111,108,121, 0,100,101,116, 97,105, -108,115, 97,109,112,108,101,100,105,115,116, 0,100,101,116, 97,105,108,115, 97,109,112,108,101,109, 97,120,101,114,114,111,114, - 0,102,114, 97,109,105,110,103, 0,112,108, 97,121,101,114,102,108, 97,103, 0,114,116, 49, 0,114,116, 50, 0, 97, 97,115, 97, -109,112,108,101,115, 0,112, 97,100, 52, 91, 51, 93, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121, -101,115,101,112, 97,114, 97,116,105,111,110, 0,114,101, 99, 97,115,116, 68, 97,116, 97, 0,109, 97,116,109,111,100,101, 0,101, -120,105,116,107,101,121, 0,111, 98,115,116, 97, 99,108,101, 83,105,109,117,108, 97,116,105,111,110, 0,108,101,118,101,108, 72, -101,105,103,104,116, 0, 42, 99, 97,109,101,114, 97, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110, -116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, - 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, - 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116, -111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116, -116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, - 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, - 0,108, 97,115,116, 95,120, 0,108, 97,115,116, 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97, -110, 99,104,111,114,101,100, 0, 97,110, 99,104,111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108, -111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97,110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115, -101, 91, 50, 93, 0,100,114, 97,119, 95,112,114,101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117, -101, 0,115,112,101, 99,105, 97,108, 95,114,111,116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, - 42,119,112, 97,105,110,116, 95,112,114,101,118, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,117,110,112,114,111,106,101, 99,116, -101,100, 95,114, 97,100,105,117,115, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0, 42,117,118,115, 99,117, -108,112,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105, -116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0, -101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97, -117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, - 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, - 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97, -112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, - 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,115,117, 98,115,117,114, -102, 95,108,101,118,101,108, 0,103,112,101,110, 99,105,108, 95,102,108, 97,103,115, 0, 97,117,116,111,105,107, 95, 99,104, 97, -105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105, -111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104, -114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,109, -117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,112, 97,100, 50, 91, 53, 93, 0,115,107,103,101, -110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116, -101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115, -107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108, -105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114, -114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105, -109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0, -115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103, -101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101, -110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111, -115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, - 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112, -108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105, -110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, - 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, - 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, - 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100, -101, 0,101,100,103,101, 95,109,111,100,101, 95,108,105,118,101, 95,117,110,119,114, 97,112, 0,115,110, 97,112, 95,109,111,100, -101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105, -111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,111, 98,106,101, - 99,116,115, 0,112, 97,100, 91, 53, 93, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,109,117,108,116,105,112, - 97,105,110,116, 0,117,115,101, 95,117,118, 95,115, 99,117,108,112,116, 0,117,118, 95,115, 99,117,108,112,116, 95,115,101,116, -116,105,110,103,115, 0,117,118, 95,115, 99,117,108,112,116, 95,116,111,111,108, 0,117,118, 95,114,101,108, 97,120, 95,109,101, -116,104,111,100, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,115, 99,117,108,112, -116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117,108,112,116, 95,112, 97,105,110, -116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0,115, 99,117, -108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0,117,110,105,102,105,101,100, 95, -112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111, -116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97, -116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,115,121,115,116,101,109, 95, -114,111,116, 97,116,105,111,110, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95, -115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, - 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, - 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0,108, 97,121, 95,117,112,100, 97,116,101,100, 0, 42, -101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, - 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117, -110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,115,111,117,110,100, 95,115, 99,114,117, 98, 95,104, 97,110, -100,108,101, 0, 42,115,112,101, 97,107,101,114, 95,104, 97,110,100,108,101,115, 0, 42,102,112,115, 95,105,110,102,111, 0, 42, -116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0, 97, 99,116,105,118, -101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112, -104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 42, 99,108,105,112, 0, 99,117,115,116,111,109,100, 97,116, 97, - 95,109, 97,115,107, 95,109,111,100, 97,108, 0, 99,117,115,101,114, 0, 98,108,101,110,100, 0,118,105,101,119, 0,119,105,110, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,105,110,118, 91, - 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105,110,118, 91, 52, 93, 91, 52, - 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, - 93, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, 54, 93, 91, 52, 93, 0, 42, 99, -108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,110,100,101,114, 95,101,110,103,105,110, -101, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,116,119,109, - 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, - 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,105,115, 95,112,101,114,115,112, 0,112, -101,114,115,112, 0,118,105,101,119,108,111, 99,107, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,108, -118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,103,114,105,100,118,105,101, -119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,114,111,116, 95, 97,110,103,108,101, 0,114,111,116, 95, 97,120,105,115, 91, - 51, 93, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97, -108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0, 98,117,110,100,108,101, 95,115,105,122,101, 0, 98, -117,110,100,108,101, 95,100,114, 97,119,116,121,112,101, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116, -114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111, -110,101, 91, 54, 52, 93, 0,100,114, 97,119,116,121,112,101, 0,111, 98, 95, 99,101,110,116,114,101, 95, 99,117,114,115,111,114, - 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0, -109,111,100,101,115,101,108,101, 99,116, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105,100,115,117, 98,100,105,118, 0, -103,114,105,100,102,108, 97,103, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,112, 97, -100, 50, 91, 50, 93, 0, 97,102,116,101,114,100,114, 97,119, 95,116,114, 97,110,115,112, 0, 97,102,116,101,114,100,114, 97,119, - 95,120,114, 97,121, 0, 97,102,116,101,114,100,114, 97,119, 95,120,114, 97,121,116,114, 97,110,115,112, 0,122, 98,117,102, 0, -120,114, 97,121, 0,112, 97,100, 51, 91, 50, 93, 0, 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, - 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110, -122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101, -101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110, -120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42,116, 97, 98, 95,111,102,102,115, -101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0,114,112,116, 95,109, 97,115,107, 0,118, 50,100, 0, - 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, - 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108, -105,103,110, 0,112,114,101,118,105,101,119, 0,116,101,120,116,117,114,101, 95, 99,111,110,116,101,120,116, 0,112, 97,116,104, -102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0, 42,116,101,120,117,115,101,114, 0,114,101, -110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116, -105,116,108,101, 91, 51, 50, 93, 0,100,105,114, 91, 49, 48, 53, 54, 93, 0,102,105,108,101, 91, 50, 53, 54, 93, 0,114,101,110, - 97,109,101,102,105,108,101, 91, 50, 53, 54, 93, 0,114,101,110, 97,109,101,101,100,105,116, 91, 50, 53, 54, 93, 0,102,105,108, -116,101,114, 95,103,108,111, 98, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108, 95,102,105,114, -115,116, 0,115,101,108, 95,108, 97,115,116, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0,102, 95,102,112, 0,102,112, - 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102, -105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, - 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, - 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114, -101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0, -115,101, 97,114, 99,104, 95,116,115,101, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, -115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0, 42, 99,117,109, 97,112, 0,115, 99,111,112,101,115, 0,115, 97,109,112,108, -101, 95,108,105,110,101, 95,104,105,115,116, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116, -121, 0, 99,117,114,116,105,108,101, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0, -100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, - 0,109,101,110,117,110,114, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116, -111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104, -111,119,115,121,110,116, 97,120, 0,108,105,110,101, 95,104,108,105,103,104,116, 0,111,118,101,114,119,114,105,116,101, 0,108, -105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0, -116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116, -114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0,109, 97,114,103,105,110, 95, 99,111, -108,117,109,110, 0, 42,100,114, 97,119, 99, 97, 99,104,101, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101, -110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99, -107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112, -116,110, 97,109,101, 91, 49, 48, 50, 52, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105, -112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, - 95,100,105,115,112,108, 97,121, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0,112, 97,100,102, 0,109,120, 0,109,121, 0, 42, -101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,115,104, 97,100,101,114, -102,114,111,109, 0,108,105,110,107,100,114, 97,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,115, - 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97, -110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108, -116,101,114, 91, 54, 52, 93, 0,120,108,111, 99,107,111,102, 0,121,108,111, 99,107,111,102, 0,117,115,101,114, 0,112, 97,116, -104, 95,108,101,110,103,116,104, 0,108,111, 99, 91, 50, 93, 0,115,116, 97, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0,117,110, -105,115,116, 97, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,116,112,114,111, 99, 95,102,108, 97,103, 0,114,117,110, -116,105,109,101, 95,102,108, 97,103, 0,102,105,108,101,110, 97,109,101, 91, 49, 48, 50, 52, 93, 0, 98,108,102, 95,105,100, 0, -117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0, -105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115, -104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108, -101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0, -112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101, -116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, - 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, - 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, 0,111,117,116,108,105,110, -101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, - 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, - 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110, -101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110, -101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, - 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,104, -101, 97,100,101,114, 91, 52, 93, 0,115,104,111,119, 95,104,101, 97,100,101,114, 0,119, 99,111,108, 95,114,101,103,117,108, 97, -114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, - 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117, -109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95, -112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110, -117, 95,105,116,101,109, 0,119, 99,111,108, 95,116,111,111,108,116,105,112, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111, -108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, - 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,112, 97,110,101,108, 0,105, 99,111,110,102,105,108,101, 91, - 50, 53, 54, 93, 0,105, 99,111,110, 95, 97,108,112,104, 97, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116,108,101, 91, 52, 93, - 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100, -101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116, -116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101, -120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0, -108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95, -116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, - 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, - 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0, -103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, - 93, 0,115,112,101, 97,107,101,114, 91, 52, 93, 0,101,109,112,116,121, 91, 52, 93, 0, 99, 97,109,101,114, 97, 91, 52, 93, 0, -112, 97,100, 91, 56, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, - 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, - 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115, -101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, - 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, - 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100, -111,116, 91, 52, 93, 0,101,120,116,114, 97, 95,101,100,103,101, 95,108,101,110, 91, 52, 93, 0,101,120,116,114, 97, 95,102, 97, - 99,101, 95, 97,110,103,108,101, 91, 52, 93, 0,101,120,116,114, 97, 95,102, 97, 99,101, 95, 97,114,101, 97, 91, 52, 93, 0,112, - 97,100, 51, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, - 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114, -105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0, -110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95, -115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, - 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, - 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110, -100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100, -108,101, 95, 97,117,116,111, 95, 99,108, 97,109,112,101,100, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114, -101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95, -115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0, -104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 95, 99,108, 97,109,112,101,100, 91, 52, 93, 0,100,115, 95, 99,104, - 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108, -101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110, -115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111, -110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,111,117,116,108, -105,110,101, 95,119,105,100,116,104, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0,110,111,111,100,108,101, 95, 99,117, -114,118,105,110,103, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, - 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118, -105,101, 91, 52, 93, 0,109,111,118,105,101, 99,108,105,112, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110, -101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, - 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, - 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100, -108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101, -120, 95,115,105,122,101, 0,109, 97,114,107,101,114, 95,111,117,116,108,105,110,101, 91, 52, 93, 0,109, 97,114,107,101,114, 91, - 52, 93, 0, 97, 99,116, 95,109, 97,114,107,101,114, 91, 52, 93, 0,115,101,108, 95,109, 97,114,107,101,114, 91, 52, 93, 0,100, -105,115, 95,109, 97,114,107,101,114, 91, 52, 93, 0,108,111, 99,107, 95,109, 97,114,107,101,114, 91, 52, 93, 0, 98,117,110,100, -108,101, 95,115,111,108,105,100, 91, 52, 93, 0,112, 97,116,104, 95, 98,101,102,111,114,101, 91, 52, 93, 0,112, 97,116,104, 95, - 97,102,116,101,114, 91, 52, 93, 0, 99, 97,109,101,114, 97, 95,112, 97,116,104, 91, 52, 93, 0,104,112, 97,100, 91, 55, 93, 0, -112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, 95,102, - 97, 99,101, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, 95,101,100,103,101, 91, 52, 93, 0,112,114, -101,118,105,101,119, 95,115,116,105,116, 99,104, 95,118,101,114,116, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105, -116, 99,104, 95,115,116,105,116, 99,104, 97, 98,108,101, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, - 95,117,110,115,116,105,116, 99,104, 97, 98,108,101, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, 95, - 97, 99,116,105,118,101, 91, 52, 93, 0,109, 97,116, 99,104, 91, 52, 93, 0,115,101,108,101, 99,116,101,100, 95,104,105,103,104, -108,105,103,104,116, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, - 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, - 0,116,105,109, 97, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111, -103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 99,108,105,112, 0,116, 97,114, -109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, - 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112, -100,105,114, 91, 55, 54, 56, 93, 0,102,111,110,116,100,105,114, 91, 55, 54, 56, 93, 0,114,101,110,100,101,114,100,105,114, 91, - 49, 48, 50, 52, 93, 0,116,101,120,116,117,100,105,114, 91, 55, 54, 56, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 55, - 54, 56, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 55, 54, 56, 93, 0,112,121,116,104,111,110,100,105,114, 91, 55, 54, - 56, 93, 0,115,111,117,110,100,100,105,114, 91, 55, 54, 56, 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 49, 48, - 50, 52, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 49, 48, 50, 52, 93, 0, 97,110,105,109, 95,112,108, 97,121,101, -114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111, -100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, - 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97, -103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, - 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117, -100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111, -100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101, -110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116, -121,108,101,115, 0,107,101,121,109, 97,112,115, 0,117,115,101,114, 95,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, - 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111, -109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105, -100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, - 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, - 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115, -105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99, -116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,103,116,104,114,101,115,104,111,108,100, - 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, - 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101, -110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110, -116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, - 0, 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95, -110,101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99, -114, 99, 97,115,116,119, 97,105,116, 0,119,105,100,103,101,116, 95,117,110,105,116, 0, 97,110,105,115,111,116,114,111,112,105, - 99, 95,102,105,108,116,101,114, 0,117,115,101, 95, 49, 54, 98,105,116, 95,116,101,120,116,117,114,101,115, 0,112, 97,100, 56, - 0,110,100,111,102, 95,115,101,110,115,105,116,105,118,105,116,121, 0,110,100,111,102, 95,102,108, 97,103, 0,103,108, 97,108, -112,104, 97, 99,108,105,112, 0,116,101,120,116, 95,114,101,110,100,101,114, 0,112, 97,100, 57, 0, 99,111, 98, 97, 95,119,101, -105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97,121, 95, 99,111,108, 91, 51, 93, - 0,116,119,101, 97,107, 95,116,104,114,101,115,104,111,108,100, 0, 97,117,116,104,111,114, 91, 56, 48, 93, 0, 99,111,109,112, -117,116,101, 95,100,101,118,105, 99,101, 95,116,121,112,101, 0, 99,111,109,112,117,116,101, 95,100,101,118,105, 99,101, 95,105, -100, 0,102, 99,117, 95,105,110, 97, 99,116,105,118,101, 95, 97,108,112,104, 97, 0,118,101,114,116, 98, 97,115,101, 0,101,100, -103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, 0,114,101,100,114, 97,119, -115, 95,102,108, 97,103, 0,102,117,108,108, 0,116,101,109,112, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100, -111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97, -119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0, -109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, - 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, - 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109, -101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122, -101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115, -111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108, -105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108, -101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, - 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97, -100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111, -110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103, -105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111,118,101,114,108, 97, -121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101, -103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, - 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0,119,105,110, -112,111,115, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97, -103,115, 0,103,108,111, 98, 97,108,102, 0,114,101,118,105,115,105,111,110, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0,111,114, -105,103, 95,119,105,100,116,104, 0,111,114,105,103, 95,104,101,105,103,104,116, 0, 98,111,116,116,111,109, 0,114,105,103,104, -116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105, -110, 91, 51, 93, 0,100,105,114, 91, 55, 54, 56, 93, 0,116, 99, 0, 98,117,105,108,100, 95,115,105,122,101, 95,102,108, 97,103, -115, 0, 98,117,105,108,100, 95,116, 99, 95,102,108, 97,103,115, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, - 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110, -115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,105,110,115,116, 97,110, 99,101, 95,112, -114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97, -116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0, -115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117,108, 0,104, 97,110,100,115,105, -122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0,115,116,114,101, 97,109,105,110,100,101,120, 0,109,117,108,116, -105, 99, 97,109, 95,115,111,117,114, 99,101, 0, 99,108,105,112, 95,102,108, 97,103, 0, 42,115,116,114,105,112, 0, 42,115, 99, -101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97, -100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115, -111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,112,105,116, 99,104, 0,112, 97,110, 0,115,116,114,111, - 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105, -109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116, -121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101, -116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 49, 48, - 50, 52, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 49, 48, 50, 52, 93, 0,111,118,101,114, 95,111,102,115, 0, -111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0, -101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, - 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78, -111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0,120, 73,110,105, 0,121, - 73,110,105, 0,114,111,116, 73,110,105, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, - 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115, -116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0, -116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101, -120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0, -109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, - 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0, -115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, - 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, - 91, 54, 52, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 54, 52, 93, 0, 42,107,101,121,115, 0,109,105,110,102, - 97, 99, 0,110,114, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100, -105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, - 97,114,103,101,116, 78, 97,109,101, 91, 54, 52, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 54, 52, 93, 0,118, 97,108, -117,101, 91, 54, 52, 93, 0,109, 97,120,118, 97,108,117,101, 91, 54, 52, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105, -111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 54, 52, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114, -111,112,110, 97,109,101, 91, 54, 52, 93, 0,109, 97,116,110, 97,109,101, 91, 54, 52, 93, 0, 97,120,105,115,102,108, 97,103, 0, -112,111,115,101, 99,104, 97,110,110,101,108, 91, 54, 52, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 54, 52, 93, 0, 42, -102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 54, 52, 93, 0, 98,111,100,121, 91, 54, 52, 93, 0, -111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107, -115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, - 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, - 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108, -105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80, -114,111,112, 91, 54, 52, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115, -101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,108, 97,121,101,114, - 95,119,101,105,103,104,116, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101, -110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102, -102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111, -117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0,115,110,100,110,114, - 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, - 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, - 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, - 51, 93, 0,112, 97,100, 49, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, -117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, - 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109, -105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 54, 52, 93, 0, 98, -117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114, -103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, - 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 54, 52, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98, -111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, - 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,105,110,102,108,117,101,110, 99,101, - 0, 42,115,117, 98,116, 97,114,103,101,116, 0,102, 97, 99,105,110,103, 97,120,105,115, 0,118,101,108,111, 99,105,116,121, 0, - 97, 99, 99,101,108,101,114, 97,116,105,111,110, 0,116,117,114,110,115,112,101,101,100, 0,117,112,100, 97,116,101, 84,105,109, -101, 0, 42,110, 97,118,109,101,115,104, 0,103,111, 0, 42,110,101,119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116, -101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, 0, 42,119, 97,118,101,102,111, -114,109, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98, -106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115, -101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, - 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114, -109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 97,114,109, 95,114,111,108,108, 0,120,119,105,100,116,104, 0,122,119,105,100, -116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, - 0,112, 97,100, 91, 49, 93, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, - 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,103, -101,118,101,114,116,100,101,102,111,114,109,101,114, 0,108, 97,121,101,114, 95,117,115,101,100, 0,108, 97,121,101,114, 95,112, -114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116, -116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97, -116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116, -115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, - 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115, -116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116, -104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, - 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116, -104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0,105,107,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 99, -111,110,115,116,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0,112, 97,100, 48, 91, 54, 93, 0, 42, 98,111,110, -101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0,115,105,107,116,114,101,101, 0, 42, 99,117,115,116,111,109, 0, - 42, 99,117,115,116,111,109, 95,116,120, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, 91, 52, 93, 91, 52, 93, - 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, 51, 93, 0,112,111,115, -101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105,116,109, 97,120, 91, 51, - 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105,107,114,111,116,119,101, -105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42,116,101,109,112, 0, 99,104, 97,110, 98, 97,115,101, 0, - 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102, -115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, - 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105, -107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 54, 52, 93, 0,110,117,109,105,116,101, -114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, - 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, - 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114, -111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0,105,100,114,111,111,116, 0, 42,115,111,117,114, 99, -101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,115,101, 97,114, 99,104,115,116,114, 91, 54, 52, 93, 0,102,105,108,116, -101,114,102,108, 97,103, 0,114,101,110, 97,109,101, 73,110,100,101,120, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, - 0, 42,103,114,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, - 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95, -101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111, -116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, - 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0, -112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 54, 52, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101, -110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, - 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0, -114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, - 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0, -112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0, -112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, - 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114, -111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114, -111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111, -116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0,116,114, 97, 99,107, 91, 54, 52, 93, - 0,111, 98,106,101, 99,116, 91, 54, 52, 93, 0, 42,100,101,112,116,104, 95,111, 98, 0, 99,104, 97,110,110,101,108, 91, 51, 50, - 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, - 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108, -101,110, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102, -102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, - 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0,105,115, 95, 99,111,112,121, 0,101,120,116,101,114, -110, 97,108, 0, 42,110,101,119, 95,115,111, 99,107, 0, 42,115,116,111,114, 97,103,101, 0,108,105,109,105,116, 0,115,116,114, -117, 99,116, 95,116,121,112,101, 0,108,111, 99,120, 0,108,111, 99,121, 0, 42,100,101,102, 97,117,108,116, 95,118, 97,108,117, -101, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,115,116, 97, 99,107, 95,116,121,112,101, 0,111,119,110, 95,105,110,100, -101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,103,114,111,117,112,115,111, 99,107, 0, 42,108,105,110,107, 0,110,115, 0, - 42,114,101, 99,116, 0,120,115,105,122,101, 0,121,115,105,122,101, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116, -121, 0,111,117,116,112,117,116,115, 0,109,105,110,105,119,105,100,116,104, 0,117,112,100, 97,116,101, 0,108, 97, 98,101,108, - 91, 54, 52, 93, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115, -116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0, -116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, - 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0, 42,116,111,115, -111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0,105,110,105,116, 0, 99,117,114, 95,105,110,100,101,120, 0,110, -111,100,101,116,121,112,101, 0, 42,101,120,101, 99,100, 97,116, 97, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, - 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, - 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0,118, 97,108,117,101, 91, 51, 93, 0,118, 97,108,117,101, 91, 52, 93, - 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109, 97,120,115,112,101,101,100, 0,109, -105,110,115,112,101,101,100, 0, 99,117,114,118,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, - 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103, -101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112, -105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0, -104,117,101, 0, 98, 97,115,101, 95,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,102,111,114,109, 97,116, 0, 97, 99,116,105,118, -101, 95,105,110,112,117,116, 0,117,115,101, 95,114,101,110,100,101,114, 95,102,111,114,109, 97,116, 0,117,115,101, 95,110,111, -100,101, 95,102,111,114,109, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108, -112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0, -120, 50, 0,121, 49, 0,121, 50, 0,102, 97, 99, 95,120, 49, 0,102, 97, 99, 95,120, 50, 0,102, 97, 99, 95,121, 49, 0,102, 97, - 99, 95,121, 50, 0, 99,111,108,110, 97,109,101, 91, 54, 52, 93, 0, 98,107,116,121,112,101, 0,112, 97,100, 95, 99, 49, 0,103, - 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101, -115,104, 0,114,111,116, 97,116,105,111,110, 0,112, 97,100, 95,102, 49, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 99, -111,108,109,111,100, 0,109,105,120, 0,102, 97,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0,109, 0, 99, 0,106,105,116, - 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, - 95,108,103,103, 91, 51, 93, 0,103, 97,109,109, 97, 95,105,110,118, 91, 51, 93, 0,108,105,109, 99,104, 97,110, 0,117,110,115, -112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115,112,105,108,108,103, 0,117,115, -112,105,108,108, 98, 0,116,101,120, 95,109, 97,112,112,105,110,103, 0, 99,111,108,111,114, 95,109, 97,112,112,105,110,103, 0, -115,117,110, 95,100,105,114,101, 99,116,105,111,110, 91, 51, 93, 0,116,117,114, 98,105,100,105,116,121, 0, 99,111,108,111,114, - 95,115,112, 97, 99,101, 0,112,114,111,106,101, 99,116,105,111,110, 0,103,114, 97,100,105,101,110,116, 95,116,121,112,101, 0, - 99,111,108,111,114,105,110,103, 0,109,117,115,103,114, 97,118,101, 95,116,121,112,101, 0,119, 97,118,101, 95,116,121,112,101, - 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, - 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114, -101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97, -109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105, -116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108, -117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97, -116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95, -102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102, -114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, - 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, - 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105, -115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101, -102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102, -102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105, 99,111,110, 95,105,109, 98,117,102, 0,105, - 99,111,110, 95,102,105,108,101,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,110,111,114,109, 97,108, 95,119,101,105,103,104,116, - 0,111, 98, 95,109,111,100,101, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97, -100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114, -103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, 95,111,102,102,115,101,116, 0, -115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97, -103,101,112, 97,105,110,116, 95,116,111,111,108, 0,112, 97,100, 51, 91, 53, 93, 0, 97,117,116,111,115,109,111,111,116,104, 95, -102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116,111,114, 0,112,108, 97,110,101, - 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97,115, 0,116,101,120,116,117,114, -101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0, 97,100,100, 95, 99,111,108, 91, 51, 93, 0,115,117, 98, 95, 99, -111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99, -116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,121,112,101,109, 97,112, 91, 51, 52, 93, 0,116,111, -116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101, -120,116,101,114,110, 97,108, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97, -110,100,101,114, 91, 51, 93, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,112, 97,114,116,105, 99,108,101, 95,105,110,100, -101,120, 91, 50, 93, 0,100,101,108,101,116,101, 95,102,108, 97,103, 0,110,117,109, 0,112, 97,114,101,110,116, 0,112, 97, 91, - 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,112,114,101,118, 95,115,116, 97,116, -101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104, -101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110,103, 95,107, 0,112,108, 97,115, -116,105, 99,105,116,121, 95, 99,111,110,115,116, 97,110,116, 0,121,105,101,108,100, 95,114, 97,116,105,111, 0,112,108, 97,115, -116,105, 99,105,116,121, 95, 98, 97,108, 97,110, 99,101, 0,121,105,101,108,100, 95, 98, 97,108, 97,110, 99,101, 0,118,105,115, - 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102, -102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110, -115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0,115,112,114,105,110,103, 95,102,114, 97,109,101,115, 0, 42, 98,111,105, -100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111,100,101, - 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95,115,105, -122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102,114, 97,109,101,115, 0,100,114, - 97,119, 95, 99,111,108, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115, -116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111, -109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105, -116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108, -116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0, 98, 98, 95,115, -105,122,101, 91, 50, 93, 0, 98, 98, 95,118,101,108, 95,104,101, 97,100, 0, 98, 98, 95,118,101,108, 95,116, 97,105,108, 0, 99, -111,108,111,114, 95,118,101, 99, 95,109, 97,120, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105, -109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0, -115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0, 99,111,117,114, - 97,110,116, 95,116, 97,114,103,101,116, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95, -114, 97,110,100, 0,112,115, 95,111,102,102,115,101,116, 91, 49, 93, 0,103,114,105,100, 95,114,101,115, 0,101,102,102,101, 99, -116,111,114, 95, 97,109,111,117,110,116, 0,116,105,109,101, 95,102,108, 97,103, 0,116,105,109,101, 95,112, 97,100, 91, 51, 93, - 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, - 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100, -114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0, 97, 99, 99, - 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, - 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, - 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, - 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,107,105,110,107, 95,102,108, 97,116, 0,107,105, -110,107, 95, 97,109,112, 95, 99,108,117,109,112, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0, -114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0, -114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116, -104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0,112, 97,114,116,105,110,103, 95,102, 97, 99, 0,112, 97,114,116, -105,110,103, 95,109,105,110, 0,112, 97,114,116,105,110,103, 95,109, 97,120, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, - 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110, -100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119, -101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, - 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99, -104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104, -105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42, -104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0, -116,114,101,101, 95,102,114, 97,109,101, 0, 98,118,104,116,114,101,101, 95,102,114, 97,109,101, 0, 99,104,105,108,100, 95,115, -101,101,100, 0,116,111,116,117,110,101,120,105,115,116, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101, -100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107, -101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 54, 52, 93, 0, -118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, - 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,102,108,117,105,100, 95,115,112,114,105,110,103,115, 0,116,111,116, 95, -102,108,117,105,100,115,112,114,105,110,103,115, 0, 97,108,108,111, 99, 95,102,108,117,105,100,115,112,114,105,110,103,115, 0, - 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0,100,116, 95,102,114, 97, 99, 0, 95,112, 97,100, 0, 67, -100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98, -101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114, -105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108, -101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101, -108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0, -118,101,108, 95,100, 97,109,112,105,110,103, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108, -108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117, -112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, - 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114,101,115,101,116, 0, 42, 99,111, -108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, 95,102,114,105, 99,116,105, -111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,114,101,112,101,108, 95,102,111,114, 99,101, 0,100,105,115,116, 97, -110, 99,101, 95,114,101,112,101,108, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99, -111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0, -102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, - 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, - 98,117,102,102,101,114, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101, -108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, - 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95, -115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117, -101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, - 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0, 42, 97,100,100, -111,110, 99,111,110,102, 0, 42,117,115,101,114, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118, -101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,115, 99,114, -101,101,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 54, 52, 93, 0,112,111, -115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, - 99,117,114,115,111,114, 0,109,111,100, 97,108, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, - 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119, -109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, - 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109, -101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111, -115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0, 42,114, -101,109,111,118,101, 95,105,116,101,109, 0, 42, 97,100,100, 95,105,116,101,109, 0,105,116,101,109,115, 0,100,105,102,102, 95, -105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42, -112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, - 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, - 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0, - 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100, -101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, - 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98, -101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99, -108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105, -102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, - 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114, -103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120, -112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, - 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111, -114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0, -115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, - 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0, 42,115,112,101, 97,107,101,114, 95,104, - 97,110,100,108,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103, -102,108, 97,103, 0,112, 97,116,104,115, 0,100,101,115, 99,114,105,112,116,105,111,110, 91, 50, 52, 48, 93, 0,116,121,112,101, -105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, - 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105, -100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, - 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, - 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, - 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, - 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105, -116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95, -102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95, -115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105, -114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97, -120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115, -112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112, -101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97, -110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, - 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108, -108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, - 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109, -112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0, -118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0, -100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117, -109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111, -105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0, 98,111,114,100,101,114, 95, - 99,111,108,108,105,115,105,111,110,115, 0,116,105,109,101, 95,115, 99, 97,108,101, 0,118,111,114,116,105, 99,105,116,121, 0, -118,101,108,111, 99,105,116,121, 91, 50, 93, 0,118,101,108, 95,109,117,108,116,105, 0,118,103,114,112, 95,104,101, 97,116, 95, -115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115, -105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, - 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0,118,111,108,117,109,101, 95,109, 97,120, 0,118,111,108,117,109,101, - 95,109,105,110, 0,100,105,115,116, 97,110, 99,101, 95,109, 97,120, 0,100,105,115,116, 97,110, 99,101, 95,114,101,102,101,114, -101,110, 99,101, 0, 99,111,110,101, 95, 97,110,103,108,101, 95,111,117,116,101,114, 0, 99,111,110,101, 95, 97,110,103,108,101, - 95,105,110,110,101,114, 0, 99,111,110,101, 95,118,111,108,117,109,101, 95,111,117,116,101,114, 0,114,101,110,100,101,114, 95, -102,108, 97,103, 0, 98,117,105,108,100, 95,115,105,122,101, 95,102,108, 97,103, 0, 98,117,105,108,100, 95,116, 99, 95,102,108, - 97,103, 0,108, 97,115,116,115,105,122,101, 91, 50, 93, 0,116,114, 97, 99,107,105,110,103, 0, 42,116,114, 97, 99,107,105,110, -103, 95, 99,111,110,116,101,120,116, 0,112,114,111,120,121, 0,116,114, 97, 99,107, 95,112,114,101,118,105,101,119, 95,104,101, -105,103,104,116, 0, 42,116,114, 97, 99,107, 95,112,114,101,118,105,101,119, 0,116,114, 97, 99,107, 95,112,111,115, 91, 50, 93, - 0,116,114, 97, 99,107, 95,100,105,115, 97, 98,108,101,100, 0, 42,109, 97,114,107,101,114, 0,115,108,105,100,101, 95,115, 99, - 97,108,101, 91, 50, 93, 0,101,114,114,111,114, 0, 42,105,110,116,114,105,110,115,105, 99,115, 0,115,101,110,115,111,114, 95, -119,105,100,116,104, 0,112,105,120,101,108, 95, 97,115,112,101, 99,116, 0,102,111, 99, 97,108, 0,117,110,105,116,115, 0,112, -114,105,110, 99,105,112, 97,108, 91, 50, 93, 0,107, 49, 0,107, 50, 0,107, 51, 0,112,111,115, 91, 50, 93, 0,112, 97,116, 95, -109,105,110, 91, 50, 93, 0,112, 97,116, 95,109, 97,120, 91, 50, 93, 0,115,101, 97,114, 99,104, 95,109,105,110, 91, 50, 93, 0, -115,101, 97,114, 99,104, 95,109, 97,120, 91, 50, 93, 0,109, 97,114,107,101,114,115,110,114, 0,108, 97,115,116, 95,109, 97,114, -107,101,114, 0, 42,109, 97,114,107,101,114,115, 0, 98,117,110,100,108,101, 95,112,111,115, 91, 51, 93, 0,112, 97,116, 95,102, -108, 97,103, 0,115,101, 97,114, 99,104, 95,102,108, 97,103, 0,102,114, 97,109,101,115, 95,108,105,109,105,116, 0,112, 97,116, -116,101,114,110, 95,109, 97,116, 99,104, 0,116,114, 97, 99,107,101,114, 0,112,121,114, 97,109,105,100, 95,108,101,118,101,108, -115, 0,109,105,110,105,109,117,109, 95, 99,111,114,114,101,108, 97,116,105,111,110, 0,100,101,102, 97,117,108,116, 95,116,114, - 97, 99,107,101,114, 0,100,101,102, 97,117,108,116, 95,112,121,114, 97,109,105,100, 95,108,101,118,101,108,115, 0,100,101,102, - 97,117,108,116, 95,109,105,110,105,109,117,109, 95, 99,111,114,114,101,108, 97,116,105,111,110, 0,100,101,102, 97,117,108,116, - 95,112, 97,116,116,101,114,110, 95,115,105,122,101, 0,100,101,102, 97,117,108,116, 95,115,101, 97,114, 99,104, 95,115,105,122, -101, 0,100,101,102, 97,117,108,116, 95,102,114, 97,109,101,115, 95,108,105,109,105,116, 0,100,101,102, 97,117,108,116, 95,109, - 97,114,103,105,110, 0,100,101,102, 97,117,108,116, 95,112, 97,116,116,101,114,110, 95,109, 97,116, 99,104, 0,100,101,102, 97, -117,108,116, 95,102,108, 97,103, 0,112,111,100, 0,107,101,121,102,114, 97,109,101, 49, 0,107,101,121,102,114, 97,109,101, 50, - 0,114,101,102,105,110,101, 95, 99, 97,109,101,114, 97, 95,105,110,116,114,105,110,115,105, 99,115, 0,112, 97,100, 50, 51, 0, - 99,108,101, 97,110, 95,102,114, 97,109,101,115, 0, 99,108,101, 97,110, 95, 97, 99,116,105,111,110, 0, 99,108,101, 97,110, 95, -101,114,114,111,114, 0,111, 98,106,101, 99,116, 95,100,105,115,116, 97,110, 99,101, 0,116,111,116, 95,116,114, 97, 99,107, 0, - 97, 99,116, 95,116,114, 97, 99,107, 0,109, 97,120,115, 99, 97,108,101, 0, 42,114,111,116, 95,116,114, 97, 99,107, 0,108,111, - 99,105,110,102, 0,115, 99, 97,108,101,105,110,102, 0,114,111,116,105,110,102, 0, 42,115, 99, 97,108,101,105, 98,117,102, 0, -108, 97,115,116, 95, 99, 97,109,101,114, 97, 0, 99, 97,109,110,114, 0, 42, 99, 97,109,101,114, 97,115, 0,116,114, 97, 99,107, -115, 0,114,101, 99,111,110,115,116,114,117, 99,116,105,111,110, 0,109,101,115,115, 97,103,101, 91, 50, 53, 54, 93, 0,115,101, -116,116,105,110,103,115, 0, 99, 97,109,101,114, 97, 0,115,116, 97, 98,105,108,105,122, 97,116,105,111,110, 0, 42, 97, 99,116, - 95,116,114, 97, 99,107, 0,111, 98,106,101, 99,116,115, 0,111, 98,106,101, 99,116,110,114, 0,116,111,116, 95,111, 98,106,101, - 99,116, 0, 42, 98,114,117,115,104, 95,103,114,111,117,112, 0, 99,117,114,114,101,110,116, 95,102,114, 97,109,101, 0,100,105, -115,112, 95,116,121,112,101, 0,105,109, 97,103,101, 95,102,105,108,101,102,111,114,109, 97,116, 0,101,102,102,101, 99,116, 95, -117,105, 0,112,114,101,118,105,101,119, 95,105,100, 0,105,110,105,116, 95, 99,111,108,111,114, 95,116,121,112,101, 0,112, 97, -100, 95,115, 0,105,109, 97,103,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,117, 98,115,116,101,112,115, 0,105,110, -105,116, 95, 99,111,108,111,114, 91, 52, 93, 0, 42,105,110,105,116, 95,116,101,120,116,117,114,101, 0,105,110,105,116, 95,108, - 97,121,101,114,110, 97,109,101, 91, 54, 52, 93, 0,100,114,121, 95,115,112,101,101,100, 0, 99,111,108,111,114, 95,100,114,121, - 95,116,104,114,101,115,104,111,108,100, 0,100,101,112,116,104, 95, 99,108, 97,109,112, 0,100,105,115,112, 95,102, 97, 99,116, -111,114, 0,115,112,114,101, 97,100, 95,115,112,101,101,100, 0, 99,111,108,111,114, 95,115,112,114,101, 97,100, 95,115,112,101, -101,100, 0,115,104,114,105,110,107, 95,115,112,101,101,100, 0,100,114,105,112, 95,118,101,108, 0,100,114,105,112, 95, 97, 99, - 99, 0,105,110,102,108,117,101,110, 99,101, 95,115, 99, 97,108,101, 0,114, 97,100,105,117,115, 95,115, 99, 97,108,101, 0,119, - 97,118,101, 95,100, 97,109,112,105,110,103, 0,119, 97,118,101, 95,115,112,101,101,100, 0,119, 97,118,101, 95,116,105,109,101, -115, 99, 97,108,101, 0,119, 97,118,101, 95,115,112,114,105,110,103, 0,105,109, 97,103,101, 95,111,117,116,112,117,116, 95,112, - 97,116,104, 91, 49, 48, 50, 52, 93, 0,111,117,116,112,117,116, 95,110, 97,109,101, 91, 54, 52, 93, 0,111,117,116,112,117,116, - 95,110, 97,109,101, 50, 91, 54, 52, 93, 0, 42,112,109,100, 0,115,117,114,102, 97, 99,101,115, 0, 97, 99,116,105,118,101, 95, -115,117,114, 0,101,114,114,111,114, 91, 54, 52, 93, 0, 99,111,108,108,105,115,105,111,110, 0,119,101,116,110,101,115,115, 0, -112, 97,114,116,105, 99,108,101, 95,114, 97,100,105,117,115, 0,112, 97,114,116,105, 99,108,101, 95,115,109,111,111,116,104, 0, -112, 97,105,110,116, 95,100,105,115,116, 97,110, 99,101, 0, 42,112, 97,105,110,116, 95,114, 97,109,112, 0, 42,118,101,108, 95, -114, 97,109,112, 0,112,114,111,120,105,109,105,116,121, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,105,114, 0,119, - 97,118,101, 95,102, 97, 99,116,111,114, 0,119, 97,118,101, 95, 99,108, 97,109,112, 0,109, 97,120, 95,118,101,108,111, 99,105, -116,121, 0,115,109,117,100,103,101, 95,115,116,114,101,110,103,116,104, 0, 0, 84, 89, 80, 69, 16, 2, 0, 0, 99,104, 97,114, - 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111, -110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,105,110,116, 54, 52, 95,116, 0,117,105,110,116, 54, 52, 95,116, - 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, - 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 51,102, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101, -114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105, -108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98, -106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73, -112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110, -101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109, -101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120, -116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, - 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97, -112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 67,117,114,118,101, 77, 97,112,112,105,110, -103, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 79, 99,101, 97,110, 84,101,120, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84, -101,120, 77, 97,112,112,105,110,103, 0, 67,111,108,111,114, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 86,111,108,117, -109,101, 83,101,116,116,105,110,103,115, 0, 71, 97,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, - 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, - 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, - 84,101,120,116, 66,111,120, 0, 69,100,105,116, 78,117,114, 98, 0, 71, 72, 97,115,104, 0, 67,117,114,118,101, 0, 80, 97,116, -104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 80,111,108,121, 0, 77, 84,101, -120, 80,111,108,121, 0, 77, 76,111,111,112, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70, 97, - 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102, -111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 66, 77, 69, -100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 77, 68,101,102, -111,114,109, 87,101,105,103,104,116, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111, -112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, - 97, 99,101, 0, 79,114,105,103, 83,112, 97, 99,101, 76,111,111,112, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101, -115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99, -101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77, 82,101, - 99, 97,115,116, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,112,112,105,110,103, 73,110,102,111, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97, -116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, - 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109, -111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, - 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, - 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, - 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84, -114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77, -101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77, -101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121, -115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, - 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112, -108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100, -115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112, -101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 79, 99,101, 97,110, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 79, 99,101, 97,110, 0, 79, 99,101, 97,110, 67, 97, 99,104,101, 0, 87, 97,114,112, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,101,105,103,104,116, 86, 71, 69,100,105,116, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 87,101,105,103,104,116, 86, 71, 77,105,120, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,101,105, -103,104,116, 86, 71, 80,114,111,120,105,109,105,116,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,121,110, 97,109, -105, 99, 80, 97,105,110,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,121,110, 97,109,105, 99, 80, 97,105,110,116, - 67, 97,110,118, 97,115, 83,101,116,116,105,110,103,115, 0, 68,121,110, 97,109,105, 99, 80, 97,105,110,116, 66,114,117,115,104, - 83,101,116,116,105,110,103,115, 0, 82,101,109,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,105,116, - 76, 97,116,116, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, - 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65, -110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101, -116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, - 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101, -105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 69,120,116,114, 97, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, - 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100, -121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 70,108,117,105,100, 86,101,114,116,101,120, 86,101,108, -111, 99,105,116,121, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117, -105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83, -101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, - 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 73,109, 97,103,101, 70,111,114,109, 97,116, 68, 97, -116, 97, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, - 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 82,101, 99, 97,115,116, 68, 97,116, 97, 0, 71, 97,109,101, - 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103, -101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, - 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 83, 99,117,108,112,116, 0, 85,118, 83, - 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111, -110, 0, 85,110,105,102,105,101,100, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 84,111,111,108, 83,101,116,116,105, -110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83, -101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111, -114,101,115,116, 0, 77,111,118,105,101, 67,108,105,112, 0, 66, 71,112,105, 99, 0, 77,111,118,105,101, 67,108,105,112, 85,115, -101,114, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,110,100,101, -114, 69,110,103,105,110,101, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111, -114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, - 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, - 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97, -114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116, -111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114, -101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112,101, -115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, - 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104,101, - 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, - 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115, -101,114, 80,114,101,102, 0, 83,112, 97, 99,101, 67,108,105,112, 0, 77,111,118,105,101, 67,108,105,112, 83, 99,111,112,101,115, - 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105, -100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0,117, -105, 80, 97,110,101,108, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, - 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108, -105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 98, 83, 99,114,101,101,110, 0, 83, 99,114, 86,101,114,116, 0, - 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, - 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105, -111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105, -112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, - 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101, -113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, - 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105, -100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, - 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118, -101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115, -101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101, -110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101, -110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115, -111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, - 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103, -101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121, -115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116, -104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, - 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 83,111, -117,110,100, 65, 99,116,117, 97,116,111,114, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, - 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, - 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, - 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111, -114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, - 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, - 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, - 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99, -116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116,101,101,114,105, -110,103, 65, 99,116,117, 97,116,111,114, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, - 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110, -101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, - 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115, -116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116, -114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75, -105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116, -101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86, -111,108,117,109,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, - 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, - 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111, -110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82, -105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84, -114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105, -116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97, -112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 67, 97,109,101,114, 97, 83,111,108,118,101,114, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 79, 98,106,101, - 99,116, 83,111,108,118,101,114, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105, -101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, - 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0, 98, 78, -111,100,101, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 98, 78,111,100,101, 84,114,101,101, 69, -120,101, 99, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 73,110,116, 0, 98, 78,111,100,101, 83,111, 99, -107,101,116, 86, 97,108,117,101, 70,108,111, 97,116, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 66,111, -111,108,101, 97,110, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 86,101, 99,116,111,114, 0, 98, 78,111, -100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 82, 71, 66, 65, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, - 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66, -105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, - 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 73,109, 97,103,101, 77,117,108,116,105, 70,105,108,101, 0, 78,111,100, -101, 73,109, 97,103,101, 77,117,108,116,105, 70,105,108,101, 83,111, 99,107,101,116, 0, 78,111,100,101, 67,104,114,111,109, 97, - 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101, -111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, - 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111, -110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97, -110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 78,111,100,101, 84,101,120, 66, 97,115,101, 0, 78, -111,100,101, 84,101,120, 83,107,121, 0, 78,111,100,101, 84,101,120, 73,109, 97,103,101, 0, 78,111,100,101, 84,101,120, 67,104, -101, 99,107,101,114, 0, 78,111,100,101, 84,101,120, 69,110,118,105,114,111,110,109,101,110,116, 0, 78,111,100,101, 84,101,120, - 71,114, 97,100,105,101,110,116, 0, 78,111,100,101, 84,101,120, 78,111,105,115,101, 0, 78,111,100,101, 84,101,120, 86,111,114, -111,110,111,105, 0, 78,111,100,101, 84,101,120, 77,117,115,103,114, 97,118,101, 0, 78,111,100,101, 84,101,120, 87, 97,118,101, - 0, 78,111,100,101, 84,101,120, 77, 97,103,105, 99, 0, 78,111,100,101, 83,104, 97,100,101,114, 65,116,116,114,105, 98,117,116, -101, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117, -114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101, -114, 0, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114, -116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 80, - 97,114,116,105, 99,108,101, 83,112,114,105,110,103, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116, -105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, - 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114, -116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, - 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, - 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111, -107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 76,105,115, -116, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, - 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115, -116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75, -101,121, 77, 97,112, 68,105,102,102, 73,116,101,109, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111, -114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, - 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111, -112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, - 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111, -105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114, -105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117, -114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116, -114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65, -110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117, -108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111, -105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, - 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105, -103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, - 67, 69, 0, 83,112,101, 97,107,101,114, 0, 77,111,118,105,101, 67,108,105,112, 80,114,111,120,121, 0, 77,111,118,105,101, 67, -108,105,112, 67, 97, 99,104,101, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 0, 77,111,118,105,101, 84,114, 97, 99, -107,105,110,103, 84,114, 97, 99,107, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 77, 97,114,107,101,114, 0, 77,111, -118,105,101, 82,101, 99,111,110,115,116,114,117, 99,116,101,100, 67, 97,109,101,114, 97, 0, 77,111,118,105,101, 84,114, 97, 99, -107,105,110,103, 67, 97,109,101,114, 97, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 83,101,116,116,105,110,103,115, - 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 83,116, 97, 98,105,108,105,122, 97,116,105,111,110, 0, 77,111,118,105, -101, 84,114, 97, 99,107,105,110,103, 82,101, 99,111,110,115,116,114,117, 99,116,105,111,110, 0, 77,111,118,105,101, 84,114, 97, - 99,107,105,110,103, 79, 98,106,101, 99,116, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 83,116, 97,116,115, 0, 68, -121,110, 97,109,105, 99, 80, 97,105,110,116, 83,117,114,102, 97, 99,101, 0, 80, 97,105,110,116, 83,117,114,102, 97, 99,101, 68, - 97,116, 97, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 8, 0, 8, 0, 0, 0, - 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 12, 0, 16, 0, 16, 0, 32, 0,128, 0,120, 0,152, 8, 0, 0, 40, 0,144, 0,112, 5, -112, 0, 36, 0, 56, 0,160, 0,200, 0, 0, 1, 96, 0, 40, 0, 48, 0,224, 0, 16, 0,200, 0, 40, 0,216, 11, 48, 5, 0, 0, - 0, 0, 0, 0, 56, 1,168, 1,216, 4, 24, 0, 8, 3,200, 0, 0, 0,104, 0, 64, 1, 56, 4, 80, 0, 24, 1,144, 0, 56, 3, - 16, 2, 88, 0, 16, 0,128, 3,152, 0,136, 4, 0, 0,104, 0,104, 0, 0, 1, 80, 0, 8, 0, 16, 0, 32, 0, 0, 0, 8, 2, - 0, 0, 0, 0, 0, 0,232, 4, 12, 0, 16, 0, 8, 0, 12, 0, 4, 0, 20, 0, 48, 0, 64, 0, 20, 0, 12, 0, 16, 0, 4, 0, - 8, 0, 8, 0, 0, 0,176, 0,144, 1, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 8, 0, 24, 0, 16, 0, 64, 0, 24, 0, 12, 0, - 64, 0, 4, 0,112, 0,200, 0,136, 0,192, 0,192, 0,128, 0,192, 0,192, 0,128, 0,120, 0,200, 0,120, 0,144, 0, 16, 1, - 56, 0,192, 0, 24, 1, 40, 1,120, 0,184, 0,200, 0, 64, 1,200, 0, 88, 1,112, 0,168, 0, 0, 0,152, 0, 48, 0, 40, 5, -192, 0, 0, 0,152, 0, 0, 0, 0, 0,128, 0, 8, 0, 8, 0,112, 1,144, 0,152, 2,136, 0,192, 0,120, 0,128, 0,224, 4, -208, 0,200, 0,112, 0,208, 0,144, 0, 16, 5, 0, 0, 0, 0, 48, 1,104, 1,160, 1,104, 1,136, 0,104, 0,112, 0,128, 0, - 16, 0, 96, 1, 88, 0, 0, 0,200, 0,216, 0,152, 0, 48, 0, 24, 0,120, 0,152, 0,216, 1, 0, 1,184, 0, 0, 0, 72, 0, - 32, 0,176, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 12, 0, 24, 2, 40, 0,184, 0,152, 0, 64, 0, 72, 0, 32, 0,120, 0, - 24, 0, 56, 9, 64, 0, 24, 0, 16, 0, 56, 0,168, 0, 96, 0, 24, 0, 88, 6, 48, 0, 16, 0,168, 0, 96, 0, 24, 0, 56, 0, -120, 0, 16, 0,232, 1, 32, 0, 8, 0, 24, 0, 80, 8, 0, 0, 0, 0,192, 8,104, 0, 8, 0,112, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 1, 56, 0,144, 0, 64, 0,240, 0,112, 0,248, 0,240, 0,160, 7,104, 0, 0, 0,168, 0, 0, 0, 24, 1, - 16, 0, 16, 0, 40, 33,128, 16, 24, 16,216, 0,160, 2,168, 5, 64, 0, 24, 0,208, 0, 48, 1, 72, 0, 40, 0,136, 1,104, 0, - 40, 1, 56, 0, 24, 4, 32, 0,232, 0, 32, 0, 32, 0, 8, 0, 80, 3,224, 1, 16, 0,168, 36, 80, 0, 56, 0,112, 38, 8, 1, - 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 48, 4, 8, 1, 16, 0, 8, 0, 44, 0, 16, 4, 72, 3, -200, 4, 72, 1,208, 4, 32, 0, 12, 0, 24, 0, 32, 0, 16, 0, 24, 0, 24, 0, 32, 0,136, 1, 0, 0, 64, 0, 96, 0, 80, 0, - 8, 0, 80, 0,136, 0,200, 0, 72, 0, 8, 0,136, 0, 76, 0, 72, 0,204, 0,136, 0,136, 0,128, 0,136, 0, 92, 0,128, 0, - 80, 0,112, 0, 16, 0,168, 0, 32, 0, 72, 0,120, 0, 24, 0,144, 0,112, 0,148, 0, 32, 0,128, 0, 88, 0, 88, 0,208, 0, -140, 0, 4, 0, 24, 0, 16, 0, 8, 0,160, 0, 48, 0, 40, 0, 72, 1, 0, 1, 16, 0, 32, 2, 4, 0, 40, 0,120, 0, 72, 1, -120, 0, 56, 0,120, 0,160, 0,112, 0,184, 0, 24, 0, 88, 0, 80, 0, 80, 0, 80, 0, 8, 0, 72, 0,104, 0,104, 0, 80, 0, - 80, 0, 24, 0, 88, 0,104, 0, 16, 0,144, 0,128, 0, 88, 0, 28, 0, 28, 0, 28, 0, 88, 0, 24, 0,160, 0, 16, 0,152, 0, - 72, 0,168, 0, 48, 0,208, 0, 56, 0, 16, 0, 88, 1, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0, 4, 0, 24, 0, 16, 0, 16, 0, - 40, 0, 28, 0, 12, 0, 12, 0, 32, 4, 40, 4, 32, 0, 44, 0, 24, 0, 8, 0,128, 0, 64, 0, 32, 0, 16, 0, 32, 0, 32, 0, - 8, 0, 96, 0, 20, 0,200, 3,216, 3,208, 3,200, 3,208, 3,208, 3,200, 3,208, 3,208, 3,208, 3,208, 3, 64, 0, 64, 0, - 12, 0, 56, 0, 24, 0,104, 0, 0, 4, 24, 0, 56, 0, 56, 0, 20, 0, 16, 0, 64, 0, 40, 0, 32, 0,192, 0, 60, 0, 16, 3, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 88, 1, 0, 1,168, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 32, 0,136, 0, 0, 0,120, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, - 24, 2, 40, 1, 16, 0,104, 0, 0, 1, 40, 0,208, 0,104, 0,112, 0,216, 1, 32, 0,128, 0, 56, 0, 80, 0, 64, 0,104, 0, - 72, 0, 64, 0,128, 0, 0, 0, 0, 0,184, 0, 8, 3, 0, 0,248, 0,192, 0, 16, 0, 72, 0, 48, 0, 64, 0, 56, 0, 24, 0, -128, 0, 0, 1, 16, 6, 0, 0, 83, 84, 82, 67,207, 1, 0, 0, 12, 0, 2, 0, 12, 0, 0, 0, 12, 0, 1, 0, 13, 0, 3, 0, - 13, 0, 0, 0, 13, 0, 1, 0, 11, 0, 2, 0, 14, 0, 2, 0, 11, 0, 3, 0, 11, 0, 4, 0, 15, 0, 2, 0, 2, 0, 5, 0, - 2, 0, 6, 0, 16, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 17, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, - 18, 0, 4, 0, 4, 0, 8, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 19, 0, 4, 0, 7, 0, 8, 0, 7, 0, 9, 0, - 7, 0, 10, 0, 7, 0, 11, 0, 20, 0, 4, 0, 11, 0, 12, 0, 14, 0, 13, 0, 4, 0, 14, 0, 4, 0, 15, 0, 21, 0, 10, 0, - 21, 0, 0, 0, 21, 0, 1, 0, 0, 0, 16, 0, 0, 0, 17, 0, 2, 0, 18, 0, 0, 0, 19, 0, 4, 0, 20, 0, 20, 0, 21, 0, - 4, 0, 22, 0, 4, 0, 23, 0, 22, 0, 11, 0, 11, 0, 0, 0, 11, 0, 1, 0, 22, 0, 24, 0, 23, 0, 25, 0, 0, 0, 26, 0, - 2, 0, 27, 0, 2, 0, 28, 0, 2, 0, 18, 0, 4, 0, 29, 0, 4, 0, 30, 0, 21, 0, 31, 0, 23, 0, 8, 0, 22, 0, 32, 0, - 22, 0, 33, 0, 24, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 4, 0, 37, 0, 4, 0, 27, 0, 23, 0, 38, 0, 25, 0, 5, 0, - 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 26, 0, 6, 0, 27, 0, 44, 0, 2, 0, 45, 0, - 2, 0, 46, 0, 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 47, 0, 28, 0, 21, 0, 28, 0, 0, 0, 28, 0, 1, 0, 29, 0, 48, 0, - 30, 0, 49, 0, 19, 0, 50, 0, 19, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, - 2, 0, 55, 0, 2, 0, 18, 0, 2, 0, 56, 0, 7, 0, 10, 0, 7, 0, 11, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, - 7, 0, 60, 0, 26, 0, 61, 0, 31, 0, 7, 0, 22, 0, 32, 0, 14, 0, 62, 0, 19, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, - 2, 0, 65, 0, 2, 0, 27, 0, 32, 0, 18, 0, 32, 0, 0, 0, 32, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 16, 0, - 2, 0, 46, 0, 2, 0, 67, 0, 2, 0, 18, 0, 4, 0, 68, 0, 4, 0, 30, 0, 11, 0, 2, 0, 7, 0, 69, 0, 0, 0, 19, 0, - 0, 0, 70, 0, 7, 0, 71, 0, 7, 0, 72, 0, 4, 0, 73, 0, 4, 0, 74, 0, 33, 0, 15, 0, 22, 0, 32, 0, 34, 0, 75, 0, - 32, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 60, 0, 14, 0, 79, 0, 31, 0, 80, 0, 22, 0, 81, 0, 2, 0, 16, 0, - 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 18, 0, 4, 0, 84, 0, 4, 0, 27, 0, 35, 0, 6, 0, 35, 0, 0, 0, 35, 0, 1, 0, - 0, 0, 85, 0, 0, 0, 86, 0, 4, 0, 22, 0, 4, 0, 87, 0, 36, 0, 10, 0, 36, 0, 0, 0, 36, 0, 1, 0, 4, 0, 88, 0, - 4, 0, 89, 0, 4, 0, 90, 0, 4, 0, 91, 0, 4, 0, 13, 0, 4, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 37, 0, 15, 0, - 22, 0, 32, 0, 0, 0, 95, 0, 4, 0, 92, 0, 4, 0, 96, 0, 14, 0, 97, 0, 35, 0, 98, 0, 35, 0, 99, 0, 4, 0,100, 0, - 4, 0,101, 0, 14, 0,102, 0, 0, 0,103, 0, 4, 0,104, 0, 4, 0,105, 0, 11, 0,106, 0, 8, 0,107, 0, 38, 0, 3, 0, - 4, 0,108, 0, 4, 0,109, 0, 11, 0, 2, 0, 39, 0, 20, 0, 22, 0, 32, 0, 34, 0, 75, 0, 0, 0, 16, 0, 0, 0,110, 0, - 2, 0, 18, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, - 7, 0,118, 0, 7, 0,119, 0, 7, 0,120, 0, 7, 0,121, 0, 31, 0, 80, 0, 27, 0,122, 0, 0, 0,123, 0, 0, 0,124, 0, - 40, 0, 14, 0, 41, 0,125, 0, 4, 0,126, 0, 4, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, 0, 0,130, 0, 0, 0,131, 0, - 0, 0,132, 0, 0, 0, 27, 0, 2, 0,133, 0, 2, 0,134, 0, 2, 0,135, 0, 2, 0, 18, 0, 4, 0, 30, 0, 42, 0, 33, 0, - 22, 0, 32, 0, 0, 0, 35, 0, 14, 0,136, 0, 43, 0,137, 0, 44, 0,138, 0, 45, 0,139, 0, 45, 0,140, 0, 2, 0,141, 0, - 2, 0,142, 0, 2, 0,132, 0, 2, 0, 18, 0, 2, 0,143, 0, 2, 0, 16, 0, 4, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, - 2, 0,147, 0, 2, 0,148, 0, 2, 0,149, 0, 2, 0,150, 0, 4, 0,151, 0, 4, 0,152, 0, 38, 0,153, 0, 25, 0,154, 0, - 7, 0,155, 0, 4, 0,156, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 7, 0,162, 0, - 7, 0,163, 0, 46, 0, 65, 0, 2, 0,164, 0, 2, 0,165, 0, 2, 0,166, 0, 2, 0,167, 0, 27, 0,168, 0, 47, 0,169, 0, - 0, 0,170, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0,174, 0, 7, 0,175, 0, 7, 0,176, 0, 7, 0,177, 0, - 2, 0,178, 0, 2, 0,179, 0, 2, 0,180, 0, 2, 0,181, 0, 2, 0,182, 0, 2, 0,183, 0, 0, 0,184, 0, 0, 0,124, 0, - 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0, 56, 0, 7, 0,190, 0, 7, 0,191, 0, - 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, - 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, - 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, - 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0, 7, 0,222, 0, 7, 0,223, 0, - 7, 0,224, 0, 7, 0,225, 0, 7, 0,226, 0, 48, 0, 15, 0, 0, 0, 35, 0, 11, 0,227, 0, 0, 0,228, 0, 0, 0,229, 0, - 4, 0,230, 0, 4, 0,231, 0, 11, 0,232, 0, 7, 0,233, 0, 7, 0,234, 0, 7, 0,235, 0, 4, 0,236, 0, 11, 0,237, 0, - 11, 0,238, 0, 4, 0,239, 0, 4, 0, 27, 0, 49, 0, 6, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,240, 0, - 7, 0, 66, 0, 4, 0, 63, 0, 50, 0, 5, 0, 2, 0, 18, 0, 2, 0, 37, 0, 2, 0, 63, 0, 2, 0,241, 0, 49, 0,235, 0, - 51, 0, 17, 0, 27, 0,168, 0, 42, 0,242, 0, 52, 0,243, 0, 7, 0,244, 0, 7, 0,245, 0, 2, 0, 16, 0, 2, 0,246, 0, - 7, 0,112, 0, 7, 0,113, 0, 7, 0,247, 0, 4, 0,248, 0, 2, 0,249, 0, 2, 0,250, 0, 4, 0,132, 0, 4, 0,144, 0, - 2, 0,251, 0, 2, 0,252, 0, 53, 0, 25, 0, 2, 0, 18, 0, 2, 0,253, 0, 7, 0,254, 0, 7, 0,255, 0, 2, 0,143, 0, - 2, 0, 0, 1, 4, 0, 1, 1, 4, 0, 2, 1, 27, 0,168, 0, 4, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 11, 0, 6, 1, - 7, 0, 7, 1, 7, 0, 8, 1, 2, 0, 9, 1, 2, 0, 10, 1, 2, 0, 11, 1, 2, 0, 12, 1, 7, 0, 13, 1, 7, 0, 14, 1, - 7, 0, 15, 1, 7, 0, 16, 1, 50, 0, 17, 1, 54, 0, 18, 1, 55, 0, 13, 0, 4, 0, 19, 1, 4, 0, 20, 1, 2, 0, 21, 1, - 2, 0, 18, 0, 2, 0, 22, 1, 2, 0, 23, 1, 27, 0,168, 0, 7, 0, 24, 1, 4, 0, 25, 1, 0, 0, 26, 1, 7, 0, 27, 1, - 4, 0, 28, 1, 4, 0,132, 0, 56, 0, 4, 0, 27, 0,168, 0, 0, 0, 29, 1, 4, 0, 30, 1, 4, 0, 27, 0, 47, 0, 64, 0, - 22, 0, 32, 0, 34, 0, 75, 0, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, - 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 7, 0, 30, 0, 7, 0, 40, 1, 7, 0, 41, 1, 7, 0, 42, 1, 7, 0, 43, 1, - 7, 0, 44, 1, 7, 0, 45, 1, 7, 0, 46, 1, 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 7, 0, 51, 1, - 2, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, 2, 0, 55, 1, 2, 0, 56, 1, 2, 0, 57, 1, 2, 0, 58, 1, 2, 0, 18, 0, - 2, 0, 16, 0, 2, 0,246, 0, 7, 0, 59, 1, 7, 0, 60, 1, 7, 0, 61, 1, 7, 0, 62, 1, 4, 0, 63, 1, 4, 0, 64, 1, - 2, 0, 65, 1, 2, 0, 66, 1, 2, 0, 22, 1, 2, 0,130, 0, 4, 0, 22, 0, 4, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, - 7, 0, 67, 1, 7, 0, 68, 1, 7, 0, 91, 0, 40, 0, 69, 1, 57, 0, 70, 1, 31, 0, 80, 0, 42, 0,242, 0, 48, 0, 71, 1, - 50, 0, 17, 1, 51, 0, 72, 1, 25, 0,154, 0, 53, 0, 73, 1, 55, 0, 74, 1, 56, 0, 75, 1, 0, 0, 76, 1, 0, 0,124, 0, - 58, 0, 13, 0, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0,176, 0, 4, 0, 18, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, - 0, 0,174, 0, 4, 0, 27, 0, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 27, 0, 44, 0, 59, 0, 9, 0, 50, 0, 82, 1, - 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 4, 0, 18, 0, 7, 0, 83, 1, 7, 0, 84, 1, 4, 0, 85, 1, 4, 0, 86, 1, - 60, 0, 74, 0, 22, 0, 32, 0, 34, 0, 75, 0, 2, 0, 16, 0, 2, 0, 18, 0, 4, 0, 87, 1, 2, 0,179, 0, 2, 0, 88, 1, - 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0, 89, 1, 7, 0, 90, 1, 7, 0, 91, 1, 7, 0, 92, 1, - 7, 0, 93, 1, 7, 0, 94, 1, 7, 0, 95, 1, 7, 0, 96, 1, 7, 0, 97, 1, 7, 0, 98, 1, 7, 0, 99, 1, 54, 0,100, 1, - 2, 0,253, 0, 2, 0, 30, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,101, 1, 7, 0,102, 1, 7, 0,103, 1, 7, 0,104, 1, - 7, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 2, 0,108, 1, 2, 0,109, 1, 0, 0,110, 1, 0, 0,111, 1, 2, 0,112, 1, - 2, 0,113, 1, 2, 0,114, 1, 2, 0,115, 1, 2, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 7, 0,120, 1, - 2, 0,121, 1, 2, 0, 91, 0, 2, 0,122, 1, 2, 0,123, 1, 2, 0,124, 1, 2, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, - 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 7, 0,135, 1, - 7, 0,136, 1, 7, 0,137, 1, 2, 0,138, 1, 0, 0,139, 1, 31, 0, 80, 0, 46, 0,140, 1, 2, 0,141, 1, 2, 0, 76, 1, - 0, 0,142, 1, 25, 0,154, 0, 57, 0, 70, 1, 61, 0, 18, 0, 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, - 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 2, 0,153, 1, 2, 0,154, 1, - 2, 0,155, 1, 2, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 62, 0, 4, 0, 4, 0, 18, 0, - 4, 0,161, 1, 4, 0,162, 1, 4, 0, 91, 0, 63, 0,126, 0, 22, 0, 32, 0, 34, 0, 75, 0, 2, 0,163, 1, 2, 0, 18, 0, - 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, - 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1, 7, 0,176, 1, - 7, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 61, 0,184, 1, - 62, 0,185, 1, 7, 0,186, 1, 7, 0,187, 1, 7, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 7, 0,191, 1, 7, 0,192, 1, - 2, 0,193, 1, 2, 0,194, 1, 2, 0,195, 1, 0, 0,196, 1, 0, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 2, 0,200, 1, - 2, 0,201, 1, 7, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 2, 0,206, 1, 2, 0,207, 1, 4, 0, 87, 1, - 4, 0,208, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,211, 1, 2, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, - 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 7, 0,219, 1, 7, 0,220, 1, 7, 0,221, 1, 7, 0,222, 1, 0, 0,223, 1, - 7, 0,224, 1, 7, 0,225, 1, 7, 0,226, 1, 4, 0,227, 1, 0, 0,228, 1, 0, 0,122, 1, 0, 0,229, 1, 0, 0, 76, 1, - 2, 0,230, 1, 2, 0,231, 1, 2, 0,141, 1, 2, 0,232, 1, 2, 0,233, 1, 2, 0,234, 1, 7, 0,235, 1, 7, 0,236, 1, - 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, 2, 0,164, 0, 2, 0,165, 0, 50, 0,240, 1, 50, 0,241, 1, 0, 0,242, 1, - 0, 0,243, 1, 0, 0,244, 1, 0, 0,245, 1, 2, 0,246, 1, 2, 0, 74, 0, 7, 0,247, 1, 7, 0,248, 1, 46, 0,140, 1, - 57, 0, 70, 1, 31, 0, 80, 0, 64, 0,249, 1, 25, 0,154, 0, 7, 0,250, 1, 7, 0,251, 1, 7, 0,252, 1, 7, 0,253, 1, - 7, 0,254, 1, 2, 0,255, 1, 2, 0, 30, 0, 7, 0, 0, 2, 7, 0, 1, 2, 7, 0, 2, 2, 7, 0, 3, 2, 7, 0, 4, 2, - 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 2, 0, 9, 2, 2, 0, 10, 2, 4, 0, 11, 2, 2, 0, 12, 2, - 2, 0, 13, 2, 14, 0, 14, 2, 65, 0, 4, 0, 22, 0, 32, 0, 0, 0, 35, 0, 66, 0, 2, 0, 38, 0,153, 0, 67, 0, 20, 0, - 67, 0, 0, 0, 67, 0, 1, 0, 68, 0, 15, 2, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 16, 2, 2, 0, 17, 2, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 22, 2, 7, 0, 23, 2, - 7, 0, 24, 2, 7, 0, 22, 0, 7, 0, 25, 2, 7, 0, 26, 2, 69, 0, 20, 0, 22, 0, 32, 0, 34, 0, 75, 0, 68, 0, 15, 2, - 14, 0, 27, 2, 14, 0, 28, 2, 14, 0, 29, 2, 31, 0, 80, 0, 63, 0, 30, 2, 0, 0, 18, 0, 0, 0, 31, 2, 2, 0, 32, 2, - 2, 0,178, 0, 2, 0, 27, 0, 7, 0, 77, 1, 7, 0,176, 0, 7, 0, 78, 1, 7, 0, 33, 2, 7, 0, 34, 2, 7, 0, 35, 2, - 67, 0, 36, 2, 30, 0, 11, 0, 7, 0, 37, 2, 7, 0, 38, 2, 7, 0, 39, 2, 7, 0,255, 0, 2, 0, 54, 0, 0, 0, 40, 2, - 0, 0, 41, 2, 0, 0, 42, 2, 0, 0, 43, 2, 0, 0, 44, 2, 0, 0, 45, 2, 29, 0, 7, 0, 7, 0, 46, 2, 7, 0, 38, 2, - 7, 0, 39, 2, 2, 0, 42, 2, 2, 0, 45, 2, 7, 0,255, 0, 7, 0, 27, 0, 70, 0, 21, 0, 70, 0, 0, 0, 70, 0, 1, 0, - 2, 0, 16, 0, 2, 0, 47, 2, 2, 0, 45, 2, 2, 0, 18, 0, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2, - 2, 0, 52, 2, 2, 0, 53, 2, 2, 0, 54, 2, 2, 0, 55, 2, 7, 0, 56, 2, 7, 0, 57, 2, 29, 0, 48, 0, 30, 0, 49, 0, - 2, 0, 58, 2, 2, 0, 59, 2, 4, 0, 60, 2, 71, 0, 5, 0, 2, 0, 61, 2, 2, 0, 47, 2, 0, 0, 18, 0, 0, 0, 27, 0, - 2, 0, 30, 0, 72, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 62, 2, 7, 0, 63, 2, 73, 0, 4, 0, 14, 0, 64, 2, - 74, 0, 65, 2, 4, 0, 66, 2, 0, 0, 94, 0, 75, 0, 68, 0, 22, 0, 32, 0, 34, 0, 75, 0, 68, 0, 15, 2, 14, 0, 67, 2, - 14, 0, 28, 2, 73, 0, 68, 2, 27, 0, 69, 2, 27, 0, 70, 2, 27, 0, 71, 2, 31, 0, 80, 0, 76, 0, 72, 2, 33, 0, 73, 2, - 63, 0, 30, 2, 14, 0, 74, 2, 7, 0, 77, 1, 7, 0,176, 0, 7, 0, 78, 1, 2, 0, 16, 0, 2, 0,178, 0, 2, 0, 75, 2, - 2, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 4, 0, 79, 2, 2, 0, 27, 0, 2, 0, 32, 2, 2, 0, 18, 0, 2, 0, 80, 2, - 7, 0, 81, 2, 7, 0, 82, 2, 7, 0, 83, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 84, 2, 2, 0, 85, 2, 4, 0, 86, 2, - 11, 0, 87, 2, 2, 0, 22, 0, 2, 0, 97, 0, 2, 0, 66, 0, 2, 0, 88, 2, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, - 7, 0, 92, 2, 7, 0, 93, 2, 7, 0, 94, 2, 7, 0, 95, 2, 7, 0, 96, 2, 7, 0, 97, 2, 7, 0, 98, 2, 0, 0, 99, 2, - 77, 0,100, 2, 78, 0,101, 2, 0, 0,102, 2, 65, 0,103, 2, 65, 0,104, 2, 65, 0,105, 2, 65, 0,106, 2, 4, 0,107, 2, - 7, 0,108, 2, 4, 0,109, 2, 4, 0,110, 2, 72, 0,111, 2, 4, 0,112, 2, 4, 0,113, 2, 71, 0,114, 2, 71, 0,115, 2, - 79, 0, 47, 0, 22, 0, 32, 0, 34, 0, 75, 0, 68, 0, 15, 2, 31, 0, 80, 0, 33, 0, 73, 2, 63, 0, 30, 2, 80, 0,116, 2, - 81, 0,117, 2, 82, 0,118, 2, 83, 0,119, 2, 84, 0,120, 2, 85, 0,121, 2, 86, 0,122, 2, 87, 0,123, 2, 88, 0,124, 2, - 89, 0,125, 2, 90, 0,126, 2, 91, 0,127, 2, 92, 0,128, 2, 79, 0,129, 2, 93, 0,130, 2, 94, 0,131, 2, 95, 0,132, 2, - 95, 0,133, 2, 95, 0,134, 2, 95, 0,135, 2, 95, 0,136, 2, 4, 0, 53, 0, 4, 0,137, 2, 4, 0,138, 2, 4, 0,139, 2, - 4, 0,140, 2, 4, 0,141, 2, 4, 0,142, 2, 7, 0, 77, 1, 7, 0,176, 0, 7, 0, 78, 1, 2, 0,178, 0, 2, 0, 75, 2, - 2, 0,143, 2, 2, 0, 18, 0, 2, 0,144, 2, 2, 0,145, 2, 0, 0,146, 2, 0, 0,147, 2, 2, 0, 32, 2, 96, 0,148, 2, - 87, 0, 8, 0, 11, 0,149, 2, 7, 0,150, 2, 4, 0,151, 2, 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, 2, 0,153, 2, - 2, 0,154, 2, 85, 0, 7, 0, 4, 0,155, 2, 4, 0,156, 2, 4, 0,157, 2, 4, 0,158, 2, 2, 0, 47, 2, 0, 0,159, 2, - 0, 0, 18, 0, 89, 0, 5, 0, 4, 0,155, 2, 4, 0,156, 2, 0, 0,160, 2, 0, 0,161, 2, 2, 0, 18, 0, 97, 0, 2, 0, - 4, 0,162, 2, 7, 0, 39, 2, 90, 0, 3, 0, 97, 0,163, 2, 4, 0,164, 2, 4, 0, 18, 0, 88, 0, 4, 0, 7, 0,165, 2, - 2, 0,166, 2, 0, 0, 18, 0, 0, 0,161, 2, 91, 0, 4, 0, 0, 0,240, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,187, 0, - 80, 0, 5, 0, 4, 0,167, 2, 4, 0,141, 2, 2, 0, 47, 2, 0, 0, 18, 0, 0, 0, 27, 0, 82, 0, 2, 0, 4, 0,168, 2, - 4, 0,169, 2, 81, 0, 6, 0, 42, 0,149, 2, 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, 2, 0,153, 2, 2, 0,154, 2, - 83, 0, 2, 0, 7, 0,170, 2, 4, 0, 18, 0, 84, 0, 4, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,240, 0, - 92, 0, 1, 0, 7, 0,171, 2, 93, 0, 2, 0, 4, 0, 13, 2, 4, 0, 16, 0, 86, 0, 7, 0, 7, 0,150, 2, 42, 0,149, 2, - 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, 2, 0,153, 2, 2, 0,154, 2, 98, 0, 1, 0, 7, 0,172, 2, 99, 0, 1, 0, - 4, 0,173, 2,100, 0, 1, 0, 0, 0,174, 2,101, 0, 1, 0, 7, 0,150, 2,102, 0, 1, 0, 7, 0,170, 2,103, 0, 4, 0, - 4, 0,175, 2, 4, 0,176, 2, 7, 0,177, 2, 4, 0,178, 2,104, 0, 4, 0, 7, 0,240, 0, 7, 0,185, 0, 7, 0,186, 0, - 7, 0,187, 0,105, 0, 1, 0,104, 0,151, 2,106, 0, 5, 0, 4, 0,179, 2, 4, 0,180, 2, 0, 0, 18, 0, 0, 0, 47, 2, - 0, 0,181, 2,107, 0, 2, 0, 4, 0,182, 2, 4, 0,180, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,183, 2, -105, 0,184, 2,107, 0,185, 2, 4, 0, 53, 0, 4, 0,138, 2, 4, 0,137, 2, 4, 0, 27, 0, 88, 0,186, 2, 96, 0, 14, 0, - 14, 0,187, 2, 88, 0,186, 2, 0, 0,188, 2, 0, 0,189, 2, 0, 0,190, 2, 0, 0,191, 2, 0, 0,192, 2, 0, 0,193, 2, - 0, 0,194, 2, 0, 0, 18, 0, 95, 0,132, 2, 95, 0,134, 2, 2, 0,195, 2, 0, 0,196, 2,109, 0, 1, 0, 4, 0,173, 2, -110, 0, 9, 0,110, 0, 0, 0,110, 0, 1, 0, 4, 0, 16, 0, 4, 0, 87, 1, 4, 0,197, 2, 4, 0, 27, 0, 0, 0, 19, 0, - 41, 0,125, 0, 0, 0,198, 2,111, 0, 6, 0,110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, - 4, 0,204, 2,112, 0, 7, 0,110, 0,199, 2, 2, 0,205, 2, 2, 0,187, 2, 2, 0,206, 2, 2, 0, 92, 0, 11, 0,207, 2, - 11, 0,208, 2,113, 0, 5, 0,110, 0,199, 2, 27, 0,168, 0, 0, 0, 19, 0, 7, 0,209, 2, 0, 0, 94, 0,114, 0, 5, 0, -110, 0,199, 2, 27, 0,168, 0, 0, 0, 19, 0, 2, 0,210, 2, 0, 0,211, 2,115, 0, 5, 0,110, 0,199, 2, 7, 0, 89, 0, - 7, 0,212, 2, 4, 0,213, 2, 4, 0,214, 2,116, 0, 5, 0,110, 0,199, 2, 27, 0,215, 2, 0, 0, 70, 0, 4, 0, 87, 1, - 4, 0, 18, 0,117, 0, 13, 0,110, 0,199, 2, 27, 0,216, 2, 27, 0,217, 2, 27, 0,218, 2, 27, 0,219, 2, 7, 0,220, 2, - 7, 0,221, 2, 7, 0,212, 2, 7, 0,222, 2, 4, 0,223, 2, 4, 0,224, 2, 4, 0, 92, 0, 4, 0,225, 2,118, 0, 5, 0, -110, 0,199, 2, 2, 0,226, 2, 2, 0, 18, 0, 7, 0,227, 2, 27, 0,228, 2,119, 0, 3, 0,110, 0,199, 2, 7, 0,229, 2, - 4, 0, 92, 0,120, 0, 10, 0,110, 0,199, 2, 7, 0,230, 2, 4, 0,231, 2, 4, 0, 27, 0, 2, 0, 92, 0, 2, 0,232, 2, - 2, 0,233, 2, 2, 0,234, 2, 7, 0,235, 2, 0, 0,236, 2,121, 0, 3, 0,110, 0,199, 2, 7, 0, 27, 0, 4, 0, 16, 0, -122, 0, 6, 0,110, 0,199, 2,123, 0,237, 2,124, 0,238, 2,125, 0,239, 2, 7, 0,240, 2, 4, 0, 16, 0,126, 0, 11, 0, -110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2, 7, 0,209, 2, 4, 0,241, 2, - 0, 0,236, 2, 7, 0,242, 2, 4, 0, 27, 0,127, 0, 12, 0,110, 0,199, 2, 27, 0,243, 2, 42, 0,244, 2, 4, 0, 92, 0, - 4, 0,245, 2, 7, 0,246, 2, 7, 0,247, 2, 7, 0,248, 2, 7, 0,249, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0, 27, 0, -128, 0, 3, 0,110, 0,199, 2, 7, 0,250, 2, 4, 0,251, 2,129, 0, 5, 0,110, 0,199, 2, 7, 0,252, 2, 0, 0,236, 2, - 2, 0, 18, 0, 2, 0,253, 2,130, 0, 8, 0,110, 0,199, 2, 27, 0,168, 0, 7, 0,252, 2, 7, 0,255, 0, 7, 0,108, 0, - 0, 0,236, 2, 2, 0, 18, 0, 2, 0, 16, 0,131, 0, 21, 0,110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, - 4, 0,203, 2, 4, 0,204, 2, 27, 0,254, 2, 0, 0,236, 2, 2, 0, 18, 0, 2, 0, 27, 0, 7, 0,255, 2, 7, 0, 0, 3, - 7, 0, 1, 3, 7, 0, 81, 2, 7, 0, 2, 3, 7, 0, 3, 3, 7, 0, 4, 3, 7, 0, 5, 3, 7, 0, 6, 3, 7, 0, 7, 3, - 7, 0, 91, 0,132, 0, 7, 0,110, 0,199, 2, 2, 0, 8, 3, 2, 0, 9, 3, 4, 0, 30, 0, 27, 0,168, 0, 7, 0, 10, 3, - 0, 0,236, 2,133, 0, 10, 0,110, 0,199, 2, 27, 0,168, 0, 0, 0, 11, 3, 7, 0, 12, 3, 7, 0, 13, 3, 7, 0, 5, 3, - 4, 0, 14, 3, 4, 0, 15, 3, 7, 0, 16, 3, 0, 0, 19, 0,134, 0, 1, 0,110, 0,199, 2,135, 0, 7, 0,110, 0,199, 2, - 41, 0,125, 0,136, 0, 17, 3,137, 0, 18, 3,138, 0, 19, 3,139, 0, 20, 3, 14, 0, 21, 3,140, 0, 13, 0,110, 0,199, 2, - 88, 0, 22, 3, 88, 0, 23, 3, 88, 0, 24, 3, 88, 0, 25, 3, 88, 0, 26, 3, 88, 0, 27, 3, 85, 0, 28, 3, 4, 0, 29, 3, - 4, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3,141, 0, 33, 3,142, 0, 7, 0,110, 0,199, 2, 88, 0, 22, 3, 88, 0, 34, 3, -143, 0, 35, 3,144, 0, 33, 3, 4, 0, 36, 3, 4, 0, 29, 3,145, 0, 4, 0,110, 0,199, 2, 27, 0,168, 0, 4, 0, 37, 3, - 4, 0, 27, 0,146, 0, 2, 0, 4, 0, 38, 3, 7, 0, 39, 2,147, 0, 2, 0, 4, 0,128, 0, 4, 0, 39, 3,148, 0, 24, 0, -110, 0,199, 2, 27, 0,168, 0, 0, 0,236, 2, 2, 0, 40, 3, 2, 0, 18, 0, 2, 0, 87, 1, 2, 0, 27, 0,146, 0, 41, 3, - 4, 0, 42, 3, 7, 0, 43, 3, 4, 0, 53, 0, 4, 0, 44, 3,147, 0, 45, 3,146, 0, 46, 3, 4, 0, 47, 3, 4, 0, 48, 3, - 4, 0, 49, 3, 4, 0, 39, 3, 7, 0, 50, 3, 7, 0, 51, 3, 7, 0, 52, 3, 7, 0, 53, 3, 7, 0, 54, 3, 11, 0, 55, 3, -149, 0, 8, 0,110, 0,199, 2,150, 0, 56, 3,143, 0, 35, 3, 4, 0, 57, 3, 4, 0, 58, 3, 4, 0, 59, 3, 2, 0, 18, 0, - 2, 0, 56, 0,151, 0, 8, 0,110, 0,199, 2, 27, 0, 44, 0, 2, 0, 3, 1, 2, 0, 18, 0, 2, 0,226, 2, 2, 0, 56, 0, - 7, 0, 60, 3, 7, 0, 61, 3,152, 0, 6, 0,110, 0,199, 2, 4, 0, 62, 3, 2, 0, 18, 0, 2, 0, 63, 3, 7, 0, 64, 3, - 0, 0,170, 0,153, 0, 8, 0,110, 0,199, 2, 0, 0, 65, 3, 0, 0, 66, 3, 0, 0,193, 2, 0, 0, 67, 3, 0, 0, 68, 3, - 0, 0, 92, 0, 0, 0,181, 2,154, 0, 3, 0,110, 0,199, 2,155, 0, 69, 3,139, 0, 20, 3,156, 0, 10, 0,110, 0,199, 2, - 27, 0, 70, 3, 27, 0, 71, 3, 0, 0, 72, 3, 7, 0, 73, 3, 2, 0, 74, 3, 2, 0, 75, 3, 0, 0, 76, 3, 0, 0, 77, 3, - 0, 0,211, 2,157, 0, 9, 0,110, 0,199, 2, 27, 0, 78, 3, 0, 0, 72, 3, 7, 0, 79, 3, 7, 0, 80, 3, 0, 0, 87, 1, - 0, 0,226, 2, 0, 0, 81, 3, 0, 0, 27, 0,158, 0, 1, 0,110, 0,199, 2,159, 0, 11, 0,110, 0,199, 2, 0, 0,236, 2, - 7, 0,128, 0, 7, 0, 82, 3, 7, 0, 83, 3, 7, 0, 84, 3, 7, 0, 85, 3, 7, 0, 86, 3, 4, 0, 18, 0, 2, 0, 87, 3, - 2, 0, 88, 3,160, 0, 9, 0,110, 0,199, 2, 27, 0, 89, 3, 4, 0, 90, 3, 4, 0, 91, 3, 4, 0, 92, 3, 7, 0, 93, 3, - 7, 0, 94, 3, 2, 0,226, 2, 2, 0, 18, 0,161, 0, 29, 0,110, 0,199, 2,162, 0, 95, 3,163, 0, 96, 3, 4, 0, 97, 3, - 4, 0, 98, 3, 7, 0, 99, 3, 7, 0, 4, 3, 7, 0,100, 3, 7, 0,250, 0, 7, 0,101, 3, 7, 0,102, 3, 7, 0,103, 3, - 7, 0,104, 3, 7, 0,105, 3, 7, 0,240, 2, 4, 0,106, 3, 4, 0,107, 3, 0, 0,108, 3, 0, 0,109, 3, 0, 0,110, 3, - 0, 0,111, 3, 0, 0, 18, 0, 0, 0,112, 3, 2, 0,113, 3, 2, 0,114, 3, 4, 0,214, 2, 7, 0,108, 0, 7, 0,115, 3, - 4, 0, 27, 0,164, 0, 15, 0,110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2, - 27, 0,116, 3, 27, 0,117, 3, 54, 0,100, 1, 0, 0,236, 2, 7, 0,209, 2, 7, 0,118, 3, 0, 0, 18, 0, 0, 0,253, 0, - 0, 0,211, 2,165, 0, 16, 0,110, 0,199, 2, 0, 0,236, 2, 2, 0,119, 3, 2, 0,253, 0, 7, 0,120, 3, 54, 0,121, 3, - 7, 0,122, 3, 7, 0,123, 3, 7, 0,124, 3, 0, 0,125, 3, 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, 4, 0,129, 3, - 0, 0,130, 3, 4, 0,131, 3,166, 0, 16, 0,110, 0,199, 2, 0, 0,132, 3, 0, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, - 0, 0,136, 3, 0, 0,137, 3, 0, 0,138, 3, 7, 0,124, 3, 0, 0,125, 3, 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, - 4, 0,129, 3, 0, 0,130, 3, 4, 0,131, 3,167, 0, 16, 0,110, 0,199, 2, 0, 0,236, 2, 4, 0,139, 3, 4, 0,140, 3, - 27, 0,141, 3, 7, 0,124, 3, 0, 0,125, 3, 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, 4, 0,129, 3, 0, 0,130, 3, - 7, 0,142, 3, 7, 0,143, 3, 2, 0,253, 0, 2, 0,144, 3,168, 0, 5, 0,110, 0,199, 2,169, 0,145, 3,170, 0,146, 3, - 4, 0, 16, 0, 4, 0, 27, 0,171, 0, 8, 0,110, 0,199, 2, 7, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 0, 0,250, 0, - 0, 0, 18, 0, 0, 0, 87, 1, 0, 0, 27, 0,172, 0, 3, 0,173, 0,150, 3, 4, 0, 66, 2, 0, 0, 94, 0,173, 0, 29, 0, - 22, 0, 32, 0, 34, 0, 75, 0, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0,151, 3, 2, 0, 18, 0, 2, 0,152, 3, 2, 0,153, 3, - 2, 0,154, 3, 2, 0, 30, 0, 0, 0,155, 3, 0, 0,156, 3, 0, 0,157, 3, 0, 0, 74, 0, 4, 0, 27, 0, 7, 0,158, 3, - 7, 0,159, 3, 7, 0,160, 3, 7, 0,161, 3, 7, 0,162, 3, 7, 0,163, 3, 29, 0,164, 3, 31, 0, 80, 0, 33, 0, 73, 2, - 90, 0,126, 2, 0, 0, 70, 0, 7, 0,165, 3, 7, 0,166, 3,172, 0,167, 3,174, 0, 5, 0,174, 0, 0, 0,174, 0, 1, 0, - 0, 0, 19, 0, 0, 0, 18, 0, 0, 0,124, 0, 68, 0, 3, 0, 7, 0,168, 3, 4, 0, 18, 0, 4, 0, 27, 0, 27, 0,128, 0, - 22, 0, 32, 0, 34, 0, 75, 0,175, 0,169, 3, 2, 0, 16, 0, 2, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0,173, 3, - 0, 0,174, 3, 27, 0, 38, 0, 27, 0,175, 3, 27, 0,176, 3, 27, 0,177, 3, 27, 0,178, 3, 31, 0, 80, 0, 68, 0, 15, 2, -176, 0,179, 3,176, 0,180, 3,177, 0,181, 3, 11, 0, 2, 0,178, 0,182, 3,179, 0,183, 3,180, 0,184, 3, 14, 0,185, 3, - 14, 0,186, 3, 14, 0, 28, 2, 14, 0,187, 3, 14, 0,188, 3, 4, 0, 87, 1, 4, 0,189, 3, 63, 0, 30, 2, 0, 0,190, 3, - 4, 0, 32, 2, 4, 0,191, 3, 7, 0, 77, 1, 7, 0,192, 3, 7, 0,193, 3, 7, 0,176, 0, 7, 0,194, 3, 7, 0,195, 3, - 7, 0, 78, 1, 7, 0,196, 3, 7, 0, 18, 2, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, - 7, 0,202, 3, 7, 0, 12, 3, 7, 0,203, 3, 7, 0,244, 0, 7, 0,204, 3, 4, 0,205, 3, 4, 0,206, 3, 2, 0, 18, 0, - 2, 0,207, 3, 2, 0,208, 3, 2, 0,209, 3, 2, 0,210, 3, 2, 0,211, 3, 2, 0,212, 3, 2, 0,213, 3, 2, 0,214, 3, - 0, 0,215, 3, 0, 0,216, 3, 4, 0,217, 3, 4, 0,218, 3, 4, 0,219, 3, 4, 0,220, 3, 7, 0,221, 3, 7, 0,108, 2, - 7, 0,222, 3, 7, 0,223, 3, 7, 0,224, 3, 7, 0,225, 3, 7, 0,226, 3, 7, 0,220, 0, 7, 0,227, 3, 7, 0,228, 3, - 7, 0,229, 3, 7, 0,230, 3, 7, 0,231, 3, 2, 0,232, 3, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, - 0, 0,110, 0, 0, 0,237, 3, 7, 0,238, 3, 7, 0,239, 3, 14, 0,240, 3, 14, 0,241, 3, 14, 0,242, 3, 14, 0,243, 3, - 7, 0,244, 3, 2, 0, 13, 2, 2, 0,245, 3, 7, 0,151, 2, 4, 0,246, 3, 4, 0,247, 3,181, 0,248, 3, 2, 0,249, 3, - 2, 0,251, 0, 7, 0,250, 3, 14, 0,251, 3, 14, 0,252, 3, 14, 0,253, 3, 14, 0,254, 3,182, 0, 73, 1,183, 0,255, 3, - 64, 0, 0, 4, 0, 0, 1, 4, 0, 0, 2, 4, 2, 0, 66, 2, 7, 0,143, 2,155, 0, 3, 4,143, 0, 4, 4,143, 0, 5, 4, - 10, 0, 6, 4, 10, 0, 7, 4, 4, 0, 8, 4, 4, 0, 9, 4, 14, 0, 10, 4, 14, 0, 11, 4, 14, 0, 12, 4, 7, 0, 13, 4, -184, 0, 14, 0,184, 0, 0, 0,184, 0, 1, 0, 27, 0, 38, 0, 7, 0, 12, 3, 7, 0, 79, 1, 7, 0, 13, 3, 7, 0, 5, 3, - 0, 0, 19, 0, 4, 0, 14, 3, 4, 0, 15, 3, 4, 0, 14, 4, 2, 0, 16, 0, 2, 0, 15, 4, 7, 0, 16, 3,185, 0, 12, 0, -185, 0, 0, 0,185, 0, 1, 0, 27, 0, 44, 0, 4, 0, 16, 4, 4, 0, 13, 2, 7, 0, 79, 1, 7, 0, 17, 4, 7, 0, 18, 4, - 7, 0,170, 2, 2, 0, 16, 0, 0, 0, 19, 4, 0, 0, 20, 4,182, 0, 40, 0, 4, 0, 18, 0, 2, 0, 21, 4, 2, 0, 22, 4, - 2, 0, 5, 3, 2, 0, 23, 4, 2, 0, 24, 4, 2, 0, 25, 4, 2, 0, 26, 4, 2, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, - 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 7, 0, 34, 4, 7, 0, 35, 4, 7, 0, 36, 4, 7, 0, 37, 4, - 7, 0, 38, 4, 7, 0, 39, 4, 7, 0, 40, 4, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 7, 0, 44, 4, 7, 0, 45, 4, - 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, 7, 0, 49, 4, 7, 0, 50, 4, 7, 0, 51, 4, 7, 0, 52, 4, 7, 0, 53, 4, - 7, 0, 54, 4, 47, 0,169, 0,186, 0, 55, 4, 7, 0, 56, 4, 4, 0,214, 2,187, 0, 5, 0, 64, 0,249, 1, 7, 0, 57, 4, - 7, 0, 58, 4, 2, 0, 18, 0, 2, 0, 59, 4,188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0, 4, 0, 16, 0, 4, 0, 60, 4, - 11, 0, 2, 0,189, 0, 9, 0,189, 0, 0, 0,189, 0, 1, 0, 4, 0, 61, 4, 4, 0, 62, 4, 4, 0, 63, 4, 4, 0, 18, 0, - 11, 0, 64, 4, 11, 0, 65, 4, 14, 0, 66, 4,139, 0, 23, 0,139, 0, 0, 0,139, 0, 1, 0, 4, 0, 18, 0, 4, 0, 67, 4, - 4, 0, 68, 4, 4, 0, 69, 4, 4, 0, 70, 4, 4, 0, 71, 4, 4, 0, 72, 4, 4, 0, 73, 4, 4, 0, 27, 0, 4, 0, 62, 4, - 4, 0, 13, 2, 2, 0, 74, 4, 2, 0, 56, 0, 0, 0, 19, 0, 0, 0, 75, 4, 0, 0, 76, 4, 0, 0, 77, 4, 0, 0, 78, 4, - 14, 0, 79, 4,190, 0, 80, 4, 11, 0, 81, 4,191, 0, 1, 0, 7, 0, 46, 2,181, 0, 30, 0, 4, 0, 18, 0, 7, 0, 82, 4, - 7, 0, 83, 4, 7, 0, 84, 4, 4, 0, 85, 4, 4, 0, 86, 4, 4, 0, 87, 4, 4, 0, 88, 4, 7, 0, 89, 4, 7, 0, 90, 4, - 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, 7, 0, 94, 4, 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, - 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, - 4, 0,107, 4, 4, 0,108, 4, 7, 0,109, 4, 7, 0,227, 3,183, 0, 54, 0, 4, 0, 62, 4, 4, 0,110, 4,192, 0,111, 4, -193, 0,112, 4, 0, 0, 27, 0, 0, 0,113, 4, 2, 0,114, 4, 7, 0,115, 4, 0, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, - 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,125, 4, 2, 0,126, 4, - 0, 0,127, 4, 2, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, 0, 0,131, 4, 4, 0,129, 0, 4, 0,132, 4, 4, 0,133, 4, - 2, 0,134, 4, 2, 0,135, 4,191, 0,136, 4, 4, 0,137, 4, 4, 0, 82, 0, 7, 0,138, 4, 7, 0,139, 4, 7, 0,140, 4, - 7, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4, 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, 2, 0,147, 4, 2, 0,148, 4, - 2, 0,149, 4,194, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4,139, 0,153, 4, 14, 0, 21, 3,187, 0,154, 4, 7, 0,155, 4, - 7, 0,156, 4, 7, 0,157, 4, 4, 0,158, 4,195, 0, 1, 0, 7, 0,159, 4,155, 0, 52, 0,154, 0,160, 4, 2, 0, 16, 0, - 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 7, 0,164, 4, 2, 0,165, 4, 2, 0,166, 4, 7, 0,167, 4, 2, 0,168, 4, - 2, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, 7, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0,175, 4, 4, 0, 27, 0, - 7, 0,176, 4, 4, 0,177, 4, 7, 0,178, 4, 7, 0,179, 4, 7, 0,180, 4, 79, 0,181, 4, 79, 0,182, 4, 0, 0,183, 4, - 7, 0,184, 4, 7, 0,185, 4, 31, 0, 80, 0, 2, 0,186, 4, 0, 0,187, 4, 0, 0,188, 4, 7, 0,189, 4, 4, 0,190, 4, - 7, 0,191, 4, 7, 0,192, 4, 4, 0,193, 4, 4, 0, 18, 0, 7, 0,194, 4, 7, 0,195, 4, 7, 0,196, 4,195, 0,197, 4, - 4, 0, 53, 0, 7, 0,198, 4, 7, 0,199, 4, 7, 0,200, 4, 7, 0,201, 4, 7, 0,202, 4, 7, 0,203, 4, 7, 0,204, 4, - 4, 0,205, 4, 7, 0,206, 4,196, 0, 78, 0, 22, 0, 32, 0, 34, 0, 75, 0, 2, 0,179, 0, 2, 0, 88, 1, 2, 0,122, 1, - 2, 0,207, 4, 7, 0,208, 4, 7, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 7, 0,170, 1, - 7, 0,172, 1, 7, 0,171, 1, 7, 0, 30, 0, 4, 0,214, 4, 7, 0,215, 4, 7, 0,216, 4, 7, 0,217, 4, 7, 0,218, 4, - 7, 0,219, 4, 7, 0,220, 4, 7, 0,221, 4, 2, 0,222, 4, 2, 0, 87, 1, 2, 0,223, 4, 2, 0,224, 4, 2, 0,225, 4, - 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 7, 0,229, 4, 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 7, 0,233, 4, - 7, 0,234, 4, 7, 0,235, 4, 7, 0,236, 4, 7, 0,237, 4, 7, 0,238, 4, 7, 0,239, 4, 7, 0,240, 4, 2, 0,241, 4, - 2, 0,242, 4, 2, 0,243, 4, 2, 0,244, 4, 7, 0,245, 4, 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 2, 0,249, 4, - 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 7, 0, 0, 5, 7, 0, 1, 5, - 7, 0, 2, 5, 7, 0, 3, 5, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 18, 0, - 7, 0, 9, 5, 7, 0, 10, 5, 31, 0, 80, 0, 46, 0,140, 1, 2, 0,141, 1, 2, 0, 76, 1, 2, 0,181, 2, 25, 0,154, 0, - 57, 0, 70, 1,197, 0, 8, 0,197, 0, 0, 0,197, 0, 1, 0, 4, 0,205, 3, 4, 0, 11, 5, 4, 0, 18, 0, 2, 0, 12, 5, - 2, 0, 13, 5, 27, 0,168, 0,198, 0, 13, 0, 11, 0, 14, 5, 11, 0, 15, 5, 4, 0, 16, 5, 4, 0, 17, 5, 4, 0, 18, 5, - 4, 0, 19, 5, 4, 0, 20, 5, 4, 0, 21, 5, 4, 0, 22, 5, 4, 0, 23, 5, 4, 0, 24, 5, 4, 0, 27, 0, 0, 0, 25, 5, -199, 0, 5, 0, 11, 0, 26, 5, 11, 0, 27, 5, 4, 0, 28, 5, 4, 0, 30, 0, 0, 0, 29, 5,200, 0, 17, 0, 4, 0, 30, 5, - 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, 4, 0, 34, 5, 4, 0, 35, 5, 4, 0, 36, 5, 4, 0, 37, 5, 4, 0, 38, 5, - 4, 0, 39, 5, 4, 0, 40, 5, 4, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 4, 0, 91, 0, -201, 0, 17, 0, 4, 0, 16, 0, 4, 0, 32, 5, 4, 0, 46, 5, 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, - 4, 0, 51, 5, 7, 0, 52, 5, 4, 0, 53, 5, 4, 0, 92, 0, 4, 0, 54, 5, 4, 0, 55, 5, 4, 0, 56, 5, 4, 0, 57, 5, - 4, 0, 58, 5, 21, 0, 31, 0,202, 0, 9, 0, 4, 0, 59, 5, 7, 0, 60, 5, 7, 0, 61, 5, 7, 0, 62, 5, 4, 0, 63, 5, - 2, 0, 18, 0, 2, 0, 27, 0, 7, 0, 84, 4, 7, 0, 30, 0,203, 0, 11, 0,203, 0, 0, 0,203, 0, 1, 0, 0, 0, 19, 0, - 63, 0, 64, 5, 64, 0, 65, 5, 4, 0,205, 3, 4, 0, 66, 5, 4, 0, 67, 5, 4, 0, 27, 0, 4, 0, 68, 5, 4, 0, 69, 5, -204, 0, 13, 0, 0, 0, 70, 5, 0, 0,250, 0, 0, 0, 71, 5, 0, 0, 18, 0, 0, 0, 72, 5, 0, 0, 73, 5, 0, 0, 74, 5, - 0, 0, 75, 5, 2, 0, 76, 5, 2, 0, 77, 5, 7, 0, 78, 5, 0, 0, 79, 5, 0, 0,124, 0,205, 0,106, 0,204, 0, 80, 5, -198, 0, 81, 5,199, 0, 82, 5,200, 0, 83, 5,201, 0, 84, 5, 4, 0, 36, 3, 4, 0,129, 0, 4, 0,132, 4, 7, 0, 85, 5, - 4, 0, 86, 5, 4, 0, 87, 5, 4, 0, 88, 5, 4, 0, 89, 5, 2, 0, 18, 0, 2, 0, 90, 5, 7, 0, 91, 5, 7, 0, 92, 5, - 7, 0, 93, 5, 7, 0, 94, 5, 7, 0, 95, 5, 2, 0, 96, 5, 2, 0, 97, 5, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,250, 0, - 2, 0,100, 5, 4, 0,101, 5, 2, 0,102, 5, 2, 0,103, 5, 2, 0,109, 1, 2, 0,108, 0, 2, 0,104, 5, 2, 0,105, 5, - 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5, 2, 0, 71, 5, 2, 0, 70, 5, 2, 0,109, 5, 2, 0, 72, 5, 2, 0,110, 5, - 4, 0,111, 5, 4, 0, 87, 1, 4, 0,112, 5, 2, 0,113, 5, 2, 0, 91, 0, 2, 0,114, 5, 2, 0,115, 5, 2, 0,116, 5, - 2, 0,117, 5, 2, 0,118, 5, 2, 0,119, 5, 19, 0,120, 5, 19, 0,121, 5, 18, 0,122, 5, 14, 0,123, 5, 2, 0,124, 5, - 2, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 7, 0,128, 5, 7, 0,129, 5, 4, 0,130, 5, 7, 0,131, 5, 7, 0,132, 5, - 7, 0,133, 5, 7, 0,134, 5, 2, 0,135, 5, 2, 0,136, 5, 2, 0,137, 5, 2, 0,138, 5, 2, 0,139, 5, 2, 0,140, 5, - 7, 0,141, 5, 7, 0,142, 5, 7, 0,143, 5, 0, 0,144, 5, 4, 0,145, 5, 2, 0,146, 5, 2, 0, 74, 0, 0, 0,147, 5, - 7, 0,148, 5, 7, 0,149, 5, 0, 0,150, 5, 0, 0,151, 5, 0, 0,152, 5, 0, 0,153, 5, 4, 0,154, 5, 2, 0,155, 5, - 2, 0,156, 5, 7, 0,157, 5, 7, 0,158, 5, 2, 0,159, 5, 2, 0,160, 5, 7, 0,161, 5, 2, 0,162, 5, 2, 0,163, 5, - 4, 0,164, 5, 2, 0,165, 5, 2, 0,166, 5, 2, 0,167, 5, 2, 0,168, 5, 7, 0,169, 5, 7, 0, 30, 0, 37, 0,170, 5, - 0, 0,171, 5,206, 0, 9, 0,206, 0, 0, 0,206, 0, 1, 0, 0, 0,172, 5, 2, 0,173, 5, 2, 0,174, 5, 2, 0,175, 5, - 2, 0, 91, 0, 7, 0,176, 5, 7, 0, 30, 0,207, 0, 7, 0, 2, 0,231, 2, 2, 0, 87, 1, 2, 0, 94, 3, 2, 0,177, 5, - 7, 0,178, 5, 7, 0, 30, 0, 37, 0,179, 5,208, 0, 5, 0, 7, 0,180, 5, 0, 0, 16, 0, 0, 0, 91, 0, 0, 0, 30, 0, - 0, 0, 74, 0,209, 0, 15, 0, 7, 0,181, 5, 7, 0,182, 5, 7, 0,183, 5, 7, 0,184, 5, 7, 0,185, 5, 7, 0,186, 5, - 7, 0,187, 5, 7, 0,188, 5, 7, 0,189, 5, 7, 0,190, 5, 4, 0,191, 5, 7, 0,192, 5, 7, 0,193, 5, 2, 0, 91, 0, - 2, 0, 30, 0,210, 0, 32, 0,208, 0,194, 5, 2, 0,195, 5, 2, 0, 97, 5, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,250, 0, - 2, 0,100, 5, 2, 0,196, 5, 2, 0,197, 5, 2, 0,198, 5, 2, 0,199, 5,207, 0,200, 5, 2, 0,201, 5, 2, 0,102, 5, - 7, 0,202, 5,209, 0,203, 5, 7, 0,220, 4, 7, 0,221, 4, 4, 0, 18, 0, 2, 0, 87, 1, 2, 0,204, 5, 2, 0,223, 4, - 2, 0,224, 4, 2, 0,205, 5, 2, 0, 27, 0, 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,206, 5, - 2, 0, 91, 0, 7, 0,207, 5,211, 0, 6, 0,211, 0, 0, 0,211, 0, 1, 0, 4, 0, 61, 4, 0, 0, 19, 0, 4, 0, 18, 0, - 27, 0,208, 5,212, 0, 4, 0,213, 0,146, 3, 11, 0,209, 5, 0, 0,210, 5, 4, 0, 92, 0,214, 0, 8, 0,212, 0,211, 5, - 2, 0, 18, 0, 2, 0, 27, 0, 2, 0,212, 5, 2, 0,213, 5, 2, 0,214, 5, 4, 0, 91, 0, 11, 0,215, 5,215, 0, 6, 0, - 2, 0,108, 0, 2, 0, 67, 4, 2, 0,216, 5, 2, 0,225, 2, 4, 0, 18, 0, 7, 0,209, 2,216, 0, 14, 0, 2, 0, 18, 0, - 2, 0,217, 5, 2, 0,218, 5, 2, 0,219, 5,215, 0,220, 5, 11, 0,215, 5, 7, 0,221, 5, 7, 0, 56, 0, 4, 0,222, 5, - 4, 0,223, 5, 4, 0,224, 5, 4, 0,225, 5, 41, 0,125, 0, 27, 0,168, 0,217, 0, 14, 0,212, 0,211, 5, 4, 0, 92, 0, - 4, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, 7, 0,229, 5, 4, 0,230, 5, 4, 0,231, 5, 7, 0,232, 5, 7, 0,233, 5, - 4, 0,234, 5, 7, 0,235, 5, 7, 0,236, 5, 4, 0, 27, 0,218, 0, 1, 0,212, 0,211, 5,219, 0, 7, 0,212, 0,211, 5, - 2, 0, 18, 0, 2, 0, 27, 0, 4, 0, 37, 0, 4, 0,237, 5, 90, 0,238, 5, 11, 0,215, 5,220, 0, 5, 0,220, 0, 0, 0, -220, 0, 1, 0, 0, 0, 19, 0, 7, 0,239, 5, 4, 0, 27, 0,221, 0, 4, 0, 4, 0,108, 0, 7, 0,240, 5, 7, 0,178, 1, - 4, 0, 18, 0,222, 0, 85, 0,219, 0,241, 5,219, 0,242, 5,217, 0,169, 3,218, 0,243, 5, 7, 0,244, 5, 2, 0,245, 5, - 2, 0,246, 5, 7, 0,247, 5, 7, 0,248, 5, 2, 0, 67, 4, 2, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, - 2, 0,253, 5, 2, 0,222, 5, 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 2, 0, 1, 6, 7, 0, 2, 6, 7, 0, 3, 6, - 7, 0, 4, 6, 2, 0, 5, 6, 2, 0, 6, 6, 2, 0, 7, 6, 2, 0, 8, 6, 2, 0, 9, 6, 2, 0, 10, 6, 2, 0, 11, 6, - 2, 0, 12, 6,214, 0, 13, 6,216, 0, 14, 6, 7, 0, 15, 6, 7, 0, 16, 6, 7, 0, 17, 6, 2, 0, 18, 6, 2, 0, 19, 6, - 0, 0, 20, 6, 0, 0, 21, 6, 2, 0, 22, 6, 7, 0, 23, 6, 7, 0, 24, 6, 7, 0, 25, 6, 7, 0, 26, 6, 7, 0, 27, 6, - 7, 0, 28, 6, 7, 0, 29, 6, 7, 0, 30, 6, 7, 0, 31, 6, 7, 0, 32, 6, 2, 0, 33, 6, 0, 0, 34, 6, 0, 0, 35, 6, - 0, 0, 36, 6, 0, 0, 37, 6, 27, 0, 38, 6, 0, 0, 39, 6, 0, 0, 40, 6, 0, 0, 41, 6, 0, 0, 42, 6, 0, 0, 43, 6, - 0, 0, 44, 6, 0, 0, 45, 6, 0, 0, 46, 6, 0, 0, 47, 6, 0, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, - 2, 0, 52, 6, 0, 0, 53, 6, 0, 0, 54, 6, 0, 0, 55, 6, 0, 0, 56, 6, 4, 0, 57, 6, 4, 0, 58, 6, 4, 0, 59, 6, - 4, 0, 60, 6, 2, 0, 61, 6, 2, 0, 91, 0, 4, 0, 62, 6, 7, 0, 63, 6, 7, 0, 64, 6,221, 0, 65, 6,223, 0, 8, 0, - 4, 0, 66, 6, 4, 0, 67, 6, 4, 0, 68, 6, 4, 0, 69, 6, 4, 0, 70, 6, 4, 0, 71, 6, 4, 0, 53, 0, 4, 0,138, 2, -224, 0, 4, 0, 7, 0, 72, 6, 0, 0, 73, 6, 0, 0, 74, 6, 2, 0, 18, 0,225, 0, 4, 0, 7, 0, 75, 6, 4, 0, 18, 0, - 4, 0, 76, 6, 4, 0, 56, 0, 41, 0, 46, 0, 22, 0, 32, 0, 34, 0, 75, 0, 27, 0,208, 5,196, 0, 77, 6, 41, 0, 78, 6, - 14, 0, 79, 6,197, 0, 80, 6, 27, 0, 81, 6, 7, 0, 82, 6, 7, 0, 83, 6, 7, 0, 84, 6, 7, 0, 85, 6, 4, 0,205, 3, - 4, 0, 86, 6, 4, 0, 87, 6, 2, 0, 18, 0, 2, 0, 76, 1, 57, 0, 70, 1,226, 0, 88, 6,222, 0, 89, 6,227, 0, 90, 6, -205, 0,185, 0,202, 0, 91, 6, 14, 0,102, 0, 14, 0, 92, 6, 11, 0, 93, 6, 11, 0, 94, 6, 11, 0, 95, 6, 11, 0, 96, 6, - 11, 0, 97, 6,228, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0,251, 0, 2, 0,206, 3, 4, 0,216, 3, 4, 0,101, 6, - 14, 0,102, 6,208, 0,194, 5,210, 0,103, 6,224, 0,104, 6,178, 0,182, 3,225, 0,105, 6,229, 0,106, 6, 10, 0, 7, 4, - 10, 0,107, 6,230, 0, 14, 0,230, 0, 0, 0,230, 0, 1, 0, 42, 0,242, 0, 40, 0, 69, 1,229, 0,106, 6,231, 0,108, 6, - 7, 0, 96, 2, 7, 0, 97, 2, 7, 0,108, 0, 7, 0,109, 6, 2, 0,110, 6, 2, 0, 18, 0, 2, 0,143, 0, 2, 0, 27, 0, -232, 0, 39, 0, 7, 0,111, 6, 7, 0,112, 6, 7, 0,113, 6, 7, 0,114, 6, 7, 0,115, 6, 7, 0,116, 6, 7, 0,117, 6, - 7, 0,118, 6, 7, 0,119, 6, 68, 0,120, 6,178, 0,182, 3,232, 0,121, 6,233, 0,122, 6,234, 0,123, 6,235, 0,124, 6, -236, 0,125, 6,237, 0,126, 6, 7, 0,127, 6, 7, 0,128, 6, 7, 0, 94, 1, 7, 0,129, 6, 7, 0,130, 6, 7, 0,131, 6, - 7, 0,132, 6, 7, 0,175, 0, 7, 0,133, 6, 0, 0,134, 6, 0, 0,135, 6, 0, 0,110, 6, 0, 0,136, 6, 2, 0,137, 6, - 2, 0,138, 6, 7, 0,139, 6, 2, 0,140, 6, 2, 0,141, 6, 7, 0,142, 6, 7, 0,143, 6, 7, 0,144, 6, 7, 0,145, 6, -238, 0, 51, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, 7, 0,128, 6, - 7, 0, 94, 1, 7, 0,150, 6, 2, 0,151, 6, 0, 0,211, 2, 4, 0,152, 6, 2, 0,135, 6, 2, 0,110, 6, 27, 0,208, 5, - 27, 0,153, 6, 14, 0,154, 6,230, 0,155, 6,238, 0,121, 6, 0, 0,156, 6, 4, 0,205, 3, 4, 0, 86, 6, 2, 0,157, 6, - 2, 0,158, 6, 2, 0,159, 6, 2, 0,160, 6, 2, 0, 18, 0, 2, 0, 31, 2, 7, 0,114, 0, 7, 0,161, 6, 7, 0,162, 6, - 7, 0,163, 6, 7, 0,175, 0, 7, 0, 82, 6, 2, 0,164, 6, 2, 0,165, 6, 2, 0,166, 6, 0, 0,167, 6, 0, 0,168, 6, - 0, 0,169, 6, 0, 0,170, 6, 0, 0,171, 6, 14, 0,172, 6, 14, 0,173, 6, 14, 0,174, 6, 2, 0,175, 6, 2, 0,152, 2, - 2, 0,176, 6, 0, 0,177, 6, 11, 0,178, 6,178, 0,182, 3,240, 0, 24, 0, 19, 0, 37, 0, 19, 0, 63, 0, 18, 0,179, 6, - 18, 0,180, 6, 18, 0,181, 6, 7, 0,182, 6, 7, 0,183, 6, 7, 0,184, 6, 7, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, - 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0, 18, 0, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6, 2, 0,194, 6, - 2, 0,195, 6, 2, 0,160, 6, 7, 0,196, 6, 4, 0,197, 6, 4, 0,198, 6,239, 0, 6, 0,239, 0, 0, 0,239, 0, 1, 0, - 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6,241, 0, 8, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, - 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, 0, 0,199, 6, 0, 0,124, 0,242, 0, 14, 0,239, 0, 0, 0,239, 0, 1, 0, - 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6,240, 0,200, 6,243, 0,201, 6, 14, 0,202, 6, 2, 0, 87, 1, - 2, 0,203, 6, 4, 0, 18, 0, 7, 0,204, 6, 4, 0,160, 6,244, 0, 21, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, - 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6,240, 0,200, 6, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, - 2, 0,191, 6, 2, 0,209, 6, 2, 0,210, 6, 0, 0, 18, 0, 0, 0, 27, 0, 11, 0, 72, 2, 4, 0,211, 6, 4, 0,212, 6, - 22, 0,213, 6, 11, 0,214, 6,245, 0, 18, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, - 2, 0,149, 6,240, 0,200, 6, 7, 0, 96, 2, 7, 0, 97, 2, 2, 0,205, 6, 2, 0,215, 6, 2, 0,216, 6, 2, 0,217, 6, - 4, 0, 18, 0, 7, 0,218, 6, 4, 0,110, 6, 4, 0, 27, 0,178, 0,182, 3,246, 0, 16, 0, 0, 0,219, 6, 0, 0,220, 6, - 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, 4, 0,225, 6, 4, 0,226, 6, 4, 0,227, 6, 2, 0, 16, 0, - 2, 0, 18, 0, 2, 0,228, 6, 2, 0,229, 6, 2, 0,190, 1, 2, 0,230, 6, 0, 0,231, 6,247, 0, 16, 0,239, 0, 0, 0, -239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 4, 0,232, 6,246, 0,233, 6,248, 0,234, 6, 14, 0,235, 6, 14, 0,236, 6, -249, 0,237, 6,237, 0,238, 6,250, 0,239, 6, 2, 0,240, 6, 2, 0,241, 6, 2, 0,242, 6, 2, 0, 30, 0,251, 0, 15, 0, -239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6,240, 0,200, 6, 14, 0,243, 6, -252, 0,244, 6, 0, 0,245, 6,253, 0,246, 6, 2, 0, 18, 0, 2, 0,247, 6, 2, 0,248, 6, 2, 0,249, 6,254, 0, 25, 0, -239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 4, 0, 18, 0, 42, 0,244, 2, 40, 0, 69, 1, 54, 0,250, 6, -255, 0,251, 6, 0, 1,252, 6,178, 0,182, 3, 7, 0,253, 6, 7, 0, 96, 2, 7, 0, 97, 2, 7, 0,218, 6, 7, 0,254, 6, - 7, 0,255, 6, 2, 0, 0, 7, 2, 0, 27, 0, 2, 0, 1, 7, 2, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, - 0, 0,160, 6, 1, 1, 11, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, - 2, 0,203, 6, 2, 0, 18, 0, 4, 0, 27, 0,243, 0,201, 6,240, 0,200, 6, 2, 1, 31, 0,239, 0, 0, 0,239, 0, 1, 0, - 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, 37, 0, 6, 7, 4, 0, 7, 7, 4, 0, 8, 7, 2, 0, 92, 0, - 2, 0, 9, 7, 2, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 4, 0, 13, 7, 4, 0, 14, 7, 4, 0, 15, 7, 2, 0, 16, 7, - 2, 0, 17, 7, 2, 0, 18, 7, 2, 0, 19, 7, 7, 0, 20, 7, 18, 0, 21, 7, 18, 0, 22, 7, 4, 0, 23, 7, 4, 0, 24, 7, - 0, 0, 25, 7, 0, 0, 26, 7, 2, 0, 27, 7, 0, 0,211, 2, 11, 0, 28, 7, 3, 1, 10, 0, 22, 0, 32, 0, 11, 0, 29, 7, - 11, 0, 30, 7, 11, 0, 31, 7, 11, 0, 32, 7, 11, 0, 33, 7, 4, 0, 92, 0, 4, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, - 4, 1, 10, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 3, 1, 37, 7, 2, 0, 92, 0, - 2, 0, 9, 7, 4, 0, 91, 0, 11, 0, 38, 7, 5, 1, 3, 0, 5, 1, 0, 0, 5, 1, 1, 0, 7, 0, 39, 7, 6, 1, 9, 0, -239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6,240, 0,200, 6, 14, 0, 40, 7, 4, 0, 41, 7, - 4, 0, 18, 0, 7, 1, 27, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, -240, 0,200, 6, 22, 0, 42, 7, 22, 0, 81, 0, 2, 0, 18, 0, 2, 0, 91, 0, 7, 0, 43, 7, 7, 0, 96, 2, 7, 0, 97, 2, - 7, 0,218, 6, 7, 0, 44, 7, 7, 0, 45, 7, 7, 0, 46, 7, 57, 0, 70, 1, 57, 0, 47, 7, 4, 0, 48, 7, 2, 0, 49, 7, - 2, 0, 50, 7, 2, 0,251, 0, 2, 0, 86, 1, 14, 0, 51, 7,178, 0,182, 3, 8, 1, 10, 0,239, 0, 0, 0,239, 0, 1, 0, - 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, 2, 0, 18, 0, 2, 0,214, 3, 4, 0, 27, 0,178, 0,182, 3, - 9, 1, 7, 0, 9, 1, 0, 0, 9, 1, 1, 0, 4, 0, 52, 7, 4, 0, 22, 0, 0, 0, 85, 0, 4, 0, 53, 7, 4, 0, 16, 0, - 10, 1, 14, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, 4, 0, 10, 7, - 4, 0, 27, 0, 14, 0, 54, 7, 14, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 4, 0, 58, 7, 4, 0, 59, 7, 11, 1, 6, 0, -239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 4, 0, 27, 0, 0, 0, 60, 7, 12, 1, 24, 0,239, 0, 0, 0, -239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0, 96, 2, 7, 0, 97, 2, 7, 0, 61, 7, 7, 0, 62, 7, 7, 0,218, 6, -231, 0, 63, 7,229, 0,106, 6, 13, 1,251, 6, 4, 0, 18, 0, 2, 0, 87, 1, 2, 0,110, 6, 4, 0, 64, 7, 7, 0, 65, 7, - 7, 0,148, 3, 7, 0, 94, 3, 4, 0, 27, 0, 7, 0, 66, 7, 7, 0, 67, 7, 4, 0, 68, 7, 4, 0, 69, 7, 14, 1, 7, 0, - 14, 1, 0, 0, 14, 1, 1, 0, 0, 0, 70, 7, 2, 0, 71, 7, 2, 0, 72, 7, 2, 0, 73, 7, 2, 0, 27, 0, 15, 1, 12, 0, - 2, 0, 72, 7, 2, 0, 74, 7, 2, 0, 75, 7, 0, 0,211, 2, 2, 0, 76, 7, 2, 0, 77, 7, 2, 0, 78, 7, 2, 0, 79, 7, - 2, 0, 80, 7, 2, 0,191, 6, 7, 0, 81, 7, 7, 0, 82, 7, 16, 1, 18, 0, 16, 1, 0, 0, 16, 1, 1, 0, 0, 0, 19, 0, - 15, 1, 83, 7, 15, 1, 84, 7, 15, 1, 85, 7, 15, 1, 86, 7, 7, 0, 87, 7, 2, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7, - 2, 0, 91, 7, 2, 0, 92, 7, 2, 0, 93, 7, 2, 0, 94, 7, 2, 0, 95, 7, 2, 0, 96, 7, 2, 0, 27, 0, 17, 1, 10, 0, - 0, 0, 97, 7, 0, 0, 98, 7, 0, 0, 99, 7, 0, 0,100, 7, 0, 0,101, 7, 0, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, - 2, 0,105, 7, 2, 0,106, 7, 18, 1, 8, 0, 0, 0,107, 7, 0, 0,108, 7, 0, 0,109, 7, 0, 0,110, 7, 0, 0,111, 7, - 0, 0,112, 7, 7, 0,109, 6, 7, 0, 27, 0, 19, 1, 3, 0, 0, 0,113, 7, 2, 0,114, 7, 2, 0, 27, 0, 20, 1, 22, 0, - 17, 1,115, 7, 17, 1,116, 7, 17, 1,117, 7, 17, 1,118, 7, 17, 1,119, 7, 17, 1,120, 7, 17, 1,121, 7, 17, 1,122, 7, - 17, 1,123, 7, 17, 1,124, 7, 17, 1,125, 7, 17, 1,126, 7, 17, 1,127, 7, 17, 1,128, 7, 17, 1,129, 7, 17, 1,130, 7, - 17, 1,131, 7, 18, 1,132, 7, 19, 1,133, 7, 0, 0,134, 7, 7, 0,135, 7, 7, 0, 27, 0, 21, 1,122, 0, 0, 0,136, 7, - 0, 0,137, 7, 0, 0,101, 7, 0, 0,138, 7, 0, 0,113, 7, 0, 0,139, 7, 0, 0,140, 7, 0, 0,141, 7, 0, 0,142, 7, - 0, 0,143, 7, 0, 0,144, 7, 0, 0,145, 7, 0, 0,146, 7, 0, 0,147, 7, 0, 0,148, 7, 0, 0,149, 7, 0, 0,150, 7, - 0, 0,151, 7, 0, 0,152, 7, 0, 0,153, 7, 0, 0,154, 7, 0, 0,155, 7, 0, 0,156, 7, 0, 0,157, 7, 0, 0,158, 7, - 0, 0,159, 7, 0, 0,160, 7, 0, 0,161, 7, 0, 0,162, 7, 0, 0,163, 7, 0, 0,164, 7, 0, 0,165, 7, 0, 0,166, 7, - 0, 0,167, 7, 0, 0,168, 7, 0, 0,169, 7, 0, 0,170, 7, 0, 0,171, 7, 0, 0,172, 7, 0, 0,173, 7, 0, 0,174, 7, - 0, 0,175, 7, 0, 0,176, 7, 0, 0,177, 7, 0, 0,178, 7, 0, 0,179, 7, 0, 0,180, 7, 0, 0,181, 7, 0, 0,182, 7, - 0, 0,183, 7, 0, 0,184, 7, 0, 0,185, 7, 0, 0,186, 7, 0, 0,187, 7, 0, 0,188, 7, 0, 0,189, 7, 0, 0,190, 7, - 0, 0,191, 7, 0, 0,192, 7, 0, 0,193, 7, 0, 0,194, 7, 0, 0,195, 7, 0, 0,196, 7, 0, 0,197, 7, 0, 0,198, 7, - 0, 0,199, 7, 0, 0,200, 7, 0, 0,201, 7, 0, 0,202, 7, 0, 0,203, 7, 0, 0,204, 7, 0, 0,205, 7, 0, 0,206, 7, - 0, 0,207, 7, 0, 0,208, 7, 0, 0,209, 7, 0, 0,210, 7, 0, 0,211, 7, 0, 0,212, 7, 0, 0,213, 7, 0, 0,214, 7, - 0, 0,215, 7, 0, 0,216, 7, 0, 0,217, 7, 0, 0,218, 7, 0, 0,219, 7, 0, 0,220, 7, 0, 0,221, 7, 0, 0,222, 7, - 0, 0,223, 7, 0, 0,224, 7, 0, 0,225, 7, 0, 0,226, 7, 0, 0,227, 7, 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, - 0, 0,231, 7, 0, 0,232, 7, 0, 0,233, 7, 0, 0,234, 7, 0, 0,235, 7, 0, 0,236, 7, 0, 0,237, 7, 0, 0,238, 7, - 0, 0,239, 7, 0, 0,240, 7, 0, 0,241, 7, 0, 0,242, 7, 0, 0,243, 7, 0, 0,244, 7, 0, 0,245, 7, 0, 0,246, 7, - 0, 0,247, 7, 0, 0,248, 7, 0, 0,249, 7, 0, 0,250, 7, 0, 0,251, 7, 0, 0,252, 7, 0, 0,253, 7, 0, 0,254, 7, - 0, 0,255, 7, 22, 1, 5, 0, 0, 0, 0, 8, 0, 0,159, 7, 0, 0,165, 7, 2, 0, 18, 0, 2, 0, 27, 0, 23, 1, 24, 0, - 23, 1, 0, 0, 23, 1, 1, 0, 0, 0,172, 5, 20, 1, 1, 8, 21, 1, 2, 8, 21, 1, 3, 8, 21, 1, 4, 8, 21, 1, 5, 8, - 21, 1, 6, 8, 21, 1, 7, 8, 21, 1, 8, 8, 21, 1, 9, 8, 21, 1, 10, 8, 21, 1, 11, 8, 21, 1, 12, 8, 21, 1, 13, 8, - 21, 1, 14, 8, 21, 1, 15, 8, 21, 1, 16, 8, 21, 1, 17, 8, 21, 1, 18, 8, 22, 1, 19, 8, 4, 0, 20, 8, 4, 0, 27, 0, - 24, 1, 3, 0, 24, 1, 0, 0, 24, 1, 1, 0, 0, 0, 21, 8, 25, 1, 5, 0, 4, 0, 18, 0, 4, 0, 27, 0, 7, 0,151, 2, - 7, 0, 22, 8, 7, 0, 46, 2, 26, 1, 95, 0, 4, 0, 18, 0, 4, 0, 23, 8, 4, 0, 24, 8, 0, 0, 25, 8, 0, 0, 26, 8, - 0, 0, 27, 8, 0, 0, 28, 8, 0, 0, 29, 8, 0, 0, 30, 8, 0, 0, 31, 8, 0, 0, 32, 8, 0, 0, 33, 8, 0, 0, 34, 8, - 4, 0, 35, 8, 2, 0, 36, 8, 2, 0, 37, 8, 2, 0, 38, 8, 2, 0, 39, 8, 4, 0, 40, 8, 4, 0, 41, 8, 4, 0, 42, 8, - 4, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 4, 0, 46, 8, 4, 0, 47, 8, 4, 0, 48, 8, 4, 0, 49, 8, 4, 0, 50, 8, - 4, 0, 54, 7, 4, 0, 51, 8, 2, 0, 52, 8, 2, 0, 53, 8, 2, 0, 54, 8, 2, 0, 55, 8, 14, 0, 56, 8, 14, 0, 57, 8, - 14, 0, 58, 8, 14, 0, 59, 8, 14, 0, 60, 8, 14, 0, 61, 8, 0, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, 2, 0, 65, 8, - 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 68, 8, 2, 0, 69, 8, 2, 0, 70, 8, 25, 1, 71, 8, 2, 0, 72, 8, 2, 0, 73, 8, - 2, 0, 74, 8, 2, 0, 75, 8, 2, 0, 76, 8, 2, 0, 77, 8, 2, 0, 78, 8, 2, 0, 79, 8, 4, 0, 80, 8, 4, 0, 81, 8, - 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 84, 8, 2, 0, 85, 8, 2, 0, 86, 8, 2, 0, 87, 8, 2, 0, 88, 8, 2, 0, 89, 8, - 2, 0, 90, 8, 2, 0, 91, 8, 2, 0, 92, 8, 2, 0, 93, 8, 2, 0, 94, 8, 2, 0, 95, 8, 2, 0, 96, 8, 2, 0, 97, 8, - 2, 0, 98, 8, 2, 0, 99, 8, 7, 0,100, 8, 4, 0,101, 8, 7, 0,102, 8, 2, 0, 18, 6, 2, 0, 19, 6, 2, 0,103, 8, - 2, 0,104, 8, 50, 0,105, 8, 7, 0,106, 8, 2, 0,107, 8, 2, 0, 74, 0, 0, 0,108, 8, 4, 0,109, 8, 4, 0,110, 8, - 7, 0,111, 8, 7, 0, 27, 0, 27, 1, 24, 0, 22, 0, 32, 0, 14, 0,112, 8, 14, 0,113, 8, 14, 0,114, 8, 14, 0,146, 6, - 41, 0,125, 0, 41, 0,115, 8, 4, 0,116, 8, 4, 0, 91, 0, 2, 0,117, 8, 2, 0,118, 8, 2, 0,119, 8, 2, 0,120, 8, - 2, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, 2, 0,126, 8, 2, 0,127, 8, 2, 0, 27, 0, -237, 0,128, 8, 11, 0,129, 8, 2, 0,130, 8, 28, 1, 5, 0, 28, 1, 0, 0, 28, 1, 1, 0, 28, 1,131, 8, 15, 0,132, 8, - 4, 0, 18, 0, 29, 1, 7, 0, 29, 1, 0, 0, 29, 1, 1, 0, 28, 1,133, 8, 28, 1,134, 8, 2, 0,121, 5, 2, 0, 18, 0, - 4, 0, 27, 0, 30, 1, 25, 0, 30, 1, 0, 0, 30, 1, 1, 0, 31, 1,135, 8, 32, 1,239, 6, 0, 0,136, 8, 0, 0,137, 8, - 0, 0,138, 8, 2, 0,139, 8, 2, 0,140, 8, 2, 0,141, 8, 2, 0,142, 8, 2, 0,143, 8, 2, 0, 27, 0, 2, 0, 18, 0, - 2, 0, 69, 7, 2, 0,144, 8, 2, 0,145, 8, 4, 0,146, 8, 30, 1,147, 8, 11, 0,148, 8, 4, 0,149, 8, 4, 0,150, 8, - 4, 0,151, 8, 4, 0,152, 8, 0, 0,153, 8, 33, 1, 22, 0, 33, 1, 0, 0, 33, 1, 1, 0, 28, 1,133, 8, 28, 1,134, 8, - 28, 1,154, 8, 28, 1,155, 8, 27, 1,156, 8, 18, 0, 51, 0, 0, 0,147, 6, 0, 0,157, 8, 2, 0,192, 6, 2, 0,193, 6, - 2, 0,158, 8, 2, 0, 27, 0, 2, 0,121, 8, 2, 0, 53, 7, 2, 0, 18, 0, 34, 1,135, 8, 14, 0,159, 8, 14, 0,146, 6, - 14, 0,160, 8, 14, 0,161, 8, 35, 1, 24, 0, 35, 1, 0, 0, 35, 1, 1, 0,240, 0,200, 6, 18, 0,162, 8, 18, 0,163, 8, - 2, 0,192, 6, 2, 0,193, 6, 2, 0,164, 8, 2, 0,165, 8, 2, 0,166, 8, 2, 0, 18, 0, 7, 0, 92, 2, 2, 0,141, 8, - 2, 0,142, 8, 2, 0,120, 8, 2, 0,167, 8, 2, 0,125, 8, 2, 0, 86, 1, 36, 1,135, 8, 14, 0,168, 8, 14, 0,169, 8, - 14, 0,160, 8, 0, 0,170, 8, 11, 0,171, 8, 37, 1, 14, 0, 0, 0,172, 8, 2, 0,173, 8, 2, 0,174, 8, 2, 0,175, 8, - 2, 0,176, 8, 2, 0,110, 5, 2, 0,177, 8, 27, 1,178, 8, 41, 0,179, 8, 4, 0,180, 8, 4, 0,181, 8, 4, 0,182, 8, - 4, 0, 27, 0, 0, 0, 70, 7, 38, 1, 3, 0, 0, 0,183, 8, 4, 0,184, 8, 4, 0,185, 8, 39, 1, 4, 0, 4, 0, 7, 7, - 4, 0,186, 8, 4, 0, 13, 7, 4, 0,187, 8, 40, 1, 2, 0, 4, 0,188, 8, 4, 0,189, 8, 41, 1, 5, 0, 7, 0,190, 8, - 7, 0,191, 8, 7, 0,192, 8, 4, 0, 18, 0, 4, 0, 27, 0, 42, 1, 7, 0, 0, 0,193, 8, 0, 0,221, 6, 44, 0,138, 0, - 2, 0,194, 8, 2, 0, 72, 5, 2, 0,195, 8, 2, 0,196, 8, 43, 1, 12, 0, 43, 1, 0, 0, 43, 1, 1, 0, 4, 0, 28, 0, - 4, 0,197, 8, 4, 0,198, 8, 4, 0,199, 8, 38, 1,200, 8, 0, 0,193, 8, 42, 1,176, 3, 39, 1,201, 8, 40, 1,202, 8, - 41, 1,203, 8, 44, 1, 12, 0, 0, 0, 35, 0, 11, 0,227, 0, 0, 0,228, 0, 4, 0,231, 0, 4, 0,239, 0, 11, 0,232, 0, - 7, 0,234, 0, 7, 0,235, 0, 11, 0,204, 8, 11, 0,205, 8, 11, 0,236, 0, 11, 0,238, 0, 45, 1, 48, 0, 45, 1, 0, 0, - 45, 1, 1, 0, 11, 0,206, 8, 11, 0, 25, 0, 0, 0, 19, 0, 4, 0, 18, 0, 4, 0, 16, 0, 4, 0, 22, 0, 4, 0, 89, 0, - 4, 0,207, 8, 4, 0,208, 8, 4, 0,198, 8, 4, 0,199, 8, 4, 0,209, 8, 4, 0,250, 0, 4, 0,210, 8, 4, 0,211, 8, - 7, 0,212, 8, 7, 0,213, 8, 7, 0,214, 8, 2, 0,215, 8, 2, 0,216, 8, 4, 0,217, 8, 4, 0,218, 8, 43, 1,219, 8, - 31, 0, 80, 0, 41, 0,125, 0, 27, 0,220, 8, 44, 0,138, 0,229, 0,106, 6, 7, 0,221, 8, 7, 0,222, 8, 44, 1, 71, 1, - 45, 1,223, 8, 45, 1,224, 8, 45, 1,225, 8, 14, 0,226, 8, 46, 1,227, 8, 11, 0,228, 8, 7, 0, 84, 4, 7, 0,229, 8, - 7, 0,230, 8, 7, 0,231, 8, 11, 0,232, 8, 4, 0,233, 8, 4, 0,234, 8, 4, 0,235, 8, 7, 0,236, 8, 47, 1, 4, 0, - 47, 1, 0, 0, 47, 1, 1, 0, 14, 0,237, 8, 45, 1,238, 8,226, 0, 11, 0, 14, 0,239, 8, 14, 0,226, 8, 14, 0,240, 8, - 45, 1,241, 8, 0, 0,242, 8, 0, 0,243, 8, 4, 0,244, 8, 4, 0,245, 8, 4, 0,246, 8, 4, 0, 27, 0, 19, 0,247, 8, - 48, 1, 4, 0, 7, 0,248, 8, 7, 0, 94, 3, 2, 0,249, 8, 2, 0,250, 8, 49, 1, 6, 0, 7, 0,251, 8, 7, 0,252, 8, - 7, 0,253, 8, 7, 0,254, 8, 4, 0,255, 8, 4, 0, 0, 9, 50, 1, 8, 0, 7, 0, 1, 9, 7, 0, 2, 9, 7, 0, 3, 9, - 7, 0, 4, 9, 7, 0, 5, 9, 4, 0,250, 2, 4, 0, 6, 9, 4, 0, 7, 9, 51, 1, 2, 0, 7, 0,180, 5, 7, 0, 27, 0, - 52, 1, 5, 0, 7, 0, 8, 9, 7, 0, 9, 9, 4, 0, 92, 0, 4, 0,212, 2, 4, 0, 10, 9, 53, 1, 6, 0, 53, 1, 0, 0, - 53, 1, 1, 0, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 11, 9, 2, 0, 56, 0, 54, 1, 8, 0, 54, 1, 0, 0, 54, 1, 1, 0, - 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 11, 9, 2, 0, 56, 0, 7, 0, 22, 0, 7, 0,129, 0, 55, 1, 45, 0, 55, 1, 0, 0, - 55, 1, 1, 0, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 11, 9, 2, 0,246, 0, 2, 0,126, 4, 2, 0, 12, 9, 7, 0, 13, 9, - 7, 0, 90, 0, 7, 0, 7, 3, 4, 0, 14, 9, 4, 0, 82, 0, 4, 0,214, 2, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, - 7, 0, 18, 9, 7, 0, 19, 9, 7, 0, 20, 9, 7, 0, 4, 3, 7, 0, 68, 1, 7, 0, 21, 9, 7, 0, 22, 9, 7, 0, 27, 0, - 7, 0, 23, 9, 7, 0, 24, 9, 7, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, 2, 0, 29, 9, 2, 0, 30, 9, - 2, 0, 31, 9, 2, 0, 32, 9, 2, 0, 33, 9, 2, 0, 31, 2, 2, 0, 34, 9, 2, 0, 28, 2, 2, 0, 35, 9, 0, 0, 36, 9, - 0, 0, 37, 9, 7, 0,244, 0, 56, 1, 38, 9, 64, 0,249, 1, 57, 1, 16, 0, 57, 1, 0, 0, 57, 1, 1, 0, 2, 0, 16, 0, - 2, 0, 18, 0, 2, 0, 11, 9, 2, 0,246, 0, 7, 0,255, 2, 7, 0, 0, 3, 7, 0, 1, 3, 7, 0, 81, 2, 7, 0, 2, 3, - 7, 0, 3, 3, 7, 0, 39, 9, 7, 0, 4, 3, 7, 0, 6, 3, 7, 0, 7, 3,253, 0, 5, 0, 2, 0, 16, 0, 2, 0, 40, 9, - 2, 0, 18, 0, 2, 0, 41, 9, 22, 0, 42, 7,252, 0, 3, 0, 4, 0, 68, 0, 4, 0, 42, 9,253, 0, 2, 0, 58, 1, 7, 0, - 58, 1, 0, 0, 58, 1, 1, 0, 0, 0, 19, 0, 2, 0, 16, 0, 2, 0, 18, 0, 4, 0, 21, 0, 11, 0, 43, 9, 59, 1, 5, 0, - 0, 0, 19, 0, 7, 0, 94, 1, 7, 0, 44, 9, 4, 0, 45, 9, 4, 0, 27, 0, 60, 1, 4, 0, 2, 0, 16, 0, 2, 0, 18, 0, - 2, 0, 91, 0, 2, 0, 30, 0, 61, 1, 4, 0, 0, 0, 19, 0, 63, 0, 46, 9, 7, 0, 94, 1, 7, 0, 27, 0, 62, 1, 6, 0, - 2, 0, 47, 9, 2, 0, 48, 9, 2, 0, 16, 0, 2, 0, 49, 9, 0, 0, 50, 9, 0, 0, 51, 9, 63, 1, 5, 0, 4, 0, 16, 0, - 4, 0, 27, 0, 0, 0, 19, 0, 0, 0, 52, 9, 0, 0, 53, 9, 64, 1, 3, 0, 4, 0, 16, 0, 4, 0, 27, 0, 0, 0, 19, 0, - 65, 1, 4, 0, 2, 0, 54, 9, 2, 0, 55, 9, 2, 0, 18, 0, 2, 0, 27, 0, 66, 1, 6, 0, 0, 0, 19, 0, 0, 0, 56, 9, - 2, 0, 57, 9, 2, 0, 4, 3, 2, 0, 87, 1, 2, 0, 30, 0, 67, 1, 5, 0, 0, 0, 19, 0, 7, 0, 94, 3, 7, 0,217, 4, - 2, 0, 18, 0, 2, 0,226, 2, 68, 1, 3, 0, 0, 0, 19, 0, 4, 0,214, 2, 4, 0, 54, 9, 69, 1, 7, 0, 0, 0, 19, 0, - 7, 0,217, 4, 0, 0, 58, 9, 0, 0, 59, 9, 2, 0, 87, 1, 2, 0, 91, 0, 4, 0, 60, 9, 70, 1, 4, 0, 0, 0, 61, 9, - 0, 0, 62, 9, 4, 0, 16, 0, 7, 0,230, 2, 71, 1, 3, 0, 27, 0, 63, 9, 0, 0, 64, 9, 0, 0, 65, 9, 72, 1, 18, 0, - 72, 1, 0, 0, 72, 1, 1, 0, 2, 0, 16, 0, 2, 0, 66, 9, 2, 0, 18, 0, 2, 0, 67, 9, 2, 0, 68, 9, 2, 0, 69, 9, - 2, 0, 91, 0, 2, 0, 30, 0, 0, 0, 19, 0, 11, 0, 2, 0, 73, 1, 70, 9, 27, 0, 44, 0, 2, 0,216, 5, 2, 0,176, 2, - 2, 0, 71, 9, 2, 0, 27, 0, 74, 1, 11, 0, 0, 0, 19, 0, 0, 0, 16, 0, 0, 0, 72, 9, 2, 0, 18, 0, 2, 0,226, 2, - 2, 0, 73, 9, 4, 0, 74, 9, 4, 0, 75, 9, 4, 0, 76, 9, 4, 0, 77, 9, 4, 0, 78, 9, 75, 1, 1, 0, 0, 0, 79, 9, - 76, 1, 4, 0, 37, 0, 6, 7, 0, 0, 21, 8, 4, 0, 87, 1, 4, 0, 18, 0, 73, 1, 18, 0, 73, 1, 0, 0, 73, 1, 1, 0, - 73, 1, 80, 9, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 81, 9, 2, 0, 69, 9, 2, 0, 66, 9, 2, 0, 82, 9, 2, 0, 30, 0, - 2, 0, 74, 0, 0, 0, 19, 0, 11, 0, 2, 0, 77, 1, 70, 9, 72, 1, 83, 9, 2, 0, 14, 0, 2, 0, 84, 9, 4, 0, 85, 9, - 78, 1, 3, 0, 4, 0,240, 2, 4, 0, 27, 0, 27, 0, 44, 0, 79, 1, 15, 0,176, 0, 86, 9, 2, 0, 16, 0, 2, 0, 18, 0, - 7, 0, 13, 9, 7, 0, 90, 0, 0, 0, 19, 0, 0, 0, 87, 9, 2, 0, 88, 9, 2, 0, 89, 9, 2, 0,134, 0, 2, 0, 90, 9, - 2, 0, 91, 9, 2, 0, 27, 0, 7, 0, 92, 9, 7, 0, 93, 9, 80, 1, 8, 0, 7, 0, 94, 9, 7, 0, 95, 9, 7, 0, 96, 9, - 7, 0, 97, 9, 7, 0, 98, 9, 7, 0, 99, 9, 7, 0,100, 9, 7, 0,101, 9, 81, 1, 13, 0, 2, 0, 18, 0, 2, 0,102, 9, - 4, 0, 91, 0, 4, 0, 30, 0, 2, 0,177, 6, 7, 0, 84, 4, 7, 0,229, 8, 46, 1,227, 8, 80, 1,103, 9, 2, 0, 16, 0, - 2, 0,115, 5, 2, 0,216, 3, 2, 0,104, 9, 82, 1, 11, 0, 4, 0,240, 2, 2, 0, 16, 0, 2, 0, 18, 0, 27, 0, 44, 0, - 79, 0,105, 9, 0, 0, 19, 0, 7, 0,106, 9, 7, 0,107, 9, 7, 0,222, 3, 2, 0,108, 9, 2, 0,109, 9, 83, 1, 5, 0, - 2, 0, 16, 0, 2, 0, 91, 0, 4, 0, 27, 0, 41, 0,125, 0, 27, 0,208, 5, 84, 1, 5, 0, 4, 0, 27, 0, 4, 0, 16, 0, - 0, 0, 19, 0, 0, 0, 52, 9, 27, 0, 44, 0, 85, 1, 13, 0, 2, 0, 18, 0, 2, 0, 16, 0, 2, 0, 66, 9, 2, 0,223, 3, - 7, 0,110, 9, 7, 0,111, 9, 7, 0, 86, 1, 7, 0,112, 9, 7, 0,192, 3, 7, 0,196, 3, 7, 0,113, 9, 7, 0,114, 9, - 27, 0,115, 9, 86, 1, 10, 0, 2, 0, 18, 0, 2, 0, 16, 0, 7, 0, 13, 9, 7, 0, 90, 0, 0, 0, 19, 0, 0, 0, 87, 9, - 2, 0, 91, 0, 2, 0, 30, 0, 2, 0, 74, 0, 2, 0,115, 5, 87, 1, 8, 0, 27, 0, 44, 0, 7, 0, 1, 3, 7, 0,116, 9, - 7, 0,117, 9, 7, 0,223, 3, 2, 0, 91, 0, 2, 0,226, 2, 7, 0, 30, 0, 88, 1, 12, 0, 2, 0, 16, 0, 2, 0, 87, 1, - 2, 0, 18, 0, 2, 0, 4, 3, 2, 0,240, 2, 2, 0,118, 9, 4, 0, 27, 0, 7, 0,119, 9, 7, 0,120, 9, 7, 0,121, 9, - 7, 0,122, 9, 0, 0,123, 9, 89, 1, 9, 0, 2, 0, 18, 0, 2, 0, 16, 0, 4, 0, 13, 9, 4, 0, 90, 0, 0, 0, 19, 0, - 2, 0, 86, 1, 2, 0, 63, 0, 2, 0,124, 9, 2, 0,125, 9, 90, 1, 7, 0, 4, 0,214, 2, 4, 0,126, 9, 4, 0,127, 9, - 4, 0,128, 9, 7, 0,129, 9, 7, 0,130, 9, 0, 0, 58, 9, 91, 1, 7, 0, 0, 0,131, 9, 27, 0,132, 9, 0, 0, 64, 9, - 2, 0,133, 9, 2, 0, 91, 0, 4, 0, 30, 0, 0, 0, 65, 9, 92, 1, 6, 0, 2, 0, 18, 0, 2, 0, 16, 0, 4, 0, 13, 9, - 4, 0, 90, 0, 0, 0,134, 9, 0, 0,135, 9, 93, 1, 1, 0, 4, 0, 18, 0, 94, 1, 6, 0, 0, 0, 94, 0, 2, 0, 16, 0, - 2, 0, 18, 0, 4, 0,136, 9, 7, 0,137, 9, 37, 0, 6, 7, 95, 1, 4, 0, 0, 0,181, 2, 2, 0, 18, 0, 4, 0, 16, 0, - 27, 0, 44, 0, 96, 1, 2, 0, 4, 0, 16, 0, 4, 0,181, 6, 97, 1, 8, 0, 0, 0, 61, 9, 0, 0, 62, 9, 4, 0, 16, 0, - 7, 0, 39, 2, 7, 0,138, 9, 7, 0, 27, 0, 27, 0, 70, 3, 27, 0,139, 9, 98, 1, 11, 0, 0, 0, 54, 6, 0, 0, 18, 0, - 2, 0,140, 9, 4, 0, 16, 0, 7, 0, 94, 1, 7, 0,141, 9, 7, 0,142, 9, 7, 0,143, 9, 4, 0,144, 9, 27, 0, 70, 3, - 27, 0,145, 9, 77, 1, 10, 0, 77, 1, 0, 0, 77, 1, 1, 0, 77, 1, 80, 9, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 66, 9, - 2, 0,146, 9, 0, 0, 19, 0, 11, 0, 2, 0, 27, 0, 44, 0, 46, 1, 17, 0, 22, 0, 32, 0, 0, 0, 35, 0, 38, 0,153, 0, - 11, 0,227, 0, 38, 0,147, 9, 31, 0, 80, 0, 7, 0, 84, 4, 7, 0,148, 9, 7, 0,229, 8, 7, 0, 94, 9, 7, 0, 95, 9, - 7, 0,149, 9, 4, 0, 92, 0, 4, 0, 27, 0, 11, 0,150, 9, 11, 0,151, 9, 11, 0,152, 9, 99, 1, 6, 0, 99, 1, 0, 0, - 99, 1, 1, 0, 27, 0, 44, 0, 11, 0,153, 9, 2, 0,251, 0, 0, 0,211, 2, 64, 0, 4, 0, 22, 0, 32, 0, 14, 0,154, 9, - 4, 0,134, 0, 7, 0,155, 9,100, 1, 28, 0,100, 1, 0, 0,100, 1, 1, 0, 21, 0,156, 9,100, 1, 38, 0, 14, 0,157, 9, - 0, 0, 19, 0, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9, 4, 0, 18, 0, 7, 0,162, 9, 7, 0,163, 9, - 7, 0,164, 9, 7, 0,165, 9, 7, 0, 94, 1, 7, 0, 39, 2, 7, 0,166, 9, 7, 0,212, 2, 7, 0,167, 9, 7, 0,168, 9, - 7, 0,169, 9, 7, 0,170, 9, 7, 0,171, 9, 7, 0,176, 0, 4, 0,134, 0, 2, 0,254, 5, 2, 0,172, 9,101, 1, 27, 0, - 22, 0, 32, 0, 34, 0, 75, 0, 14, 0,173, 9, 14, 0,174, 9, 14, 0,175, 9,100, 1,176, 9, 11, 0,177, 9, 11, 0,178, 9, - 4, 0, 18, 0, 4, 0,157, 6, 4, 0,179, 9, 4, 0, 27, 0, 2, 0, 8, 3, 2, 0,211, 6, 4, 0,180, 9, 4, 0,134, 0, - 4, 0,181, 9, 2, 0,182, 9, 2, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 4, 0,186, 9, 4, 0,187, 9, 4, 0,188, 9, - 4, 0,189, 9, 4, 0,190, 9, 4, 0,191, 9,102, 1, 2, 0, 7, 0,165, 2, 4, 0, 18, 0,180, 0, 5, 0,102, 1,192, 9, - 4, 0,212, 2, 4, 0,193, 9, 4, 0,194, 9, 4, 0, 18, 0,179, 0, 16, 0, 4, 0,195, 9, 4, 0,196, 9, 4, 0,197, 9, - 4, 0,198, 9, 2, 0,199, 9, 2, 0,200, 9, 2, 0,201, 9, 2, 0,251, 0, 2, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, - 2, 0,205, 9, 4, 0,206, 9, 4, 0,207, 9, 4, 0,208, 9, 4, 0,209, 9,103, 1, 40, 0,103, 1, 0, 0,103, 1, 1, 0, - 21, 0,156, 9, 14, 0,251, 3, 0, 0, 19, 0, 2, 0, 18, 0, 2, 0,210, 9, 2, 0,209, 3, 2, 0,211, 9, 0, 0,212, 9, - 0, 0,213, 9, 0, 0,214, 9,100, 1,215, 9,103, 1, 38, 0,103, 1,216, 9, 14, 0,217, 9, 14, 0,218, 9,180, 0,184, 3, - 27, 0,219, 9,103, 1,220, 9, 7, 0, 77, 1, 7, 0,176, 0, 7, 0,221, 9, 7, 0, 18, 2, 7, 0,198, 3, 7, 0,200, 3, - 2, 0,232, 3, 2, 0, 27, 0, 7, 0,222, 9, 7, 0,223, 9, 7, 0,203, 3, 7, 0,224, 9, 7, 0,225, 9, 7, 0,226, 9, - 7, 0,227, 9, 7, 0,228, 9, 7, 0,229, 9, 7, 0,230, 9, 7, 0,231, 9, 11, 0,232, 9,177, 0, 16, 0, 14, 0,233, 9, - 74, 0,234, 9, 2, 0, 18, 0, 2, 0, 27, 0, 4, 0,235, 9, 4, 0, 91, 0, 7, 0,108, 2, 7, 0,236, 9, 7, 0,237, 9, - 14, 0,238, 9, 4, 0,239, 9, 4, 0,240, 9, 11, 0,241, 9, 11, 0,242, 9,179, 0,183, 3, 0, 0,243, 9,104, 1, 1, 0, - 4, 0,240, 9,105, 1, 12, 0, 4, 0,240, 9, 7, 0, 78, 9, 2, 0,244, 9, 2, 0,245, 9, 7, 0,246, 9, 7, 0,247, 9, - 2, 0,248, 9, 2, 0, 18, 0, 7, 0,249, 9, 7, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9,106, 1, 7, 0,106, 1, 0, 0, -106, 1, 1, 0, 14, 0,253, 9, 4, 0, 18, 0, 4, 0,254, 9, 0, 0, 19, 0, 22, 1,255, 9,176, 0, 9, 0, 22, 0, 32, 0, - 14, 0, 0, 10, 14, 0,233, 9, 14, 0, 1, 10, 14, 0,102, 0, 4, 0, 18, 0, 4, 0, 2, 10, 4, 0, 3, 10, 4, 0, 27, 0, -243, 0, 8, 0, 22, 0, 4, 10, 14, 0,233, 9, 64, 0, 5, 10, 0, 0, 6, 10, 4, 0, 7, 10, 4, 0, 18, 0, 4, 0, 8, 10, - 4, 0, 27, 0,107, 1, 13, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,146, 6, 4, 0,147, 6, 7, 0,148, 6, 2, 0,149, 6, -240, 0,200, 6,176, 0,179, 3,243, 0, 9, 10, 0, 0, 87, 1, 0, 0,203, 6, 2, 0, 18, 0, 7, 0, 10, 10,108, 1, 8, 0, -108, 1, 0, 0,108, 1, 1, 0,106, 1, 11, 10, 31, 0, 80, 0, 14, 0,185, 3, 4, 0, 18, 0, 0, 0, 19, 0, 4, 0,118, 8, -109, 1, 5, 0,109, 1, 0, 0,109, 1, 1, 0, 31, 0, 80, 0, 2, 0, 18, 0, 0, 0, 12, 10,110, 1, 14, 0,110, 1, 0, 0, -110, 1, 1, 0, 11, 0, 2, 0, 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 13, 10, 0, 0, 14, 10, 0, 0, 19, 0, 2, 0, 27, 0, - 7, 0, 15, 10, 7, 0, 16, 10, 31, 0, 80, 0, 7, 0, 17, 10, 7, 0, 18, 10,111, 1, 9, 0,111, 1, 0, 0,111, 1, 1, 0, - 27, 0, 19, 10, 0, 0, 11, 3, 7, 0, 20, 10, 2, 0, 21, 10, 2, 0, 18, 0, 2, 0, 16, 0, 2, 0, 22, 10,112, 1, 7, 0, - 37, 0, 6, 7, 21, 0,156, 9, 4, 0, 18, 0, 4, 0, 23, 10, 14, 0, 24, 10, 27, 0, 19, 10, 0, 0, 11, 3,113, 1, 15, 0, - 27, 0, 19, 10, 2, 0, 25, 10, 2, 0, 18, 0, 2, 0, 26, 10, 2, 0, 27, 10, 0, 0, 11, 3, 27, 0, 28, 10, 0, 0, 29, 10, - 7, 0, 30, 10, 7, 0, 39, 2, 7, 0, 31, 10, 7, 0, 32, 10, 2, 0, 16, 0, 2, 0, 87, 1, 7, 0, 94, 1,114, 1, 6, 0, - 27, 0, 19, 10, 7, 0,192, 9, 2, 0, 33, 10, 2, 0, 34, 10, 2, 0, 18, 0, 2, 0, 35, 10,115, 1, 6, 0, 27, 0, 19, 10, - 4, 0, 36, 10, 4, 0, 37, 10, 4, 0, 92, 0, 4, 0, 27, 0, 0, 0, 11, 3,116, 1, 4, 0, 27, 0, 19, 10, 4, 0, 18, 0, - 4, 0, 36, 10, 0, 0, 11, 3,117, 1, 4, 0, 27, 0, 19, 10, 4, 0, 18, 0, 4, 0, 36, 10, 0, 0, 11, 3,118, 1, 4, 0, - 27, 0, 19, 10, 4, 0, 18, 0, 4, 0, 36, 10, 0, 0, 11, 3,119, 1, 2, 0, 4, 0, 18, 0, 7, 0, 84, 4,120, 1, 2, 0, - 27, 0, 19, 10, 0, 0, 11, 3,121, 1, 10, 0, 27, 0, 19, 10, 4, 0, 38, 10, 7, 0,128, 0, 4, 0, 18, 0, 2, 0, 4, 7, - 2, 0, 39, 10, 2, 0, 91, 0, 2, 0, 30, 0, 7, 0, 40, 10, 0, 0, 11, 3,122, 1, 10, 0, 27, 0, 19, 10, 2, 0, 16, 0, - 2, 0,134, 4, 4, 0, 89, 0, 4, 0, 90, 0, 7, 0,116, 9, 7, 0,117, 9, 4, 0, 27, 0,176, 0, 86, 9, 0, 0, 11, 3, -123, 1, 4, 0, 27, 0, 19, 10, 4, 0,210, 3, 4, 0, 41, 10, 0, 0, 11, 3,124, 1, 4, 0, 27, 0, 19, 10, 4, 0,210, 3, - 4, 0, 27, 0, 0, 0, 11, 3,125, 1, 6, 0, 27, 0, 19, 10, 7, 0,128, 0, 7, 0, 82, 3, 4, 0, 42, 10, 2, 0,210, 3, - 2, 0,211, 3,126, 1, 6, 0, 27, 0, 19, 10, 4, 0, 43, 10, 4, 0, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 0, 0, 11, 3, -127, 1, 16, 0, 27, 0, 19, 10, 27, 0,216, 9, 4, 0, 16, 0, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10, 7, 0, 50, 10, - 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0, 55, 10, 2, 0, 18, 0, 2, 0, 27, 0, 2, 0, 91, 0, - 2, 0, 30, 0,128, 1, 3, 0, 27, 0, 19, 10, 4, 0, 18, 0, 4, 0, 31, 2,129, 1, 5, 0, 27, 0, 19, 10, 4, 0, 18, 0, - 4, 0, 27, 0, 7, 0, 56, 10, 0, 0, 11, 3,130, 1, 10, 0, 27, 0, 19, 10, 0, 0, 11, 3, 2, 0, 57, 10, 2, 0, 58, 10, - 0, 0, 59, 10, 0, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 7, 0, 63, 10, 7, 0, 64, 10,131, 1, 5, 0, 27, 0, 19, 10, - 0, 0, 11, 3, 7, 0,220, 2, 2, 0, 65, 10, 2, 0, 18, 0,132, 1, 8, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 66, 10, 7, 0, 67, 10, 2, 0, 18, 0, 2, 0, 31, 2,133, 1, 8, 0, 7, 0, 8, 0, 7, 0, 9, 0, - 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 66, 10, 7, 0, 67, 10, 2, 0, 18, 0, 2, 0, 31, 2,134, 1, 8, 0, 7, 0, 8, 0, - 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 66, 10, 7, 0, 67, 10, 2, 0, 18, 0, 2, 0, 31, 2,135, 1, 7, 0, - 27, 0, 19, 10, 0, 0, 11, 3, 7, 0, 94, 1, 7, 0,103, 1, 2, 0, 18, 0, 2, 0, 87, 1, 4, 0, 27, 0,136, 1, 5, 0, - 27, 0, 70, 3, 7, 0, 94, 1, 2, 0, 74, 3, 0, 0, 76, 3, 0, 0, 68, 10,137, 1, 7, 0,229, 0,106, 6, 0, 0, 69, 10, - 4, 0, 18, 0, 4, 0, 27, 0, 0, 0, 70, 10, 27, 0,208, 5, 27, 0, 71, 10,138, 1, 3, 0,229, 0,106, 6, 4, 0, 18, 0, - 4, 0, 27, 0,139, 1, 6, 0,229, 0,106, 6, 4, 0, 18, 0, 4, 0, 27, 0, 0, 0, 70, 10, 7, 0, 56, 10, 27, 0,208, 5, -140, 1, 10, 0,140, 1, 0, 0,140, 1, 1, 0, 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 72, 10, 7, 0, 31, 1, 7, 0, 32, 1, - 2, 0,253, 9, 2, 0, 73, 10, 27, 0, 44, 0,141, 1, 22, 0,141, 1, 0, 0,141, 1, 1, 0, 2, 0, 18, 0, 2, 0, 87, 1, - 2, 0, 74, 10, 2, 0, 75, 10, 31, 0, 80, 0,176, 0, 86, 9, 27, 0,168, 0, 7, 0, 89, 0, 7, 0, 90, 0, 7, 0, 76, 10, - 7, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0,253, 2, 7, 0,148, 3, 7, 0, 88, 9, 7, 0, 80, 10, 0, 0, 81, 10, - 0, 0, 82, 10, 14, 0,188, 3,142, 1, 11, 0, 7, 0, 46, 2, 7, 0,116, 9, 7, 0,117, 9, 11, 0, 2, 0, 2, 0, 83, 10, - 2, 0, 84, 10, 2, 0, 85, 10, 2, 0, 86, 10, 2, 0, 87, 10, 2, 0, 88, 10, 2, 0,181, 2,143, 1, 21, 0,143, 1, 0, 0, -143, 1, 1, 0,143, 1, 89, 10, 0, 0, 19, 0, 11, 0, 90, 10, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 91, 10, 2, 0, 92, 10, - 7, 0, 93, 10, 7, 0, 94, 10, 11, 0, 95, 10, 2, 0, 96, 10, 2, 0, 97, 10, 4, 0, 74, 0, 11, 0,150, 9, 4, 0, 98, 10, - 4, 0, 99, 10,143, 1,100, 10,144, 1,101, 10,142, 1,102, 10,145, 1, 4, 0, 0, 0,103, 10, 2, 0,104, 10, 2, 0,105, 10, - 4, 0, 27, 0,146, 1, 37, 0,146, 1, 0, 0,146, 1, 1, 0,146, 1,106, 10, 0, 0, 19, 0, 2, 0, 16, 0, 2, 0, 18, 0, - 2, 0,197, 8, 2, 0,176, 2, 2, 0,107, 10, 2, 0, 9, 7, 2, 0, 96, 10, 2, 0, 40, 9, 14, 0, 81, 9, 14, 0,108, 10, -146, 1, 38, 0, 22, 0, 42, 7, 11, 0, 90, 10, 7, 0, 93, 10, 7, 0, 94, 10, 7, 0, 81, 2, 7, 0, 1, 3, 7, 0,109, 10, - 4, 0,110, 10, 0, 0,111, 10, 2, 0,112, 10, 2, 0,113, 10, 7, 0,114, 10, 7, 0,115, 10, 2, 0,116, 10, 2, 0,117, 10, - 11, 0,118, 10, 19, 0,119, 10, 19, 0,120, 10, 19, 0,121, 10,145, 1,154, 0,147, 1,122, 10,148, 1,123, 10,144, 1, 8, 0, -144, 1, 0, 0,144, 1, 1, 0,146, 1,124, 10,146, 1,125, 10,143, 1,126, 10,143, 1,127, 10, 4, 0, 18, 0, 4, 0, 27, 0, - 57, 0, 20, 0, 22, 0, 32, 0, 34, 0, 75, 0,178, 0,182, 3, 14, 0,128, 10, 14, 0,129, 10, 4, 0, 16, 0, 4, 0,130, 10, - 4, 0,131, 10, 4, 0, 18, 0, 4, 0,110, 10, 4, 0,132, 10, 14, 0, 81, 9, 14, 0,108, 10,149, 1,133, 10, 11, 0,134, 10, - 11, 0,135, 10, 4, 0,136, 10, 11, 0,137, 10, 11, 0,138, 10, 11, 0,139, 10,150, 1, 4, 0, 4, 0, 17, 0, 4, 0,230, 2, - 4, 0,116, 9, 4, 0,117, 9,151, 1, 4, 0, 4, 0, 17, 0, 7, 0,230, 2, 7, 0,116, 9, 7, 0,117, 9,152, 1, 2, 0, - 0, 0,230, 2, 0, 0, 86, 1,153, 1, 4, 0, 4, 0, 17, 0, 7, 0,140, 10, 7, 0,116, 9, 7, 0,117, 9,154, 1, 1, 0, - 7, 0,141, 10,155, 1, 6, 0, 4, 0,127, 0, 4, 0,129, 0, 4, 0, 40, 9, 0, 0,142, 10, 0, 0,143, 10, 2, 0, 27, 0, -156, 1, 16, 0, 2, 0,141, 8, 2, 0,142, 8, 2, 0,144, 10, 2, 0,145, 10, 2, 0,146, 10, 2, 0, 67, 0, 2, 0, 43, 7, - 2, 0,147, 10, 7, 0,252, 2, 7, 0,148, 10, 7, 0,149, 10, 2, 0,109, 1, 0, 0,150, 10, 0, 0,151, 10, 4, 0,152, 10, - 4, 0,153, 10,157, 1, 9, 0, 7, 0,154, 10, 7, 0,155, 10, 7, 0,149, 9, 7, 0, 94, 3, 7, 0,156, 10, 7, 0,218, 6, - 2, 0, 92, 3, 0, 0,157, 10, 0, 0, 27, 0,158, 1, 4, 0, 7, 0,158, 10, 7, 0,159, 10, 2, 0, 92, 3, 2, 0, 27, 0, -159, 1, 3, 0, 7, 0,160, 10, 7, 0,212, 8, 7, 0, 14, 0,160, 1, 4, 0, 0, 0, 35, 0,204, 0, 80, 5, 4, 0,129, 0, - 4, 0,132, 4,161, 1, 6, 0, 0, 0,161, 10,204, 0,162, 10, 4, 0,129, 0, 4, 0,132, 4, 4, 0,163, 10, 4, 0, 27, 0, -162, 1, 4, 0, 2, 0,164, 10, 2, 0,165, 10, 4, 0, 30, 0,204, 0,162, 10,163, 1, 9, 0, 7, 0,166, 10, 7, 0,167, 10, - 7, 0,168, 10, 7, 0, 92, 2, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 2, 0,172, 10, 2, 0,173, 10,164, 1, 8, 0, - 2, 0,174, 10, 2, 0,175, 10, 2, 0,176, 10, 2, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 7, 0,180, 10, 7, 0,181, 10, -165, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,166, 1, 2, 0, 0, 0,170, 0, 0, 0,182, 10,167, 1, 1, 0, 0, 0, 19, 0, -168, 1, 12, 0, 0, 0,183, 10, 0, 0,184, 10, 0, 0,209, 6, 0, 0,185, 10, 2, 0,144, 10, 2, 0,186, 10, 7, 0,187, 10, - 7, 0,188, 10, 7, 0,189, 10, 7, 0,148, 3, 7, 0,190, 10, 7, 0,191, 10,169, 1, 2, 0, 11, 0,192, 10, 11, 0,193, 10, -170, 1, 13, 0, 0, 0, 72, 5, 0, 0, 16, 0, 0, 0, 92, 3, 0, 0, 94, 3, 0, 0,184, 10, 0, 0,108, 0, 0, 0,181, 2, - 7, 0,194, 10, 7, 0,195, 10, 7, 0,147, 3, 7, 0,196, 10, 7, 0,197, 10, 7, 0,191, 10,171, 1, 8, 0, 7, 0, 47, 9, - 7, 0,128, 0, 7, 0,151, 10, 7, 0,172, 2, 7, 0,198, 10, 7, 0,240, 0, 7, 0,199, 10, 4, 0, 16, 0,172, 1, 4, 0, - 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 2, 0, 27, 0,173, 1, 8, 0, 7, 0,203, 10, 7, 0,220, 2, 7, 0,204, 10, - 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 7, 0,205, 10, 7, 0,206, 10,174, 1, 6, 0, 2, 0,207, 10, 2, 0,208, 10, - 7, 0,209, 10, 7, 0,210, 10, 7, 0,211, 10, 7, 0,212, 10,175, 1, 2, 0, 58, 0,213, 10, 59, 0,214, 10,176, 1, 3, 0, -175, 1, 79, 6, 7, 0,215, 10, 7, 0,216, 10,177, 1, 3, 0,175, 1, 79, 6, 4, 0,217, 10, 4, 0, 27, 0,178, 1, 1, 0, -175, 1, 79, 6,179, 1, 3, 0,175, 1, 79, 6, 4, 0,217, 10, 4, 0,218, 10,180, 1, 3, 0,175, 1, 79, 6, 4, 0,219, 10, - 4, 0, 27, 0,181, 1, 1, 0,175, 1, 79, 6,182, 1, 3, 0,175, 1, 79, 6, 4, 0,220, 10, 4, 0, 27, 0,183, 1, 3, 0, -175, 1, 79, 6, 4, 0,221, 10, 4, 0, 27, 0,184, 1, 3, 0,175, 1, 79, 6, 4, 0,222, 10, 4, 0, 27, 0,185, 1, 3, 0, -175, 1, 79, 6, 4, 0,250, 0, 4, 0, 27, 0,186, 1, 1, 0, 0, 0, 19, 0,187, 1, 1, 0, 0, 0, 19, 0,188, 1, 4, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 18, 0, 2, 0,223, 10,189, 1, 10, 0, 2, 0, 62, 4, 2, 0, 18, 0, 7, 0,217, 4, - 7, 0,224, 10, 7, 0,225, 10, 7, 0,226, 10, 7, 0,227, 10,188, 1,228, 10,188, 1,229, 10,188, 1,230, 10, 54, 0, 11, 0, - 4, 0, 18, 0, 4, 0, 63, 0, 4, 0,231, 10, 4, 0,232, 10, 19, 0,233, 10, 19, 0,234, 10,189, 1,235, 10, 7, 0,236, 10, - 7, 0,237, 10, 7, 0,238, 10, 7, 0,239, 10, 0, 1, 10, 0, 4, 0,253, 9, 4, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, - 7, 0,243, 10, 7, 0,244, 10, 7, 0, 9, 0, 7, 0, 11, 0, 4, 0, 87, 1, 4, 0, 1, 3,255, 0, 18, 0, 4, 0,132, 0, - 4, 0,245, 10, 4, 0,246, 10, 7, 0,247, 10, 4, 0,248, 10, 7, 0,249, 10, 7, 0,250, 10, 4, 0,251, 10, 7, 0,252, 10, - 4, 0,253, 10, 7, 0,254, 10, 0, 1,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 4, 0, 4, 11, - 4, 0, 27, 0,190, 1, 4, 0, 42, 0,244, 2, 7, 0, 5, 11, 7, 0,178, 1, 7, 0, 27, 0,213, 0, 34, 0, 22, 0, 32, 0, -190, 1, 6, 11, 54, 0,228, 10, 46, 0, 7, 11, 52, 0, 8, 11, 25, 0,154, 0, 0, 0, 9, 11, 7, 0, 10, 11, 2, 0,109, 6, - 2, 0, 11, 11, 4, 0,108, 0, 4, 0, 18, 0, 7, 0, 12, 11, 4, 0, 89, 2, 4, 0, 13, 11, 7, 0, 14, 11, 7, 0, 15, 11, - 7, 0, 16, 11, 7, 0,178, 1, 4, 0, 17, 11, 7, 0, 18, 11, 0, 0, 19, 11, 0, 0, 20, 11, 0, 0, 21, 11, 0, 0, 22, 11, - 7, 0, 23, 11, 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 1, 3, 7, 0, 26, 11, 4, 0, 27, 11, 7, 0,240, 5, 7, 0, 28, 11, - 7, 0, 29, 11,191, 1, 10, 0, 4, 0, 16, 0, 4, 0,128, 0, 4, 0, 18, 0, 4, 0, 15, 4, 4, 0, 30, 11, 4, 0, 31, 11, - 4, 0, 32, 11, 4, 0, 73, 0, 0, 0, 19, 0, 11, 0, 2, 0,192, 1, 1, 0, 0, 0, 70, 7, 95, 0, 8, 0,191, 1, 33, 11, - 4, 0, 34, 11, 4, 0, 35, 11, 4, 0, 36, 11, 4, 0, 37, 11, 4, 0, 30, 0, 11, 0, 38, 11,192, 1, 39, 11,193, 1, 5, 0, - 7, 0,165, 2, 7, 0,240, 2, 7, 0, 39, 2, 2, 0,147, 2, 2, 0, 27, 0,194, 1, 5, 0, 7, 0,165, 2, 7, 0,159, 4, - 7, 0, 40, 11, 7, 0, 41, 11, 7, 0,240, 2,195, 1, 5, 0, 27, 0, 42, 11,196, 1, 21, 0, 7, 0, 75, 6, 7, 0, 43, 11, - 7, 0, 56, 0,197, 1, 3, 0, 7, 0, 44, 11, 4, 0, 45, 11, 4, 0, 46, 11,198, 1, 7, 0, 4, 0, 47, 11, 4, 0, 48, 11, - 4, 0, 49, 11, 7, 0, 50, 11, 7, 0, 51, 11, 7, 0, 52, 11, 7, 0, 56, 0,199, 1, 8, 0,199, 1, 0, 0,199, 1, 1, 0, - 27, 0, 44, 0, 4, 0, 3, 1, 2, 0, 18, 0, 2, 0, 87, 1, 7, 0,240, 2, 7, 0, 55, 9,200, 1, 7, 0,200, 1, 0, 0, -200, 1, 1, 0, 27, 0, 44, 0, 2, 0,225, 2, 2, 0, 18, 0, 2, 0, 13, 2, 2, 0, 56, 0,201, 1, 17, 0,194, 1, 8, 4, -194, 1, 53, 11,193, 1, 54, 11,194, 1, 38, 9,195, 1, 55, 11, 4, 0, 82, 0, 7, 0,240, 2, 7, 0, 7, 3, 7, 0, 56, 11, - 4, 0, 47, 11, 4, 0, 57, 11, 7, 0, 51, 11, 7, 0, 52, 11, 7, 0,108, 0, 4, 0, 58, 11, 2, 0, 18, 0, 2, 0, 59, 11, -202, 1, 15, 0, 7, 0,255, 0, 7, 0, 60, 11, 7, 0, 44, 11, 7, 0, 61, 11, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, - 7, 0, 65, 11, 7, 0, 66, 11, 7, 0, 67, 11, 7, 0, 68, 11, 7, 0, 69, 11, 7, 0, 70, 11, 4, 0, 18, 0, 4, 0, 71, 11, -203, 1,128, 0, 22, 0, 32, 0, 34, 0, 75, 0,204, 1, 72, 11,202, 1, 73, 11,187, 0,154, 4, 4, 0, 18, 0, 4, 0, 56, 0, - 2, 0, 16, 0, 2, 0, 57, 10, 2, 0, 74, 11, 2, 0,122, 1, 2, 0, 75, 11, 2, 0,232, 3, 2, 0, 76, 11, 2, 0, 77, 11, - 2, 0, 78, 11, 2, 0, 79, 11, 2, 0, 80, 11, 2, 0, 81, 11, 2, 0, 82, 11, 2, 0, 83, 11, 2, 0, 84, 11, 2, 0,224, 5, - 2, 0, 85, 11, 2, 0, 86, 11, 2, 0, 87, 11, 2, 0, 88, 11, 2, 0, 89, 11, 2, 0, 28, 2, 2, 0, 31, 9, 2, 0, 6, 9, - 2, 0, 90, 11, 2, 0, 91, 11, 2, 0, 25, 4, 2, 0, 26, 4, 2, 0, 92, 11, 2, 0, 93, 11, 2, 0, 94, 11, 2, 0, 95, 11, - 7, 0, 96, 11, 7, 0, 97, 11, 7, 0, 98, 11, 7, 0, 99, 11, 7, 0,100, 11, 7, 0,101, 11, 7, 0,102, 11, 2, 0,154, 5, - 2, 0,103, 11, 7, 0,104, 11, 7, 0,105, 11, 7, 0,106, 11, 7, 0, 13, 9, 7, 0, 90, 0, 7, 0, 7, 3, 7, 0, 19, 9, - 7, 0,107, 11, 7, 0,108, 11, 7, 0,109, 11, 7, 0,110, 11, 7, 0,111, 11, 7, 0,112, 11, 4, 0, 14, 9, 4, 0, 12, 9, - 4, 0,113, 11, 4, 0,114, 11, 2, 0,115, 11, 2, 0,116, 11, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, 7, 0,117, 11, - 7, 0,118, 11, 7, 0,119, 11, 7, 0,120, 11, 7, 0,121, 11, 7, 0,122, 11, 7, 0,123, 11, 7, 0,124, 11, 7, 0,125, 11, - 7, 0,222, 3, 7, 0,108, 0, 7, 0,126, 11, 7, 0,127, 11, 7, 0,128, 11, 7, 0,129, 11, 7, 0,214, 0, 7, 0,130, 11, - 4, 0,131, 11, 4, 0,132, 11, 7, 0,133, 11, 7, 0,134, 11, 7, 0,135, 11, 7, 0,136, 11, 7, 0,137, 11, 7, 0,213, 0, - 7, 0,138, 11, 7, 0, 52, 4, 7, 0, 50, 4, 7, 0, 51, 4, 7, 0,139, 11, 7, 0,140, 11, 7, 0,141, 11, 7, 0,142, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, + 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,104, 19, 23, 6, 0, 0, 0, 0,104, 19, 23, 6, 0, 0, 0, 0,120,248, 22, 6, + 0, 0, 0, 0,120,248, 22, 6, 0, 0, 0, 0, 88, 61, 23, 6, 0, 0, 0, 0, 88, 61, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,228, 21, 6, + 0, 0, 0, 0,184, 60, 23, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 0, 1, 0, 0, 0, + 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, + 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, + 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, + 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, + 0, 0, 0, 0, 14, 0, 1, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 5, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, + 6, 0, 25, 0, 8, 0, 10, 0,200, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 0, 10, 0, 50, 0, 20, 0, 2, 0, 1, 0, 0, 0, + 0, 0,128, 63, 60, 0, 0, 0, 0, 0, 2, 0, 2, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 68, 65, 84, 65,168, 36, 0, 0,104, 19, 23, 6, 0, 0, 0, 0,206, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, + 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255, +255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, +255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, + 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, +128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, +255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255, +255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230, +100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, +172,172,172,128,255,255,255,255, 0, 0, 0,255, 1, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230, +100,100,100,255,255,255,255,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, + 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180, +128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255,100,100,100,180, + 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255, +215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,170, 64,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255, 32,255,255,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 32, 0, 0,255, 0, 32, 0,255, 0, 0,128,255, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, +255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,200,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255, +250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +250,250,250,255, 0, 0, 0, 0,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, + 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255,153, 64, 48,255, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255,240,175,144,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, + 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, + 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81,105,135,255, 32, 32,143,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255, +109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 18, 66,176, 38,255,133, 0,178,255,133, 0,127, 0,255, 0,255,255, 0, 0,255,225,210,195, 35, 0, 0, 0, 0, + 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,127, 51, 76, +130,135,140, 76,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, + 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5,155,155,155,160,100,104,111,255,111,106,100,255,104,106,117,255,105,117,110,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, +220, 96, 96,255,220, 96, 96,255, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, +255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, + 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,170, 64,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255, 32,255,255,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 32, 0, 0,255, 0, 32, 0,255, 0, 0,128,255, 0, 0, 0, 0, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, +255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0, 0, 0, 0, 0,255,240,255, 64,255, + 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,255, 0,255, 4, 0, 0, 0,255,127,127, 0,255,255,255,255,255,255,255, 0, +255,127, 0, 0,255,127,127,127,255,200,200,200,255,255, 0, 0,255, 0, 0,255,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, + 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, + 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, + 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, + 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, + 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, + 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, + 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,120,228, 21, 6, 0, 0, 0, 0,207, 0, 0, 0, + 1, 0, 0, 0, 24,229, 21, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,111, 95,115, 99,101,110,101, 95, 51,100,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, 24,229, 21, 6, + 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 88, 56, 23, 6, 0, 0, 0, 0,120,228, 21, 6, 0, 0, 0, 0,105,111, 95,115, + 99,101,110,101, 95,102, 98,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 80, 0, 0, 0, 88, 56, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,248, 56, 23, 6, 0, 0, 0, 0, 24,229, 21, 6, + 0, 0, 0, 0,105,111, 95, 97,110,105,109, 95, 98,118,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,248, 56, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,152, 57, 23, 6, + 0, 0, 0, 0, 88, 56, 23, 6, 0, 0, 0, 0,105,111, 95,109,101,115,104, 95,112,108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,152, 57, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, + 1, 0, 0, 0, 56, 58, 23, 6, 0, 0, 0, 0,248, 56, 23, 6, 0, 0, 0, 0,105,111, 95,115, 99,101,110,101, 95,111, 98,106, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, 56, 58, 23, 6, + 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,216, 58, 23, 6, 0, 0, 0, 0,152, 57, 23, 6, 0, 0, 0, 0,105,111, 95,115, + 99,101,110,101, 95,120, 51,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 80, 0, 0, 0,216, 58, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0,120, 59, 23, 6, 0, 0, 0, 0, 56, 58, 23, 6, + 0, 0, 0, 0,105,111, 95,109,101,115,104, 95,115,116,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,120, 59, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 24, 60, 23, 6, + 0, 0, 0, 0,216, 58, 23, 6, 0, 0, 0, 0,105,111, 95,109,101,115,104, 95,117,118, 95,108, 97,121,111,117,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0, 24, 60, 23, 6, 0, 0, 0, 0,207, 0, 0, 0, + 1, 0, 0, 0,184, 60, 23, 6, 0, 0, 0, 0,120, 59, 23, 6, 0, 0, 0, 0,105,111, 95, 99,117,114,118,101, 95,115,118,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 80, 0, 0, 0,184, 60, 23, 6, + 0, 0, 0, 0,207, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 23, 6, 0, 0, 0, 0, 99,121, 99,108, +101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +232, 0, 0, 0, 88, 61, 23, 6, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68,101,102, 97,117,108,116, 32, 83,116,121,108,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,255,255, 0, 0,154,153, 25, 62, + 0, 0,128, 63, 0, 0, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,255,255, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,255,255, 0, 0,154,153, 25, 62, + 0, 0,128, 63, 0, 0, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 5, 0, 5, 0, 8, 0, 2, 0, 8, 0, 4, 0, 0, 0, 68, 78, 65, 49, +148, 4, 1, 0, 8,111,147,109,161,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 58, 13, 0, 0, + 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, + 0,121, 0,122, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101, +114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, + 97,103, 0,110, 97,109,101, 91, 54, 52, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108, +108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 54, 54, 93, 0,112, 97,100, 0,117,115, 0, +105, 99,111,110, 95,105,100, 0,112, 97,100, 50, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98, +108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 49, 48, 50, 52, 93, 0,102,105,108,101,112, 97, +116,104, 91, 49, 48, 50, 52, 93, 0,116,111,116, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99, +104, 97,110,103,101,100, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 95,116,105,109,101,115,116, 97,109,112, 91, 50, 93, 0, 42, +114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97, +109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0, +118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105, +116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, + 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105, +112,111, 0,112,111,115, 0,112, 97,100, 49, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,117,105,100, + 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 54, 52, 93, 0,115,108,105,100,101,114,109,105,110, 0,115, +108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, + 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107, +101,121, 0,115,108,117,114,112,104, 0, 99,116,105,109,101, 0,117,105,100,103,101,110, 0, 42,108,105,110,101, 0, 42,102,111, +114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, + 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105, +110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114, +115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99, +111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,100,116,120, 0,112, 97,115,115, +101,112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0, +111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,101,110,115,111,114, 95,120, 0,115,101, +110,115,111,114, 95,121, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, + 42,100,111,102, 95,111, 98, 0,115,101,110,115,111,114, 95,102,105,116, 0,112, 97,100, 91, 55, 93, 0, 42,115, 99,101,110,101, + 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95, +105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97, +115,115, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0, 42, +114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101,110,100, +101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, + 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, + 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42, +112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109, +115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0,103,101,110, 95,102, +108, 97,103, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110, +101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, + 91, 54, 52, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111, +102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109, +111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99, +101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,114, 0, +103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, + 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105, +114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101, +109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108, +102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, + 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0, +114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, + 97, 99, 0,100, 97,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101, +110,115,102, 97, 99, 0,103,114, 97,118,105,116,121,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, + 0,105,118,101,108,102, 97, 99, 0,102,105,101,108,100,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117, +112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0, 42,104, 97,110,100,108,101, + 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97, +114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111, +105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, + 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99, +117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115, +116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101, +112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, + 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115, +111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, + 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110, +116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111, +105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, + 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95, +115, 99, 97,108,101, 0,102, 97,108,108,111,102,102, 95,115,112,101,101,100, 95,115, 99, 97,108,101, 0,112,100,112, 97,100, 50, + 0, 42, 99,111, 98, 97, 0, 42,102, 97,108,108,111,102,102, 95, 99,117,114,118,101, 0,114,101,115,111,108, 91, 51, 93, 0,105, +110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,115,109, +111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102, +114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0, 42,100, 97,116, 97,115,101,116, 0, + 99, 97, 99,104,101,100,102,114, 97,109,101, 0,111, 99,101, 97,110,109,111,100, 91, 54, 52, 93, 0,111,117,116,112,117,116, 0, +110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, + 0,115, 97,116,117,114, 97,116,105,111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101, +114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97, +118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110, +116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0, +118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112, +101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105, +115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99, +114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108, +116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101, +114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117, +103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0, 42,111,116, 0,117,115,101, 95,110,111,100,101,115, 0,108, +111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97, +120, 91, 51, 93, 0, 99,111, 98, 97, 0, 98,108,101,110,100, 95, 99,111,108,111,114, 91, 51, 93, 0, 98,108,101,110,100, 95,102, + 97, 99,116,111,114, 0, 98,108,101,110,100, 95,116,121,112,101, 0,112, 97,100, 91, 51, 93, 0,109,111,100,101, 0,116,111,116, +101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101, +114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110, +116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116, +115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97, +100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101, +114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, + 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, + 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, + 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109, +112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, + 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111, +110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101, +115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0, +115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95, +105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105, +111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107, +121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114, +115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117, +114,101, 0,112, 97,100, 54, 91, 52, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116, +116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, + 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, + 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111, +102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101, +102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116, +105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116, +121, 0,109,115, 95,115,112,114,101, 97,100, 0, 97,108,112,104, 97, 95, 98,108,101,110,100, 0,102, 97, 99,101, 95,111,114,105, +101,110,116, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, + 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, + 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95, +109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0, +116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,103, 97,109,101, 0,102,114,101,115,110,101,108, 95,109,105, +114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115, +110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108, +108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, + 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, + 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97, +100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, + 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, + 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, + 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, + 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115, +116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114, +102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, + 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 54, 52, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115, +104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0, +112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97, +100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, + 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, + 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112, +101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0, +114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, + 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, + 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, + 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115, +115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116, +101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97, +103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,115,104, 97,100, +111,119,111,110,108,121, 95,102,108, 97,103, 0,105,110,100,101,120, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0, 42, 98, + 98, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101, +120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101, +108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, + 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101, +115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103, +104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97, +116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111, +114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, + 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101, +114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,119, 0,104, 0,110,117,114, 98,115, 0, 42,107,101,121,105,110, +100,101,120, 0,115,104, 97,112,101,110,114, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, + 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, + 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,116,119,105, +115,116, 95,115,109,111,111,116,104, 0,115,109, 97,108,108, 99, 97,112,115, 95,115, 99, 97,108,101, 0,112, 97,116,104,108,101, +110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108, +117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 0, +115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, + 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0, +120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, + 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102, +111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0,116,111, +116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, + 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0, 42,109,115,101,108,101, 99,116, 0, 42,109,112,111,108,121, + 0, 42,109,116,112,111,108,121, 0, 42,109,108,111,111,112, 0, 42,109,108,111,111,112,117,118, 0, 42,109,108,111,111,112, 99, +111,108, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, + 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101, +120, 99,111,109,101,115,104, 0, 42,101,100,105,116, 95, 98,116,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, + 0,102,100, 97,116, 97, 0,112,100, 97,116, 97, 0,108,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, + 99,101, 0,116,111,116,115,101,108,101, 99,116, 0,116,111,116,112,111,108,121, 0,116,111,116,108,111,111,112, 0, 97, 99,116, + 95,102, 97, 99,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0, +115,117, 98,115,117,114,102,116,121,112,101, 0,101,100,105,116,102,108, 97,103, 0, 42,109,114, 0, 42,116,112, 97,103,101, 0, +117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, + 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101, +105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0, +110,111, 91, 51, 93, 0,108,111,111,112,115,116, 97,114,116, 0,118, 0,101, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0, +102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0,108,101,118,101,108, 0, 40, 42,100,105,115,112,115, + 41, 40, 41, 0, 42,104,105,100,100,101,110, 0,118, 91, 52, 93, 0,109,105,100, 0,112, 97,100, 91, 50, 93, 0,118, 91, 50, 93, + 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0, +108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118, +108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99, +111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0,115,116, 97, + 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0, 42,116,101,120,116,117,114,101, + 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 54, 52, 93, 0,117,118, +108, 97,121,101,114, 95,116,109,112, 0,116,101,120,109, 97,112,112,105,110,103, 0,115,117, 98,100,105,118, 84,121,112,101, 0, +114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,115,116, +114,101,110,103,116,104, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110, +100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42, +101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102, +115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116, +121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, + 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117, +101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103, +115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 54, 52, 93, 0, 42,100, +111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0,100,105,114,101, 99,116,105,111,110, + 0,109,105,100,108,101,118,101,108, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, + 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0, +115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0, +102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0, +115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0, +102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109, +102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 54, 52, + 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, + 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42, +115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99, +104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114, +101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42, +109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0,116,105,109,101, 95,120, 0, +116,105,109,101, 95,120,110,101,119, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111, +112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105, +100,115,105,122,101, 0, 42, 98,105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101, +116,115, 0, 42, 98,105,110,100, 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110, +103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, + 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121, +110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101, +105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115, +121,115, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, + 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, + 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116, +111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97, +114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 54, 52, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104, +114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98, +115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, + 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0,111,102,102,115,101,116, 95, +102, 97, 99, 95,118,103, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, + 0, 99,114,101, 97,115,101, 95,114,105,109, 0,109, 97,116, 95,111,102,115, 0,109, 97,116, 95,111,102,115, 95,114,105,109, 0, + 42,111, 98, 95, 97,120,105,115, 0,115,116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, + 0,115, 99,114,101,119, 95,111,102,115, 0, 97,110,103,108,101, 0, 42,111, 99,101, 97,110, 0, 42,111, 99,101, 97,110, 99, 97, + 99,104,101, 0,114,101,115,111,108,117,116,105,111,110, 0,115,112, 97,116,105, 97,108, 95,115,105,122,101, 0,119,105,110,100, + 95,118,101,108,111, 99,105,116,121, 0,115,109, 97,108,108,101,115,116, 95,119, 97,118,101, 0,119, 97,118,101, 95, 97,108,105, +103,110,109,101,110,116, 0,119, 97,118,101, 95,100,105,114,101, 99,116,105,111,110, 0,119, 97,118,101, 95,115, 99, 97,108,101, + 0, 99,104,111,112, 95, 97,109,111,117,110,116, 0,102,111, 97,109, 95, 99,111,118,101,114, 97,103,101, 0, 98, 97,107,101,115, +116, 97,114,116, 0, 98, 97,107,101,101,110,100, 0, 99, 97, 99,104,101,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,102,111, 97, +109,108, 97,121,101,114,110, 97,109,101, 91, 54, 52, 93, 0, 99, 97, 99,104,101,100, 0,103,101,111,109,101,116,114,121, 95,109, +111,100,101, 0,114,101,102,114,101,115,104, 0,114,101,112,101, 97,116, 95,120, 0,114,101,112,101, 97,116, 95,121, 0,102,111, + 97,109, 95,102, 97,100,101, 0, 42,111, 98,106,101, 99,116, 95,102,114,111,109, 0, 42,111, 98,106,101, 99,116, 95,116,111, 0, +102, 97,108,108,111,102,102, 95,114, 97,100,105,117,115, 0,101,100,105,116, 95,102,108, 97,103,115, 0,100,101,102, 97,117,108, +116, 95,119,101,105,103,104,116, 0, 42, 99,109, 97,112, 95, 99,117,114,118,101, 0, 97,100,100, 95,116,104,114,101,115,104,111, +108,100, 0,114,101,109, 95,116,104,114,101,115,104,111,108,100, 0,109, 97,115,107, 95, 99,111,110,115,116, 97,110,116, 0,109, + 97,115,107, 95,100,101,102,103,114,112, 95,110, 97,109,101, 91, 54, 52, 93, 0,109, 97,115,107, 95,116,101,120, 95,117,115,101, + 95, 99,104, 97,110,110,101,108, 0, 42,109, 97,115,107, 95,116,101,120,116,117,114,101, 0, 42,109, 97,115,107, 95,116,101,120, + 95,109, 97,112, 95,111, 98,106, 0,109, 97,115,107, 95,116,101,120, 95,109, 97,112,112,105,110,103, 0,109, 97,115,107, 95,116, +101,120, 95,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 54, 52, 93, 0,112, 97,100, 95,105, 49, 0,100,101,102,103,114, +112, 95,110, 97,109,101, 95, 97, 91, 54, 52, 93, 0,100,101,102,103,114,112, 95,110, 97,109,101, 95, 98, 91, 54, 52, 93, 0,100, +101,102, 97,117,108,116, 95,119,101,105,103,104,116, 95, 97, 0,100,101,102, 97,117,108,116, 95,119,101,105,103,104,116, 95, 98, + 0,109,105,120, 95,109,111,100,101, 0,109,105,120, 95,115,101,116, 0,112, 97,100, 95, 99, 49, 91, 54, 93, 0,112,114,111,120, +105,109,105,116,121, 95,109,111,100,101, 0,112,114,111,120,105,109,105,116,121, 95,102,108, 97,103,115, 0, 42,112,114,111,120, +105,109,105,116,121, 95,111, 98, 95,116, 97,114,103,101,116, 0,109,105,110, 95,100,105,115,116, 0,109, 97,120, 95,100,105,115, +116, 0,112, 97,100, 95,115, 49, 0, 42, 99, 97,110,118, 97,115, 0, 42, 98,114,117,115,104, 0,116,104,114,101,115,104,111,108, +100, 0,115, 99, 97,108,101, 0,104,101,114,109,105,116,101, 95,110,117,109, 0, 42,108, 97,116,116, 0,112,110,116,115,119, 0, +111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, + 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, + 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116, +116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, + 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 54, 52, 93, 0, 42,116,114, 97, 99,107, 0, + 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, + 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, + 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,101,102,102,101, 99,116, + 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, + 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0, +100,115,105,122,101, 91, 51, 93, 0,100,115, 99, 97,108,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, + 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110, +103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105, +110,118, 91, 52, 93, 91, 52, 93, 0,105,109, 97,116, 95,114,101,110, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0,112, 97,100, 54, + 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116, +114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0, +115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0,112, 97,100, 53, 0,100,117,112,111,110, 0,100,117, +112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105, +110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, + 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80, +114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,111, 98,115,116, 97, 99,108,101, 82, 97,100, 0,114, +111,116,109,111,100,101, 0, 98,111,117,110,100,116,121,112,101, 0, 99,111,108,108,105,115,105,111,110, 95, 98,111,117,110,100, +116,121,112,101, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,100,116, 0,101,109,112,116,121, 95,100,114, 97,119,116, +121,112,101, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114, +111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, + 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102, +108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, + 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112, +115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117, +112, 95,103,114,111,117,112, 0, 98,111,100,121, 95,116,121,112,101, 0,115,104, 97,112,101,102,108, 97,103, 0, 42,102,108,117, +105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101, +114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0, 99,117,115,116,111,109,100, 97, +116, 97, 95,109, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, + 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0,105,109, 97, 95,111,102,115, 91, 50, 93, 0, 99,117, +114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, + 0,111,114, 99,111, 91, 51, 93, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,100,101,102,108,101, 99, +116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, + 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109, +112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0, +109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0, +112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112, +100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107, +110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, + 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109, +112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, + 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111, +105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, + 91, 51, 93, 0,116,111,116,100, 97,116, 97, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95, +116,121,112,101,115, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,101,120,116,114, 97,100, 97,116, 97, + 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97, +109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,108, 97,115,116, 95,118, 97,108, +105,100, 0, 99,111,109,112,114,101,115,115,105,111,110, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102, +111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0, 42, 99, 97, 99,104,101,100, 95,102,114, 97,109,101,115, 0, +109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108, +105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105, +111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101, +114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, + 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, + 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0, +107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108, +105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0, +119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105, +110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, + 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 54, 52, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0, +114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, + 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, + 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 54, 52, + 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109, +101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 54, 52, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0, +108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110, +116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97, +109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109, +105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, + 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0, +115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101, +102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, + 51, 93, 0,108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,108, 97,115,116, 95,102,114, 97,109,101, 0,118,101,108, 91, 51, + 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111, +108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, + 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100, +101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118, +105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, 91, 51, 93, 0, 97,110,105,109, 83,116, 97, +114,116, 0, 97,110,105,109, 69,110,100, 0, 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,102,114, 97, +109,101, 79,102,102,115,101,116, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, + 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 66, + 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 49, 48, 50, 52, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, + 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103, +101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0, +103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101, +115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118, +115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112, +104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 86,101,108,111, 99,105,116,105,101,115, 0, + 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105, +116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102, +111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, + 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97, +109,101, 0, 97,110,105,109, 82, 97,116,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111, +114, 98, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117, +114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105, +116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99, +108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0, +109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116, +101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0, +115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, + 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105, +115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97, +111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, + 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97, +100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97, +111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116, +105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110, +101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, + 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, + 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101, +114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114, +109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, + 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, + 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, + 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97, +109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99, +111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97, +116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108, +111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, + 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116, +121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99,111,100,101, + 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105,116, 68,101, +112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70,108, 97,103, +115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, + 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120, +114, 97,116,101, 0, 97,117,100,105,111, 95, 99,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 95,112, 97,100, 0, 97,117, +100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0, +114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, + 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, + 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100, +105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103, +104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97, +115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0,105,109,116,121,112,101, 0,112,108, 97,110,101,115, 0,113,117, + 97,108,105,116,121, 0, 99,111,109,112,114,101,115,115, 0,101,120,114, 95, 99,111,100,101, 99, 0, 99,105,110,101,111,110, 95, +102,108, 97,103, 0, 99,105,110,101,111,110, 95,119,104,105,116,101, 0, 99,105,110,101,111,110, 95, 98,108, 97, 99,107, 0, 99, +105,110,101,111,110, 95,103, 97,109,109, 97, 0,106,112, 50, 95,102,108, 97,103, 0,105,109, 95,102,111,114,109, 97,116, 0, 42, + 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, + 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112, +115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97, +100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0, +101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101, +113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111, +100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, + 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,115,117, 98,105,109,116,121,112,101, 0, +100,105,115,112,108, 97,121,109,111,100,101, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116, +105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,111, 99,114,101,115, 0,112, 97, +100, 52, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, + 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, + 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114, +115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0, +112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, + 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, + 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95, +115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105, +115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0,112,105, 99, 91, 49, 48, + 50, 52, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, + 97,116, 97, 91, 55, 54, 56, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, + 0,115,101,113, 95,112,114,101,118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, + 95,102,108, 97,103, 0,112, 97,100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112, +108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112, +108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, + 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105, +110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114, +112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0, +100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110, +103,105,110,101, 91, 51, 50, 93, 0,110, 97,109,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0, +115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, + 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, + 91, 51, 93, 0, 99,101,108,108,115,105,122,101, 0, 99,101,108,108,104,101,105,103,104,116, 0, 97,103,101,110,116,109, 97,120, +115,108,111,112,101, 0, 97,103,101,110,116,109, 97,120, 99,108,105,109, 98, 0, 97,103,101,110,116,104,101,105,103,104,116, 0, + 97,103,101,110,116,114, 97,100,105,117,115, 0,101,100,103,101,109, 97,120,108,101,110, 0,101,100,103,101,109, 97,120,101,114, +114,111,114, 0,114,101,103,105,111,110,109,105,110,115,105,122,101, 0,114,101,103,105,111,110,109,101,114,103,101,115,105,122, +101, 0,118,101,114,116,115,112,101,114,112,111,108,121, 0,100,101,116, 97,105,108,115, 97,109,112,108,101,100,105,115,116, 0, +100,101,116, 97,105,108,115, 97,109,112,108,101,109, 97,120,101,114,114,111,114, 0,102,114, 97,109,105,110,103, 0,112,108, 97, +121,101,114,102,108, 97,103, 0,114,116, 49, 0,114,116, 50, 0, 97, 97,115, 97,109,112,108,101,115, 0,112, 97,100, 52, 91, 51, + 93, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, +114,101, 99, 97,115,116, 68, 97,116, 97, 0,109, 97,116,109,111,100,101, 0,101,120,105,116,107,101,121, 0,111, 98,115,116, 97, + 99,108,101, 83,105,109,117,108, 97,116,105,111,110, 0,108,101,118,101,108, 72,101,105,103,104,116, 0, 42, 99, 97,109,101,114, + 97, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, + 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108, +101, 0,115, 99,114,101,101,110, 95,103,114, 97, 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115, +111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117, +115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, + 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102, +114, 97,109,101,115, 0,114, 97,100,105, 97,108, 95,115,121,109,109, 91, 51, 93, 0,108, 97,115,116, 95,120, 0,108, 97,115,116, + 95,121, 0,108, 97,115,116, 95, 97,110,103,108,101, 0,100,114, 97,119, 95, 97,110, 99,104,111,114,101,100, 0, 97,110, 99,104, +111,114,101,100, 95,115,105,122,101, 0, 97,110, 99,104,111,114,101,100, 95,108,111, 99, 97,116,105,111,110, 91, 51, 93, 0, 97, +110, 99,104,111,114,101,100, 95,105,110,105,116,105, 97,108, 95,109,111,117,115,101, 91, 50, 93, 0,100,114, 97,119, 95,112,114, +101,115,115,117,114,101, 0,112,114,101,115,115,117,114,101, 95,118, 97,108,117,101, 0,115,112,101, 99,105, 97,108, 95,114,111, +116, 97,116,105,111,110, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, + 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97,100,105,117,115, 0, 42,118, +112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0, 42,117,118,115, 99,117,108,112,116, 0,118,103,114,111,117,112, 95,119, +101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101, +103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, + 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0, +118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, + 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117, +118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, + 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117, +118, 95,115,117, 98,115,117,114,102, 95,108,101,118,101,108, 0,103,112,101,110, 99,105,108, 95,102,108, 97,103,115, 0, 97,117, +116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0, +112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, + 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101, +121, 95,102,108, 97,103, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,112, 97,100, 50, + 91, 53, 93, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115, +104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120, +116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95, +108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115, +107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109, +109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, + 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101, +105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105, +103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0, +115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105, +118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107, +103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, + 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105, +115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111, +110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100, +101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0, +101,100,103,101, 95,109,111,100,101, 0,101,100,103,101, 95,109,111,100,101, 95,108,105,118,101, 95,117,110,119,114, 97,112, 0, +115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0, +112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0,112,114,111,112,111,114,116,105,111, +110, 97,108, 95,111, 98,106,101, 99,116,115, 0,112, 97,100, 91, 53, 93, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122, +101, 0,109,117,108,116,105,112, 97,105,110,116, 0,117,115,101, 95,117,118, 95,115, 99,117,108,112,116, 0,117,118, 95,115, 99, +117,108,112,116, 95,115,101,116,116,105,110,103,115, 0,117,118, 95,115, 99,117,108,112,116, 95,116,111,111,108, 0,117,118, 95, +114,101,108, 97,120, 95,109,101,116,104,111,100, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,115,101,116,116,105,110, +103,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,115,105,122,101, 0,115, 99,117, +108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95,117,110,112,114,111,106,101, 99,116,101,100, 95,114, 97, +100,105,117,115, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,117,110,105,102,105,101,100, 95, 97,108,112,104, 97, 0, +117,110,105,102,105,101,100, 95,112, 97,105,110,116, 95,115,101,116,116,105,110,103,115, 0,116,111,116,111, 98,106, 0,116,111, +116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, + 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, + 0,115,121,115,116,101,109, 95,114,111,116, 97,116,105,111,110, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0,113,117,105, 99, +107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97,115,101, 0, 42, 98, + 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99,101,110,116, 91, 51, + 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0,108, 97,121, 95,117, +112,100, 97,116,101,100, 0, 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, + 97,117,100,105,111, 0,116,114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99, +101,110,101, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,115,111,117,110,100, 95,115, + 99,114,117, 98, 95,104, 97,110,100,108,101, 0, 42,115,112,101, 97,107,101,114, 95,104, 97,110,100,108,101,115, 0, 42,102,112, +115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97, +103,115, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0,103, +109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 42, 99,108,105,112, 0, 99,117, +115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 95,109,111,100, 97,108, 0, 99,117,115,101,114, 0, 98,108,101,110,100, 0, +118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0, +118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115, +105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97, +116,111, 98, 91, 52, 93, 91, 52, 93, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, + 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,110,100, +101,114, 95,101,110,103,105,110,101, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116, +105,109,101,114, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,122,102, 97, + 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111,109, 0,105,115, + 95,112,101,114,115,112, 0,112,101,114,115,112, 0,118,105,101,119,108,111, 99,107, 0,116,119,100,114, 97,119,102,108, 97,103, + 0,114,102,108, 97,103, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, + 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,114,111,116, 95, 97,110,103,108,101, 0,114, +111,116, 95, 97,120,105,115, 91, 51, 93, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, + 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0, 98,117,110,100,108, +101, 95,115,105,122,101, 0, 98,117,110,100,108,101, 95,100,114, 97,119,116,121,112,101, 0,108, 97,121, 95,117,115,101,100, 0, + 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99, +101,110,116,114,101, 95, 98,111,110,101, 91, 54, 52, 93, 0,100,114, 97,119,116,121,112,101, 0,111, 98, 95, 99,101,110,116,114, +101, 95, 99,117,114,115,111,114, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,103,114,105,100, 0,110, +101, 97,114, 0,102, 97,114, 0,109,111,100,101,115,101,108,101, 99,116, 0,103,114,105,100,108,105,110,101,115, 0,103,114,105, +100,115,117, 98,100,105,118, 0,103,114,105,100,102,108, 97,103, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116, +119,102,108, 97,103, 0,112, 97,100, 50, 91, 50, 93, 0, 97,102,116,101,114,100,114, 97,119, 95,116,114, 97,110,115,112, 0, 97, +102,116,101,114,100,114, 97,119, 95,120,114, 97,121, 0, 97,102,116,101,114,100,114, 97,119, 95,120,114, 97,121,116,114, 97,110, +115,112, 0,122, 98,117,102, 0,120,114, 97,121, 0,112, 97,100, 51, 91, 50, 93, 0, 42,112,114,111,112,101,114,116,105,101,115, + 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0,109, 97, +120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99,114,111, +108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, 0, 97, +108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, 0, 42, +116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0,114,112,116, 95,109, + 97,115,107, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97, +112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115, +101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,116,101,120,116,117,114,101, 95, 99,111,110,116, +101,120,116, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0, 42,116,101, +120,117,115,101,114, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, + 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 51, 50, 93, 0,100,105,114, 91, 49, 48, 53, 54, 93, 0,102,105,108,101, 91, + 50, 53, 54, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 50, 53, 54, 93, 0,114,101,110, 97,109,101,101,100,105,116, 91, + 50, 53, 54, 93, 0,102,105,108,116,101,114, 95,103,108,111, 98, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, 95,102,105,108,101, + 0,115,101,108, 95,102,105,114,115,116, 0,115,101,108, 95,108, 97,115,116, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, + 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108,108, 95,111,102,102,115,101,116, 0, 42,112, + 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100, +101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, 99,114,111,108,108, 95,116,105,109,101,114, + 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115, +116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114, +105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116, +111,114,101,102,108, 97,103, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0, 42, 99,117,109, 97,112, 0,115, 99,111,112, +101,115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101, +110,116,120, 0, 99,101,110,116,121, 0, 99,117,114,116,105,108,101, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, + 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 42,116,101,120,116, 0,116,111,112, 0,118, +105,101,119,108,105,110,101,115, 0,109,101,110,117,110,114, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108, +105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110, +117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,108,105,110,101, 95,104,108,105,103,104,116, 0,111,118,101, +114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120, +116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110, +115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0,109, + 97,114,103,105,110, 95, 99,111,108,117,109,110, 0, 42,100,114, 97,119, 99, 97, 99,104,101, 0, 42,112,121, 95,100,114, 97,119, + 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101, +114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, + 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 49, 48, 50, 52, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, + 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104, +101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97,121, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0,112, 97,100,102, + 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111, +109, 0,115,104, 97,100,101,114,102,114,111,109, 0,108,105,110,107,100,114, 97,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, + 99,117,114,115,111,114, 0,115, 99,114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, + 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, + 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0,120,108,111, 99,107,111,102, 0,121,108,111, 99,107,111,102, 0, +117,115,101,114, 0,112, 97,116,104, 95,108,101,110,103,116,104, 0,108,111, 99, 91, 50, 93, 0,115,116, 97, 98,109, 97,116, 91, + 52, 93, 91, 52, 93, 0,117,110,105,115,116, 97, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,116,112,114,111, 99, 95, +102,108, 97,103, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0,102,105,108,101,110, 97,109,101, 91, 49, 48, 50, 52, 93, + 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0, +107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, + 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, + 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, + 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0, +109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, + 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98, +117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101, +114, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, + 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115, +104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99, +104,101, 99,107, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101, +108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, + 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95, +115,101,108, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,115,104,111,119, 95,104,101, 97,100,101,114, 0,119, 99,111, +108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99, +111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, + 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101, +110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0, +119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95,116,111,111,108,116,105,112, 0,119, 99,111,108, + 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, + 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111,108, 95,115,116, 97,116,101, 0,112, 97,110,101,108, 0,105, + 99,111,110,102,105,108,101, 91, 50, 53, 54, 93, 0,105, 99,111,110, 95, 97,108,112,104, 97, 0, 98, 97, 99,107, 91, 52, 93, 0, +116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,105,116,108,101, + 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 95,104, +105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116,108,101, 91, 52, 93, 0, 98, +117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, +108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 91, + 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, 52, 93, 0,112, 97,110,101, +108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0,112, 97,110,101,108, 95,116, +101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, 50, 91, 52, 93, 0,104,105, +108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115,101,108,101, 99,116, 91, 52, + 93, 0,108, 97,109,112, 91, 52, 93, 0,115,112,101, 97,107,101,114, 91, 52, 93, 0,101,109,112,116,121, 91, 52, 93, 0, 99, 97, +109,101,114, 97, 91, 52, 93, 0,112, 97,100, 91, 56, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, 91, 52, + 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, 0,118, +101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 91, 52, + 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0,101,100, +103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,101,100,103,101, + 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, + 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,101,120,116,114, 97, 95,101,100,103,101, 95,108,101,110, 91, 52, 93, 0, +101,120,116,114, 97, 95,102, 97, 99,101, 95, 97,110,103,108,101, 91, 52, 93, 0,101,120,116,114, 97, 95,102, 97, 99,101, 95, 97, +114,101, 97, 91, 52, 93, 0,112, 97,100, 51, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95, +110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115, +101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102, +114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,118,108,105,110,101, + 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,117,108,105,110,101, + 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115,101,108, 95,112,111, +105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116, +111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,108,105,103,110, + 91, 52, 93, 0,104, 97,110,100,108,101, 95, 97,117,116,111, 95, 99,108, 97,109,112,101,100, 91, 52, 93, 0,104, 97,110,100,108, +101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, + 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97, +108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,117,116,111, 95, 99,108, 97,109,112,101,100, 91, + 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, + 93, 0, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117, +116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114, +111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115, +105,122,101, 0,111,117,116,108,105,110,101, 95,119,105,100,116,104, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, 0,110, +111,111,100,108,101, 95, 99,117,114,118,105,110,103, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, + 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, + 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,109,111,118,105,101, 99,108,105,112, 91, 52, 93, 0,105,109, 97,103,101, + 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0, +112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0, +101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, + 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,109, 97,114,107,101,114, 95,111,117,116,108,105,110,101, 91, 52, 93, + 0,109, 97,114,107,101,114, 91, 52, 93, 0, 97, 99,116, 95,109, 97,114,107,101,114, 91, 52, 93, 0,115,101,108, 95,109, 97,114, +107,101,114, 91, 52, 93, 0,100,105,115, 95,109, 97,114,107,101,114, 91, 52, 93, 0,108,111, 99,107, 95,109, 97,114,107,101,114, + 91, 52, 93, 0, 98,117,110,100,108,101, 95,115,111,108,105,100, 91, 52, 93, 0,112, 97,116,104, 95, 98,101,102,111,114,101, 91, + 52, 93, 0,112, 97,116,104, 95, 97,102,116,101,114, 91, 52, 93, 0, 99, 97,109,101,114, 97, 95,112, 97,116,104, 91, 52, 93, 0, +104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,112,114,101,118,105,101,119, 95, +115,116,105,116, 99,104, 95,102, 97, 99,101, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, 95,101,100, +103,101, 91, 52, 93, 0,112,114,101,118,105,101,119, 95,115,116,105,116, 99,104, 95,118,101,114,116, 91, 52, 93, 0,112,114,101, +118,105,101,119, 95,115,116,105,116, 99,104, 95,115,116,105,116, 99,104, 97, 98,108,101, 91, 52, 93, 0,112,114,101,118,105,101, +119, 95,115,116,105,116, 99,104, 95,117,110,115,116,105,116, 99,104, 97, 98,108,101, 91, 52, 93, 0,112,114,101,118,105,101,119, + 95,115,116,105,116, 99,104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,109, 97,116, 99,104, 91, 52, 93, 0,115,101,108,101, 99, +116,101,100, 95,104,105,103,104,108,105,103,104,116, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98, +117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116, 97, 99,116, 0,116, +110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116, +110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, + 99,108,105,112, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0, +109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116, +105,109,101, 0,116,101,109,112,100,105,114, 91, 55, 54, 56, 93, 0,102,111,110,116,100,105,114, 91, 55, 54, 56, 93, 0,114,101, +110,100,101,114,100,105,114, 91, 49, 48, 50, 52, 93, 0,116,101,120,116,117,100,105,114, 91, 55, 54, 56, 93, 0,112,108,117,103, +116,101,120,100,105,114, 91, 55, 54, 56, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 55, 54, 56, 93, 0,112,121,116,104, +111,110,100,105,114, 91, 55, 54, 56, 93, 0,115,111,117,110,100,100,105,114, 91, 55, 54, 56, 93, 0,105,109, 97,103,101, 95,101, +100,105,116,111,114, 91, 49, 48, 50, 52, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 49, 48, 50, 52, 93, 0, 97,110, +105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105,122, +101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99,108, +105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111, +108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119, +122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105, +111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0, +100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115, +104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111, +110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0,117,115,101,114, 95,107,101,121,109, 97,112, +115, 0, 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116, +101,112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0, +103,112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101, +116,116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115, +101, 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, + 95,104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116, +101,120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,103,116, +104,114,101,115,104,111,108,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102, +114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110, +103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103, +104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108, +114,101,115,108,105,109,105,116, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116, +121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101,115, 95,110,101,119, 0,115, 99,114, 99, 97, +115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,119,105,100,103,101,116, 95,117,110,105,116, 0, 97,110, +105,115,111,116,114,111,112,105, 99, 95,102,105,108,116,101,114, 0,117,115,101, 95, 49, 54, 98,105,116, 95,116,101,120,116,117, +114,101,115, 0,112, 97,100, 56, 0,110,100,111,102, 95,115,101,110,115,105,116,105,118,105,116,121, 0,110,100,111,102, 95,102, +108, 97,103, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0,116,101,120,116, 95,114,101,110,100,101,114, 0,112, 97,100, 57, + 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,115, 99,117,108,112,116, 95,112, 97,105,110,116, 95,111,118,101,114,108, 97, +121, 95, 99,111,108, 91, 51, 93, 0,116,119,101, 97,107, 95,116,104,114,101,115,104,111,108,100, 0, 97,117,116,104,111,114, 91, + 56, 48, 93, 0, 99,111,109,112,117,116,101, 95,100,101,118,105, 99,101, 95,116,121,112,101, 0, 99,111,109,112,117,116,101, 95, +100,101,118,105, 99,101, 95,105,100, 0,102, 99,117, 95,105,110, 97, 99,116,105,118,101, 95, 97,108,112,104, 97, 0,118,101,114, +116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110, +101, 0,114,101,100,114, 97,119,115, 95,102,108, 97,103, 0,102,117,108,108, 0,116,101,109,112, 0,119,105,110,105,100, 0,100, +111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114, +101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, + 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110, +105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119, +118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, + 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0, +111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0, 99,111,110,116,114,111, +108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105, +118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115, +116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115, +101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101, +116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101, +114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119, +105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97, +119, 95,111,118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101, +114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118, +101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114, +115,105,111,110, 0,119,105,110,112,111,115, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, + 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,114,101,118,105,115,105,111,110, 0,110, 97,109,101, + 91, 50, 53, 54, 93, 0,111,114,105,103, 95,119,105,100,116,104, 0,111,114,105,103, 95,104,101,105,103,104,116, 0, 98,111,116, +116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, + 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 55, 54, 56, 93, 0,116, 99, 0, 98,117,105,108,100, 95,115, +105,122,101, 95,102,108, 97,103,115, 0, 98,117,105,108,100, 95,116, 99, 95,102,108, 97,103,115, 0,100,111,110,101, 0,115,116, + 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0, 42, 99,114, +111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,105,110, +115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114, +105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0, +109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,115, 97,116, 0,109,117, +108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0,115,116,114,101, 97,109,105,110, +100,101,120, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0, 99,108,105,112, 95,102,108, 97,103, 0, 42,115, +116,114,105,112, 0, 42,115, 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0, +115,112,101,101,100, 95,102, 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101, +113, 98, 97,115,101, 0, 42,115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,112,105,116, 99,104, 0, +112, 97,110, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114, +116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110, +100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, + 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97, +103,101,100,105,114, 91, 49, 48, 50, 52, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 49, 48, 50, 52, 93, 0,111, +118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, + 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121, +112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, + 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110, +105, 0,120, 73,110,105, 0,121, 73,110,105, 0,114,111,116, 73,110,105, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, + 0,117,110,105,102,111,114,109, 95,115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83, +112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114, +106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97, +110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118, +101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, + 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, + 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0, +115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103, +114,111,117,112,110, 97,109,101, 91, 54, 52, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 54, 52, 93, 0, 42,107, +101,121,115, 0,109,105,110,102, 97, 99, 0,110,114, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105, +110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, + 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 54, 52, 93, 0,116,111,103,103,108,101, 78, 97,109,101, + 91, 54, 52, 93, 0,118, 97,108,117,101, 91, 54, 52, 93, 0,109, 97,120,118, 97,108,117,101, 91, 54, 52, 93, 0,100,101,108, 97, +121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 54, 52, 93, 0,100, 97,109,112, +116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 54, 52, 93, 0,109, 97,116,110, 97,109,101, 91, 54, 52, 93, 0, 97, +120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 54, 52, 93, 0, 99,111,110,115,116,114, 97,105, +110,116, 91, 54, 52, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 54, 52, 93, 0, 98, +111,100,121, 91, 54, 52, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107, +115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103, +108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105, +111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105, +110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99, +116, 0,102,114, 97,109,101, 80,114,111,112, 91, 54, 52, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, + 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103, +116,104, 0,108, 97,121,101,114, 95,119,101,105,103,104,116, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105, +110, 0,114,101,102,101,114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99, +101, 0,114,111,108,108,111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108, +101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97, +105,110, 0,115,110,100,110,114, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, + 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108, +102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102, +111,114, 99,101,114,111,116, 91, 51, 93, 0,112, 97,100, 49, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116, +121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, + 99,101, 0,109,105,110, 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120, +108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114, +111,112, 91, 54, 52, 93, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111, +110, 0,105,110,116, 95, 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, + 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 54, 52, 93, 0, 42,116,111, + 79, 98,106,101, 99,116, 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97, +100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0,105, +110,102,108,117,101,110, 99,101, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,102, 97, 99,105,110,103, 97,120,105,115, 0,118, +101,108,111, 99,105,116,121, 0, 97, 99, 99,101,108,101,114, 97,116,105,111,110, 0,116,117,114,110,115,112,101,101,100, 0,117, +112,100, 97,116,101, 84,105,109,101, 0, 42,110, 97,118,109,101,115,104, 0,103,111, 0, 42,110,101,119,112, 97, 99,107,101,100, +102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, + 0, 42,119, 97,118,101,102,111,114,109, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42,108, 97,109, +112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, + 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98, +111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97, +105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 97,114,109, 95,114,111,108,108, 0,120,119,105, +100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0, +114, 97,100, 95,116, 97,105,108, 0,112, 97,100, 91, 49, 93, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97, +115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42, +115,107,101,116, 99,104, 0,103,101,118,101,114,116,100,101,102,111,114,109,101,114, 0,108, 97,121,101,114, 95,117,115,101,100, + 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105, +122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104, +111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, + 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0, +103,104,111,115,116, 95,115,102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, + 95, 97, 99, 0,103,104,111,115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95, +102,108, 97,103, 0,112, 97,116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105, +101,119,102,108, 97,103, 0,112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116, +104, 95,101,102, 0,112, 97,116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0,105,107,102,108, 97,103, 0, 97,103,114,112, + 95,105,110,100,101,120, 0, 99,111,110,115,116,102,108, 97,103, 0,115,101,108,101, 99,116,102,108, 97,103, 0,112, 97,100, 48, + 91, 54, 93, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105,107,116,114,101,101, 0,115,105,107,116,114,101,101, 0, + 42, 99,117,115,116,111,109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, + 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97, +100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105, +109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, + 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42,116,101,109,112, 0, 99, +104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116, +114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, + 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105, +107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, 97, 99,116, 95, 98,111,110,101, 91, 54, 52, + 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101, +112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, + 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99, +117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0,105,100,114,111,111, +116, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,115,101, 97,114, 99,104,115,116,114, 91, + 54, 52, 93, 0,102,105,108,116,101,114,102,108, 97,103, 0,114,101,110, 97,109,101, 73,110,100,101,120, 0, 97,100,115, 0,116, +105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0, +116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114, +114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0, +115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116, +101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42, +112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 54, 52, 93, 0,112,111,108,101, 97,110, +103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110, +117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101, +115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, + 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0, +118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105, +118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105, +116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, + 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109, +105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, + 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0,116, +114, 97, 99,107, 91, 54, 52, 93, 0,111, 98,106,101, 99,116, 91, 54, 52, 93, 0, 42,100,101,112,116,104, 95,111, 98, 0, 99,104, + 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105, +115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, + 0,115,116,114,105,100,101,108,101,110, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101, +108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115, +111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0,105,115, 95, 99,111, +112,121, 0,101,120,116,101,114,110, 97,108, 0, 42,110,101,119, 95,115,111, 99,107, 0, 42,115,116,111,114, 97,103,101, 0,108, +105,109,105,116, 0,115,116,114,117, 99,116, 95,116,121,112,101, 0,108,111, 99,120, 0,108,111, 99,121, 0, 42,100,101,102, 97, +117,108,116, 95,118, 97,108,117,101, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,115,116, 97, 99,107, 95,116,121,112,101, + 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,103,114,111,117,112,115,111, 99,107, 0, 42, +108,105,110,107, 0,110,115, 0, 42,114,101, 99,116, 0,120,115,105,122,101, 0,121,115,105,122,101, 0, 42,110,101,119, 95,110, +111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0,109,105,110,105,119,105,100,116,104, 0,117,112,100, 97, +116,101, 0,108, 97, 98,101,108, 91, 54, 52, 93, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115, +116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114, +101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116, +121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115, +111, 99,107, 0, 42,116,111,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0,105,110,105,116, 0, 99,117,114, + 95,105,110,100,101,120, 0,110,111,100,101,116,121,112,101, 0, 42,101,120,101, 99,100, 97,116, 97, 0, 40, 42,112,114,111,103, +114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98, +114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42,115,100,104, 0,118, 97,108,117,101, 91, 51, 93, 0, +118, 97,108,117,101, 91, 52, 93, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109, 97, +120,115,112,101,101,100, 0,109,105,110,115,112,101,101,100, 0, 99,117,114,118,101,100, 0,112,101,114, 99,101,110,116,120, 0, +112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0,105,109, 97,103,101, 95,105,110, 95,119,105, +100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110, +116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, + 97, 95,115,112, 97, 99,101, 0,104,117,101, 0, 98, 97,115,101, 95,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,102,111,114,109, + 97,116, 0, 97, 99,116,105,118,101, 95,105,110,112,117,116, 0,117,115,101, 95,114,101,110,100,101,114, 95,102,111,114,109, 97, +116, 0,117,115,101, 95,110,111,100,101, 95,102,111,114,109, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101, +110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97, +110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0,102, 97, 99, 95,120, 49, 0,102, 97, 99, 95,120, 50, 0,102, + 97, 99, 95,121, 49, 0,102, 97, 99, 95,121, 50, 0, 99,111,108,110, 97,109,101, 91, 54, 52, 93, 0, 98,107,116,121,112,101, 0, +112, 97,100, 95, 99, 49, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108, +117,114, 0, 98,116,104,114,101,115,104, 0,114,111,116, 97,116,105,111,110, 0,112, 97,100, 95,102, 49, 0, 42,100,105, 99,116, + 0, 42,110,111,100,101, 0, 99,111,108,109,111,100, 0,109,105,120, 0,102, 97,100,101, 0, 97,110,103,108,101, 95,111,102,115, + 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, + 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0,103, 97,109,109, 97, 95,105,110,118, 91, 51, 93, 0,108,105,109, + 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, 0,117,115, +112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,116,101,120, 95,109, 97,112,112,105,110,103, 0, 99,111,108,111,114, 95, +109, 97,112,112,105,110,103, 0,115,117,110, 95,100,105,114,101, 99,116,105,111,110, 91, 51, 93, 0,116,117,114, 98,105,100,105, +116,121, 0, 99,111,108,111,114, 95,115,112, 97, 99,101, 0,112,114,111,106,101, 99,116,105,111,110, 0,103,114, 97,100,105,101, +110,116, 95,116,121,112,101, 0, 99,111,108,111,114,105,110,103, 0,109,117,115,103,114, 97,118,101, 95,116,121,112,101, 0,119, + 97,118,101, 95,116,121,112,101, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, 0,109, 97,120,116, 97, 98,108, +101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, 99,117,114,118,101, 0, 42,116, + 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, 0, 99,104, 97,110,103,101,100, + 95,116,105,109,101,115,116, 97,109,112, 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99, +107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, + 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, + 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, + 0,115, 97,109,112,108,101, 95,102,117,108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, + 99,121, 0,119, 97,118,101,102,114,109, 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97, +118,101,102,114,109, 95,121,102, 97, 99, 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111, +112,101, 95, 97,108,112,104, 97, 0,118,101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, + 51, 93, 91, 50, 93, 0,104,105,115,116, 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, + 95, 50, 0, 42,119, 97,118,101,102,111,114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114, +109, 95,116,111,116, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0, 42,105, 99,111,110, + 95,105,109, 98,117,102, 0,105, 99,111,110, 95,102,105,108,101,112, 97,116,104, 91, 49, 48, 50, 52, 93, 0,110,111,114,109, 97, +108, 95,119,101,105,103,104,116, 0,111, 98, 95,109,111,100,101, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115, +116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111, +114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,112,108, 97,110,101, 0,112,108, 97,110,101, + 95,111,102,102,115,101,116, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120,112, 97,105,110,116, 95, +116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0,112, 97,100, 51, 91, 53, 93, 0, 97,117,116, +111,115,109,111,111,116,104, 95,102, 97, 99,116,111,114, 0, 99,114,101, 97,115,101, 95,112,105,110, 99,104, 95,102, 97, 99,116, +111,114, 0,112,108, 97,110,101, 95,116,114,105,109, 0,116,101,120,116,117,114,101, 95,115, 97,109,112,108,101, 95, 98,105, 97, +115, 0,116,101,120,116,117,114,101, 95,111,118,101,114,108, 97,121, 95, 97,108,112,104, 97, 0, 97,100,100, 95, 99,111,108, 91, + 51, 93, 0,115,117, 98, 95, 99,111,108, 91, 51, 93, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, + 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,121,112,101,109, 97, +112, 91, 51, 52, 93, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, + 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,114,111,116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103, +114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,112, 97,114,116, +105, 99,108,101, 95,105,110,100,101,120, 91, 50, 93, 0,100,101,108,101,116,101, 95,102,108, 97,103, 0,110,117,109, 0,112, 97, +114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,112, +114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109,101, 0,110,117, +109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115,112,114,105,110, +103, 95,107, 0,112,108, 97,115,116,105, 99,105,116,121, 95, 99,111,110,115,116, 97,110,116, 0,121,105,101,108,100, 95,114, 97, +116,105,111, 0,112,108, 97,115,116,105, 99,105,116,121, 95, 98, 97,108, 97,110, 99,101, 0,121,105,101,108,100, 95, 98, 97,108, + 97,110, 99,101, 0,118,105,115, 99,111,115,105,116,121, 95,111,109,101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98, +101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115,116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0, +114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, 97,110, 99,121, 0,115,112,114,105,110,103, 95,102,114, 97, +109,101,115, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, + 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, + 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98,102, +114, 97,109,101,115, 0,100,114, 97,119, 95, 99,111,108, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101, +112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105, +120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, + 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101, +116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, + 91, 50, 93, 0, 98, 98, 95,115,105,122,101, 91, 50, 93, 0, 98, 98, 95,118,101,108, 95,104,101, 97,100, 0, 98, 98, 95,118,101, +108, 95,116, 97,105,108, 0, 99,111,108,111,114, 95,118,101, 99, 95,109, 97,120, 0,115,105,109,112,108,105,102,121, 95,114,101, +102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97, +110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119, +101, 97,107, 0, 99,111,117,114, 97,110,116, 95,116, 97,114,103,101,116, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97, +105,114, 0,103,114,105,100, 95,114, 97,110,100, 0,112,115, 95,111,102,102,115,101,116, 91, 49, 93, 0,103,114,105,100, 95,114, +101,115, 0,101,102,102,101, 99,116,111,114, 95, 97,109,111,117,110,116, 0,116,105,109,101, 95,102,108, 97,103, 0,116,105,109, +101, 95,112, 97,100, 91, 51, 93, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, + 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101, +102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100, +115,105,122,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,114, 97,110, +100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0, +112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, + 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,107,105,110,107, + 95,102,108, 97,116, 0,107,105,110,107, 95, 97,109,112, 95, 99,108,117,109,112, 0,114,111,117,103,104, 49, 0,114,111,117,103, +104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, + 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112, +101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0,112, 97,114,116,105,110,103, 95, +102, 97, 99, 0,112, 97,114,116,105,110,103, 95,109,105,110, 0,112, 97,114,116,105,110,103, 95,109, 97,120, 0, 98,114, 97,110, + 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, + 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112, +115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, + 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, + 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104, +101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, + 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42, +108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0, 98,118,104,116,114,101,101, 95,102,114, 97,109,101, + 0, 99,104,105,108,100, 95,115,101,101,100, 0,116,111,116,117,110,101,120,105,115,116, 0,116,111,116, 99,104,105,108,100, 0, +116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112, +115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, + 91, 51, 93, 91, 54, 52, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114, +101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,102,108,117,105,100, 95,115,112,114,105, +110,103,115, 0,116,111,116, 95,102,108,117,105,100,115,112,114,105,110,103,115, 0, 97,108,108,111, 99, 95,102,108,117,105,100, +115,112,114,105,110,103,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0,100,116, 95,102,114, 97, + 99, 0, 95,112, 97,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105, +110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, + 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111, +114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109, +101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102, +114,105, 99,116,105,111,110, 0,118,101,108, 95,100, 97,109,112,105,110,103, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109, +101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121, +112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117, +112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0,114, +101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108, +102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,114,101,112,101,108, 95,102,111,114, + 99,101, 0,100,105,115,116, 97,110, 99,101, 95,114,101,112,101,108, 0,115,101,108,102, 95,108,111,111,112, 95, 99,111,117,110, +116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110,101,115,115, 0, +115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103,115,116,101,112, + 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102,102,101,114, 95, +115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115, +116,111,114,101,108,101,118,101,108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0, 42,119,105,110,100,114, 97,119, 97, + 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0,105,110,105,116,105, 97,108,105,122, +101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, 95,100,101,112,116,104, 0,111,112,101,114, + 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117, +114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99, +111,110,102, 0, 42, 97,100,100,111,110, 99,111,110,102, 0, 42,117,115,101,114, 99,111,110,102, 0,116,105,109,101,114,115, 0, + 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114, +115,111,114, 0, 42,115, 99,114,101,101,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109, +101, 91, 54, 52, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105, +116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0,109,111,100, 97,108, 99,117,114,115,111,114, 0, 97,100,100,109,111, +117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119, +101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, + 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117, +114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 95,115,116,114, 91, 54, 52, 93, 0, +112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107, +101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0, 42,114,101,109,111,118,101, 95, +105,116,101,109, 0, 42, 97,100,100, 95,105,116,101,109, 0,105,116,101,109,115, 0,100,105,102,102, 95,105,116,101,109,115, 0, +115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, + 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107, +101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42, +114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0, 42, 99,111,101,102,102, +105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112, +108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102, +102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95, +109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102, +116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105, +111,110, 0,115,116,101,112, 95,115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109, +101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, + 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105, +111,110, 91, 50, 53, 54, 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97, +114,114, 97,121, 95,105,110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102, +114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, + 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100, +109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0, 42,115,112,101, 97,107,101,114, 95,104, 97,110,100,108,101, 0, +103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105,110,103,102,108, 97,103, 0,112, + 97,116,104,115, 0,100,101,115, 99,114,105,112,116,105,111,110, 91, 50, 52, 48, 93, 0,116,121,112,101,105,110,102,111, 91, 54, + 52, 93, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107, +115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99, +116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105, +110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111, +114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113, +117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104, +101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, + 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110, +101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104, +110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95, +115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, + 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, + 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97, +110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114, +115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97, +116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117, +112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111, +119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98, +101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101, +116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115, +112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104, +101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, + 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0, 98,111,114,100,101,114, 95, 99,111,108,108,105,115, +105,111,110,115, 0,116,105,109,101, 95,115, 99, 97,108,101, 0,118,111,114,116,105, 99,105,116,121, 0,118,101,108,111, 99,105, +116,121, 91, 50, 93, 0,118,101,108, 95,109,117,108,116,105, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, + 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103, +114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111, +108,100, 91, 52, 93, 91, 52, 93, 0,118,111,108,117,109,101, 95,109, 97,120, 0,118,111,108,117,109,101, 95,109,105,110, 0,100, +105,115,116, 97,110, 99,101, 95,109, 97,120, 0,100,105,115,116, 97,110, 99,101, 95,114,101,102,101,114,101,110, 99,101, 0, 99, +111,110,101, 95, 97,110,103,108,101, 95,111,117,116,101,114, 0, 99,111,110,101, 95, 97,110,103,108,101, 95,105,110,110,101,114, + 0, 99,111,110,101, 95,118,111,108,117,109,101, 95,111,117,116,101,114, 0,114,101,110,100,101,114, 95,102,108, 97,103, 0, 98, +117,105,108,100, 95,115,105,122,101, 95,102,108, 97,103, 0, 98,117,105,108,100, 95,116, 99, 95,102,108, 97,103, 0,108, 97,115, +116,115,105,122,101, 91, 50, 93, 0,116,114, 97, 99,107,105,110,103, 0, 42,116,114, 97, 99,107,105,110,103, 95, 99,111,110,116, +101,120,116, 0,112,114,111,120,121, 0,116,114, 97, 99,107, 95,112,114,101,118,105,101,119, 95,104,101,105,103,104,116, 0, 42, +116,114, 97, 99,107, 95,112,114,101,118,105,101,119, 0,116,114, 97, 99,107, 95,112,111,115, 91, 50, 93, 0,116,114, 97, 99,107, + 95,100,105,115, 97, 98,108,101,100, 0, 42,109, 97,114,107,101,114, 0,115,108,105,100,101, 95,115, 99, 97,108,101, 91, 50, 93, + 0,101,114,114,111,114, 0, 42,105,110,116,114,105,110,115,105, 99,115, 0,115,101,110,115,111,114, 95,119,105,100,116,104, 0, +112,105,120,101,108, 95, 97,115,112,101, 99,116, 0,102,111, 99, 97,108, 0,117,110,105,116,115, 0,112,114,105,110, 99,105,112, + 97,108, 91, 50, 93, 0,107, 49, 0,107, 50, 0,107, 51, 0,112,111,115, 91, 50, 93, 0,112, 97,116, 95,109,105,110, 91, 50, 93, + 0,112, 97,116, 95,109, 97,120, 91, 50, 93, 0,115,101, 97,114, 99,104, 95,109,105,110, 91, 50, 93, 0,115,101, 97,114, 99,104, + 95,109, 97,120, 91, 50, 93, 0,109, 97,114,107,101,114,115,110,114, 0,108, 97,115,116, 95,109, 97,114,107,101,114, 0, 42,109, + 97,114,107,101,114,115, 0, 98,117,110,100,108,101, 95,112,111,115, 91, 51, 93, 0,112, 97,116, 95,102,108, 97,103, 0,115,101, + 97,114, 99,104, 95,102,108, 97,103, 0,102,114, 97,109,101,115, 95,108,105,109,105,116, 0,112, 97,116,116,101,114,110, 95,109, + 97,116, 99,104, 0,116,114, 97, 99,107,101,114, 0,112,121,114, 97,109,105,100, 95,108,101,118,101,108,115, 0,109,105,110,105, +109,117,109, 95, 99,111,114,114,101,108, 97,116,105,111,110, 0,100,101,102, 97,117,108,116, 95,116,114, 97, 99,107,101,114, 0, +100,101,102, 97,117,108,116, 95,112,121,114, 97,109,105,100, 95,108,101,118,101,108,115, 0,100,101,102, 97,117,108,116, 95,109, +105,110,105,109,117,109, 95, 99,111,114,114,101,108, 97,116,105,111,110, 0,100,101,102, 97,117,108,116, 95,112, 97,116,116,101, +114,110, 95,115,105,122,101, 0,100,101,102, 97,117,108,116, 95,115,101, 97,114, 99,104, 95,115,105,122,101, 0,100,101,102, 97, +117,108,116, 95,102,114, 97,109,101,115, 95,108,105,109,105,116, 0,100,101,102, 97,117,108,116, 95,109, 97,114,103,105,110, 0, +100,101,102, 97,117,108,116, 95,112, 97,116,116,101,114,110, 95,109, 97,116, 99,104, 0,100,101,102, 97,117,108,116, 95,102,108, + 97,103, 0,112,111,100, 0,107,101,121,102,114, 97,109,101, 49, 0,107,101,121,102,114, 97,109,101, 50, 0,114,101,102,105,110, +101, 95, 99, 97,109,101,114, 97, 95,105,110,116,114,105,110,115,105, 99,115, 0,112, 97,100, 50, 51, 0, 99,108,101, 97,110, 95, +102,114, 97,109,101,115, 0, 99,108,101, 97,110, 95, 97, 99,116,105,111,110, 0, 99,108,101, 97,110, 95,101,114,114,111,114, 0, +111, 98,106,101, 99,116, 95,100,105,115,116, 97,110, 99,101, 0,116,111,116, 95,116,114, 97, 99,107, 0, 97, 99,116, 95,116,114, + 97, 99,107, 0,109, 97,120,115, 99, 97,108,101, 0, 42,114,111,116, 95,116,114, 97, 99,107, 0,108,111, 99,105,110,102, 0,115, + 99, 97,108,101,105,110,102, 0,114,111,116,105,110,102, 0, 42,115, 99, 97,108,101,105, 98,117,102, 0,108, 97,115,116, 95, 99, + 97,109,101,114, 97, 0, 99, 97,109,110,114, 0, 42, 99, 97,109,101,114, 97,115, 0,116,114, 97, 99,107,115, 0,114,101, 99,111, +110,115,116,114,117, 99,116,105,111,110, 0,109,101,115,115, 97,103,101, 91, 50, 53, 54, 93, 0,115,101,116,116,105,110,103,115, + 0, 99, 97,109,101,114, 97, 0,115,116, 97, 98,105,108,105,122, 97,116,105,111,110, 0, 42, 97, 99,116, 95,116,114, 97, 99,107, + 0,111, 98,106,101, 99,116,115, 0,111, 98,106,101, 99,116,110,114, 0,116,111,116, 95,111, 98,106,101, 99,116, 0, 42, 98,114, +117,115,104, 95,103,114,111,117,112, 0, 99,117,114,114,101,110,116, 95,102,114, 97,109,101, 0,100,105,115,112, 95,116,121,112, +101, 0,105,109, 97,103,101, 95,102,105,108,101,102,111,114,109, 97,116, 0,101,102,102,101, 99,116, 95,117,105, 0,112,114,101, +118,105,101,119, 95,105,100, 0,105,110,105,116, 95, 99,111,108,111,114, 95,116,121,112,101, 0,112, 97,100, 95,115, 0,105,109, + 97,103,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,117, 98,115,116,101,112,115, 0,105,110,105,116, 95, 99,111,108, +111,114, 91, 52, 93, 0, 42,105,110,105,116, 95,116,101,120,116,117,114,101, 0,105,110,105,116, 95,108, 97,121,101,114,110, 97, +109,101, 91, 54, 52, 93, 0,100,114,121, 95,115,112,101,101,100, 0, 99,111,108,111,114, 95,100,114,121, 95,116,104,114,101,115, +104,111,108,100, 0,100,101,112,116,104, 95, 99,108, 97,109,112, 0,100,105,115,112, 95,102, 97, 99,116,111,114, 0,115,112,114, +101, 97,100, 95,115,112,101,101,100, 0, 99,111,108,111,114, 95,115,112,114,101, 97,100, 95,115,112,101,101,100, 0,115,104,114, +105,110,107, 95,115,112,101,101,100, 0,100,114,105,112, 95,118,101,108, 0,100,114,105,112, 95, 97, 99, 99, 0,105,110,102,108, +117,101,110, 99,101, 95,115, 99, 97,108,101, 0,114, 97,100,105,117,115, 95,115, 99, 97,108,101, 0,119, 97,118,101, 95,100, 97, +109,112,105,110,103, 0,119, 97,118,101, 95,115,112,101,101,100, 0,119, 97,118,101, 95,116,105,109,101,115, 99, 97,108,101, 0, +119, 97,118,101, 95,115,112,114,105,110,103, 0,105,109, 97,103,101, 95,111,117,116,112,117,116, 95,112, 97,116,104, 91, 49, 48, + 50, 52, 93, 0,111,117,116,112,117,116, 95,110, 97,109,101, 91, 54, 52, 93, 0,111,117,116,112,117,116, 95,110, 97,109,101, 50, + 91, 54, 52, 93, 0, 42,112,109,100, 0,115,117,114,102, 97, 99,101,115, 0, 97, 99,116,105,118,101, 95,115,117,114, 0,101,114, +114,111,114, 91, 54, 52, 93, 0, 99,111,108,108,105,115,105,111,110, 0,119,101,116,110,101,115,115, 0,112, 97,114,116,105, 99, +108,101, 95,114, 97,100,105,117,115, 0,112, 97,114,116,105, 99,108,101, 95,115,109,111,111,116,104, 0,112, 97,105,110,116, 95, +100,105,115,116, 97,110, 99,101, 0, 42,112, 97,105,110,116, 95,114, 97,109,112, 0, 42,118,101,108, 95,114, 97,109,112, 0,112, +114,111,120,105,109,105,116,121, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,105,114, 0,119, 97,118,101, 95,102, 97, + 99,116,111,114, 0,119, 97,118,101, 95, 99,108, 97,109,112, 0,109, 97,120, 95,118,101,108,111, 99,105,116,121, 0,115,109,117, +100,103,101, 95,115,116,114,101,110,103,116,104, 0, 0, 0, 0, 84, 89, 80, 69, 16, 2, 0, 0, 99,104, 97,114, 0,117, 99,104, + 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102, +108,111, 97,116, 0,100,111,117, 98,108,101, 0,105,110,116, 54, 52, 95,116, 0,117,105,110,116, 54, 52, 95,116, 0,118,111,105, +100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118, +101, 99, 50,102, 0,118,101, 99, 51,102, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, + 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97, +116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, + 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75, +101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101, +120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, + 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, + 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103, +105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, + 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 86,111, +120,101,108, 68, 97,116, 97, 0, 79, 99,101, 97,110, 84,101,120, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97, +112,112,105,110,103, 0, 67,111,108,111,114, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 86,111,108,117,109,101, 83,101, +116,116,105,110,103,115, 0, 71, 97,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111, +117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110, +100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, + 66,111,120, 0, 69,100,105,116, 78,117,114, 98, 0, 71, 72, 97,115,104, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101, +108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 83,101,108,101, 99,116, 0, 77, 80,111,108,121, + 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, + 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, + 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 66, 77, 69,100,105,116, 77, +101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 77, 68,101,102,111,114,109, 87, +101,105,103,104,116, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116, +121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, + 79,114,105,103, 83,112, 97, 99,101, 76,111,111,112, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, + 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117, +108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77, 82,101, 99, 97,115,116, + 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,112,112,105,110,103, 73,110,102,111, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101, +118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83, +101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67, +111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, + 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116, +104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116, +105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104, +101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, + 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, + 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68, +101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116, +105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83, +101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, +105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 79, 99,101, 97,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 79, 99,101, 97,110, 0, 79, 99,101, 97,110, 67, 97, 99,104,101, 0, 87, 97,114,112, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 87,101,105,103,104,116, 86, 71, 69,100,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 87,101,105,103,104,116, 86, 71, 77,105,120, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87,101,105,103,104,116, 86, + 71, 80,114,111,120,105,109,105,116,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,121,110, 97,109,105, 99, 80, 97, +105,110,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,121,110, 97,109,105, 99, 80, 97,105,110,116, 67, 97,110,118, + 97,115, 83,101,116,116,105,110,103,115, 0, 68,121,110, 97,109,105, 99, 80, 97,105,110,116, 66,114,117,115,104, 83,101,116,116, +105,110,103,115, 0, 82,101,109,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,105,116, 76, 97,116,116, + 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115, +105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86, +105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102, +116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111, +107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116, +115, 0, 80, 84, 67, 97, 99,104,101, 69,120,116,114, 97, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104, +101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114, +105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 70,108,117,105,100, 86,101,114,116,101,120, 86,101,108,111, 99,105,116, +121, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116, +105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105, +110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99, +101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 73,109, 97,103,101, 70,111,114,109, 97,116, 68, 97,116, 97, 0, 82, +101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, + 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 82,101, 99, 97,115,116, 68, 97,116, 97, 0, 71, 97,109,101, 68, 97,116, 97, + 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105, +110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114, +116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 83, 99,117,108,112,116, 0, 85,118, 83, 99,117,108,112, +116, 0, 86, 80, 97,105,110,116, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 85,110, +105,102,105,101,100, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, + 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105, +110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, + 0, 77,111,118,105,101, 67,108,105,112, 0, 66, 71,112,105, 99, 0, 77,111,118,105,101, 67,108,105,112, 85,115,101,114, 0, 82, +101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,110,100,101,114, 69,110,103, +105,110,101, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119, +109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83, +112, 97, 99,101, 73,110,102,111, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, + 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, + 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70, +105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114, +101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105, +115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112, +116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, + 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 67,111,110,115, +111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114, +101,102, 0, 83,112, 97, 99,101, 67,108,105,112, 0, 77,111,118,105,101, 67,108,105,112, 83, 99,111,112,101,115, 0,117,105, 70, +111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, + 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0,117,105, 80, 97,110, +101,108, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109, +101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105, +103,104,116, 0, 85,115,101,114, 68,101,102, 0, 98, 83, 99,114,101,101,110, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69, +100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, + 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121, +112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111, +112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, + 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101, +113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, + 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108, +111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66, +117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, + 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110, +115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, + 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, + 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, + 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101, +110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110, +115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99, +107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67, +111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, + 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 83,111,117,110,100, 65, + 99,116,117, 97,116,111,114, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101, +110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98, +106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, + 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71, +114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101, +115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115, +105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97, +116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116, +111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116,101,101,114,105,110,103, 65, 99, +116,117, 97,116,111,114, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114, +101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, + 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99, +101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105, +110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110, +116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, + 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107, +101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110, +116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109, +101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, + 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84, +114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, + 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, +102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105, +115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 67, 97,109,101,114, 97, 83,111,108,118,101,114, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 79, 98,106,101, 99,116, 83,111, +108,118,101,114, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, + 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107, +101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0, 98, 78,111,100,101, 0, +117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 98, 78,111,100,101, 84,114,101,101, 69,120,101, 99, 0, + 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 73,110,116, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, + 97,108,117,101, 70,108,111, 97,116, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 66,111,111,108,101, 97, +110, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 86, 97,108,117,101, 86,101, 99,116,111,114, 0, 98, 78,111,100,101, 83,111, + 99,107,101,116, 86, 97,108,117,101, 82, 71, 66, 65, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, + 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116, +101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103, +101, 70,105,108,101, 0, 78,111,100,101, 73,109, 97,103,101, 77,117,108,116,105, 70,105,108,101, 0, 78,111,100,101, 73,109, 97, +103,101, 77,117,108,116,105, 70,105,108,101, 83,111, 99,107,101,116, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100, +101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116, +114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100, +101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97, +112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, + 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 78,111,100,101, 84,101,120, 66, 97,115,101, 0, 78,111,100,101, 84, +101,120, 83,107,121, 0, 78,111,100,101, 84,101,120, 73,109, 97,103,101, 0, 78,111,100,101, 84,101,120, 67,104,101, 99,107,101, +114, 0, 78,111,100,101, 84,101,120, 69,110,118,105,114,111,110,109,101,110,116, 0, 78,111,100,101, 84,101,120, 71,114, 97,100, +105,101,110,116, 0, 78,111,100,101, 84,101,120, 78,111,105,115,101, 0, 78,111,100,101, 84,101,120, 86,111,114,111,110,111,105, + 0, 78,111,100,101, 84,101,120, 77,117,115,103,114, 97,118,101, 0, 78,111,100,101, 84,101,120, 87, 97,118,101, 0, 78,111,100, +101, 84,101,120, 77, 97,103,105, 99, 0, 78,111,100,101, 83,104, 97,100,101,114, 65,116,116,114,105, 98,117,116,101, 0, 84,101, +120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, + 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117, +115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108, +101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 80, 97,114,116,105, + 99,108,101, 83,112,114,105,110,103, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, + 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, + 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108, +101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, + 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, + 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, + 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 76,105,115,116, 0,119,109, + 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102, +105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, + 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97, +112, 68,105,102,102, 73,116,101,109, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112, +101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, + 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97, +116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111, +100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, + 70, 77,111,100, 95, 83,116,101,112,112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, + 86, 97,114, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, + 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, + 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79, +118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66, +111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111, +108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105, +100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, + 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 83, +112,101, 97,107,101,114, 0, 77,111,118,105,101, 67,108,105,112, 80,114,111,120,121, 0, 77,111,118,105,101, 67,108,105,112, 67, + 97, 99,104,101, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, + 84,114, 97, 99,107, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 77, 97,114,107,101,114, 0, 77,111,118,105,101, 82, +101, 99,111,110,115,116,114,117, 99,116,101,100, 67, 97,109,101,114, 97, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, + 67, 97,109,101,114, 97, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 83,101,116,116,105,110,103,115, 0, 77,111,118, +105,101, 84,114, 97, 99,107,105,110,103, 83,116, 97, 98,105,108,105,122, 97,116,105,111,110, 0, 77,111,118,105,101, 84,114, 97, + 99,107,105,110,103, 82,101, 99,111,110,115,116,114,117, 99,116,105,111,110, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110, +103, 79, 98,106,101, 99,116, 0, 77,111,118,105,101, 84,114, 97, 99,107,105,110,103, 83,116, 97,116,115, 0, 68,121,110, 97,109, +105, 99, 80, 97,105,110,116, 83,117,114,102, 97, 99,101, 0, 80, 97,105,110,116, 83,117,114,102, 97, 99,101, 68, 97,116, 97, 0, + 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 8, 0, 8, 0, 0, 0, 16, 0, 24, 0, + 16, 0, 4, 0, 8, 0, 12, 0, 16, 0, 16, 0, 32, 0,128, 0,120, 0,152, 8, 0, 0, 40, 0,144, 0,112, 5,112, 0, 36, 0, + 56, 0,160, 0,192, 0,224, 0, 96, 0, 40, 0, 48, 0,224, 0, 16, 0,200, 0, 40, 0,216, 11, 48, 5, 0, 0, 0, 0, 0, 0, + 56, 1,168, 1,216, 4, 24, 0, 8, 3,200, 0, 0, 0,104, 0, 64, 1, 56, 4, 80, 0, 24, 1,144, 0, 56, 3, 16, 2, 88, 0, + 16, 0,128, 3,152, 0,136, 4, 0, 0,104, 0,104, 0, 0, 1, 80, 0, 8, 0, 16, 0, 32, 0, 0, 0, 8, 2, 0, 0, 0, 0, + 0, 0,232, 4, 8, 0, 12, 0, 16, 0, 8, 0, 12, 0, 4, 0, 20, 0, 48, 0, 64, 0, 20, 0, 12, 0, 16, 0, 4, 0, 8, 0, + 0, 0,176, 0,144, 1, 8, 0, 4, 0, 4, 0, 0, 1, 32, 0, 8, 0, 24, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 4, 0, +112, 0,200, 0,136, 0,192, 0,192, 0,128, 0,192, 0,192, 0,128, 0,120, 0,200, 0,120, 0,144, 0, 16, 1, 56, 0,192, 0, + 24, 1, 40, 1,120, 0,184, 0,200, 0, 64, 1,200, 0, 88, 1,112, 0,168, 0, 0, 0,152, 0, 48, 0, 40, 5,192, 0, 0, 0, +152, 0, 0, 0, 0, 0,128, 0, 8, 0, 8, 0,112, 1,144, 0,152, 2,136, 0,192, 0,120, 0,128, 0,224, 4,208, 0,200, 0, +112, 0,208, 0,144, 0, 16, 5, 0, 0, 0, 0, 48, 1,104, 1,160, 1,104, 1,136, 0,104, 0,112, 0,128, 0, 16, 0, 96, 1, + 88, 0, 0, 0,200, 0,216, 0,152, 0, 48, 0, 24, 0,120, 0,152, 0,216, 1, 0, 1,184, 0, 0, 0, 72, 0, 32, 0,176, 0, + 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 12, 0, 24, 2, 40, 0,184, 0,152, 0, 64, 0, 72, 0, 32, 0,120, 0, 24, 0, 56, 9, + 64, 0, 24, 0, 16, 0, 56, 0,168, 0, 96, 0, 24, 0, 88, 6, 48, 0, 16, 0,168, 0, 96, 0, 24, 0, 56, 0,120, 0, 16, 0, +232, 1, 32, 0, 8, 0, 24, 0, 80, 8, 0, 0, 0, 0,192, 8,104, 0, 8, 0,112, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 1, 56, 0,144, 0, 64, 0,240, 0,112, 0,248, 0,240, 0,160, 7,104, 0, 0, 0,168, 0, 0, 0, 24, 1, 16, 0, 16, 0, + 40, 33,128, 16, 24, 16,216, 0,160, 2,168, 5, 64, 0, 24, 0,208, 0, 48, 1, 72, 0, 40, 0,136, 1,104, 0, 40, 1, 56, 0, + 24, 4, 32, 0,232, 0, 32, 0, 32, 0, 8, 0, 80, 3,224, 1, 16, 0,168, 36, 80, 0, 56, 0,112, 38, 8, 1, 32, 0, 40, 0, + 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 48, 4, 8, 1, 16, 0, 8, 0, 44, 0, 16, 4, 72, 3,200, 4, 80, 1, +208, 4, 32, 0, 12, 0, 24, 0, 32, 0, 16, 0, 24, 0, 24, 0, 32, 0,136, 1, 0, 0, 64, 0, 96, 0, 80, 0, 8, 0, 80, 0, +136, 0,200, 0, 72, 0, 8, 0,136, 0, 76, 0, 72, 0,204, 0,136, 0,136, 0,128, 0,136, 0, 92, 0,128, 0, 80, 0,112, 0, + 16, 0,168, 0, 32, 0, 72, 0,120, 0, 24, 0,144, 0,112, 0,148, 0, 32, 0,128, 0, 88, 0, 88, 0,208, 0,140, 0, 4, 0, + 24, 0, 16, 0, 8, 0,160, 0, 48, 0, 40, 0, 72, 1, 0, 1, 16, 0, 32, 2, 4, 0, 40, 0,120, 0, 72, 1,120, 0, 56, 0, +120, 0,160, 0,112, 0,184, 0, 24, 0, 88, 0, 80, 0, 80, 0, 80, 0, 8, 0, 72, 0,104, 0,104, 0, 80, 0, 80, 0, 24, 0, + 88, 0,104, 0, 16, 0,144, 0,128, 0, 88, 0, 28, 0, 28, 0, 28, 0, 88, 0, 24, 0,160, 0, 16, 0,152, 0, 72, 0,168, 0, + 48, 0,208, 0, 56, 0, 16, 0, 88, 1, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0, 4, 0, 24, 0, 16, 0, 16, 0, 40, 0, 28, 0, + 12, 0, 12, 0, 32, 4, 40, 4, 32, 0, 44, 0, 24, 0, 8, 0,128, 0, 64, 0, 32, 0, 16, 0, 32, 0, 32, 0, 8, 0, 96, 0, + 20, 0,200, 3,216, 3,208, 3,200, 3,208, 3,208, 3,200, 3,208, 3,208, 3,208, 3,208, 3, 64, 0, 64, 0, 12, 0, 56, 0, + 24, 0,104, 0, 0, 4, 24, 0, 56, 0, 56, 0, 20, 0, 16, 0, 64, 0, 40, 0, 32, 0,192, 0, 60, 0, 16, 3,104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 88, 1, 0, 1,168, 0, 0, 0, 0, 0, 0, 0,184, 0, 0, 0, + 32, 0,136, 0, 0, 0,120, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, + 16, 0,104, 0, 0, 1, 40, 0,208, 0,104, 0,112, 0,216, 1, 32, 0,128, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0, +128, 0, 0, 0, 0, 0,184, 0, 8, 3, 0, 0,248, 0,192, 0, 16, 0, 72, 0, 48, 0, 64, 0, 56, 0, 24, 0,128, 0, 0, 1, + 16, 6, 0, 0, 83, 84, 82, 67,207, 1, 0, 0, 12, 0, 2, 0, 12, 0, 0, 0, 12, 0, 1, 0, 13, 0, 3, 0, 13, 0, 0, 0, + 13, 0, 1, 0, 11, 0, 2, 0, 14, 0, 2, 0, 11, 0, 3, 0, 11, 0, 4, 0, 15, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, + 16, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 17, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 18, 0, 4, 0, + 4, 0, 8, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, 19, 0, 4, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 20, 0, 4, 0, 11, 0, 12, 0, 14, 0, 13, 0, 4, 0, 14, 0, 4, 0, 15, 0, 21, 0, 10, 0, 21, 0, 0, 0, + 21, 0, 1, 0, 0, 0, 16, 0, 0, 0, 17, 0, 2, 0, 18, 0, 0, 0, 19, 0, 4, 0, 20, 0, 20, 0, 21, 0, 4, 0, 22, 0, + 4, 0, 23, 0, 22, 0, 11, 0, 11, 0, 0, 0, 11, 0, 1, 0, 22, 0, 24, 0, 23, 0, 25, 0, 0, 0, 26, 0, 2, 0, 27, 0, + 2, 0, 28, 0, 2, 0, 18, 0, 4, 0, 29, 0, 4, 0, 30, 0, 21, 0, 31, 0, 23, 0, 8, 0, 22, 0, 32, 0, 22, 0, 33, 0, + 24, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 4, 0, 37, 0, 4, 0, 27, 0, 23, 0, 38, 0, 25, 0, 5, 0, 4, 0, 39, 0, + 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 4, 0, 43, 0, 26, 0, 6, 0, 27, 0, 44, 0, 2, 0, 45, 0, 2, 0, 46, 0, + 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 47, 0, 28, 0, 21, 0, 28, 0, 0, 0, 28, 0, 1, 0, 29, 0, 48, 0, 30, 0, 49, 0, + 19, 0, 50, 0, 19, 0, 51, 0, 2, 0, 45, 0, 2, 0, 46, 0, 2, 0, 52, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, + 2, 0, 18, 0, 2, 0, 56, 0, 7, 0, 10, 0, 7, 0, 11, 0, 4, 0, 57, 0, 7, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, + 26, 0, 61, 0, 31, 0, 7, 0, 22, 0, 32, 0, 14, 0, 62, 0, 19, 0, 63, 0, 2, 0, 45, 0, 2, 0, 64, 0, 2, 0, 65, 0, + 2, 0, 27, 0, 32, 0, 16, 0, 32, 0, 0, 0, 32, 0, 1, 0, 7, 0, 66, 0, 7, 0, 60, 0, 2, 0, 16, 0, 2, 0, 67, 0, + 2, 0, 68, 0, 2, 0, 18, 0, 4, 0, 69, 0, 4, 0, 70, 0, 11, 0, 2, 0, 7, 0, 71, 0, 0, 0, 19, 0, 0, 0, 72, 0, + 7, 0, 73, 0, 7, 0, 74, 0, 33, 0, 15, 0, 22, 0, 32, 0, 34, 0, 75, 0, 32, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, + 4, 0, 27, 0, 14, 0, 79, 0, 31, 0, 80, 0, 22, 0, 81, 0, 2, 0, 16, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 18, 0, + 7, 0, 84, 0, 4, 0, 85, 0, 35, 0, 6, 0, 35, 0, 0, 0, 35, 0, 1, 0, 0, 0, 86, 0, 0, 0, 87, 0, 4, 0, 22, 0, + 4, 0, 88, 0, 36, 0, 10, 0, 36, 0, 0, 0, 36, 0, 1, 0, 4, 0, 89, 0, 4, 0, 90, 0, 4, 0, 91, 0, 4, 0, 67, 0, + 4, 0, 13, 0, 4, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 37, 0, 15, 0, 22, 0, 32, 0, 0, 0, 95, 0, 4, 0, 92, 0, + 4, 0, 96, 0, 14, 0, 97, 0, 35, 0, 98, 0, 35, 0, 99, 0, 4, 0,100, 0, 4, 0,101, 0, 14, 0,102, 0, 0, 0,103, 0, + 4, 0,104, 0, 4, 0,105, 0, 11, 0,106, 0, 8, 0,107, 0, 38, 0, 3, 0, 4, 0,108, 0, 4, 0,109, 0, 11, 0, 2, 0, + 39, 0, 20, 0, 22, 0, 32, 0, 34, 0, 75, 0, 0, 0, 16, 0, 0, 0,110, 0, 2, 0, 18, 0, 7, 0,111, 0, 7, 0,112, 0, + 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118, 0, 7, 0,119, 0, 7, 0,120, 0, + 7, 0,121, 0, 31, 0, 80, 0, 27, 0,122, 0, 0, 0,123, 0, 0, 0,124, 0, 40, 0, 14, 0, 41, 0,125, 0, 4, 0,126, 0, + 4, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, 0, 0,130, 0, 0, 0,131, 0, 0, 0,132, 0, 0, 0, 27, 0, 2, 0,133, 0, + 2, 0,134, 0, 2, 0,135, 0, 2, 0, 18, 0, 4, 0, 30, 0, 42, 0, 33, 0, 22, 0, 32, 0, 0, 0, 35, 0, 14, 0,136, 0, + 43, 0,137, 0, 44, 0,138, 0, 45, 0,139, 0, 45, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,132, 0, 2, 0, 18, 0, + 2, 0,143, 0, 2, 0, 16, 0, 4, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 2, 0,147, 0, 2, 0,148, 0, 2, 0,149, 0, + 2, 0,150, 0, 4, 0,151, 0, 4, 0,152, 0, 38, 0,153, 0, 25, 0,154, 0, 7, 0,155, 0, 4, 0,156, 0, 2, 0,157, 0, + 2, 0,158, 0, 2, 0,159, 0, 0, 0,160, 0, 0, 0,161, 0, 7, 0,162, 0, 7, 0,163, 0, 46, 0, 65, 0, 2, 0,164, 0, + 2, 0,165, 0, 2, 0,166, 0, 2, 0,167, 0, 27, 0,168, 0, 47, 0,169, 0, 0, 0,170, 0, 0, 0,171, 0, 0, 0,172, 0, + 0, 0,173, 0, 0, 0,174, 0, 7, 0,175, 0, 7, 0,176, 0, 7, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 2, 0,180, 0, + 2, 0,181, 0, 2, 0,182, 0, 2, 0,183, 0, 0, 0,184, 0, 0, 0,124, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, + 7, 0,188, 0, 7, 0,189, 0, 7, 0, 56, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, + 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, + 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, + 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, + 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0, 7, 0,222, 0, 7, 0,223, 0, 7, 0,224, 0, 7, 0,225, 0, 7, 0,226, 0, + 48, 0, 15, 0, 0, 0, 35, 0, 11, 0,227, 0, 0, 0,228, 0, 0, 0,229, 0, 4, 0,230, 0, 4, 0,231, 0, 11, 0,232, 0, + 7, 0,233, 0, 7, 0,234, 0, 7, 0,235, 0, 4, 0,236, 0, 11, 0,237, 0, 11, 0,238, 0, 4, 0,239, 0, 4, 0, 27, 0, + 49, 0, 6, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,240, 0, 7, 0, 66, 0, 4, 0, 63, 0, 50, 0, 5, 0, + 2, 0, 18, 0, 2, 0, 37, 0, 2, 0, 63, 0, 2, 0,241, 0, 49, 0,235, 0, 51, 0, 17, 0, 27, 0,168, 0, 42, 0,242, 0, + 52, 0,243, 0, 7, 0,244, 0, 7, 0,245, 0, 2, 0, 16, 0, 2, 0,246, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,247, 0, + 4, 0,248, 0, 2, 0,249, 0, 2, 0,250, 0, 4, 0,132, 0, 4, 0,144, 0, 2, 0,251, 0, 2, 0,252, 0, 53, 0, 25, 0, + 2, 0, 18, 0, 2, 0,253, 0, 7, 0,254, 0, 7, 0,255, 0, 2, 0,143, 0, 2, 0, 0, 1, 4, 0, 1, 1, 4, 0, 2, 1, + 27, 0,168, 0, 4, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 11, 0, 6, 1, 7, 0, 7, 1, 7, 0, 8, 1, 2, 0, 9, 1, + 2, 0, 10, 1, 2, 0, 11, 1, 2, 0, 12, 1, 7, 0, 13, 1, 7, 0, 14, 1, 7, 0, 15, 1, 7, 0, 16, 1, 50, 0, 17, 1, + 54, 0, 18, 1, 55, 0, 13, 0, 4, 0, 19, 1, 4, 0, 20, 1, 2, 0, 21, 1, 2, 0, 18, 0, 2, 0, 22, 1, 2, 0, 23, 1, + 27, 0,168, 0, 7, 0, 24, 1, 4, 0, 25, 1, 0, 0, 26, 1, 7, 0, 27, 1, 4, 0, 28, 1, 4, 0,132, 0, 56, 0, 4, 0, + 27, 0,168, 0, 0, 0, 29, 1, 4, 0, 30, 1, 4, 0, 27, 0, 47, 0, 64, 0, 22, 0, 32, 0, 34, 0, 75, 0, 7, 0, 31, 1, + 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, + 7, 0, 30, 0, 7, 0, 40, 1, 7, 0, 41, 1, 7, 0, 42, 1, 7, 0, 43, 1, 7, 0, 44, 1, 7, 0, 45, 1, 7, 0, 46, 1, + 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 7, 0, 51, 1, 2, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, + 2, 0, 55, 1, 2, 0, 56, 1, 2, 0, 57, 1, 2, 0, 58, 1, 2, 0, 18, 0, 2, 0, 16, 0, 2, 0,246, 0, 7, 0, 59, 1, + 7, 0, 60, 1, 7, 0, 61, 1, 7, 0, 62, 1, 4, 0, 63, 1, 4, 0, 64, 1, 2, 0, 65, 1, 2, 0, 66, 1, 2, 0, 22, 1, + 2, 0,130, 0, 4, 0, 22, 0, 4, 0,127, 0, 4, 0,128, 0, 4, 0,129, 0, 7, 0, 67, 1, 7, 0, 68, 1, 7, 0, 67, 0, + 40, 0, 69, 1, 57, 0, 70, 1, 31, 0, 80, 0, 42, 0,242, 0, 48, 0, 71, 1, 50, 0, 17, 1, 51, 0, 72, 1, 25, 0,154, 0, + 53, 0, 73, 1, 55, 0, 74, 1, 56, 0, 75, 1, 0, 0, 76, 1, 0, 0,124, 0, 58, 0, 13, 0, 7, 0, 77, 1, 7, 0, 78, 1, + 7, 0,176, 0, 4, 0, 18, 0, 0, 0,171, 0, 0, 0,172, 0, 0, 0,173, 0, 0, 0,174, 0, 4, 0, 27, 0, 7, 0, 79, 1, + 7, 0, 80, 1, 7, 0, 81, 1, 27, 0, 44, 0, 59, 0, 9, 0, 50, 0, 82, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, + 4, 0, 18, 0, 7, 0, 83, 1, 7, 0, 84, 1, 4, 0, 85, 1, 4, 0, 86, 1, 60, 0, 74, 0, 22, 0, 32, 0, 34, 0, 75, 0, + 2, 0, 16, 0, 2, 0, 18, 0, 4, 0, 87, 1, 2, 0,179, 0, 2, 0, 88, 1, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, + 7, 0,188, 0, 7, 0, 89, 1, 7, 0, 90, 1, 7, 0, 91, 1, 7, 0, 92, 1, 7, 0, 93, 1, 7, 0, 94, 1, 7, 0, 95, 1, + 7, 0, 96, 1, 7, 0, 97, 1, 7, 0, 98, 1, 7, 0, 99, 1, 54, 0,100, 1, 2, 0,253, 0, 2, 0, 30, 0, 7, 0,112, 0, + 7, 0,113, 0, 7, 0,101, 1, 7, 0,102, 1, 7, 0,103, 1, 7, 0,104, 1, 7, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, + 2, 0,108, 1, 2, 0,109, 1, 0, 0,110, 1, 0, 0,111, 1, 2, 0,112, 1, 2, 0,113, 1, 2, 0,114, 1, 2, 0,115, 1, + 2, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, 7, 0,120, 1, 2, 0,121, 1, 2, 0, 67, 0, 2, 0,122, 1, + 2, 0,123, 1, 2, 0,124, 1, 2, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, + 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 7, 0,135, 1, 7, 0,136, 1, 7, 0,137, 1, 2, 0,138, 1, + 0, 0,139, 1, 31, 0, 80, 0, 46, 0,140, 1, 2, 0,141, 1, 2, 0, 76, 1, 0, 0,142, 1, 25, 0,154, 0, 57, 0, 70, 1, + 61, 0, 18, 0, 7, 0,143, 1, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, + 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 2, 0,153, 1, 2, 0,154, 1, 2, 0,155, 1, 2, 0,156, 1, 7, 0,157, 1, + 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 62, 0, 4, 0, 4, 0, 18, 0, 4, 0,161, 1, 4, 0,162, 1, 4, 0, 67, 0, + 63, 0,126, 0, 22, 0, 32, 0, 34, 0, 75, 0, 2, 0,163, 1, 2, 0, 18, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, + 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, + 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1, 7, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, + 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 61, 0,184, 1, 62, 0,185, 1, 7, 0,186, 1, 7, 0,187, 1, + 7, 0,188, 1, 7, 0,189, 1, 7, 0,190, 1, 7, 0,191, 1, 7, 0,192, 1, 2, 0,193, 1, 2, 0,194, 1, 2, 0,195, 1, + 0, 0,196, 1, 0, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 2, 0,200, 1, 2, 0,201, 1, 7, 0,202, 1, 7, 0,203, 1, + 7, 0,204, 1, 7, 0,205, 1, 2, 0,206, 1, 2, 0,207, 1, 4, 0, 87, 1, 4, 0,208, 1, 2, 0,209, 1, 2, 0,210, 1, + 2, 0,211, 1, 2, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, + 7, 0,219, 1, 7, 0,220, 1, 7, 0,221, 1, 7, 0,222, 1, 0, 0,223, 1, 7, 0,224, 1, 7, 0,225, 1, 7, 0,226, 1, + 4, 0,227, 1, 0, 0,228, 1, 0, 0,122, 1, 0, 0,229, 1, 0, 0, 76, 1, 2, 0,230, 1, 2, 0,231, 1, 2, 0,141, 1, + 2, 0,232, 1, 2, 0,233, 1, 2, 0,234, 1, 7, 0,235, 1, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, + 2, 0,164, 0, 2, 0,165, 0, 50, 0,240, 1, 50, 0,241, 1, 0, 0,242, 1, 0, 0,243, 1, 0, 0,244, 1, 0, 0,245, 1, + 2, 0,246, 1, 2, 0,247, 1, 7, 0,248, 1, 7, 0,249, 1, 46, 0,140, 1, 57, 0, 70, 1, 31, 0, 80, 0, 64, 0,250, 1, + 25, 0,154, 0, 7, 0,251, 1, 7, 0,252, 1, 7, 0,253, 1, 7, 0,254, 1, 7, 0,255, 1, 2, 0, 0, 2, 2, 0, 30, 0, + 7, 0, 1, 2, 7, 0, 2, 2, 7, 0, 3, 2, 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, + 7, 0, 9, 2, 2, 0, 10, 2, 2, 0, 11, 2, 4, 0, 12, 2, 2, 0, 13, 2, 2, 0, 14, 2, 14, 0, 15, 2, 65, 0, 4, 0, + 22, 0, 32, 0, 0, 0, 35, 0, 66, 0, 2, 0, 38, 0,153, 0, 67, 0, 20, 0, 67, 0, 0, 0, 67, 0, 1, 0, 68, 0, 16, 2, + 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 17, 2, 2, 0, 18, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 19, 2, + 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 22, 2, 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0, 22, 0, 7, 0, 26, 2, + 7, 0, 27, 2, 69, 0, 20, 0, 22, 0, 32, 0, 34, 0, 75, 0, 68, 0, 16, 2, 14, 0, 28, 2, 14, 0, 29, 2, 14, 0, 30, 2, + 31, 0, 80, 0, 63, 0, 31, 2, 0, 0, 18, 0, 0, 0, 32, 2, 2, 0, 33, 2, 2, 0,178, 0, 2, 0, 27, 0, 7, 0, 77, 1, + 7, 0,176, 0, 7, 0, 78, 1, 7, 0, 34, 2, 7, 0, 35, 2, 7, 0, 36, 2, 67, 0, 37, 2, 30, 0, 11, 0, 7, 0, 38, 2, + 7, 0, 39, 2, 7, 0, 40, 2, 7, 0,255, 0, 2, 0, 54, 0, 0, 0, 41, 2, 0, 0, 42, 2, 0, 0, 43, 2, 0, 0, 44, 2, + 0, 0, 45, 2, 0, 0, 46, 2, 29, 0, 7, 0, 7, 0, 47, 2, 7, 0, 39, 2, 7, 0, 40, 2, 2, 0, 43, 2, 2, 0, 46, 2, + 7, 0,255, 0, 7, 0, 27, 0, 70, 0, 21, 0, 70, 0, 0, 0, 70, 0, 1, 0, 2, 0, 16, 0, 2, 0, 48, 2, 2, 0, 46, 2, + 2, 0, 18, 0, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 52, 2, 2, 0, 53, 2, 2, 0, 54, 2, 2, 0, 55, 2, + 2, 0, 56, 2, 7, 0, 57, 2, 7, 0, 58, 2, 29, 0, 48, 0, 30, 0, 49, 0, 2, 0, 59, 2, 2, 0, 60, 2, 4, 0, 61, 2, + 71, 0, 5, 0, 2, 0, 62, 2, 2, 0, 48, 2, 0, 0, 18, 0, 0, 0, 27, 0, 2, 0, 30, 0, 72, 0, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 63, 2, 7, 0, 64, 2, 73, 0, 4, 0, 14, 0, 65, 2, 74, 0, 66, 2, 4, 0, 67, 2, 0, 0, 94, 0, + 75, 0, 68, 0, 22, 0, 32, 0, 34, 0, 75, 0, 68, 0, 16, 2, 14, 0, 68, 2, 14, 0, 29, 2, 73, 0, 69, 2, 27, 0, 70, 2, + 27, 0, 71, 2, 27, 0, 72, 2, 31, 0, 80, 0, 76, 0, 73, 2, 33, 0, 74, 2, 63, 0, 31, 2, 14, 0, 75, 2, 7, 0, 77, 1, + 7, 0,176, 0, 7, 0, 78, 1, 2, 0, 16, 0, 2, 0,178, 0, 2, 0, 76, 2, 2, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, + 4, 0, 80, 2, 2, 0, 27, 0, 2, 0, 33, 2, 2, 0, 18, 0, 2, 0, 81, 2, 7, 0, 82, 2, 7, 0, 83, 2, 7, 0, 84, 2, + 2, 0, 51, 2, 2, 0, 52, 2, 2, 0, 85, 2, 2, 0, 86, 2, 4, 0, 87, 2, 11, 0, 88, 2, 2, 0, 22, 0, 2, 0, 97, 0, + 2, 0, 66, 0, 2, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0, 92, 2, 7, 0, 93, 2, 7, 0, 94, 2, 7, 0, 95, 2, + 7, 0, 96, 2, 7, 0, 97, 2, 7, 0, 98, 2, 7, 0, 99, 2, 0, 0,100, 2, 77, 0,101, 2, 78, 0,102, 2, 0, 0,103, 2, + 65, 0,104, 2, 65, 0,105, 2, 65, 0,106, 2, 65, 0,107, 2, 4, 0,108, 2, 7, 0, 84, 0, 4, 0,109, 2, 4, 0,110, 2, + 72, 0,111, 2, 4, 0,112, 2, 4, 0,113, 2, 71, 0,114, 2, 71, 0,115, 2, 79, 0, 47, 0, 22, 0, 32, 0, 34, 0, 75, 0, + 68, 0, 16, 2, 31, 0, 80, 0, 33, 0, 74, 2, 63, 0, 31, 2, 80, 0,116, 2, 81, 0,117, 2, 82, 0,118, 2, 83, 0,119, 2, + 84, 0,120, 2, 85, 0,121, 2, 86, 0,122, 2, 87, 0,123, 2, 88, 0,124, 2, 89, 0,125, 2, 90, 0,126, 2, 91, 0,127, 2, + 92, 0,128, 2, 93, 0,129, 2, 79, 0,130, 2, 94, 0,131, 2, 95, 0,132, 2, 95, 0,133, 2, 95, 0,134, 2, 95, 0,135, 2, + 95, 0,136, 2, 4, 0, 53, 0, 4, 0,137, 2, 4, 0,138, 2, 4, 0,139, 2, 4, 0,140, 2, 4, 0,141, 2, 4, 0,142, 2, + 7, 0, 77, 1, 7, 0,176, 0, 7, 0, 78, 1, 2, 0,178, 0, 2, 0, 76, 2, 2, 0,143, 2, 2, 0, 18, 0, 2, 0,144, 2, + 2, 0,145, 2, 0, 0,146, 2, 0, 0,147, 2, 2, 0, 33, 2, 96, 0,148, 2, 88, 0, 8, 0, 11, 0,149, 2, 7, 0,150, 2, + 4, 0,151, 2, 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, 2, 0,153, 2, 2, 0,154, 2, 86, 0, 7, 0, 4, 0,155, 2, + 4, 0,156, 2, 4, 0,157, 2, 4, 0,158, 2, 2, 0, 48, 2, 0, 0,159, 2, 0, 0, 18, 0, 90, 0, 5, 0, 4, 0,155, 2, + 4, 0,156, 2, 0, 0,160, 2, 0, 0,161, 2, 2, 0, 18, 0, 97, 0, 2, 0, 4, 0,162, 2, 7, 0, 40, 2, 91, 0, 3, 0, + 97, 0,163, 2, 4, 0,164, 2, 4, 0, 18, 0, 89, 0, 4, 0, 7, 0,165, 2, 2, 0,166, 2, 0, 0, 18, 0, 0, 0,161, 2, + 92, 0, 4, 0, 0, 0,240, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,187, 0, 81, 0, 5, 0, 4, 0,167, 2, 4, 0,141, 2, + 2, 0, 48, 2, 0, 0, 18, 0, 0, 0, 27, 0, 83, 0, 2, 0, 4, 0,168, 2, 4, 0,169, 2, 82, 0, 6, 0, 42, 0,149, 2, + 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, 2, 0,153, 2, 2, 0,154, 2, 84, 0, 2, 0, 7, 0,170, 2, 4, 0, 18, 0, + 85, 0, 4, 0, 0, 0,185, 0, 0, 0,186, 0, 0, 0,187, 0, 0, 0,240, 0, 93, 0, 1, 0, 7, 0,171, 2, 80, 0, 2, 0, + 4, 0, 14, 2, 4, 0, 16, 0, 87, 0, 7, 0, 7, 0,150, 2, 42, 0,149, 2, 0, 0, 18, 0, 0, 0,152, 2, 2, 0, 87, 1, + 2, 0,153, 2, 2, 0,154, 2, 98, 0, 1, 0, 7, 0,172, 2, 99, 0, 1, 0, 4, 0,173, 2,100, 0, 1, 0, 0, 0,174, 2, +101, 0, 1, 0, 7, 0,150, 2,102, 0, 1, 0, 7, 0,170, 2,103, 0, 4, 0, 4, 0,175, 2, 4, 0,176, 2, 7, 0,177, 2, + 4, 0,178, 2,104, 0, 4, 0, 7, 0,240, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0,105, 0, 1, 0,104, 0,151, 2, +106, 0, 5, 0, 4, 0,179, 2, 4, 0,180, 2, 0, 0, 18, 0, 0, 0, 48, 2, 0, 0,181, 2,107, 0, 2, 0, 4, 0,182, 2, + 4, 0,180, 2,108, 0, 10, 0,108, 0, 0, 0,108, 0, 1, 0,106, 0,183, 2,105, 0,184, 2,107, 0,185, 2, 4, 0, 53, 0, + 4, 0,138, 2, 4, 0,137, 2, 4, 0, 27, 0, 89, 0,186, 2, 96, 0, 14, 0, 14, 0,187, 2, 89, 0,186, 2, 0, 0,188, 2, + 0, 0,189, 2, 0, 0,190, 2, 0, 0,191, 2, 0, 0,192, 2, 0, 0,193, 2, 0, 0,194, 2, 0, 0, 18, 0, 95, 0,132, 2, + 95, 0,134, 2, 2, 0,195, 2, 0, 0,196, 2,109, 0, 1, 0, 4, 0,173, 2,110, 0, 9, 0,110, 0, 0, 0,110, 0, 1, 0, + 4, 0, 16, 0, 4, 0, 87, 1, 4, 0,197, 2, 4, 0, 27, 0, 0, 0, 19, 0, 41, 0,125, 0, 0, 0,198, 2,111, 0, 6, 0, +110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2,112, 0, 7, 0,110, 0,199, 2, + 2, 0,205, 2, 2, 0,187, 2, 2, 0,206, 2, 2, 0, 92, 0, 11, 0,207, 2, 11, 0,208, 2,113, 0, 5, 0,110, 0,199, 2, + 27, 0,168, 0, 0, 0, 19, 0, 7, 0,209, 2, 0, 0, 94, 0,114, 0, 5, 0,110, 0,199, 2, 27, 0,168, 0, 0, 0, 19, 0, + 2, 0,210, 2, 0, 0,211, 2,115, 0, 5, 0,110, 0,199, 2, 7, 0, 90, 0, 7, 0,212, 2, 4, 0,213, 2, 4, 0,214, 2, +116, 0, 5, 0,110, 0,199, 2, 27, 0,215, 2, 0, 0, 72, 0, 4, 0, 87, 1, 4, 0, 18, 0,117, 0, 13, 0,110, 0,199, 2, + 27, 0,216, 2, 27, 0,217, 2, 27, 0,218, 2, 27, 0,219, 2, 7, 0,220, 2, 7, 0,221, 2, 7, 0,212, 2, 7, 0,222, 2, + 4, 0,223, 2, 4, 0,224, 2, 4, 0, 92, 0, 4, 0,225, 2,118, 0, 5, 0,110, 0,199, 2, 2, 0,226, 2, 2, 0, 18, 0, + 7, 0,227, 2, 27, 0,228, 2,119, 0, 3, 0,110, 0,199, 2, 7, 0,229, 2, 4, 0, 92, 0,120, 0, 10, 0,110, 0,199, 2, + 7, 0,230, 2, 4, 0,231, 2, 4, 0, 27, 0, 2, 0, 92, 0, 2, 0,232, 2, 2, 0,233, 2, 2, 0,234, 2, 7, 0,235, 2, + 0, 0,236, 2,121, 0, 3, 0,110, 0,199, 2, 7, 0, 27, 0, 4, 0, 16, 0,122, 0, 6, 0,110, 0,199, 2,123, 0,237, 2, +124, 0,238, 2,125, 0,239, 2, 7, 0,240, 2, 4, 0, 16, 0,126, 0, 11, 0,110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, + 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2, 7, 0,209, 2, 4, 0,241, 2, 0, 0,236, 2, 7, 0,242, 2, 4, 0, 27, 0, +127, 0, 12, 0,110, 0,199, 2, 27, 0,243, 2, 42, 0,244, 2, 4, 0, 92, 0, 4, 0,245, 2, 7, 0,246, 2, 7, 0,247, 2, + 7, 0,248, 2, 7, 0,249, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0, 27, 0,128, 0, 3, 0,110, 0,199, 2, 7, 0,250, 2, + 4, 0,251, 2,129, 0, 5, 0,110, 0,199, 2, 7, 0,252, 2, 0, 0,236, 2, 2, 0, 18, 0, 2, 0,253, 2,130, 0, 8, 0, +110, 0,199, 2, 27, 0,168, 0, 7, 0,252, 2, 7, 0,255, 0, 7, 0,108, 0, 0, 0,236, 2, 2, 0, 18, 0, 2, 0, 16, 0, +131, 0, 21, 0,110, 0,199, 2, 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2, 27, 0,254, 2, + 0, 0,236, 2, 2, 0, 18, 0, 2, 0, 27, 0, 7, 0,255, 2, 7, 0, 0, 3, 7, 0, 1, 3, 7, 0, 82, 2, 7, 0, 2, 3, + 7, 0, 3, 3, 7, 0, 4, 3, 7, 0, 5, 3, 7, 0, 6, 3, 7, 0, 7, 3, 7, 0, 67, 0,132, 0, 7, 0,110, 0,199, 2, + 2, 0, 8, 3, 2, 0, 9, 3, 4, 0, 30, 0, 27, 0,168, 0, 7, 0, 10, 3, 0, 0,236, 2,133, 0, 10, 0,110, 0,199, 2, + 27, 0,168, 0, 0, 0, 11, 3, 7, 0, 12, 3, 7, 0, 13, 3, 7, 0, 5, 3, 4, 0, 14, 3, 4, 0, 15, 3, 7, 0, 16, 3, + 0, 0, 19, 0,134, 0, 1, 0,110, 0,199, 2,135, 0, 7, 0,110, 0,199, 2, 41, 0,125, 0,136, 0, 17, 3,137, 0, 18, 3, +138, 0, 19, 3,139, 0, 20, 3, 14, 0, 21, 3,140, 0, 13, 0,110, 0,199, 2, 89, 0, 22, 3, 89, 0, 23, 3, 89, 0, 24, 3, + 89, 0, 25, 3, 89, 0, 26, 3, 89, 0, 27, 3, 86, 0, 28, 3, 4, 0, 29, 3, 4, 0, 30, 3, 7, 0, 31, 3, 7, 0, 32, 3, +141, 0, 33, 3,142, 0, 7, 0,110, 0,199, 2, 89, 0, 22, 3, 89, 0, 34, 3,143, 0, 35, 3,144, 0, 33, 3, 4, 0, 36, 3, + 4, 0, 29, 3,145, 0, 4, 0,110, 0,199, 2, 27, 0,168, 0, 4, 0, 37, 3, 4, 0, 27, 0,146, 0, 2, 0, 4, 0, 38, 3, + 7, 0, 40, 2,147, 0, 2, 0, 4, 0,128, 0, 4, 0, 39, 3,148, 0, 24, 0,110, 0,199, 2, 27, 0,168, 0, 0, 0,236, 2, + 2, 0, 40, 3, 2, 0, 18, 0, 2, 0, 87, 1, 2, 0, 27, 0,146, 0, 41, 3, 4, 0, 42, 3, 7, 0, 43, 3, 4, 0, 53, 0, + 4, 0, 44, 3,147, 0, 45, 3,146, 0, 46, 3, 4, 0, 47, 3, 4, 0, 48, 3, 4, 0, 49, 3, 4, 0, 39, 3, 7, 0, 50, 3, + 7, 0, 51, 3, 7, 0, 52, 3, 7, 0, 53, 3, 7, 0, 54, 3, 11, 0, 55, 3,149, 0, 8, 0,110, 0,199, 2,150, 0, 56, 3, +143, 0, 35, 3, 4, 0, 57, 3, 4, 0, 58, 3, 4, 0, 59, 3, 2, 0, 18, 0, 2, 0, 56, 0,151, 0, 8, 0,110, 0,199, 2, + 27, 0, 44, 0, 2, 0, 3, 1, 2, 0, 18, 0, 2, 0,226, 2, 2, 0, 56, 0, 7, 0, 60, 3, 7, 0, 61, 3,152, 0, 6, 0, +110, 0,199, 2, 4, 0, 62, 3, 2, 0, 18, 0, 2, 0, 63, 3, 7, 0, 64, 3, 0, 0,170, 0,153, 0, 8, 0,110, 0,199, 2, + 0, 0, 65, 3, 0, 0, 66, 3, 0, 0,193, 2, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 92, 0, 0, 0,181, 2,154, 0, 3, 0, +110, 0,199, 2,155, 0, 69, 3,139, 0, 20, 3,156, 0, 10, 0,110, 0,199, 2, 27, 0, 70, 3, 27, 0, 71, 3, 0, 0, 72, 3, + 7, 0, 73, 3, 2, 0, 74, 3, 2, 0, 75, 3, 0, 0, 76, 3, 0, 0, 77, 3, 0, 0,211, 2,157, 0, 9, 0,110, 0,199, 2, + 27, 0, 78, 3, 0, 0, 72, 3, 7, 0, 79, 3, 7, 0, 80, 3, 0, 0, 87, 1, 0, 0,226, 2, 0, 0, 81, 3, 0, 0, 27, 0, +158, 0, 1, 0,110, 0,199, 2,159, 0, 11, 0,110, 0,199, 2, 0, 0,236, 2, 7, 0,128, 0, 7, 0, 82, 3, 7, 0, 83, 3, + 7, 0, 84, 3, 7, 0, 85, 3, 7, 0, 86, 3, 4, 0, 18, 0, 2, 0, 87, 3, 2, 0, 88, 3,160, 0, 9, 0,110, 0,199, 2, + 27, 0, 89, 3, 4, 0, 90, 3, 4, 0, 91, 3, 4, 0, 92, 3, 7, 0, 93, 3, 7, 0, 94, 3, 2, 0,226, 2, 2, 0, 18, 0, +161, 0, 29, 0,110, 0,199, 2,162, 0, 95, 3,163, 0, 96, 3, 4, 0, 97, 3, 4, 0, 98, 3, 7, 0, 99, 3, 7, 0, 4, 3, + 7, 0,100, 3, 7, 0,250, 0, 7, 0,101, 3, 7, 0,102, 3, 7, 0,103, 3, 7, 0,104, 3, 7, 0,105, 3, 7, 0,240, 2, + 4, 0,106, 3, 4, 0,107, 3, 0, 0,108, 3, 0, 0,109, 3, 0, 0,110, 3, 0, 0,111, 3, 0, 0, 18, 0, 0, 0,112, 3, + 2, 0,113, 3, 2, 0,114, 3, 4, 0,214, 2, 7, 0,108, 0, 7, 0,115, 3, 4, 0, 27, 0,164, 0, 15, 0,110, 0,199, 2, + 47, 0,200, 2, 27, 0,201, 2, 0, 0,202, 2, 4, 0,203, 2, 4, 0,204, 2, 27, 0,116, 3, 27, 0,117, 3, 54, 0,100, 1, + 0, 0,236, 2, 7, 0,209, 2, 7, 0,118, 3, 0, 0, 18, 0, 0, 0,253, 0, 0, 0,211, 2,165, 0, 16, 0,110, 0,199, 2, + 0, 0,236, 2, 2, 0,119, 3, 2, 0,253, 0, 7, 0,120, 3, 54, 0,121, 3, 7, 0,122, 3, 7, 0,123, 3, 7, 0,124, 3, + 0, 0,125, 3, 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, 4, 0,129, 3, 0, 0,130, 3, 4, 0,131, 3,166, 0, 16, 0, +110, 0,199, 2, 0, 0,132, 3, 0, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 0, 0,136, 3, 0, 0,137, 3, 0, 0,138, 3, + 7, 0,124, 3, 0, 0,125, 3, 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, 4, 0,129, 3, 0, 0,130, 3, 4, 0,131, 3, +167, 0, 16, 0,110, 0,199, 2, 0, 0,236, 2, 4, 0,139, 3, 4, 0,140, 3, 27, 0,141, 3, 7, 0,124, 3, 0, 0,125, 3, + 4, 0,126, 3, 47, 0,127, 3, 27, 0,128, 3, 4, 0,129, 3, 0, 0,130, 3, 7, 0,142, 3, 7, 0,143, 3, 2, 0,253, 0, + 2, 0,144, 3,168, 0, 5, 0,110, 0,199, 2,169, 0,145, 3,170, 0,146, 3, 4, 0, 16, 0, 4, 0, 27, 0,171, 0, 8, 0, +110, 0,199, 2, 7, 0,147, 3, 7, 0,148, 3, 7, 0,149, 3, 0, 0,250, 0, 0, 0, 18, 0, 0, 0, 87, 1, 0, 0, 27, 0, +172, 0, 3, 0,173, 0,150, 3, 4, 0, 67, 2, 0, 0, 94, 0,173, 0, 29, 0, 22, 0, 32, 0, 34, 0, 75, 0, 2, 0, 49, 2, + 2, 0, 50, 2, 2, 0,151, 3, 2, 0, 18, 0, 2, 0,152, 3, 2, 0,153, 3, 2, 0,154, 3, 2, 0, 30, 0, 0, 0,155, 3, + 0, 0,156, 3, 0, 0,157, 3, 0, 0,247, 1, 4, 0, 27, 0, 7, 0,158, 3, 7, 0,159, 3, 7, 0,160, 3, 7, 0,161, 3, + 7, 0,162, 3, 7, 0,163, 3, 29, 0,164, 3, 31, 0, 80, 0, 33, 0, 74, 2, 91, 0,127, 2, 0, 0, 72, 0, 7, 0,165, 3, + 7, 0,166, 3,172, 0,167, 3,174, 0, 5, 0,174, 0, 0, 0,174, 0, 1, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0,124, 0, + 68, 0, 3, 0, 7, 0,168, 3, 4, 0, 18, 0, 4, 0, 27, 0, 27, 0,128, 0, 22, 0, 32, 0, 34, 0, 75, 0,175, 0,169, 3, + 2, 0, 16, 0, 2, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0,173, 3, 0, 0,174, 3, 27, 0, 38, 0, 27, 0,175, 3, + 27, 0,176, 3, 27, 0,177, 3, 27, 0,178, 3, 31, 0, 80, 0, 68, 0, 16, 2,176, 0,179, 3,176, 0,180, 3,177, 0,181, 3, + 11, 0, 2, 0,178, 0,182, 3,179, 0,183, 3,180, 0,184, 3, 14, 0,185, 3, 14, 0,186, 3, 14, 0, 29, 2, 14, 0,187, 3, + 14, 0,188, 3, 4, 0, 87, 1, 4, 0,189, 3, 63, 0, 31, 2, 0, 0,190, 3, 4, 0, 33, 2, 4, 0,191, 3, 7, 0, 77, 1, + 7, 0,192, 3, 7, 0,193, 3, 7, 0,176, 0, 7, 0,194, 3, 7, 0,195, 3, 7, 0, 78, 1, 7, 0,196, 3, 7, 0, 19, 2, + 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0, 12, 3, 7, 0,203, 3, + 7, 0,244, 0, 7, 0,204, 3, 4, 0,205, 3, 4, 0,206, 3, 2, 0, 18, 0, 2, 0,207, 3, 2, 0,208, 3, 2, 0,209, 3, + 2, 0,210, 3, 2, 0,211, 3, 2, 0,212, 3, 2, 0,213, 3, 2, 0,214, 3, 0, 0,215, 3, 0, 0,216, 3, 4, 0,217, 3, + 4, 0,218, 3, 4, 0,219, 3, 4, 0,220, 3, 7, 0,221, 3, 7, 0, 84, 0, 7, 0,222, 3, 7, 0,223, 3, 7, 0,224, 3, + 7, 0,225, 3, 7, 0,226, 3, 7, 0,220, 0, 7, 0,227, 3, 7, 0,228, 3, 7, 0,229, 3, 7, 0,230, 3, 7, 0,231, 3, + 2, 0,232, 3, 0, 0,233, 3, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 0, 0,110, 0, 0, 0,237, 3, 7, 0,238, 3, + 7, 0,239, 3, 14, 0,240, 3, 14, 0,241, 3, 14, 0,242, 3, 14, 0,243, 3, 7, 0,244, 3, 2, 0, 14, 2, 2, 0,245, 3, + 7, 0,151, 2, 4, 0,246, 3, 4, 0,247, 3,181, 0,248, 3, 2, 0,249, 3, 2, 0,251, 0, 7, 0,250, 3, 14, 0,251, 3, + 14, 0,252, 3, 14, 0,253, 3, 14, 0,254, 3,182, 0, 73, 1,183, 0,255, 3, 64, 0, 0, 4, 0, 0, 1, 4, 0, 0, 2, 4, + 2, 0, 67, 2, 7, 0,143, 2,155, 0, 3, 4,143, 0, 4, 4,143, 0, 5, 4, 10, 0, 6, 4, 10, 0, 7, 4, 4, 0, 8, 4, + 4, 0, 9, 4, 14, 0, 10, 4, 14, 0, 11, 4, 14, 0, 12, 4, 7, 0, 13, 4,184, 0, 14, 0,184, 0, 0, 0,184, 0, 1, 0, + 27, 0, 38, 0, 7, 0, 12, 3, 7, 0, 79, 1, 7, 0, 13, 3, 7, 0, 5, 3, 0, 0, 19, 0, 4, 0, 14, 3, 4, 0, 15, 3, + 4, 0, 14, 4, 2, 0, 16, 0, 2, 0, 15, 4, 7, 0, 16, 3,185, 0, 12, 0,185, 0, 0, 0,185, 0, 1, 0, 27, 0, 44, 0, + 4, 0, 16, 4, 4, 0, 14, 2, 7, 0, 79, 1, 7, 0, 17, 4, 7, 0, 18, 4, 7, 0,170, 2, 2, 0, 16, 0, 0, 0, 19, 4, + 0, 0, 20, 4,182, 0, 40, 0, 4, 0, 18, 0, 2, 0, 21, 4, 2, 0, 22, 4, 2, 0, 5, 3, 2, 0, 23, 4, 2, 0, 24, 4, + 2, 0, 25, 4, 2, 0, 26, 4, 2, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, + 7, 0, 33, 4, 7, 0, 34, 4, 7, 0, 35, 4, 7, 0, 36, 4, 7, 0, 37, 4, 7, 0, 38, 4, 7, 0, 39, 4, 7, 0, 40, 4, + 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 7, 0, 44, 4, 7, 0, 45, 4, 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, + 7, 0, 49, 4, 7, 0, 50, 4, 7, 0, 51, 4, 7, 0, 52, 4, 7, 0, 53, 4, 7, 0, 54, 4, 47, 0,169, 0,186, 0, 55, 4, + 7, 0, 56, 4, 4, 0,214, 2,187, 0, 5, 0, 64, 0,250, 1, 7, 0, 57, 4, 7, 0, 58, 4, 2, 0, 18, 0, 2, 0, 59, 4, +188, 0, 5, 0,188, 0, 0, 0,188, 0, 1, 0, 4, 0, 16, 0, 4, 0, 60, 4, 11, 0, 2, 0,189, 0, 9, 0,189, 0, 0, 0, +189, 0, 1, 0, 4, 0, 61, 4, 4, 0, 62, 4, 4, 0, 63, 4, 4, 0, 18, 0, 11, 0, 64, 4, 11, 0, 65, 4, 14, 0, 66, 4, +139, 0, 23, 0,139, 0, 0, 0,139, 0, 1, 0, 4, 0, 18, 0, 4, 0, 67, 4, 4, 0, 68, 4, 4, 0, 69, 4, 4, 0, 70, 4, + 4, 0, 71, 4, 4, 0, 72, 4, 4, 0, 73, 4, 4, 0, 27, 0, 4, 0, 62, 4, 4, 0, 14, 2, 2, 0, 74, 4, 2, 0, 56, 0, + 0, 0, 19, 0, 0, 0, 75, 4, 0, 0, 76, 4, 0, 0, 77, 4, 0, 0, 78, 4, 14, 0, 79, 4,190, 0, 80, 4, 11, 0, 81, 4, +191, 0, 1, 0, 7, 0, 47, 2,181, 0, 30, 0, 4, 0, 18, 0, 7, 0, 82, 4, 7, 0, 83, 4, 7, 0, 84, 4, 4, 0, 85, 4, + 4, 0, 86, 4, 4, 0, 87, 4, 4, 0, 88, 4, 7, 0, 89, 4, 7, 0, 90, 4, 7, 0, 91, 4, 7, 0, 92, 4, 7, 0, 93, 4, + 7, 0, 94, 4, 7, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, + 7, 0,102, 4, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 4, 0,107, 4, 4, 0,108, 4, 7, 0,109, 4, + 7, 0,227, 3,183, 0, 54, 0, 4, 0, 62, 4, 4, 0,110, 4,192, 0,111, 4,193, 0,112, 4, 0, 0, 27, 0, 0, 0,113, 4, + 2, 0,114, 4, 7, 0,115, 4, 0, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, + 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, 7, 0,125, 4, 2, 0,126, 4, 0, 0,127, 4, 2, 0,128, 4, 7, 0,129, 4, + 7, 0,130, 4, 0, 0,131, 4, 4, 0,129, 0, 4, 0,132, 4, 4, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4,191, 0,136, 4, + 4, 0,137, 4, 4, 0, 82, 0, 7, 0,138, 4, 7, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 2, 0,142, 4, 2, 0,143, 4, + 2, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, 2, 0,147, 4, 2, 0,148, 4, 2, 0,149, 4,194, 0,150, 4, 7, 0,151, 4, + 7, 0,152, 4,139, 0,153, 4, 14, 0, 21, 3,187, 0,154, 4, 7, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 4, 0,158, 4, +195, 0, 1, 0, 7, 0,159, 4,155, 0, 52, 0,154, 0,160, 4, 2, 0, 16, 0, 2, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, + 7, 0,164, 4, 2, 0,165, 4, 2, 0,166, 4, 7, 0,167, 4, 2, 0,168, 4, 2, 0,169, 4, 7, 0,170, 4, 7, 0,171, 4, + 7, 0,172, 4, 4, 0,173, 4, 4, 0,174, 4, 4, 0,175, 4, 4, 0, 27, 0, 7, 0,176, 4, 4, 0,177, 4, 7, 0,178, 4, + 7, 0,179, 4, 7, 0,180, 4, 79, 0,181, 4, 79, 0,182, 4, 0, 0,183, 4, 7, 0,184, 4, 7, 0,185, 4, 31, 0, 80, 0, + 2, 0,186, 4, 0, 0,187, 4, 0, 0,188, 4, 7, 0,189, 4, 4, 0,190, 4, 7, 0,191, 4, 7, 0,192, 4, 4, 0,193, 4, + 4, 0, 18, 0, 7, 0,194, 4, 7, 0,195, 4, 7, 0,196, 4,195, 0,197, 4, 4, 0, 53, 0, 7, 0,198, 4, 7, 0,199, 4, + 7, 0,200, 4, 7, 0,201, 4, 7, 0,202, 4, 7, 0,203, 4, 7, 0,204, 4, 4, 0,205, 4, 7, 0,206, 4,196, 0, 78, 0, + 22, 0, 32, 0, 34, 0, 75, 0, 2, 0,179, 0, 2, 0, 88, 1, 2, 0,122, 1, 2, 0,207, 4, 7, 0,208, 4, 7, 0,209, 4, + 7, 0,210, 4, 7, 0,211, 4, 7, 0,212, 4, 7, 0,213, 4, 7, 0,170, 1, 7, 0,172, 1, 7, 0,171, 1, 7, 0, 30, 0, + 4, 0,214, 4, 7, 0,215, 4, 7, 0,216, 4, 7, 0,217, 4, 7, 0,218, 4, 7, 0,219, 4, 7, 0,220, 4, 7, 0,221, 4, + 2, 0,222, 4, 2, 0, 87, 1, 2, 0,223, 4, 2, 0,224, 4, 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, + 7, 0,229, 4, 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, 7, 0,233, 4, 7, 0,234, 4, 7, 0,235, 4, 7, 0,236, 4, + 7, 0,237, 4, 7, 0,238, 4, 7, 0,239, 4, 7, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,243, 4, 2, 0,244, 4, + 7, 0,245, 4, 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, + 7, 0,253, 4, 7, 0,254, 4, 7, 0,255, 4, 7, 0, 0, 5, 7, 0, 1, 5, 7, 0, 2, 5, 7, 0, 3, 5, 2, 0, 4, 5, + 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 18, 0, 7, 0, 9, 5, 7, 0, 10, 5, 31, 0, 80, 0, + 46, 0,140, 1, 2, 0,141, 1, 2, 0, 76, 1, 2, 0,181, 2, 25, 0,154, 0, 57, 0, 70, 1,197, 0, 8, 0,197, 0, 0, 0, +197, 0, 1, 0, 4, 0,205, 3, 4, 0, 11, 5, 4, 0, 18, 0, 2, 0, 12, 5, 2, 0, 13, 5, 27, 0,168, 0,198, 0, 13, 0, + 11, 0, 14, 5, 11, 0, 15, 5, 4, 0, 16, 5, 4, 0, 17, 5, 4, 0, 18, 5, 4, 0, 19, 5, 4, 0, 20, 5, 4, 0, 21, 5, + 4, 0, 22, 5, 4, 0, 23, 5, 4, 0, 24, 5, 4, 0, 27, 0, 0, 0, 25, 5,199, 0, 5, 0, 11, 0, 26, 5, 11, 0, 27, 5, + 4, 0, 28, 5, 4, 0, 30, 0, 0, 0, 29, 5,200, 0, 17, 0, 4, 0, 30, 5, 4, 0, 31, 5, 4, 0, 32, 5, 4, 0, 33, 5, + 4, 0, 34, 5, 4, 0, 35, 5, 4, 0, 36, 5, 4, 0, 37, 5, 4, 0, 38, 5, 4, 0, 39, 5, 4, 0, 40, 5, 4, 0, 41, 5, + 2, 0, 42, 5, 2, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 4, 0, 67, 0,201, 0, 17, 0, 4, 0, 16, 0, 4, 0, 32, 5, + 4, 0, 46, 5, 4, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, 4, 0, 50, 5, 4, 0, 51, 5, 7, 0, 52, 5, 4, 0, 53, 5, + 4, 0, 92, 0, 4, 0, 54, 5, 4, 0, 55, 5, 4, 0, 56, 5, 4, 0, 57, 5, 4, 0, 58, 5, 21, 0, 31, 0,202, 0, 9, 0, + 4, 0, 59, 5, 7, 0, 60, 5, 7, 0, 61, 5, 7, 0, 62, 5, 4, 0, 63, 5, 2, 0, 18, 0, 2, 0, 27, 0, 7, 0, 84, 4, + 7, 0, 30, 0,203, 0, 11, 0,203, 0, 0, 0,203, 0, 1, 0, 0, 0, 19, 0, 63, 0, 64, 5, 64, 0, 65, 5, 4, 0,205, 3, + 4, 0, 66, 5, 4, 0, 67, 5, 4, 0, 27, 0, 4, 0, 68, 5, 4, 0, 69, 5,204, 0, 13, 0, 0, 0, 70, 5, 0, 0,250, 0, + 0, 0, 71, 5, 0, 0, 18, 0, 0, 0, 72, 5, 0, 0, 73, 5, 0, 0, 74, 5, 0, 0, 75, 5, 2, 0, 76, 5, 2, 0, 77, 5, + 7, 0, 78, 5, 0, 0, 79, 5, 0, 0,124, 0,205, 0,106, 0,204, 0, 80, 5,198, 0, 81, 5,199, 0, 82, 5,200, 0, 83, 5, +201, 0, 84, 5, 4, 0, 36, 3, 4, 0,129, 0, 4, 0,132, 4, 7, 0, 85, 5, 4, 0, 86, 5, 4, 0, 87, 5, 4, 0, 88, 5, + 4, 0, 89, 5, 2, 0, 18, 0, 2, 0, 90, 5, 7, 0, 91, 5, 7, 0, 92, 5, 7, 0, 93, 5, 7, 0, 94, 5, 7, 0, 95, 5, + 2, 0, 96, 5, 2, 0, 97, 5, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,250, 0, 2, 0,100, 5, 4, 0,101, 5, 2, 0,102, 5, + 2, 0,103, 5, 2, 0,109, 1, 2, 0,108, 0, 2, 0,104, 5, 2, 0,105, 5, 2, 0,106, 5, 2, 0,107, 5, 2, 0,108, 5, + 2, 0, 71, 5, 2, 0, 70, 5, 2, 0,109, 5, 2, 0, 72, 5, 2, 0,110, 5, 4, 0,111, 5, 4, 0, 87, 1, 4, 0,112, 5, + 2, 0,113, 5, 2, 0, 67, 0, 2, 0,114, 5, 2, 0,115, 5, 2, 0,116, 5, 2, 0,117, 5, 2, 0,118, 5, 2, 0,119, 5, + 19, 0,120, 5, 19, 0,121, 5, 18, 0,122, 5, 14, 0,123, 5, 2, 0,124, 5, 2, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, + 7, 0,128, 5, 7, 0,129, 5, 4, 0,130, 5, 7, 0,131, 5, 7, 0,132, 5, 7, 0,133, 5, 7, 0,134, 5, 2, 0,135, 5, + 2, 0,136, 5, 2, 0,137, 5, 2, 0,138, 5, 2, 0,139, 5, 2, 0,140, 5, 7, 0,141, 5, 7, 0,142, 5, 7, 0,143, 5, + 0, 0,144, 5, 4, 0,145, 5, 2, 0,146, 5, 2, 0,247, 1, 0, 0,147, 5, 7, 0,148, 5, 7, 0,149, 5, 0, 0,150, 5, + 0, 0,151, 5, 0, 0,152, 5, 0, 0,153, 5, 4, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 7, 0,157, 5, 7, 0,158, 5, + 2, 0,159, 5, 2, 0,160, 5, 7, 0,161, 5, 2, 0,162, 5, 2, 0,163, 5, 4, 0,164, 5, 2, 0,165, 5, 2, 0,166, 5, + 2, 0,167, 5, 2, 0,168, 5, 7, 0,169, 5, 7, 0, 30, 0, 37, 0,170, 5, 0, 0,171, 5,206, 0, 9, 0,206, 0, 0, 0, +206, 0, 1, 0, 0, 0,172, 5, 2, 0,173, 5, 2, 0,174, 5, 2, 0,175, 5, 2, 0, 67, 0, 7, 0,176, 5, 7, 0, 30, 0, +207, 0, 7, 0, 2, 0,231, 2, 2, 0, 87, 1, 2, 0, 94, 3, 2, 0,177, 5, 7, 0,178, 5, 7, 0, 30, 0, 37, 0,179, 5, +208, 0, 5, 0, 7, 0,180, 5, 0, 0, 16, 0, 0, 0, 67, 0, 0, 0, 30, 0, 0, 0,247, 1,209, 0, 15, 0, 7, 0,181, 5, + 7, 0,182, 5, 7, 0,183, 5, 7, 0,184, 5, 7, 0,185, 5, 7, 0,186, 5, 7, 0,187, 5, 7, 0,188, 5, 7, 0,189, 5, + 7, 0,190, 5, 4, 0,191, 5, 7, 0,192, 5, 7, 0,193, 5, 2, 0, 67, 0, 2, 0, 30, 0,210, 0, 32, 0,208, 0,194, 5, + 2, 0,195, 5, 2, 0, 97, 5, 2, 0, 98, 5, 2, 0, 99, 5, 2, 0,250, 0, 2, 0,100, 5, 2, 0,196, 5, 2, 0,197, 5, + 2, 0,198, 5, 2, 0,199, 5,207, 0,200, 5, 2, 0,201, 5, 2, 0,102, 5, 7, 0,202, 5,209, 0,203, 5, 7, 0,220, 4, + 7, 0,221, 4, 4, 0, 18, 0, 2, 0, 87, 1, 2, 0,204, 5, 2, 0,223, 4, 2, 0,224, 4, 2, 0,205, 5, 2, 0, 27, 0, + 2, 0,225, 4, 2, 0,226, 4, 2, 0,227, 4, 2, 0,228, 4, 2, 0,206, 5, 2, 0, 67, 0, 7, 0,207, 5,211, 0, 6, 0, +211, 0, 0, 0,211, 0, 1, 0, 4, 0, 61, 4, 0, 0, 19, 0, 4, 0, 18, 0, 27, 0,208, 5,212, 0, 4, 0,213, 0,146, 3, + 11, 0,209, 5, 0, 0,210, 5, 4, 0, 92, 0,214, 0, 8, 0,212, 0,211, 5, 2, 0, 18, 0, 2, 0, 27, 0, 2, 0,212, 5, + 2, 0,213, 5, 2, 0,214, 5, 4, 0, 67, 0, 11, 0,215, 5,215, 0, 6, 0, 2, 0,108, 0, 2, 0, 67, 4, 2, 0,216, 5, + 2, 0,225, 2, 4, 0, 18, 0, 7, 0,209, 2,216, 0, 14, 0, 2, 0, 18, 0, 2, 0,217, 5, 2, 0,218, 5, 2, 0,219, 5, +215, 0,220, 5, 11, 0,215, 5, 7, 0,221, 5, 7, 0, 56, 0, 4, 0,222, 5, 4, 0,223, 5, 4, 0,224, 5, 4, 0,225, 5, + 41, 0,125, 0, 27, 0,168, 0,217, 0, 14, 0,212, 0,211, 5, 4, 0, 92, 0, 4, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, + 7, 0,229, 5, 4, 0,230, 5, 4, 0,231, 5, 7, 0,232, 5, 7, 0,233, 5, 4, 0,234, 5, 7, 0,235, 5, 7, 0,236, 5, + 4, 0, 27, 0,218, 0, 1, 0,212, 0,211, 5,219, 0, 7, 0,212, 0,211, 5, 2, 0, 18, 0, 2, 0, 27, 0, 4, 0, 37, 0, + 4, 0,237, 5, 91, 0,238, 5, 11, 0,215, 5,220, 0, 5, 0,220, 0, 0, 0,220, 0, 1, 0, 0, 0, 19, 0, 7, 0,239, 5, + 4, 0, 27, 0,221, 0, 4, 0, 4, 0,108, 0, 7, 0,240, 5, 7, 0,178, 1, 4, 0, 18, 0,222, 0, 85, 0,219, 0,241, 5, +219, 0,242, 5,217, 0,169, 3,218, 0,243, 5, 7, 0,244, 5, 2, 0,245, 5, 2, 0,247, 1, 7, 0,246, 5, 7, 0,247, 5, + 2, 0, 67, 4, 2, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 2, 0,252, 5, 2, 0,222, 5, 2, 0,253, 5, + 2, 0,254, 5, 2, 0,255, 5, 2, 0, 0, 6, 7, 0, 1, 6, 7, 0, 2, 6, 7, 0, 3, 6, 2, 0, 4, 6, 2, 0, 5, 6, + 2, 0, 6, 6, 2, 0, 7, 6, 2, 0, 8, 6, 2, 0, 9, 6, 2, 0, 10, 6, 2, 0, 11, 6,214, 0, 12, 6,216, 0, 13, 6, + 7, 0, 14, 6, 7, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 2, 0, 18, 6, 0, 0, 19, 6, 0, 0, 20, 6, 2, 0, 21, 6, + 7, 0, 22, 6, 7, 0, 23, 6, 7, 0, 24, 6, 7, 0, 25, 6, 7, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6, + 7, 0, 30, 6, 7, 0, 31, 6, 2, 0, 32, 6, 0, 0, 33, 6, 0, 0, 34, 6, 0, 0, 35, 6, 0, 0, 36, 6, 27, 0, 37, 6, + 0, 0, 38, 6, 0, 0, 39, 6, 0, 0, 40, 6, 0, 0, 41, 6, 0, 0, 42, 6, 0, 0, 43, 6, 0, 0, 44, 6, 0, 0, 45, 6, + 0, 0, 46, 6, 0, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, 0, 0, 52, 6, 0, 0, 53, 6, + 0, 0, 54, 6, 0, 0, 55, 6, 4, 0, 56, 6, 4, 0, 57, 6, 4, 0, 58, 6, 4, 0, 59, 6, 2, 0, 60, 6, 2, 0, 67, 0, + 4, 0, 61, 6, 7, 0, 62, 6, 7, 0, 63, 6,221, 0, 64, 6,223, 0, 8, 0, 4, 0, 65, 6, 4, 0, 66, 6, 4, 0, 67, 6, + 4, 0, 68, 6, 4, 0, 69, 6, 4, 0, 70, 6, 4, 0, 53, 0, 4, 0,138, 2,224, 0, 4, 0, 7, 0, 71, 6, 0, 0, 72, 6, + 0, 0, 73, 6, 2, 0, 18, 0,225, 0, 4, 0, 7, 0, 74, 6, 4, 0, 18, 0, 4, 0, 75, 6, 4, 0, 56, 0, 41, 0, 46, 0, + 22, 0, 32, 0, 34, 0, 75, 0, 27, 0,208, 5,196, 0, 76, 6, 41, 0, 77, 6, 14, 0, 78, 6,197, 0, 79, 6, 27, 0, 80, 6, + 7, 0, 81, 6, 7, 0, 82, 6, 7, 0, 83, 6, 7, 0, 84, 6, 4, 0,205, 3, 4, 0, 85, 6, 4, 0, 86, 6, 2, 0, 18, 0, + 2, 0, 76, 1, 57, 0, 70, 1,226, 0, 87, 6,222, 0, 88, 6,227, 0, 89, 6,205, 0,185, 0,202, 0, 90, 6, 14, 0,102, 0, + 14, 0, 91, 6, 11, 0, 92, 6, 11, 0, 93, 6, 11, 0, 94, 6, 11, 0, 95, 6, 11, 0, 96, 6,228, 0, 97, 6, 2, 0, 98, 6, + 2, 0, 99, 6, 2, 0,251, 0, 2, 0,206, 3, 4, 0,216, 3, 4, 0,100, 6, 14, 0,101, 6,208, 0,194, 5,210, 0,102, 6, +224, 0,103, 6,178, 0,182, 3,225, 0,104, 6,229, 0,105, 6, 10, 0, 7, 4, 10, 0,106, 6,230, 0, 14, 0,230, 0, 0, 0, +230, 0, 1, 0, 42, 0,242, 0, 40, 0, 69, 1,229, 0,105, 6,231, 0,107, 6, 7, 0, 97, 2, 7, 0, 98, 2, 7, 0,108, 0, + 7, 0,108, 6, 2, 0,109, 6, 2, 0, 18, 0, 2, 0,143, 0, 2, 0, 27, 0,232, 0, 39, 0, 7, 0,110, 6, 7, 0,111, 6, + 7, 0,112, 6, 7, 0,113, 6, 7, 0,114, 6, 7, 0,115, 6, 7, 0,116, 6, 7, 0,117, 6, 7, 0,118, 6, 68, 0,119, 6, +178, 0,182, 3,232, 0,120, 6,233, 0,121, 6,234, 0,122, 6,235, 0,123, 6,236, 0,124, 6,237, 0,125, 6, 7, 0,126, 6, + 7, 0,127, 6, 7, 0, 94, 1, 7, 0,128, 6, 7, 0,129, 6, 7, 0,130, 6, 7, 0,131, 6, 7, 0,175, 0, 7, 0,132, 6, + 0, 0,133, 6, 0, 0,134, 6, 0, 0,109, 6, 0, 0,135, 6, 2, 0,136, 6, 2, 0,137, 6, 7, 0,138, 6, 2, 0,139, 6, + 2, 0,140, 6, 7, 0,141, 6, 7, 0,142, 6, 7, 0,143, 6, 7, 0,144, 6,238, 0, 51, 0,239, 0, 0, 0,239, 0, 1, 0, + 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6, 7, 0,127, 6, 7, 0, 94, 1, 7, 0,149, 6, 2, 0,150, 6, + 0, 0,211, 2, 4, 0,151, 6, 2, 0,134, 6, 2, 0,109, 6, 27, 0,208, 5, 27, 0,152, 6, 14, 0,153, 6,230, 0,154, 6, +238, 0,120, 6, 0, 0,155, 6, 4, 0,205, 3, 4, 0, 85, 6, 2, 0,156, 6, 2, 0,157, 6, 2, 0,158, 6, 2, 0,159, 6, + 2, 0, 18, 0, 2, 0, 32, 2, 7, 0,114, 0, 7, 0,160, 6, 7, 0,161, 6, 7, 0,162, 6, 7, 0,175, 0, 7, 0, 81, 6, + 2, 0,163, 6, 2, 0,164, 6, 2, 0,165, 6, 0, 0,166, 6, 0, 0,167, 6, 0, 0,168, 6, 0, 0,169, 6, 0, 0,170, 6, + 14, 0,171, 6, 14, 0,172, 6, 14, 0,173, 6, 2, 0,174, 6, 2, 0,152, 2, 2, 0,175, 6, 0, 0,176, 6, 11, 0,177, 6, +178, 0,182, 3,240, 0, 24, 0, 19, 0, 37, 0, 19, 0, 63, 0, 18, 0,178, 6, 18, 0,179, 6, 18, 0,180, 6, 7, 0,181, 6, + 7, 0,182, 6, 7, 0,183, 6, 7, 0,184, 6, 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, + 2, 0, 18, 0, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6, 2, 0,194, 6, 2, 0,159, 6, 7, 0,195, 6, + 4, 0,196, 6, 4, 0,197, 6,239, 0, 6, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, + 2, 0,148, 6,241, 0, 8, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6, + 0, 0,198, 6, 0, 0,124, 0,242, 0, 14, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, + 2, 0,148, 6,240, 0,199, 6,243, 0,200, 6, 14, 0,201, 6, 2, 0, 87, 1, 2, 0,202, 6, 4, 0, 18, 0, 7, 0,203, 6, + 4, 0,159, 6,244, 0, 21, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6, +240, 0,199, 6, 2, 0,204, 6, 2, 0,205, 6, 2, 0,206, 6, 2, 0,207, 6, 2, 0,190, 6, 2, 0,208, 6, 2, 0,209, 6, + 0, 0, 18, 0, 0, 0, 27, 0, 11, 0, 73, 2, 4, 0,210, 6, 4, 0,211, 6, 22, 0,212, 6, 11, 0,213, 6,245, 0, 18, 0, +239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6,240, 0,199, 6, 7, 0, 97, 2, + 7, 0, 98, 2, 2, 0,204, 6, 2, 0,214, 6, 2, 0,215, 6, 2, 0,216, 6, 4, 0, 18, 0, 7, 0,217, 6, 4, 0,109, 6, + 4, 0, 27, 0,178, 0,182, 3,246, 0, 16, 0, 0, 0,218, 6, 0, 0,219, 6, 0, 0,220, 6, 0, 0,221, 6, 0, 0,222, 6, + 0, 0,223, 6, 4, 0,224, 6, 4, 0,225, 6, 4, 0,226, 6, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0,227, 6, 2, 0,228, 6, + 2, 0,190, 1, 2, 0,229, 6, 0, 0,230, 6,247, 0, 16, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, + 4, 0,231, 6,246, 0,232, 6,248, 0,233, 6, 14, 0,234, 6, 14, 0,235, 6,249, 0,236, 6,237, 0,237, 6,250, 0,238, 6, + 2, 0,239, 6, 2, 0,240, 6, 2, 0,241, 6, 2, 0, 30, 0,251, 0, 15, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, + 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6,240, 0,199, 6, 14, 0,242, 6,252, 0,243, 6, 0, 0,244, 6,253, 0,245, 6, + 2, 0, 18, 0, 2, 0,246, 6, 2, 0,247, 6, 2, 0,248, 6,254, 0, 25, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, + 4, 0,146, 6, 4, 0, 18, 0, 42, 0,244, 2, 40, 0, 69, 1, 54, 0,249, 6,255, 0,250, 6, 0, 1,251, 6,178, 0,182, 3, + 7, 0,252, 6, 7, 0, 97, 2, 7, 0, 98, 2, 7, 0,217, 6, 7, 0,253, 6, 7, 0,254, 6, 2, 0,255, 6, 2, 0, 27, 0, + 2, 0, 0, 7, 2, 0, 1, 7, 0, 0, 2, 7, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0,159, 6, 1, 1, 11, 0,239, 0, 0, 0, +239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6, 2, 0,202, 6, 2, 0, 18, 0, 4, 0, 27, 0, +243, 0,200, 6,240, 0,199, 6, 2, 1, 31, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, + 2, 0,148, 6, 37, 0, 5, 7, 4, 0, 6, 7, 4, 0, 7, 7, 2, 0, 92, 0, 2, 0, 8, 7, 2, 0, 9, 7, 0, 0, 10, 7, + 0, 0, 11, 7, 4, 0, 12, 7, 4, 0, 13, 7, 4, 0, 14, 7, 2, 0, 15, 7, 2, 0, 16, 7, 2, 0, 17, 7, 2, 0, 18, 7, + 7, 0, 19, 7, 18, 0, 20, 7, 18, 0, 21, 7, 4, 0, 22, 7, 4, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 2, 0, 26, 7, + 0, 0,211, 2, 11, 0, 27, 7, 3, 1, 10, 0, 22, 0, 32, 0, 11, 0, 28, 7, 11, 0, 29, 7, 11, 0, 30, 7, 11, 0, 31, 7, + 11, 0, 32, 7, 4, 0, 92, 0, 4, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 4, 1, 10, 0,239, 0, 0, 0,239, 0, 1, 0, + 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 3, 1, 36, 7, 2, 0, 92, 0, 2, 0, 8, 7, 4, 0, 67, 0, 11, 0, 37, 7, + 5, 1, 3, 0, 5, 1, 0, 0, 5, 1, 1, 0, 7, 0, 38, 7, 6, 1, 9, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, + 4, 0,146, 6, 7, 0,147, 6,240, 0,199, 6, 14, 0, 39, 7, 4, 0, 40, 7, 4, 0, 18, 0, 7, 1, 27, 0,239, 0, 0, 0, +239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6,240, 0,199, 6, 22, 0, 41, 7, 22, 0, 81, 0, + 2, 0, 18, 0, 2, 0, 67, 0, 7, 0, 42, 7, 7, 0, 97, 2, 7, 0, 98, 2, 7, 0,217, 6, 7, 0, 43, 7, 7, 0, 44, 7, + 7, 0, 45, 7, 57, 0, 70, 1, 57, 0, 46, 7, 4, 0, 47, 7, 2, 0, 48, 7, 2, 0, 49, 7, 2, 0,251, 0, 2, 0, 86, 1, + 14, 0, 50, 7,178, 0,182, 3, 8, 1, 10, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, + 2, 0,148, 6, 2, 0, 18, 0, 2, 0,214, 3, 4, 0, 27, 0,178, 0,182, 3, 9, 1, 7, 0, 9, 1, 0, 0, 9, 1, 1, 0, + 4, 0, 51, 7, 4, 0, 22, 0, 0, 0, 86, 0, 4, 0, 52, 7, 4, 0, 16, 0, 10, 1, 14, 0,239, 0, 0, 0,239, 0, 1, 0, + 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6, 4, 0, 9, 7, 4, 0, 27, 0, 14, 0, 53, 7, 14, 0, 54, 7, + 0, 0, 55, 7, 0, 0, 56, 7, 4, 0, 57, 7, 4, 0, 58, 7, 11, 1, 6, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, + 4, 0,146, 6, 4, 0, 27, 0, 0, 0, 59, 7, 12, 1, 24, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, + 7, 0, 97, 2, 7, 0, 98, 2, 7, 0, 60, 7, 7, 0, 61, 7, 7, 0,217, 6,231, 0, 62, 7,229, 0,105, 6, 13, 1,250, 6, + 4, 0, 18, 0, 2, 0, 87, 1, 2, 0,109, 6, 4, 0, 63, 7, 7, 0, 64, 7, 7, 0,148, 3, 7, 0, 94, 3, 4, 0, 27, 0, + 7, 0, 65, 7, 7, 0, 66, 7, 4, 0, 67, 7, 4, 0, 68, 7, 14, 1, 7, 0, 14, 1, 0, 0, 14, 1, 1, 0, 0, 0, 69, 7, + 2, 0, 70, 7, 2, 0, 71, 7, 2, 0, 72, 7, 2, 0, 27, 0, 15, 1, 12, 0, 2, 0, 71, 7, 2, 0, 73, 7, 2, 0, 74, 7, + 0, 0,211, 2, 2, 0, 75, 7, 2, 0, 76, 7, 2, 0, 77, 7, 2, 0, 78, 7, 2, 0, 79, 7, 2, 0,190, 6, 7, 0, 80, 7, + 7, 0, 81, 7, 16, 1, 18, 0, 16, 1, 0, 0, 16, 1, 1, 0, 0, 0, 19, 0, 15, 1, 82, 7, 15, 1, 83, 7, 15, 1, 84, 7, + 15, 1, 85, 7, 7, 0, 86, 7, 2, 0, 87, 7, 2, 0, 88, 7, 2, 0, 89, 7, 2, 0, 90, 7, 2, 0, 91, 7, 2, 0, 92, 7, + 2, 0, 93, 7, 2, 0, 94, 7, 2, 0, 95, 7, 2, 0, 27, 0, 17, 1, 10, 0, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7, + 0, 0, 99, 7, 0, 0,100, 7, 0, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7, 2, 0,104, 7, 2, 0,105, 7, 18, 1, 8, 0, + 0, 0,106, 7, 0, 0,107, 7, 0, 0,108, 7, 0, 0,109, 7, 0, 0,110, 7, 0, 0,111, 7, 7, 0,108, 6, 7, 0, 27, 0, + 19, 1, 3, 0, 0, 0,112, 7, 2, 0,113, 7, 2, 0, 27, 0, 20, 1, 22, 0, 17, 1,114, 7, 17, 1,115, 7, 17, 1,116, 7, + 17, 1,117, 7, 17, 1,118, 7, 17, 1,119, 7, 17, 1,120, 7, 17, 1,121, 7, 17, 1,122, 7, 17, 1,123, 7, 17, 1,124, 7, + 17, 1,125, 7, 17, 1,126, 7, 17, 1,127, 7, 17, 1,128, 7, 17, 1,129, 7, 17, 1,130, 7, 18, 1,131, 7, 19, 1,132, 7, + 0, 0,133, 7, 7, 0,134, 7, 7, 0, 27, 0, 21, 1,122, 0, 0, 0,135, 7, 0, 0,136, 7, 0, 0,100, 7, 0, 0,137, 7, + 0, 0,112, 7, 0, 0,138, 7, 0, 0,139, 7, 0, 0,140, 7, 0, 0,141, 7, 0, 0,142, 7, 0, 0,143, 7, 0, 0,144, 7, + 0, 0,145, 7, 0, 0,146, 7, 0, 0,147, 7, 0, 0,148, 7, 0, 0,149, 7, 0, 0,150, 7, 0, 0,151, 7, 0, 0,152, 7, + 0, 0,153, 7, 0, 0,154, 7, 0, 0,155, 7, 0, 0,156, 7, 0, 0,157, 7, 0, 0,158, 7, 0, 0,159, 7, 0, 0,160, 7, + 0, 0,161, 7, 0, 0,162, 7, 0, 0,163, 7, 0, 0,164, 7, 0, 0,165, 7, 0, 0,166, 7, 0, 0,167, 7, 0, 0,168, 7, + 0, 0,169, 7, 0, 0,170, 7, 0, 0,171, 7, 0, 0,172, 7, 0, 0,173, 7, 0, 0,174, 7, 0, 0,175, 7, 0, 0,176, 7, + 0, 0,177, 7, 0, 0,178, 7, 0, 0,179, 7, 0, 0,180, 7, 0, 0,181, 7, 0, 0,182, 7, 0, 0,183, 7, 0, 0,184, 7, + 0, 0,185, 7, 0, 0,186, 7, 0, 0,187, 7, 0, 0,188, 7, 0, 0,189, 7, 0, 0,190, 7, 0, 0,191, 7, 0, 0,192, 7, + 0, 0,193, 7, 0, 0,194, 7, 0, 0,195, 7, 0, 0,196, 7, 0, 0,197, 7, 0, 0,198, 7, 0, 0,199, 7, 0, 0,200, 7, + 0, 0,201, 7, 0, 0,202, 7, 0, 0,203, 7, 0, 0,204, 7, 0, 0,205, 7, 0, 0,206, 7, 0, 0,207, 7, 0, 0,208, 7, + 0, 0,209, 7, 0, 0,210, 7, 0, 0,211, 7, 0, 0,212, 7, 0, 0,213, 7, 0, 0,214, 7, 0, 0,215, 7, 0, 0,216, 7, + 0, 0,217, 7, 0, 0,218, 7, 0, 0,219, 7, 0, 0,220, 7, 0, 0,221, 7, 0, 0,222, 7, 0, 0,223, 7, 0, 0,224, 7, + 0, 0,225, 7, 0, 0,226, 7, 0, 0,227, 7, 0, 0,228, 7, 0, 0,229, 7, 0, 0,230, 7, 0, 0,231, 7, 0, 0,232, 7, + 0, 0,233, 7, 0, 0,234, 7, 0, 0,235, 7, 0, 0,236, 7, 0, 0,237, 7, 0, 0,238, 7, 0, 0,239, 7, 0, 0,240, 7, + 0, 0,241, 7, 0, 0,242, 7, 0, 0,243, 7, 0, 0,244, 7, 0, 0,245, 7, 0, 0,246, 7, 0, 0,247, 7, 0, 0,248, 7, + 0, 0,249, 7, 0, 0,250, 7, 0, 0,251, 7, 0, 0,252, 7, 0, 0,253, 7, 0, 0,254, 7, 22, 1, 5, 0, 0, 0,255, 7, + 0, 0,158, 7, 0, 0,164, 7, 2, 0, 18, 0, 2, 0, 27, 0, 23, 1, 24, 0, 23, 1, 0, 0, 23, 1, 1, 0, 0, 0,172, 5, + 20, 1, 0, 8, 21, 1, 1, 8, 21, 1, 2, 8, 21, 1, 3, 8, 21, 1, 4, 8, 21, 1, 5, 8, 21, 1, 6, 8, 21, 1, 7, 8, + 21, 1, 8, 8, 21, 1, 9, 8, 21, 1, 10, 8, 21, 1, 11, 8, 21, 1, 12, 8, 21, 1, 13, 8, 21, 1, 14, 8, 21, 1, 15, 8, + 21, 1, 16, 8, 21, 1, 17, 8, 22, 1, 18, 8, 4, 0, 19, 8, 4, 0, 27, 0, 24, 1, 3, 0, 24, 1, 0, 0, 24, 1, 1, 0, + 0, 0, 20, 8, 25, 1, 5, 0, 4, 0, 18, 0, 4, 0, 27, 0, 7, 0,151, 2, 7, 0, 21, 8, 7, 0, 47, 2, 26, 1, 95, 0, + 4, 0, 18, 0, 4, 0, 22, 8, 4, 0, 23, 8, 0, 0, 24, 8, 0, 0, 25, 8, 0, 0, 26, 8, 0, 0, 27, 8, 0, 0, 28, 8, + 0, 0, 29, 8, 0, 0, 30, 8, 0, 0, 31, 8, 0, 0, 32, 8, 0, 0, 33, 8, 4, 0, 34, 8, 2, 0, 35, 8, 2, 0, 36, 8, + 2, 0, 37, 8, 2, 0, 38, 8, 4, 0, 39, 8, 4, 0, 40, 8, 4, 0, 41, 8, 4, 0, 42, 8, 2, 0, 43, 8, 2, 0, 44, 8, + 4, 0, 45, 8, 4, 0, 46, 8, 4, 0, 47, 8, 4, 0, 48, 8, 4, 0, 49, 8, 4, 0, 53, 7, 4, 0, 50, 8, 2, 0, 51, 8, + 2, 0, 52, 8, 2, 0, 53, 8, 2, 0, 54, 8, 14, 0, 55, 8, 14, 0, 56, 8, 14, 0, 57, 8, 14, 0, 58, 8, 14, 0, 59, 8, + 14, 0, 60, 8, 0, 0, 61, 8, 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 64, 8, 2, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, + 2, 0, 68, 8, 2, 0, 69, 8, 25, 1, 70, 8, 2, 0, 71, 8, 2, 0, 72, 8, 2, 0, 73, 8, 2, 0, 74, 8, 2, 0, 75, 8, + 2, 0, 76, 8, 2, 0, 77, 8, 2, 0, 78, 8, 4, 0, 79, 8, 4, 0, 80, 8, 2, 0, 81, 8, 2, 0, 82, 8, 2, 0, 83, 8, + 2, 0, 84, 8, 2, 0, 85, 8, 2, 0, 86, 8, 2, 0, 87, 8, 2, 0, 88, 8, 2, 0, 89, 8, 2, 0, 90, 8, 2, 0, 91, 8, + 2, 0, 92, 8, 2, 0, 93, 8, 2, 0, 94, 8, 2, 0, 95, 8, 2, 0, 96, 8, 2, 0, 97, 8, 2, 0, 98, 8, 7, 0, 99, 8, + 4, 0,100, 8, 7, 0,101, 8, 2, 0, 17, 6, 2, 0, 18, 6, 2, 0,102, 8, 2, 0,103, 8, 50, 0,104, 8, 7, 0,105, 8, + 2, 0,106, 8, 2, 0,247, 1, 0, 0,107, 8, 4, 0,108, 8, 4, 0,109, 8, 7, 0,110, 8, 7, 0, 27, 0, 27, 1, 24, 0, + 22, 0, 32, 0, 14, 0,111, 8, 14, 0,112, 8, 14, 0,113, 8, 14, 0,145, 6, 41, 0,125, 0, 41, 0,114, 8, 4, 0,115, 8, + 4, 0, 67, 0, 2, 0,116, 8, 2, 0,117, 8, 2, 0,118, 8, 2, 0,119, 8, 2, 0,120, 8, 2, 0,121, 8, 2, 0,122, 8, + 2, 0,123, 8, 2, 0,124, 8, 2, 0,125, 8, 2, 0,126, 8, 2, 0, 27, 0,237, 0,127, 8, 11, 0,128, 8, 2, 0,129, 8, + 28, 1, 5, 0, 28, 1, 0, 0, 28, 1, 1, 0, 28, 1,130, 8, 15, 0,131, 8, 4, 0, 18, 0, 29, 1, 7, 0, 29, 1, 0, 0, + 29, 1, 1, 0, 28, 1,132, 8, 28, 1,133, 8, 2, 0,121, 5, 2, 0, 18, 0, 4, 0, 27, 0, 30, 1, 25, 0, 30, 1, 0, 0, + 30, 1, 1, 0, 31, 1,134, 8, 32, 1,238, 6, 0, 0,135, 8, 0, 0,136, 8, 0, 0,137, 8, 2, 0,138, 8, 2, 0,139, 8, + 2, 0,140, 8, 2, 0,141, 8, 2, 0,142, 8, 2, 0, 27, 0, 2, 0, 18, 0, 2, 0, 68, 7, 2, 0,143, 8, 2, 0,144, 8, + 4, 0,145, 8, 30, 1,146, 8, 11, 0,147, 8, 4, 0,148, 8, 4, 0,149, 8, 4, 0,150, 8, 4, 0,151, 8, 0, 0,152, 8, + 33, 1, 22, 0, 33, 1, 0, 0, 33, 1, 1, 0, 28, 1,132, 8, 28, 1,133, 8, 28, 1,153, 8, 28, 1,154, 8, 27, 1,155, 8, + 18, 0, 51, 0, 0, 0,146, 6, 0, 0,156, 8, 2, 0,191, 6, 2, 0,192, 6, 2, 0,157, 8, 2, 0, 27, 0, 2, 0,120, 8, + 2, 0, 52, 7, 2, 0, 18, 0, 34, 1,134, 8, 14, 0,158, 8, 14, 0,145, 6, 14, 0,159, 8, 14, 0,160, 8, 35, 1, 24, 0, + 35, 1, 0, 0, 35, 1, 1, 0,240, 0,199, 6, 18, 0,161, 8, 18, 0,162, 8, 2, 0,191, 6, 2, 0,192, 6, 2, 0,163, 8, + 2, 0,164, 8, 2, 0,165, 8, 2, 0, 18, 0, 7, 0, 93, 2, 2, 0,140, 8, 2, 0,141, 8, 2, 0,119, 8, 2, 0,166, 8, + 2, 0,124, 8, 2, 0, 86, 1, 36, 1,134, 8, 14, 0,167, 8, 14, 0,168, 8, 14, 0,159, 8, 0, 0,169, 8, 11, 0,170, 8, + 37, 1, 14, 0, 0, 0,171, 8, 2, 0,172, 8, 2, 0,173, 8, 2, 0,174, 8, 2, 0,175, 8, 2, 0,110, 5, 2, 0,176, 8, + 27, 1,177, 8, 41, 0,178, 8, 4, 0,179, 8, 4, 0,180, 8, 4, 0,181, 8, 4, 0, 27, 0, 0, 0, 69, 7, 38, 1, 3, 0, + 0, 0,182, 8, 4, 0,183, 8, 4, 0,184, 8, 39, 1, 4, 0, 4, 0, 6, 7, 4, 0,185, 8, 4, 0, 12, 7, 4, 0,186, 8, + 40, 1, 2, 0, 4, 0,187, 8, 4, 0,188, 8, 41, 1, 5, 0, 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 4, 0, 18, 0, + 4, 0, 27, 0, 42, 1, 7, 0, 0, 0,192, 8, 0, 0,220, 6, 44, 0,138, 0, 2, 0,193, 8, 2, 0, 72, 5, 2, 0,194, 8, + 2, 0,195, 8, 43, 1, 12, 0, 43, 1, 0, 0, 43, 1, 1, 0, 4, 0, 28, 0, 4, 0,196, 8, 4, 0,197, 8, 4, 0,198, 8, + 38, 1,199, 8, 0, 0,192, 8, 42, 1,176, 3, 39, 1,200, 8, 40, 1,201, 8, 41, 1,202, 8, 44, 1, 12, 0, 0, 0, 35, 0, + 11, 0,227, 0, 0, 0,228, 0, 4, 0,231, 0, 4, 0,239, 0, 11, 0,232, 0, 7, 0,234, 0, 7, 0,235, 0, 11, 0,203, 8, + 11, 0,204, 8, 11, 0,236, 0, 11, 0,238, 0, 45, 1, 50, 0, 45, 1, 0, 0, 45, 1, 1, 0, 11, 0,205, 8, 11, 0, 25, 0, + 0, 0, 19, 0, 4, 0, 18, 0, 4, 0, 16, 0, 4, 0, 22, 0, 4, 0, 90, 0, 4, 0,206, 8, 4, 0,207, 8, 4, 0,197, 8, + 4, 0,198, 8, 4, 0,208, 8, 4, 0,250, 0, 4, 0,209, 8, 4, 0,210, 8, 7, 0,211, 8, 7, 0,212, 8, 7, 0,213, 8, + 2, 0,214, 8, 2, 0,215, 8, 4, 0,216, 8, 4, 0,217, 8, 43, 1,218, 8, 31, 0, 80, 0, 41, 0,125, 0, 27, 0,219, 8, + 44, 0,138, 0,229, 0,105, 6, 7, 0,220, 8, 7, 0,221, 8, 44, 1, 71, 1, 45, 1,222, 8, 45, 1,223, 8, 45, 1,224, 8, + 14, 0,225, 8, 46, 1,226, 8, 11, 0,227, 8, 7, 0, 84, 4, 7, 0,228, 8, 7, 0,229, 8, 7, 0,230, 8, 11, 0,231, 8, + 4, 0,232, 8, 4, 0,233, 8, 4, 0,234, 8, 7, 0,235, 8, 4, 0,129, 0, 4, 0, 27, 0, 47, 1, 4, 0, 47, 1, 0, 0, + 47, 1, 1, 0, 14, 0,236, 8, 45, 1,237, 8,226, 0, 11, 0, 14, 0,238, 8, 14, 0,225, 8, 14, 0,239, 8, 45, 1,240, 8, + 0, 0,241, 8, 0, 0,242, 8, 4, 0,243, 8, 4, 0,244, 8, 4, 0,245, 8, 4, 0, 27, 0, 19, 0,246, 8, 48, 1, 4, 0, + 7, 0,247, 8, 7, 0, 94, 3, 2, 0,248, 8, 2, 0,249, 8, 49, 1, 6, 0, 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, + 7, 0,253, 8, 4, 0,254, 8, 4, 0,255, 8, 50, 1, 8, 0, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 2, 9, 7, 0, 3, 9, + 7, 0, 4, 9, 4, 0,250, 2, 4, 0, 5, 9, 4, 0, 6, 9, 51, 1, 2, 0, 7, 0,180, 5, 7, 0, 27, 0, 52, 1, 5, 0, + 7, 0, 7, 9, 7, 0, 8, 9, 4, 0, 92, 0, 4, 0,212, 2, 4, 0, 9, 9, 53, 1, 6, 0, 53, 1, 0, 0, 53, 1, 1, 0, + 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 10, 9, 2, 0, 56, 0, 54, 1, 8, 0, 54, 1, 0, 0, 54, 1, 1, 0, 2, 0, 16, 0, + 2, 0, 18, 0, 2, 0, 10, 9, 2, 0, 56, 0, 7, 0, 22, 0, 7, 0,129, 0, 55, 1, 45, 0, 55, 1, 0, 0, 55, 1, 1, 0, + 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 10, 9, 2, 0,246, 0, 2, 0,126, 4, 2, 0, 11, 9, 7, 0, 12, 9, 7, 0, 91, 0, + 7, 0, 7, 3, 4, 0, 13, 9, 4, 0, 82, 0, 4, 0,214, 2, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0, 17, 9, + 7, 0, 18, 9, 7, 0, 19, 9, 7, 0, 4, 3, 7, 0, 68, 1, 7, 0, 20, 9, 7, 0, 21, 9, 7, 0, 27, 0, 7, 0, 22, 9, + 7, 0, 23, 9, 7, 0, 24, 9, 2, 0, 25, 9, 2, 0, 26, 9, 2, 0, 27, 9, 2, 0, 28, 9, 2, 0, 29, 9, 2, 0, 30, 9, + 2, 0, 31, 9, 2, 0, 32, 9, 2, 0, 32, 2, 2, 0, 33, 9, 2, 0, 29, 2, 2, 0, 34, 9, 0, 0, 35, 9, 0, 0, 36, 9, + 7, 0,244, 0, 56, 1, 37, 9, 64, 0,250, 1, 57, 1, 16, 0, 57, 1, 0, 0, 57, 1, 1, 0, 2, 0, 16, 0, 2, 0, 18, 0, + 2, 0, 10, 9, 2, 0,246, 0, 7, 0,255, 2, 7, 0, 0, 3, 7, 0, 1, 3, 7, 0, 82, 2, 7, 0, 2, 3, 7, 0, 3, 3, + 7, 0, 38, 9, 7, 0, 4, 3, 7, 0, 6, 3, 7, 0, 7, 3,253, 0, 5, 0, 2, 0, 16, 0, 2, 0, 39, 9, 2, 0, 18, 0, + 2, 0, 40, 9, 22, 0, 41, 7,252, 0, 3, 0, 4, 0, 69, 0, 4, 0, 41, 9,253, 0, 2, 0, 58, 1, 7, 0, 58, 1, 0, 0, + 58, 1, 1, 0, 0, 0, 19, 0, 2, 0, 16, 0, 2, 0, 18, 0, 4, 0, 21, 0, 11, 0, 42, 9, 59, 1, 5, 0, 0, 0, 19, 0, + 7, 0, 94, 1, 7, 0, 43, 9, 4, 0, 44, 9, 4, 0, 27, 0, 60, 1, 4, 0, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 67, 0, + 2, 0, 30, 0, 61, 1, 4, 0, 0, 0, 19, 0, 63, 0, 45, 9, 7, 0, 94, 1, 7, 0, 27, 0, 62, 1, 6, 0, 2, 0, 46, 9, + 2, 0, 47, 9, 2, 0, 16, 0, 2, 0, 48, 9, 0, 0, 49, 9, 0, 0, 50, 9, 63, 1, 5, 0, 4, 0, 16, 0, 4, 0, 27, 0, + 0, 0, 19, 0, 0, 0, 51, 9, 0, 0, 52, 9, 64, 1, 3, 0, 4, 0, 16, 0, 4, 0, 27, 0, 0, 0, 19, 0, 65, 1, 4, 0, + 2, 0, 53, 9, 2, 0, 54, 9, 2, 0, 18, 0, 2, 0, 27, 0, 66, 1, 6, 0, 0, 0, 19, 0, 0, 0, 55, 9, 2, 0, 56, 9, + 2, 0, 4, 3, 2, 0, 87, 1, 2, 0, 30, 0, 67, 1, 5, 0, 0, 0, 19, 0, 7, 0, 94, 3, 7, 0,217, 4, 2, 0, 18, 0, + 2, 0,226, 2, 68, 1, 3, 0, 0, 0, 19, 0, 4, 0,214, 2, 4, 0, 53, 9, 69, 1, 7, 0, 0, 0, 19, 0, 7, 0,217, 4, + 0, 0, 57, 9, 0, 0, 58, 9, 2, 0, 87, 1, 2, 0, 67, 0, 4, 0, 59, 9, 70, 1, 4, 0, 0, 0, 60, 9, 0, 0, 61, 9, + 4, 0, 16, 0, 7, 0,230, 2, 71, 1, 3, 0, 27, 0, 62, 9, 0, 0, 63, 9, 0, 0, 64, 9, 72, 1, 18, 0, 72, 1, 0, 0, + 72, 1, 1, 0, 2, 0, 16, 0, 2, 0, 65, 9, 2, 0, 18, 0, 2, 0, 66, 9, 2, 0, 67, 9, 2, 0, 68, 9, 2, 0, 67, 0, + 2, 0, 30, 0, 0, 0, 19, 0, 11, 0, 2, 0, 73, 1, 69, 9, 27, 0, 44, 0, 2, 0,216, 5, 2, 0,176, 2, 2, 0, 70, 9, + 2, 0, 27, 0, 74, 1, 11, 0, 0, 0, 19, 0, 0, 0, 16, 0, 0, 0, 71, 9, 2, 0, 18, 0, 2, 0,226, 2, 2, 0, 72, 9, + 4, 0, 73, 9, 4, 0, 74, 9, 4, 0, 75, 9, 4, 0, 76, 9, 4, 0, 77, 9, 75, 1, 1, 0, 0, 0, 78, 9, 76, 1, 4, 0, + 37, 0, 5, 7, 0, 0, 20, 8, 4, 0, 87, 1, 4, 0, 18, 0, 73, 1, 18, 0, 73, 1, 0, 0, 73, 1, 1, 0, 73, 1, 79, 9, + 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 80, 9, 2, 0, 68, 9, 2, 0, 65, 9, 2, 0, 81, 9, 2, 0, 30, 0, 2, 0,247, 1, + 0, 0, 19, 0, 11, 0, 2, 0, 77, 1, 69, 9, 72, 1, 82, 9, 2, 0, 14, 0, 2, 0, 83, 9, 4, 0, 84, 9, 78, 1, 3, 0, + 4, 0,240, 2, 4, 0, 27, 0, 27, 0, 44, 0, 79, 1, 15, 0,176, 0, 85, 9, 2, 0, 16, 0, 2, 0, 18, 0, 7, 0, 12, 9, + 7, 0, 91, 0, 0, 0, 19, 0, 0, 0, 86, 9, 2, 0, 87, 9, 2, 0, 88, 9, 2, 0,134, 0, 2, 0, 89, 9, 2, 0, 90, 9, + 2, 0, 27, 0, 7, 0, 91, 9, 7, 0, 92, 9, 80, 1, 8, 0, 7, 0, 93, 9, 7, 0, 94, 9, 7, 0, 95, 9, 7, 0, 96, 9, + 7, 0, 97, 9, 7, 0, 98, 9, 7, 0, 99, 9, 7, 0,100, 9, 81, 1, 13, 0, 2, 0, 18, 0, 2, 0,101, 9, 4, 0, 67, 0, + 4, 0, 30, 0, 2, 0,176, 6, 7, 0, 84, 4, 7, 0,228, 8, 46, 1,226, 8, 80, 1,102, 9, 2, 0, 16, 0, 2, 0,115, 5, + 2, 0,216, 3, 2, 0,103, 9, 82, 1, 11, 0, 4, 0,240, 2, 2, 0, 16, 0, 2, 0, 18, 0, 27, 0, 44, 0, 79, 0,104, 9, + 0, 0, 19, 0, 7, 0,105, 9, 7, 0,106, 9, 7, 0,222, 3, 2, 0,107, 9, 2, 0,108, 9, 83, 1, 5, 0, 2, 0, 16, 0, + 2, 0, 67, 0, 4, 0, 27, 0, 41, 0,125, 0, 27, 0,208, 5, 84, 1, 5, 0, 4, 0, 27, 0, 4, 0, 16, 0, 0, 0, 19, 0, + 0, 0, 51, 9, 27, 0, 44, 0, 85, 1, 13, 0, 2, 0, 18, 0, 2, 0, 16, 0, 2, 0, 65, 9, 2, 0,223, 3, 7, 0,109, 9, + 7, 0,110, 9, 7, 0, 86, 1, 7, 0,111, 9, 7, 0,192, 3, 7, 0,196, 3, 7, 0,112, 9, 7, 0,113, 9, 27, 0,114, 9, + 86, 1, 10, 0, 2, 0, 18, 0, 2, 0, 16, 0, 7, 0, 12, 9, 7, 0, 91, 0, 0, 0, 19, 0, 0, 0, 86, 9, 2, 0, 67, 0, + 2, 0, 30, 0, 2, 0,247, 1, 2, 0,115, 5, 87, 1, 8, 0, 27, 0, 44, 0, 7, 0, 1, 3, 7, 0,115, 9, 7, 0,116, 9, + 7, 0,223, 3, 2, 0, 67, 0, 2, 0,226, 2, 7, 0, 30, 0, 88, 1, 12, 0, 2, 0, 16, 0, 2, 0, 87, 1, 2, 0, 18, 0, + 2, 0, 4, 3, 2, 0,240, 2, 2, 0,117, 9, 4, 0, 27, 0, 7, 0,118, 9, 7, 0,119, 9, 7, 0,120, 9, 7, 0,121, 9, + 0, 0,122, 9, 89, 1, 9, 0, 2, 0, 18, 0, 2, 0, 16, 0, 4, 0, 12, 9, 4, 0, 91, 0, 0, 0, 19, 0, 2, 0, 86, 1, + 2, 0, 63, 0, 2, 0,123, 9, 2, 0,124, 9, 90, 1, 7, 0, 4, 0,214, 2, 4, 0,125, 9, 4, 0,126, 9, 4, 0,127, 9, + 7, 0,128, 9, 7, 0,129, 9, 0, 0, 57, 9, 91, 1, 7, 0, 0, 0,130, 9, 27, 0,131, 9, 0, 0, 63, 9, 2, 0,132, 9, + 2, 0, 67, 0, 4, 0, 30, 0, 0, 0, 64, 9, 92, 1, 6, 0, 2, 0, 18, 0, 2, 0, 16, 0, 4, 0, 12, 9, 4, 0, 91, 0, + 0, 0,133, 9, 0, 0,134, 9, 93, 1, 1, 0, 4, 0, 18, 0, 94, 1, 6, 0, 0, 0, 94, 0, 2, 0, 16, 0, 2, 0, 18, 0, + 4, 0,135, 9, 7, 0,136, 9, 37, 0, 5, 7, 95, 1, 4, 0, 0, 0,181, 2, 2, 0, 18, 0, 4, 0, 16, 0, 27, 0, 44, 0, + 96, 1, 2, 0, 4, 0, 16, 0, 4, 0,180, 6, 97, 1, 8, 0, 0, 0, 60, 9, 0, 0, 61, 9, 4, 0, 16, 0, 7, 0, 40, 2, + 7, 0,137, 9, 7, 0, 27, 0, 27, 0, 70, 3, 27, 0,138, 9, 98, 1, 11, 0, 0, 0, 53, 6, 0, 0, 18, 0, 2, 0,139, 9, + 4, 0, 16, 0, 7, 0, 94, 1, 7, 0,140, 9, 7, 0,141, 9, 7, 0,142, 9, 4, 0,143, 9, 27, 0, 70, 3, 27, 0,144, 9, + 77, 1, 10, 0, 77, 1, 0, 0, 77, 1, 1, 0, 77, 1, 79, 9, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 65, 9, 2, 0,145, 9, + 0, 0, 19, 0, 11, 0, 2, 0, 27, 0, 44, 0, 46, 1, 17, 0, 22, 0, 32, 0, 0, 0, 35, 0, 38, 0,153, 0, 11, 0,227, 0, + 38, 0,146, 9, 31, 0, 80, 0, 7, 0, 84, 4, 7, 0,147, 9, 7, 0,228, 8, 7, 0, 93, 9, 7, 0, 94, 9, 7, 0,148, 9, + 4, 0, 92, 0, 4, 0, 27, 0, 11, 0,149, 9, 11, 0,150, 9, 11, 0,151, 9, 99, 1, 6, 0, 99, 1, 0, 0, 99, 1, 1, 0, + 27, 0, 44, 0, 11, 0,152, 9, 2, 0,251, 0, 0, 0,211, 2, 64, 0, 4, 0, 22, 0, 32, 0, 14, 0,153, 9, 4, 0,134, 0, + 7, 0,154, 9,100, 1, 28, 0,100, 1, 0, 0,100, 1, 1, 0, 21, 0,155, 9,100, 1, 38, 0, 14, 0,156, 9, 0, 0, 19, 0, + 7, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 4, 0, 18, 0, 7, 0,161, 9, 7, 0,162, 9, 7, 0,163, 9, + 7, 0,164, 9, 7, 0, 94, 1, 7, 0, 40, 2, 7, 0,165, 9, 7, 0,212, 2, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, + 7, 0,169, 9, 7, 0,170, 9, 7, 0,176, 0, 4, 0,134, 0, 2, 0,253, 5, 2, 0,171, 9,101, 1, 27, 0, 22, 0, 32, 0, + 34, 0, 75, 0, 14, 0,172, 9, 14, 0,173, 9, 14, 0,174, 9,100, 1,175, 9, 11, 0,176, 9, 11, 0,177, 9, 4, 0, 18, 0, + 4, 0,156, 6, 4, 0,178, 9, 4, 0, 27, 0, 2, 0, 8, 3, 2, 0,210, 6, 4, 0,179, 9, 4, 0,134, 0, 4, 0,180, 9, + 2, 0,181, 9, 2, 0,182, 9, 2, 0,183, 9, 2, 0,184, 9, 4, 0,185, 9, 4, 0,186, 9, 4, 0,187, 9, 4, 0,188, 9, + 4, 0,189, 9, 4, 0,190, 9,102, 1, 2, 0, 7, 0,165, 2, 4, 0, 18, 0,180, 0, 5, 0,102, 1,191, 9, 4, 0,212, 2, + 4, 0,192, 9, 4, 0,193, 9, 4, 0, 18, 0,179, 0, 16, 0, 4, 0,194, 9, 4, 0,195, 9, 4, 0,196, 9, 4, 0,197, 9, + 2, 0,198, 9, 2, 0,199, 9, 2, 0,200, 9, 2, 0,251, 0, 2, 0,201, 9, 2, 0,202, 9, 2, 0,203, 9, 2, 0,204, 9, + 4, 0,205, 9, 4, 0,206, 9, 4, 0,207, 9, 4, 0,208, 9,103, 1, 40, 0,103, 1, 0, 0,103, 1, 1, 0, 21, 0,155, 9, + 14, 0,251, 3, 0, 0, 19, 0, 2, 0, 18, 0, 2, 0,209, 9, 2, 0,209, 3, 2, 0,210, 9, 0, 0,211, 9, 0, 0,212, 9, + 0, 0,213, 9,100, 1,214, 9,103, 1, 38, 0,103, 1,215, 9, 14, 0,216, 9, 14, 0,217, 9,180, 0,184, 3, 27, 0,218, 9, +103, 1,219, 9, 7, 0, 77, 1, 7, 0,176, 0, 7, 0,220, 9, 7, 0, 19, 2, 7, 0,198, 3, 7, 0,200, 3, 2, 0,232, 3, + 2, 0, 27, 0, 7, 0,221, 9, 7, 0,222, 9, 7, 0,203, 3, 7, 0,223, 9, 7, 0,224, 9, 7, 0,225, 9, 7, 0,226, 9, + 7, 0,227, 9, 7, 0,228, 9, 7, 0,229, 9, 7, 0,230, 9, 11, 0,231, 9,177, 0, 16, 0, 14, 0,232, 9, 74, 0,233, 9, + 2, 0, 18, 0, 2, 0, 27, 0, 4, 0,234, 9, 4, 0, 67, 0, 7, 0, 84, 0, 7, 0,235, 9, 7, 0,236, 9, 14, 0,237, 9, + 4, 0,238, 9, 4, 0,239, 9, 11, 0,240, 9, 11, 0,241, 9,179, 0,183, 3, 0, 0,242, 9,104, 1, 1, 0, 4, 0,239, 9, +105, 1, 12, 0, 4, 0,239, 9, 7, 0, 77, 9, 2, 0,243, 9, 2, 0,244, 9, 7, 0,245, 9, 7, 0,246, 9, 2, 0,247, 9, + 2, 0, 18, 0, 7, 0,248, 9, 7, 0,249, 9, 7, 0,250, 9, 7, 0,251, 9,106, 1, 7, 0,106, 1, 0, 0,106, 1, 1, 0, + 14, 0,252, 9, 4, 0, 18, 0, 4, 0,253, 9, 0, 0, 19, 0, 22, 1,254, 9,176, 0, 9, 0, 22, 0, 32, 0, 14, 0,255, 9, + 14, 0,232, 9, 14, 0, 0, 10, 14, 0,102, 0, 4, 0, 18, 0, 4, 0, 1, 10, 4, 0, 2, 10, 4, 0, 27, 0,243, 0, 8, 0, + 22, 0, 3, 10, 14, 0,232, 9, 64, 0, 4, 10, 0, 0, 5, 10, 4, 0, 6, 10, 4, 0, 18, 0, 4, 0, 7, 10, 4, 0, 27, 0, +107, 1, 13, 0,239, 0, 0, 0,239, 0, 1, 0, 14, 0,145, 6, 4, 0,146, 6, 7, 0,147, 6, 2, 0,148, 6,240, 0,199, 6, +176, 0,179, 3,243, 0, 8, 10, 0, 0, 87, 1, 0, 0,202, 6, 2, 0, 18, 0, 7, 0, 9, 10,108, 1, 8, 0,108, 1, 0, 0, +108, 1, 1, 0,106, 1, 10, 10, 31, 0, 80, 0, 14, 0,185, 3, 4, 0, 18, 0, 0, 0, 19, 0, 4, 0,117, 8,109, 1, 5, 0, +109, 1, 0, 0,109, 1, 1, 0, 31, 0, 80, 0, 2, 0, 18, 0, 0, 0, 11, 10,110, 1, 14, 0,110, 1, 0, 0,110, 1, 1, 0, + 11, 0, 2, 0, 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 12, 10, 0, 0, 13, 10, 0, 0, 19, 0, 2, 0, 27, 0, 7, 0, 14, 10, + 7, 0, 15, 10, 31, 0, 80, 0, 7, 0, 16, 10, 7, 0, 17, 10,111, 1, 9, 0,111, 1, 0, 0,111, 1, 1, 0, 27, 0, 18, 10, + 0, 0, 11, 3, 7, 0, 19, 10, 2, 0, 20, 10, 2, 0, 18, 0, 2, 0, 16, 0, 2, 0, 21, 10,112, 1, 7, 0, 37, 0, 5, 7, + 21, 0,155, 9, 4, 0, 18, 0, 4, 0, 22, 10, 14, 0, 23, 10, 27, 0, 18, 10, 0, 0, 11, 3,113, 1, 15, 0, 27, 0, 18, 10, + 2, 0, 24, 10, 2, 0, 18, 0, 2, 0, 25, 10, 2, 0, 26, 10, 0, 0, 11, 3, 27, 0, 27, 10, 0, 0, 28, 10, 7, 0, 29, 10, + 7, 0, 40, 2, 7, 0, 30, 10, 7, 0, 31, 10, 2, 0, 16, 0, 2, 0, 87, 1, 7, 0, 94, 1,114, 1, 6, 0, 27, 0, 18, 10, + 7, 0,191, 9, 2, 0, 32, 10, 2, 0, 33, 10, 2, 0, 18, 0, 2, 0, 34, 10,115, 1, 6, 0, 27, 0, 18, 10, 4, 0, 35, 10, + 4, 0, 36, 10, 4, 0, 92, 0, 4, 0, 27, 0, 0, 0, 11, 3,116, 1, 4, 0, 27, 0, 18, 10, 4, 0, 18, 0, 4, 0, 35, 10, + 0, 0, 11, 3,117, 1, 4, 0, 27, 0, 18, 10, 4, 0, 18, 0, 4, 0, 35, 10, 0, 0, 11, 3,118, 1, 4, 0, 27, 0, 18, 10, + 4, 0, 18, 0, 4, 0, 35, 10, 0, 0, 11, 3,119, 1, 2, 0, 4, 0, 18, 0, 7, 0, 84, 4,120, 1, 2, 0, 27, 0, 18, 10, + 0, 0, 11, 3,121, 1, 10, 0, 27, 0, 18, 10, 4, 0, 37, 10, 7, 0,128, 0, 4, 0, 18, 0, 2, 0, 3, 7, 2, 0, 38, 10, + 2, 0, 67, 0, 2, 0, 30, 0, 7, 0, 39, 10, 0, 0, 11, 3,122, 1, 10, 0, 27, 0, 18, 10, 2, 0, 16, 0, 2, 0,134, 4, + 4, 0, 90, 0, 4, 0, 91, 0, 7, 0,115, 9, 7, 0,116, 9, 4, 0, 27, 0,176, 0, 85, 9, 0, 0, 11, 3,123, 1, 4, 0, + 27, 0, 18, 10, 4, 0,210, 3, 4, 0, 40, 10, 0, 0, 11, 3,124, 1, 4, 0, 27, 0, 18, 10, 4, 0,210, 3, 4, 0, 27, 0, + 0, 0, 11, 3,125, 1, 6, 0, 27, 0, 18, 10, 7, 0,128, 0, 7, 0, 82, 3, 4, 0, 41, 10, 2, 0,210, 3, 2, 0,211, 3, +126, 1, 6, 0, 27, 0, 18, 10, 4, 0, 42, 10, 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 0, 0, 11, 3,127, 1, 16, 0, + 27, 0, 18, 10, 27, 0,215, 9, 4, 0, 16, 0, 7, 0, 46, 10, 7, 0, 47, 10, 7, 0, 48, 10, 7, 0, 49, 10, 7, 0, 50, 10, + 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 2, 0, 18, 0, 2, 0, 27, 0, 2, 0, 67, 0, 2, 0, 30, 0, +128, 1, 3, 0, 27, 0, 18, 10, 4, 0, 18, 0, 4, 0, 32, 2,129, 1, 5, 0, 27, 0, 18, 10, 4, 0, 18, 0, 4, 0, 27, 0, + 7, 0, 55, 10, 0, 0, 11, 3,130, 1, 10, 0, 27, 0, 18, 10, 0, 0, 11, 3, 2, 0, 56, 10, 2, 0, 57, 10, 0, 0, 58, 10, + 0, 0, 59, 10, 7, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, 7, 0, 63, 10,131, 1, 5, 0, 27, 0, 18, 10, 0, 0, 11, 3, + 7, 0,220, 2, 2, 0, 64, 10, 2, 0, 18, 0,132, 1, 8, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 65, 10, 7, 0, 66, 10, 2, 0, 18, 0, 2, 0, 32, 2,133, 1, 8, 0, 7, 0, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 7, 0, 65, 10, 7, 0, 66, 10, 2, 0, 18, 0, 2, 0, 32, 2,134, 1, 8, 0, 7, 0, 8, 0, 7, 0, 9, 0, + 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 65, 10, 7, 0, 66, 10, 2, 0, 18, 0, 2, 0, 32, 2,135, 1, 7, 0, 27, 0, 18, 10, + 0, 0, 11, 3, 7, 0, 94, 1, 7, 0,103, 1, 2, 0, 18, 0, 2, 0, 87, 1, 4, 0, 27, 0,136, 1, 5, 0, 27, 0, 70, 3, + 7, 0, 94, 1, 2, 0, 74, 3, 0, 0, 76, 3, 0, 0, 67, 10,137, 1, 7, 0,229, 0,105, 6, 0, 0, 68, 10, 4, 0, 18, 0, + 4, 0, 27, 0, 0, 0, 69, 10, 27, 0,208, 5, 27, 0, 70, 10,138, 1, 3, 0,229, 0,105, 6, 4, 0, 18, 0, 4, 0, 27, 0, +139, 1, 6, 0,229, 0,105, 6, 4, 0, 18, 0, 4, 0, 27, 0, 0, 0, 69, 10, 7, 0, 55, 10, 27, 0,208, 5,140, 1, 10, 0, +140, 1, 0, 0,140, 1, 1, 0, 2, 0, 16, 0, 2, 0, 18, 0, 0, 0, 71, 10, 7, 0, 31, 1, 7, 0, 32, 1, 2, 0,252, 9, + 2, 0, 72, 10, 27, 0, 44, 0,141, 1, 22, 0,141, 1, 0, 0,141, 1, 1, 0, 2, 0, 18, 0, 2, 0, 87, 1, 2, 0, 73, 10, + 2, 0, 74, 10, 31, 0, 80, 0,176, 0, 85, 9, 27, 0,168, 0, 7, 0, 90, 0, 7, 0, 91, 0, 7, 0, 75, 10, 7, 0, 76, 10, + 7, 0, 77, 10, 7, 0, 78, 10, 7, 0,253, 2, 7, 0,148, 3, 7, 0, 87, 9, 7, 0, 79, 10, 0, 0, 80, 10, 0, 0, 81, 10, + 14, 0,188, 3,142, 1, 11, 0, 7, 0, 47, 2, 7, 0,115, 9, 7, 0,116, 9, 11, 0, 2, 0, 2, 0, 82, 10, 2, 0, 83, 10, + 2, 0, 84, 10, 2, 0, 85, 10, 2, 0, 86, 10, 2, 0, 87, 10, 2, 0,181, 2,143, 1, 21, 0,143, 1, 0, 0,143, 1, 1, 0, +143, 1, 88, 10, 0, 0, 19, 0, 11, 0, 89, 10, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0, 90, 10, 2, 0, 91, 10, 7, 0, 92, 10, + 7, 0, 93, 10, 11, 0, 94, 10, 2, 0, 95, 10, 2, 0, 96, 10, 4, 0,247, 1, 11, 0,149, 9, 4, 0, 97, 10, 4, 0, 98, 10, +143, 1, 99, 10,144, 1,100, 10,142, 1,101, 10,145, 1, 4, 0, 0, 0,102, 10, 2, 0,103, 10, 2, 0,104, 10, 4, 0, 27, 0, +146, 1, 37, 0,146, 1, 0, 0,146, 1, 1, 0,146, 1,105, 10, 0, 0, 19, 0, 2, 0, 16, 0, 2, 0, 18, 0, 2, 0,196, 8, + 2, 0,176, 2, 2, 0,106, 10, 2, 0, 8, 7, 2, 0, 95, 10, 2, 0, 39, 9, 14, 0, 80, 9, 14, 0,107, 10,146, 1, 38, 0, + 22, 0, 41, 7, 11, 0, 89, 10, 7, 0, 92, 10, 7, 0, 93, 10, 7, 0, 82, 2, 7, 0, 1, 3, 7, 0,108, 10, 4, 0,109, 10, + 0, 0,110, 10, 2, 0,111, 10, 2, 0,112, 10, 7, 0,113, 10, 7, 0,114, 10, 2, 0,115, 10, 2, 0,116, 10, 11, 0,117, 10, + 19, 0,118, 10, 19, 0,119, 10, 19, 0,120, 10,145, 1,154, 0,147, 1,121, 10,148, 1,122, 10,144, 1, 8, 0,144, 1, 0, 0, +144, 1, 1, 0,146, 1,123, 10,146, 1,124, 10,143, 1,125, 10,143, 1,126, 10, 4, 0, 18, 0, 4, 0, 27, 0, 57, 0, 20, 0, + 22, 0, 32, 0, 34, 0, 75, 0,178, 0,182, 3, 14, 0,127, 10, 14, 0,128, 10, 4, 0, 16, 0, 4, 0,129, 10, 4, 0,130, 10, + 4, 0, 18, 0, 4, 0,109, 10, 4, 0,131, 10, 14, 0, 80, 9, 14, 0,107, 10,149, 1,132, 10, 11, 0,133, 10, 11, 0,134, 10, + 4, 0,135, 10, 11, 0,136, 10, 11, 0,137, 10, 11, 0,138, 10,150, 1, 4, 0, 4, 0, 17, 0, 4, 0,230, 2, 4, 0,115, 9, + 4, 0,116, 9,151, 1, 4, 0, 4, 0, 17, 0, 7, 0,230, 2, 7, 0,115, 9, 7, 0,116, 9,152, 1, 2, 0, 0, 0,230, 2, + 0, 0, 86, 1,153, 1, 4, 0, 4, 0, 17, 0, 7, 0,139, 10, 7, 0,115, 9, 7, 0,116, 9,154, 1, 1, 0, 7, 0,140, 10, +155, 1, 6, 0, 4, 0,127, 0, 4, 0,129, 0, 4, 0, 39, 9, 0, 0,141, 10, 0, 0,142, 10, 2, 0, 27, 0,156, 1, 16, 0, + 2, 0,140, 8, 2, 0,141, 8, 2, 0,143, 10, 2, 0,144, 10, 2, 0,145, 10, 2, 0, 68, 0, 2, 0, 42, 7, 2, 0,146, 10, + 7, 0,252, 2, 7, 0,147, 10, 7, 0,148, 10, 2, 0,109, 1, 0, 0,149, 10, 0, 0,150, 10, 4, 0,151, 10, 4, 0,152, 10, +157, 1, 9, 0, 7, 0,153, 10, 7, 0,154, 10, 7, 0,148, 9, 7, 0, 94, 3, 7, 0,155, 10, 7, 0,217, 6, 2, 0, 92, 3, + 0, 0,156, 10, 0, 0, 27, 0,158, 1, 4, 0, 7, 0,157, 10, 7, 0,158, 10, 2, 0, 92, 3, 2, 0, 27, 0,159, 1, 3, 0, + 7, 0,159, 10, 7, 0,211, 8, 7, 0, 14, 0,160, 1, 4, 0, 0, 0, 35, 0,204, 0, 80, 5, 4, 0,129, 0, 4, 0,132, 4, +161, 1, 6, 0, 0, 0,160, 10,204, 0,161, 10, 4, 0,129, 0, 4, 0,132, 4, 4, 0,162, 10, 4, 0, 27, 0,162, 1, 4, 0, + 2, 0,163, 10, 2, 0,164, 10, 4, 0, 30, 0,204, 0,161, 10,163, 1, 9, 0, 7, 0,165, 10, 7, 0,166, 10, 7, 0,167, 10, + 7, 0, 93, 2, 7, 0,168, 10, 7, 0,169, 10, 7, 0,170, 10, 2, 0,171, 10, 2, 0,172, 10,164, 1, 8, 0, 2, 0,173, 10, + 2, 0,174, 10, 2, 0,175, 10, 2, 0,176, 10, 7, 0,177, 10, 7, 0,178, 10, 7, 0,179, 10, 7, 0,180, 10,165, 1, 2, 0, + 7, 0, 5, 0, 7, 0, 6, 0,166, 1, 2, 0, 0, 0,170, 0, 0, 0,181, 10,167, 1, 1, 0, 0, 0, 19, 0,168, 1, 12, 0, + 0, 0,182, 10, 0, 0,183, 10, 0, 0,208, 6, 0, 0,184, 10, 2, 0,143, 10, 2, 0,185, 10, 7, 0,186, 10, 7, 0,187, 10, + 7, 0,188, 10, 7, 0,148, 3, 7, 0,189, 10, 7, 0,190, 10,169, 1, 2, 0, 11, 0,191, 10, 11, 0,192, 10,170, 1, 13, 0, + 0, 0, 72, 5, 0, 0, 16, 0, 0, 0, 92, 3, 0, 0, 94, 3, 0, 0,183, 10, 0, 0,108, 0, 0, 0,181, 2, 7, 0,193, 10, + 7, 0,194, 10, 7, 0,147, 3, 7, 0,195, 10, 7, 0,196, 10, 7, 0,190, 10,171, 1, 8, 0, 7, 0, 46, 9, 7, 0,128, 0, + 7, 0,150, 10, 7, 0,172, 2, 7, 0,197, 10, 7, 0,240, 0, 7, 0,198, 10, 4, 0, 16, 0,172, 1, 4, 0, 2, 0,199, 10, + 2, 0,200, 10, 2, 0,201, 10, 2, 0, 27, 0,173, 1, 8, 0, 7, 0,202, 10, 7, 0,220, 2, 7, 0,203, 10, 7, 0,189, 8, + 7, 0,190, 8, 7, 0,191, 8, 7, 0,204, 10, 7, 0,205, 10,174, 1, 6, 0, 2, 0,206, 10, 2, 0,207, 10, 7, 0,208, 10, + 7, 0,209, 10, 7, 0,210, 10, 7, 0,211, 10,175, 1, 2, 0, 58, 0,212, 10, 59, 0,213, 10,176, 1, 3, 0,175, 1, 78, 6, + 7, 0,214, 10, 7, 0,215, 10,177, 1, 3, 0,175, 1, 78, 6, 4, 0,216, 10, 4, 0, 27, 0,178, 1, 1, 0,175, 1, 78, 6, +179, 1, 3, 0,175, 1, 78, 6, 4, 0,216, 10, 4, 0,217, 10,180, 1, 3, 0,175, 1, 78, 6, 4, 0,218, 10, 4, 0, 27, 0, +181, 1, 1, 0,175, 1, 78, 6,182, 1, 3, 0,175, 1, 78, 6, 4, 0,219, 10, 4, 0, 27, 0,183, 1, 3, 0,175, 1, 78, 6, + 4, 0,220, 10, 4, 0, 27, 0,184, 1, 3, 0,175, 1, 78, 6, 4, 0,221, 10, 4, 0, 27, 0,185, 1, 3, 0,175, 1, 78, 6, + 4, 0,250, 0, 4, 0, 27, 0,186, 1, 1, 0, 0, 0, 19, 0,187, 1, 1, 0, 0, 0, 19, 0,188, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 2, 0, 18, 0, 2, 0,222, 10,189, 1, 10, 0, 2, 0, 62, 4, 2, 0, 18, 0, 7, 0,217, 4, 7, 0,223, 10, + 7, 0,224, 10, 7, 0,225, 10, 7, 0,226, 10,188, 1,227, 10,188, 1,228, 10,188, 1,229, 10, 54, 0, 11, 0, 4, 0, 18, 0, + 4, 0, 63, 0, 4, 0,230, 10, 4, 0,231, 10, 19, 0,232, 10, 19, 0,233, 10,189, 1,234, 10, 7, 0,235, 10, 7, 0,236, 10, + 7, 0,237, 10, 7, 0,238, 10, 0, 1, 10, 0, 4, 0,252, 9, 4, 0,239, 10, 7, 0,240, 10, 7, 0,241, 10, 7, 0,242, 10, + 7, 0,243, 10, 7, 0, 9, 0, 7, 0, 11, 0, 4, 0, 87, 1, 4, 0, 1, 3,255, 0, 18, 0, 4, 0,132, 0, 4, 0,244, 10, + 4, 0,245, 10, 7, 0,246, 10, 4, 0,247, 10, 7, 0,248, 10, 7, 0,249, 10, 4, 0,250, 10, 7, 0,251, 10, 4, 0,252, 10, + 7, 0,253, 10, 0, 1,254, 10, 7, 0,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 4, 0, 3, 11, 4, 0, 27, 0, +190, 1, 4, 0, 42, 0,244, 2, 7, 0, 4, 11, 7, 0,178, 1, 7, 0, 27, 0,213, 0, 34, 0, 22, 0, 32, 0,190, 1, 5, 11, + 54, 0,227, 10, 46, 0, 6, 11, 52, 0, 7, 11, 25, 0,154, 0, 0, 0, 8, 11, 7, 0, 9, 11, 2, 0,108, 6, 2, 0, 10, 11, + 4, 0,108, 0, 4, 0, 18, 0, 7, 0, 11, 11, 4, 0, 90, 2, 4, 0, 12, 11, 7, 0, 13, 11, 7, 0, 14, 11, 7, 0, 15, 11, + 7, 0,178, 1, 4, 0, 16, 11, 7, 0, 17, 11, 0, 0, 18, 11, 0, 0, 19, 11, 0, 0, 20, 11, 0, 0, 21, 11, 7, 0, 22, 11, + 7, 0, 23, 11, 7, 0, 24, 11, 7, 0, 1, 3, 7, 0, 25, 11, 4, 0, 26, 11, 7, 0,240, 5, 7, 0, 27, 11, 7, 0, 28, 11, +191, 1, 10, 0, 4, 0, 16, 0, 4, 0,128, 0, 4, 0, 18, 0, 4, 0, 15, 4, 4, 0, 29, 11, 4, 0, 30, 11, 4, 0, 31, 11, + 4, 0, 70, 0, 0, 0, 19, 0, 11, 0, 2, 0,192, 1, 1, 0, 0, 0, 69, 7, 95, 0, 8, 0,191, 1, 32, 11, 4, 0, 33, 11, + 4, 0, 34, 11, 4, 0, 35, 11, 4, 0, 36, 11, 4, 0, 30, 0, 11, 0, 37, 11,192, 1, 38, 11,193, 1, 5, 0, 7, 0,165, 2, + 7, 0,240, 2, 7, 0, 40, 2, 2, 0,147, 2, 2, 0, 27, 0,194, 1, 5, 0, 7, 0,165, 2, 7, 0,159, 4, 7, 0, 39, 11, + 7, 0, 40, 11, 7, 0,240, 2,195, 1, 5, 0, 27, 0, 41, 11,196, 1, 21, 0, 7, 0, 74, 6, 7, 0, 42, 11, 7, 0, 56, 0, +197, 1, 3, 0, 7, 0, 43, 11, 4, 0, 44, 11, 4, 0, 45, 11,198, 1, 7, 0, 4, 0, 46, 11, 4, 0, 47, 11, 4, 0, 48, 11, + 7, 0, 49, 11, 7, 0, 50, 11, 7, 0, 51, 11, 7, 0, 56, 0,199, 1, 8, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0, 44, 0, + 4, 0, 3, 1, 2, 0, 18, 0, 2, 0, 87, 1, 7, 0,240, 2, 7, 0, 54, 9,200, 1, 7, 0,200, 1, 0, 0,200, 1, 1, 0, + 27, 0, 44, 0, 2, 0,225, 2, 2, 0, 18, 0, 2, 0, 14, 2, 2, 0, 56, 0,201, 1, 17, 0,194, 1, 8, 4,194, 1, 52, 11, +193, 1, 53, 11,194, 1, 37, 9,195, 1, 54, 11, 4, 0, 82, 0, 7, 0,240, 2, 7, 0, 7, 3, 7, 0, 55, 11, 4, 0, 46, 11, + 4, 0, 56, 11, 7, 0, 50, 11, 7, 0, 51, 11, 7, 0,108, 0, 4, 0, 57, 11, 2, 0, 18, 0, 2, 0, 58, 11,202, 1, 15, 0, + 7, 0,255, 0, 7, 0, 59, 11, 7, 0, 43, 11, 7, 0, 60, 11, 7, 0, 61, 11, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, + 7, 0, 65, 11, 7, 0, 66, 11, 7, 0, 67, 11, 7, 0, 68, 11, 7, 0, 69, 11, 4, 0, 18, 0, 4, 0, 70, 11,203, 1,128, 0, + 22, 0, 32, 0, 34, 0, 75, 0,204, 1, 71, 11,202, 1, 72, 11,187, 0,154, 4, 4, 0, 18, 0, 4, 0, 56, 0, 2, 0, 16, 0, + 2, 0, 56, 10, 2, 0, 73, 11, 2, 0,122, 1, 2, 0, 74, 11, 2, 0,232, 3, 2, 0, 75, 11, 2, 0, 76, 11, 2, 0, 77, 11, + 2, 0, 78, 11, 2, 0, 79, 11, 2, 0, 80, 11, 2, 0, 81, 11, 2, 0, 82, 11, 2, 0, 83, 11, 2, 0,224, 5, 2, 0, 84, 11, + 2, 0, 85, 11, 2, 0, 86, 11, 2, 0, 87, 11, 2, 0, 88, 11, 2, 0, 29, 2, 2, 0, 30, 9, 2, 0, 5, 9, 2, 0, 89, 11, + 2, 0, 90, 11, 2, 0, 25, 4, 2, 0, 26, 4, 2, 0, 91, 11, 2, 0, 92, 11, 2, 0, 93, 11, 2, 0, 94, 11, 7, 0, 95, 11, + 7, 0, 96, 11, 7, 0, 97, 11, 7, 0, 98, 11, 7, 0, 99, 11, 7, 0,100, 11, 7, 0,101, 11, 2, 0,154, 5, 2, 0,102, 11, + 7, 0,103, 11, 7, 0,104, 11, 7, 0,105, 11, 7, 0, 12, 9, 7, 0, 91, 0, 7, 0, 7, 3, 7, 0, 18, 9, 7, 0,106, 11, + 7, 0,107, 11, 7, 0,108, 11, 7, 0,109, 11, 7, 0,110, 11, 7, 0,111, 11, 4, 0, 13, 9, 4, 0, 11, 9, 4, 0,112, 11, + 4, 0,113, 11, 2, 0,114, 11, 2, 0,115, 11, 7, 0, 14, 9, 7, 0, 15, 9, 7, 0, 16, 9, 7, 0,116, 11, 7, 0,117, 11, + 7, 0,118, 11, 7, 0,119, 11, 7, 0,120, 11, 7, 0,121, 11, 7, 0,122, 11, 7, 0,123, 11, 7, 0,124, 11, 7, 0,222, 3, + 7, 0,108, 0, 7, 0,125, 11, 7, 0,126, 11, 7, 0,127, 11, 7, 0,128, 11, 7, 0,214, 0, 7, 0,129, 11, 4, 0,130, 11, + 4, 0,131, 11, 7, 0,132, 11, 7, 0,133, 11, 7, 0,134, 11, 7, 0,135, 11, 7, 0,136, 11, 7, 0,213, 0, 7, 0,137, 11, + 7, 0, 52, 4, 7, 0, 50, 4, 7, 0, 51, 4, 7, 0,138, 11, 7, 0,139, 11, 7, 0,140, 11, 7, 0,141, 11, 7, 0,142, 11, 7, 0,143, 11, 7, 0,144, 11, 7, 0,145, 11, 7, 0,146, 11, 7, 0,147, 11, 7, 0,148, 11, 7, 0,149, 11, 7, 0,150, 11, - 7, 0,151, 11, 7, 0,152, 11, 7, 0,153, 11, 7, 0,154, 11, 7, 0,155, 11, 7, 0,156, 11, 4, 0,157, 11, 4, 0,158, 11, - 46, 0,140, 1, 64, 0, 0, 4, 14, 0,159, 11, 64, 0,160, 11, 27, 0,161, 11, 27, 0,162, 11, 31, 0, 80, 0,182, 0, 73, 1, -182, 0,163, 11,150, 0, 52, 0,150, 0, 0, 0,150, 0, 1, 0,203, 1,164, 11,201, 1,165, 11,198, 1,216, 9,190, 0, 80, 4, - 11, 0, 81, 4,205, 1,166, 11,205, 1,167, 11, 14, 0,168, 11, 14, 0,169, 11,135, 0,170, 11,143, 0,171, 11,143, 0,172, 11, - 27, 0,173, 11, 27, 0,174, 11, 27, 0, 38, 0, 14, 0, 24, 10, 0, 0, 19, 0, 7, 0,244, 0, 7, 0, 36, 3, 7, 0,175, 11, - 7, 0,176, 11, 4, 0,214, 2, 4, 0,177, 11, 4, 0, 18, 0, 4, 0, 14, 9, 4, 0,178, 11, 4, 0,179, 11, 4, 0,180, 11, - 4, 0,181, 11, 2, 0,251, 0, 2, 0,182, 11, 2, 0,183, 11, 2, 0,184, 11, 0, 0,185, 11, 2, 0,186, 11, 2, 0,187, 11, - 2, 0,188, 11, 11, 0,189, 11,139, 0,153, 4, 14, 0, 21, 3, 14, 0,190, 11,197, 1,191, 11, 4, 0,192, 11, 4, 0,193, 11, -206, 1,194, 11,141, 0, 33, 3,207, 1,195, 11, 7, 0,196, 11, 7, 0,197, 11, 7, 0,198, 11,137, 0, 38, 0,208, 1,150, 9, - 7, 0,123, 4, 7, 0,199, 11, 7, 0,200, 11, 7, 0, 75, 6, 7, 0,236, 3, 7, 0,222, 3, 7, 0,201, 11, 7, 0, 91, 2, - 7, 0,202, 11, 7, 0,203, 11, 7, 0,204, 11, 7, 0,205, 11, 7, 0,206, 11, 7, 0,207, 11, 7, 0,124, 4, 7, 0,208, 11, - 7, 0,209, 11, 7, 0,210, 11, 7, 0,125, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,211, 11, 7, 0,212, 11, 7, 0,213, 11, - 4, 0,214, 11, 4, 0, 92, 0, 4, 0,215, 11, 4, 0,216, 11, 2, 0,217, 11, 2, 0,218, 11, 2, 0,219, 11, 2, 0,220, 11, - 2, 0,221, 11, 2, 0,222, 11, 2, 0,223, 11, 2, 0, 27, 0,187, 0,154, 4,138, 0, 11, 0,208, 1,224, 11, 7, 0,225, 11, - 7, 0,226, 11, 7, 0,250, 1, 7, 0,227, 11, 7, 0,228, 11, 7, 0,229, 11, 4, 0, 92, 0, 2, 0,230, 11, 2, 0,231, 11, - 64, 0,249, 1,209, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,232, 11,210, 1, 6, 0,210, 1, 0, 0, -210, 1, 1, 0,209, 1,192, 9, 4, 0, 1, 1, 2, 0,233, 11, 2, 0, 18, 0,211, 1, 5, 0,211, 1, 0, 0,211, 1, 1, 0, - 14, 0,234, 11, 4, 0,235, 11, 4, 0, 18, 0,212, 1, 9, 0,212, 1, 0, 0,212, 1, 1, 0, 14, 0,127, 0,211, 1,236, 11, - 4, 0, 18, 0, 2, 0,233, 11, 2, 0,237, 11, 7, 0, 93, 0, 0, 0,238, 11,178, 0, 6, 0, 22, 0, 32, 0, 14, 0,123, 5, - 4, 0, 18, 0, 2, 0,239, 11, 2, 0,240, 11, 11, 0,241, 11,213, 1, 6, 0, 14, 0,242, 11, 4, 0,243, 11, 4, 0,244, 11, - 4, 0, 18, 0, 4, 0, 27, 0,237, 0,245, 11,214, 1, 19, 0, 22, 0, 32, 0,215, 1,246, 11,215, 1,247, 11, 14, 0,248, 11, - 4, 0,249, 11, 2, 0,250, 11, 2, 0,251, 11, 14, 0,252, 11, 14, 0,253, 11,213, 1,254, 11, 14, 0,255, 11, 14, 0, 0, 12, - 14, 0, 1, 12, 14, 0, 2, 12,216, 1, 3, 12,216, 1, 4, 12,216, 1, 5, 12, 14, 0, 6, 12,237, 0, 7, 12,215, 1, 32, 0, -215, 1, 0, 0,215, 1, 1, 0, 11, 0, 8, 12, 4, 0,119, 8, 2, 0, 9, 12, 2, 0, 27, 0, 27, 1, 10, 12, 27, 1, 11, 12, - 0, 0, 12, 12, 2, 0, 13, 12, 2, 0, 14, 12, 2, 0,141, 8, 2, 0,142, 8, 2, 0, 15, 12, 2, 0, 16, 12, 2, 0, 15, 4, - 2, 0, 53, 7, 2, 0, 17, 12, 2, 0, 18, 12, 2, 0, 19, 12, 2, 0, 30, 0,217, 1, 20, 12,218, 1, 21, 12,219, 1, 22, 12, - 4, 0, 23, 12, 4, 0, 24, 12, 11, 0, 25, 12, 14, 0,253, 11, 14, 0,160, 8, 14, 0, 26, 12, 14, 0, 27, 12, 14, 0, 28, 12, -220, 1, 17, 0,220, 1, 0, 0,220, 1, 1, 0, 0, 0, 29, 12, 21, 0, 31, 0, 2, 0, 30, 12, 2, 0, 16, 0, 2, 0, 14, 0, + 7, 0,151, 11, 7, 0,152, 11, 7, 0,153, 11, 7, 0,154, 11, 7, 0,155, 11, 4, 0,156, 11, 4, 0,157, 11, 46, 0,140, 1, + 64, 0, 0, 4, 14, 0,158, 11, 64, 0,159, 11, 27, 0,160, 11, 27, 0,161, 11, 31, 0, 80, 0,182, 0, 73, 1,182, 0,162, 11, +150, 0, 52, 0,150, 0, 0, 0,150, 0, 1, 0,203, 1,163, 11,201, 1,164, 11,198, 1,215, 9,190, 0, 80, 4, 11, 0, 81, 4, +205, 1,165, 11,205, 1,166, 11, 14, 0,167, 11, 14, 0,168, 11,135, 0,169, 11,143, 0,170, 11,143, 0,171, 11, 27, 0,172, 11, + 27, 0,173, 11, 27, 0, 38, 0, 14, 0, 23, 10, 0, 0, 19, 0, 7, 0,244, 0, 7, 0, 36, 3, 7, 0,174, 11, 7, 0,175, 11, + 4, 0,214, 2, 4, 0,176, 11, 4, 0, 18, 0, 4, 0, 13, 9, 4, 0,177, 11, 4, 0,178, 11, 4, 0,179, 11, 4, 0,180, 11, + 2, 0,251, 0, 2, 0,181, 11, 2, 0,182, 11, 2, 0,183, 11, 0, 0,184, 11, 2, 0,185, 11, 2, 0,186, 11, 2, 0,187, 11, + 11, 0,188, 11,139, 0,153, 4, 14, 0, 21, 3, 14, 0,189, 11,197, 1,190, 11, 4, 0,191, 11, 4, 0,192, 11,206, 1,193, 11, +141, 0, 33, 3,207, 1,194, 11, 7, 0,195, 11, 7, 0,196, 11, 7, 0,197, 11,137, 0, 38, 0,208, 1,149, 9, 7, 0,123, 4, + 7, 0,198, 11, 7, 0,199, 11, 7, 0, 74, 6, 7, 0,236, 3, 7, 0,222, 3, 7, 0,200, 11, 7, 0, 92, 2, 7, 0,201, 11, + 7, 0,202, 11, 7, 0,203, 11, 7, 0,204, 11, 7, 0,205, 11, 7, 0,206, 11, 7, 0,124, 4, 7, 0,207, 11, 7, 0,208, 11, + 7, 0,209, 11, 7, 0,125, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,210, 11, 7, 0,211, 11, 7, 0,212, 11, 4, 0,213, 11, + 4, 0, 92, 0, 4, 0,214, 11, 4, 0,215, 11, 2, 0,216, 11, 2, 0,217, 11, 2, 0,218, 11, 2, 0,219, 11, 2, 0,220, 11, + 2, 0,221, 11, 2, 0,222, 11, 2, 0, 27, 0,187, 0,154, 4,138, 0, 11, 0,208, 1,223, 11, 7, 0,224, 11, 7, 0,225, 11, + 7, 0,251, 1, 7, 0,226, 11, 7, 0,227, 11, 7, 0,228, 11, 4, 0, 92, 0, 2, 0,229, 11, 2, 0,230, 11, 64, 0,250, 1, +209, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,231, 11,210, 1, 6, 0,210, 1, 0, 0,210, 1, 1, 0, +209, 1,191, 9, 4, 0, 1, 1, 2, 0,232, 11, 2, 0, 18, 0,211, 1, 5, 0,211, 1, 0, 0,211, 1, 1, 0, 14, 0,233, 11, + 4, 0,234, 11, 4, 0, 18, 0,212, 1, 9, 0,212, 1, 0, 0,212, 1, 1, 0, 14, 0,127, 0,211, 1,235, 11, 4, 0, 18, 0, + 2, 0,232, 11, 2, 0,236, 11, 7, 0, 93, 0, 0, 0,237, 11,178, 0, 6, 0, 22, 0, 32, 0, 14, 0,123, 5, 4, 0, 18, 0, + 2, 0,238, 11, 2, 0,239, 11, 11, 0,240, 11,213, 1, 6, 0, 14, 0,241, 11, 4, 0,242, 11, 4, 0,243, 11, 4, 0, 18, 0, + 4, 0, 27, 0,237, 0,244, 11,214, 1, 19, 0, 22, 0, 32, 0,215, 1,245, 11,215, 1,246, 11, 14, 0,247, 11, 4, 0,248, 11, + 2, 0,249, 11, 2, 0,250, 11, 14, 0,251, 11, 14, 0,252, 11,213, 1,253, 11, 14, 0,254, 11, 14, 0,255, 11, 14, 0, 0, 12, + 14, 0, 1, 12,216, 1, 2, 12,216, 1, 3, 12,216, 1, 4, 12, 14, 0, 5, 12,237, 0, 6, 12,215, 1, 32, 0,215, 1, 0, 0, +215, 1, 1, 0, 11, 0, 7, 12, 4, 0,118, 8, 2, 0, 8, 12, 2, 0, 27, 0, 27, 1, 9, 12, 27, 1, 10, 12, 0, 0, 11, 12, + 2, 0, 12, 12, 2, 0, 13, 12, 2, 0,140, 8, 2, 0,141, 8, 2, 0, 14, 12, 2, 0, 15, 12, 2, 0, 15, 4, 2, 0, 52, 7, + 2, 0, 16, 12, 2, 0, 17, 12, 2, 0, 18, 12, 2, 0, 30, 0,217, 1, 19, 12,218, 1, 20, 12,219, 1, 21, 12, 4, 0, 22, 12, + 4, 0, 23, 12, 11, 0, 24, 12, 14, 0,252, 11, 14, 0,159, 8, 14, 0, 25, 12, 14, 0, 26, 12, 14, 0, 27, 12,220, 1, 18, 0, +220, 1, 0, 0,220, 1, 1, 0, 0, 0, 28, 12, 21, 0, 31, 0, 0, 0, 29, 12, 2, 0, 30, 12, 2, 0, 16, 0, 2, 0, 14, 0, 2, 0, 31, 12, 2, 0, 32, 12, 2, 0, 33, 12, 2, 0, 34, 12, 2, 0, 35, 12, 2, 0, 18, 0, 2, 0, 36, 12, 2, 0, 32, 0, 2, 0, 27, 0,221, 1, 37, 12,222, 1, 4, 0,222, 1, 0, 0,222, 1, 1, 0,220, 1, 38, 12,220, 1, 39, 12,223, 1, 11, 0, -223, 1, 0, 0,223, 1, 1, 0, 14, 0, 40, 12, 14, 0, 41, 12, 0, 0, 29, 12, 2, 0, 42, 12, 2, 0, 43, 12, 2, 0, 18, 0, - 2, 0, 44, 12, 4, 0, 45, 12, 11, 0, 46, 12,216, 1, 7, 0,216, 1, 0, 0,216, 1, 1, 0, 0, 0, 29, 12, 0, 0, 47, 12, - 14, 0, 59, 8, 4, 0, 48, 12, 4, 0, 18, 0,249, 0, 14, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0, 29, 12, 21, 0, 31, 0, -224, 1,135, 8, 11, 0, 49, 12, 11, 0, 50, 12,221, 1, 37, 12,213, 1, 51, 12, 14, 0, 52, 12,249, 0, 53, 12, 32, 1,239, 6, +223, 1, 0, 0,223, 1, 1, 0, 14, 0, 40, 12, 14, 0, 41, 12, 0, 0, 28, 12, 2, 0, 42, 12, 2, 0, 43, 12, 2, 0, 18, 0, + 2, 0, 44, 12, 4, 0, 45, 12, 11, 0, 46, 12,216, 1, 7, 0,216, 1, 0, 0,216, 1, 1, 0, 0, 0, 28, 12, 0, 0, 47, 12, + 14, 0, 58, 8, 4, 0, 48, 12, 4, 0, 18, 0,249, 0, 14, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0, 28, 12, 21, 0, 31, 0, +224, 1,134, 8, 11, 0, 49, 12, 11, 0, 50, 12,221, 1, 37, 12,213, 1, 51, 12, 14, 0, 52, 12,249, 0, 53, 12, 32, 1,238, 6, 2, 0, 18, 0, 2, 0, 86, 1,225, 1, 12, 0,225, 1, 0, 0,225, 1, 1, 0, 11, 0, 2, 0, 11, 0, 54, 12, 0, 0, 19, 0, - 2, 0, 16, 0, 2, 0, 18, 0, 7, 0,138, 9, 7, 0,129, 0, 7, 0,132, 4, 7, 0, 88, 9, 7, 0, 80, 10,226, 1, 5, 0, + 2, 0, 16, 0, 2, 0, 18, 0, 7, 0,137, 9, 7, 0,129, 0, 7, 0,132, 4, 7, 0, 87, 9, 7, 0, 79, 10,226, 1, 5, 0, 7, 0, 55, 12, 4, 0, 56, 12, 4, 0, 57, 12, 4, 0, 87, 1, 4, 0, 18, 0,227, 1, 6, 0, 7, 0, 58, 12, 7, 0, 59, 12, - 7, 0, 60, 12, 7, 0, 61, 12, 4, 0, 16, 0, 4, 0, 18, 0,228, 1, 5, 0, 7, 0,116, 9, 7, 0,117, 9, 7, 0,240, 2, - 2, 0, 42, 2, 2, 0, 43, 2,229, 1, 5, 0,228, 1, 2, 0, 4, 0, 53, 0, 7, 0, 62, 12, 7, 0,116, 9, 7, 0,117, 9, -230, 1, 4, 0, 2, 0, 63, 12, 2, 0, 64, 12, 2, 0, 65, 12, 2, 0, 66, 12,231, 1, 2, 0, 37, 0, 37, 7, 21, 0,156, 9, + 7, 0, 60, 12, 7, 0, 61, 12, 4, 0, 16, 0, 4, 0, 18, 0,228, 1, 5, 0, 7, 0,115, 9, 7, 0,116, 9, 7, 0,240, 2, + 2, 0, 43, 2, 2, 0, 44, 2,229, 1, 5, 0,228, 1, 2, 0, 4, 0, 53, 0, 7, 0, 62, 12, 7, 0,115, 9, 7, 0,116, 9, +230, 1, 4, 0, 2, 0, 63, 12, 2, 0, 64, 12, 2, 0, 65, 12, 2, 0, 66, 12,231, 1, 2, 0, 37, 0, 36, 7, 21, 0,155, 9, 232, 1, 3, 0, 19, 0, 67, 12, 4, 0, 18, 0, 4, 0, 27, 0,233, 1, 6, 0, 7, 0,108, 0, 7, 0,209, 2, 7, 0, 68, 12, - 7, 0, 27, 0, 2, 0,250, 0, 2, 0, 69, 12,234, 1, 5, 0, 7, 0, 70, 12, 7, 0,128, 0, 7, 0,193, 9, 7, 0,194, 9, - 4, 0, 18, 0,235, 1, 6, 0, 22, 0, 42, 7, 0, 0, 71, 12, 0, 0, 72, 12, 2, 0, 73, 12, 2, 0, 18, 0, 4, 0, 74, 12, + 7, 0, 27, 0, 2, 0,250, 0, 2, 0, 69, 12,234, 1, 5, 0, 7, 0, 70, 12, 7, 0,128, 0, 7, 0,192, 9, 7, 0,193, 9, + 4, 0, 18, 0,235, 1, 6, 0, 22, 0, 41, 7, 0, 0, 71, 12, 0, 0, 72, 12, 2, 0, 73, 12, 2, 0, 18, 0, 4, 0, 74, 12, 236, 1, 7, 0,236, 1, 0, 0,236, 1, 1, 0, 0, 0, 19, 0,235, 1, 75, 12, 2, 0, 76, 12, 2, 0, 16, 0, 7, 0, 60, 0, -237, 1, 7, 0, 14, 0, 77, 12, 0, 0, 78, 12, 11, 0, 79, 12, 7, 0, 60, 0, 7, 0,138, 9, 4, 0, 16, 0, 4, 0, 18, 0, -238, 1, 3, 0, 7, 0, 80, 12, 4, 0, 18, 0, 4, 0, 27, 0,239, 1, 15, 0,239, 1, 0, 0,239, 1, 1, 0,106, 1, 11, 10, +237, 1, 7, 0, 14, 0, 77, 12, 0, 0, 78, 12, 11, 0, 79, 12, 7, 0, 60, 0, 7, 0,137, 9, 4, 0, 16, 0, 4, 0, 18, 0, +238, 1, 3, 0, 7, 0, 80, 12, 4, 0, 18, 0, 4, 0, 27, 0,239, 1, 15, 0,239, 1, 0, 0,239, 1, 1, 0,106, 1, 10, 10, 237, 1, 61, 0, 14, 0,188, 3, 30, 0, 49, 0,238, 1, 81, 12, 4, 0, 53, 0, 7, 0, 60, 0, 2, 0, 18, 0, 2, 0, 22, 1, 4, 0, 82, 12, 0, 0, 71, 12, 4, 0, 83, 12, 7, 0, 84, 12,240, 1, 2, 0, 0, 0, 85, 12, 0, 0, 86, 12,241, 1, 4, 0, 241, 1, 0, 0,241, 1, 1, 0,176, 0, 70, 3, 14, 0, 87, 12,242, 1, 25, 0,242, 1, 0, 0,242, 1, 1, 0, 14, 0, 88, 12, -176, 0, 86, 9,241, 1, 89, 12, 14, 0, 90, 12, 14, 0,188, 3, 0, 0, 19, 0, 7, 0,138, 9, 7, 0, 91, 12, 7, 0, 89, 0, - 7, 0, 90, 0, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0,253, 2, 7, 0,148, 3, 7, 0, 88, 9, 7, 0, 80, 10, 2, 0, 92, 12, - 2, 0, 93, 12, 2, 0, 91, 0, 2, 0, 16, 0, 11, 0, 94, 12, 4, 0, 18, 0, 4, 0, 30, 0,243, 1, 6, 0,243, 1, 0, 0, -243, 1, 1, 0, 14, 0, 88, 12, 4, 0, 18, 0, 4, 0, 13, 2, 0, 0, 19, 0,244, 1, 11, 0,244, 1, 0, 0,244, 1, 1, 0, - 22, 0, 42, 7, 0, 0, 95, 12, 4, 0, 74, 12, 2, 0, 96, 12, 2, 0, 27, 0, 0, 0, 71, 12, 4, 0, 82, 12, 2, 0, 18, 0, - 2, 0, 97, 12,245, 1, 10, 0,245, 1, 0, 0,245, 1, 1, 0, 14, 0, 98, 12, 0, 0, 29, 12, 0, 0, 19, 0, 0, 0, 99, 12, +176, 0, 85, 9,241, 1, 89, 12, 14, 0, 90, 12, 14, 0,188, 3, 0, 0, 19, 0, 7, 0,137, 9, 7, 0, 91, 12, 7, 0, 90, 0, + 7, 0, 91, 0, 7, 0, 75, 10, 7, 0, 76, 10, 7, 0,253, 2, 7, 0,148, 3, 7, 0, 87, 9, 7, 0, 79, 10, 2, 0, 92, 12, + 2, 0, 93, 12, 2, 0, 67, 0, 2, 0, 16, 0, 11, 0, 94, 12, 4, 0, 18, 0, 4, 0, 30, 0,243, 1, 6, 0,243, 1, 0, 0, +243, 1, 1, 0, 14, 0, 88, 12, 4, 0, 18, 0, 4, 0, 14, 2, 0, 0, 19, 0,244, 1, 11, 0,244, 1, 0, 0,244, 1, 1, 0, + 22, 0, 41, 7, 0, 0, 95, 12, 4, 0, 74, 12, 2, 0, 96, 12, 2, 0, 27, 0, 0, 0, 71, 12, 4, 0, 82, 12, 2, 0, 18, 0, + 2, 0, 97, 12,245, 1, 10, 0,245, 1, 0, 0,245, 1, 1, 0, 14, 0, 98, 12, 0, 0, 28, 12, 0, 0, 19, 0, 0, 0, 99, 12, 0, 0,100, 12, 2, 0, 18, 0, 2, 0, 97, 12, 4, 0,101, 12,246, 1, 5, 0,246, 1, 0, 0,246, 1, 1, 0, 0, 0, 71, 12, 4, 0, 82, 12, 7, 0,230, 2, 34, 0, 12, 0,176, 0,179, 3,176, 0,102, 12,241, 1, 89, 12, 14, 0,103, 12,242, 1,104, 12, 14, 0,105, 12, 14, 0,106, 12, 4, 0, 18, 0, 4, 0,251, 0, 2, 0,107, 12, 2, 0,108, 12, 7, 0,109, 12,247, 1, 2, 0, 22, 0, 32, 0, 34, 0, 75, 0,248, 1, 5, 0,248, 1, 0, 0,248, 1, 1, 0, 4, 0, 16, 0, 4, 0, 18, 0, 0, 0,172, 5, -249, 1, 6, 0,248, 1,110, 12, 27, 0, 44, 0, 4, 0,111, 12, 7, 0,112, 12, 4, 0,113, 12, 4, 0,253, 9,250, 1, 3, 0, +249, 1, 6, 0,248, 1,110, 12, 27, 0, 44, 0, 4, 0,111, 12, 7, 0,112, 12, 4, 0,113, 12, 4, 0,252, 9,250, 1, 3, 0, 248, 1,110, 12, 4, 0,111, 12, 7, 0,114, 12,251, 1, 8, 0,248, 1,110, 12, 27, 0, 44, 0, 7, 0, 77, 1, 7, 0,115, 12, - 7, 0, 36, 3, 7, 0,149, 9, 4, 0,111, 12, 4, 0,116, 12,252, 1, 5, 0,248, 1,110, 12, 7, 0,117, 12, 7, 0,176, 2, - 7, 0, 3, 3, 7, 0, 56, 0,253, 1, 3, 0,248, 1,110, 12, 7, 0,149, 9, 7, 0,118, 12,196, 1, 4, 0, 7, 0,119, 12, - 7, 0,127, 11, 2, 0,120, 12, 2, 0, 87, 1,254, 1, 14, 0,254, 1, 0, 0,254, 1, 1, 0, 14, 0,121, 12, 14, 0,122, 12, - 14, 0,123, 12, 0, 0,172, 5, 4, 0, 32, 0, 4, 0, 18, 0, 4, 0,124, 12, 7, 0,125, 12, 4, 0,113, 12, 4, 0,253, 9, + 7, 0, 36, 3, 7, 0,148, 9, 4, 0,111, 12, 4, 0,116, 12,252, 1, 5, 0,248, 1,110, 12, 7, 0,117, 12, 7, 0,176, 2, + 7, 0, 3, 3, 7, 0, 56, 0,253, 1, 3, 0,248, 1,110, 12, 7, 0,148, 9, 7, 0,118, 12,196, 1, 4, 0, 7, 0,119, 12, + 7, 0,126, 11, 2, 0,120, 12, 2, 0, 87, 1,254, 1, 14, 0,254, 1, 0, 0,254, 1, 1, 0, 14, 0,121, 12, 14, 0,122, 12, + 14, 0,123, 12, 0, 0,172, 5, 4, 0, 32, 0, 4, 0, 18, 0, 4, 0,124, 12, 7, 0,125, 12, 4, 0,113, 12, 4, 0,252, 9, 7, 0, 84, 4, 7, 0, 5, 3,204, 1, 23, 0, 4, 0,111, 12, 4, 0,126, 12, 7, 0,127, 12, 7, 0, 1, 3, 7, 0,128, 12, - 7, 0,229, 8, 7, 0,119, 12, 7, 0,129, 12, 7, 0,209, 2, 7, 0,247, 10, 7, 0,217, 4, 7, 0,130, 12, 7, 0,131, 12, + 7, 0,228, 8, 7, 0,119, 12, 7, 0,129, 12, 7, 0,209, 2, 7, 0,246, 10, 7, 0,217, 4, 7, 0,130, 12, 7, 0,131, 12, 7, 0,132, 12, 7, 0,133, 12, 7, 0,134, 12, 7, 0,135, 12, 7, 0,136, 12, 7, 0,137, 12, 7, 0,138, 12, 7, 0,139, 12, - 7, 0,140, 12, 14, 0,141, 12,123, 0, 40, 0,122, 0,142, 12,255, 1, 73, 11, 64, 0,143, 12, 64, 0,160, 11, 64, 0,144, 12, + 7, 0,140, 12, 14, 0,141, 12,123, 0, 40, 0,122, 0,142, 12,255, 1, 72, 11, 64, 0,143, 12, 64, 0,159, 11, 64, 0,144, 12, 0, 2,145, 12, 43, 0,169, 0, 43, 0,146, 12, 43, 0,147, 12, 7, 0,148, 12, 7, 0,149, 12, 7, 0,150, 12, 7, 0,151, 12, - 7, 0,152, 12, 7, 0,118, 8, 7, 0,153, 12, 7, 0,178, 1, 7, 0,154, 12, 4, 0,155, 12, 4, 0,156, 12, 4, 0,157, 12, + 7, 0,152, 12, 7, 0,117, 8, 7, 0,153, 12, 7, 0,178, 1, 7, 0,154, 12, 4, 0,155, 12, 4, 0,156, 12, 4, 0,157, 12, 4, 0, 92, 0, 4, 0, 27, 0, 4, 0,158, 12, 2, 0,159, 12, 2, 0,160, 12, 4, 0,161, 12, 7, 0,209, 2, 4, 0,162, 12, 7, 0,163, 12, 4, 0,164, 12, 4, 0,165, 12, 4, 0,166, 12,139, 0,167, 12, 14, 0,168, 12,187, 0,154, 4, 4, 0,169, 12, - 7, 0,170, 12, 7, 0,171, 12, 4, 0, 30, 0,124, 0, 12, 0,122, 0,142, 12,150, 0, 56, 3, 7, 0,143, 1, 7, 0,118, 8, + 7, 0,170, 12, 7, 0,171, 12, 4, 0, 30, 0,124, 0, 12, 0,122, 0,142, 12,150, 0, 56, 3, 7, 0,143, 1, 7, 0,117, 8, 7, 0,172, 12, 7, 0,173, 12, 7, 0,174, 12, 2, 0,175, 12, 2, 0,176, 12, 2, 0,177, 12, 2, 0, 16, 0, 4, 0, 92, 0, -125, 0, 13, 0,122, 0,142, 12,141, 0, 33, 3,143, 0, 35, 3, 7, 0,192, 9, 7, 0,178, 12, 7, 0,179, 12, 7, 0, 79, 1, - 7, 0,180, 12, 4, 0, 33, 10, 4, 0, 29, 3, 2, 0, 16, 0, 2, 0, 27, 0, 4, 0, 30, 0, 1, 2, 15, 0, 22, 0, 32, 0, - 34, 0, 75, 0, 46, 1,227, 8, 7, 0,181, 12, 7, 0,182, 12, 7, 0,183, 12, 7, 0,184, 12, 7, 0,148, 9, 7, 0,185, 12, - 7, 0,186, 12, 7, 0,187, 12, 7, 0, 84, 4, 7, 0,229, 8, 2, 0, 18, 0, 2, 0,112, 9,231, 0, 3, 0, 4, 0,126, 0, - 2, 0,215, 6, 2, 0,188, 12, 2, 2, 5, 0, 0, 0,193, 8, 2, 0,194, 8, 2, 0, 72, 5, 2, 0,189, 12, 2, 0,190, 12, +125, 0, 13, 0,122, 0,142, 12,141, 0, 33, 3,143, 0, 35, 3, 7, 0,191, 9, 7, 0,178, 12, 7, 0,179, 12, 7, 0, 79, 1, + 7, 0,180, 12, 4, 0, 32, 10, 4, 0, 29, 3, 2, 0, 16, 0, 2, 0, 27, 0, 4, 0, 30, 0, 1, 2, 15, 0, 22, 0, 32, 0, + 34, 0, 75, 0, 46, 1,226, 8, 7, 0,181, 12, 7, 0,182, 12, 7, 0,183, 12, 7, 0,184, 12, 7, 0,147, 9, 7, 0,185, 12, + 7, 0,186, 12, 7, 0,187, 12, 7, 0, 84, 4, 7, 0,228, 8, 2, 0, 18, 0, 2, 0,111, 9,231, 0, 3, 0, 4, 0,126, 0, + 2, 0,214, 6, 2, 0,188, 12, 2, 2, 5, 0, 0, 0,192, 8, 2, 0,193, 8, 2, 0, 72, 5, 2, 0,189, 12, 2, 0,190, 12, 229, 0, 16, 0, 22, 0, 32, 0, 34, 0, 75, 0, 0, 0, 35, 0, 4, 0,143, 0, 4, 0,144, 0, 4, 0,191, 12, 7, 0,162, 0, - 7, 0,163, 0, 44, 0,138, 0, 3, 2,150, 9,178, 0,182, 3, 4, 2,192, 12, 11, 0,193, 12, 2, 2,194, 12, 4, 0, 18, 0, + 7, 0,163, 0, 44, 0,138, 0, 3, 2,149, 9,178, 0,182, 3, 4, 2,192, 12, 11, 0,193, 12, 2, 2,194, 12, 4, 0, 18, 0, 4, 0, 22, 0, 13, 1, 10, 0, 4, 0,132, 0, 4, 0,195, 12, 52, 0,196, 12, 7, 0,197, 12, 2, 0,198, 12, 0, 0,181, 2, 4, 0,126, 0, 5, 2,175, 3, 6, 2,199, 12, 7, 0,200, 12, 7, 2, 3, 0, 4, 0,126, 0, 7, 0,201, 12, 7, 0, 79, 1, - 8, 2, 11, 0, 11, 0,202, 12, 7, 0,203, 12, 7, 0,204, 12, 7, 0, 27, 0, 7, 0,205, 12, 2, 0,206, 12, 2, 0, 91, 0, + 8, 2, 11, 0, 11, 0,202, 12, 7, 0,203, 12, 7, 0,204, 12, 7, 0, 27, 0, 7, 0,205, 12, 2, 0,206, 12, 2, 0, 67, 0, 7, 0,207, 12, 7, 0,208, 12, 7, 0,209, 12, 7, 0,210, 12, 6, 2, 3, 0, 7, 0,211, 12, 4, 0,126, 0, 4, 0, 18, 0, 5, 2, 24, 0, 5, 2, 0, 0, 5, 2, 1, 0, 0, 0, 19, 0, 7, 0,212, 12, 7, 0,213, 12, 7, 0,214, 12, 7, 0,215, 12, - 7, 0, 5, 11, 4, 0,216, 12, 4, 0,217, 12, 6, 2,218, 12, 7, 0,219, 12, 7, 0,201, 12, 4, 0, 18, 0, 4, 0,220, 12, + 7, 0, 4, 11, 4, 0,216, 12, 4, 0,217, 12, 6, 2,218, 12, 7, 0,219, 12, 7, 0,201, 12, 4, 0, 18, 0, 4, 0,220, 12, 4, 0,221, 12, 7, 0, 84, 12, 2, 0,222, 12, 2, 0,227, 3, 2, 0,223, 12, 2, 0,224, 12, 2, 0,225, 12, 2, 0, 30, 0, 7, 0,226, 12, 9, 2, 22, 0, 4, 0, 18, 0, 2, 0,227, 12, 2, 0,228, 12, 7, 0,229, 12, 2, 0,230, 12, 2, 0,231, 12, 2, 0,232, 12, 2, 0,233, 12, 2, 0,234, 12, 2, 0,235, 12, 2, 0,236, 12, 2, 0, 3, 3, 4, 0,237, 12, 4, 0,238, 12, - 2, 0,239, 12, 2, 0,240, 12, 7, 0, 94, 1, 4, 0,241, 12, 4, 0,242, 12, 7, 0,243, 12, 7, 0,244, 12, 4, 0, 74, 0, + 2, 0,239, 12, 2, 0,240, 12, 7, 0, 94, 1, 4, 0,241, 12, 4, 0,242, 12, 7, 0,243, 12, 7, 0,244, 12, 4, 0,247, 1, 10, 2, 12, 0, 4, 0, 18, 0, 4, 0,245, 12, 4, 0,246, 12, 7, 0,247, 12, 5, 2,248, 12, 7, 0,249, 12, 7, 0,250, 12, 7, 0,251, 12, 4, 0,190, 1, 4, 0,132, 0, 7, 0,148, 3, 52, 0,252, 12, 11, 2, 5, 0, 4, 0, 18, 0, 7, 0,201, 12, 4, 0,253, 12, 4, 0,254, 12, 7, 2,255, 12, 12, 2, 7, 0, 12, 2, 0, 0, 12, 2, 1, 0, 0, 0, 19, 0, 4, 0, 18, 0, 7, 0,148, 3, 14, 0, 0, 13, 11, 2, 1, 13, 13, 2, 1, 0, 0, 0, 2, 13, 4, 2, 10, 0, 9, 2, 3, 13, 8, 2, 4, 13, - 14, 0, 0, 13, 11, 2, 1, 13, 10, 2, 5, 13, 5, 2, 6, 13, 14, 0, 7, 13, 4, 0, 8, 13, 4, 0, 9, 13, 13, 2, 90, 6, + 14, 0, 0, 13, 11, 2, 1, 13, 10, 2, 5, 13, 5, 2, 6, 13, 14, 0, 7, 13, 4, 0, 8, 13, 4, 0, 9, 13, 13, 2, 89, 6, 14, 2, 48, 0, 14, 2, 0, 0, 14, 2, 1, 0,169, 0,145, 3, 15, 2, 2, 0, 64, 0, 10, 13,187, 0,154, 4,139, 0,153, 4, - 14, 0, 21, 3, 4, 0, 11, 13, 0, 0, 19, 0, 2, 0,162, 10, 2, 0, 16, 0, 2, 0, 12, 13, 2, 0, 13, 13, 2, 0, 14, 13, - 2, 0, 15, 13, 2, 0, 16, 13, 2, 0, 17, 13, 4, 0, 92, 0, 4, 0,186, 3, 4, 0, 18, 13, 4, 0, 19, 13, 4, 0,193, 9, - 4, 0,194, 9, 4, 0, 27, 0, 7, 0, 20, 13, 47, 0, 21, 13, 0, 0, 22, 13, 4, 0, 23, 13, 4, 0,161, 12, 7, 0, 24, 13, + 14, 0, 21, 3, 4, 0, 11, 13, 0, 0, 19, 0, 2, 0,161, 10, 2, 0, 16, 0, 2, 0, 12, 13, 2, 0, 13, 13, 2, 0, 14, 13, + 2, 0, 15, 13, 2, 0, 16, 13, 2, 0, 17, 13, 4, 0, 92, 0, 4, 0,186, 3, 4, 0, 18, 13, 4, 0, 19, 13, 4, 0,192, 9, + 4, 0,193, 9, 4, 0, 27, 0, 7, 0, 20, 13, 47, 0, 21, 13, 0, 0, 22, 13, 4, 0, 23, 13, 4, 0,161, 12, 7, 0, 24, 13, 7, 0, 25, 13, 7, 0, 26, 13, 7, 0, 27, 13, 7, 0, 28, 13, 7, 0, 29, 13, 7, 0, 30, 13, 7, 0, 31, 13, 7, 0, 32, 13, 7, 0, 33, 13, 7, 0, 34, 13, 7, 0, 35, 13, 7, 0, 36, 13, 7, 0, 37, 13, 0, 0,202, 2, 0, 0, 38, 13, 0, 0, 39, 13, 0, 0, 40, 13,169, 0, 7, 0,168, 0, 41, 13,143, 0, 35, 3, 14, 0, 42, 13, 2, 0, 43, 13, 2, 0, 92, 0, 4, 0, 27, 0, - 0, 0, 44, 13,170, 0, 24, 0,168, 0, 41, 13,143, 0, 35, 3,150, 0, 56, 3, 63, 0, 25, 2, 4, 0, 92, 0, 4, 0, 45, 13, + 0, 0, 44, 13,170, 0, 24, 0,168, 0, 41, 13,143, 0, 35, 3,150, 0, 56, 3, 63, 0, 26, 2, 4, 0, 92, 0, 4, 0, 45, 13, 7, 0,185, 0, 7, 0,186, 0, 7, 0,187, 0, 7, 0,178, 1, 7, 0, 46, 13, 7, 0, 47, 13, 7, 0, 48, 13, 7, 0, 49, 13, - 50, 0, 50, 13, 50, 0, 51, 13, 2, 0, 52, 13, 2, 0,222, 10, 2, 0, 53, 13, 2, 0, 27, 0, 7, 0, 54, 13, 7, 0, 55, 13, + 50, 0, 50, 13, 50, 0, 51, 13, 2, 0, 52, 13, 2, 0,221, 10, 2, 0, 53, 13, 2, 0, 27, 0, 7, 0, 54, 13, 7, 0, 55, 13, 7, 0, 56, 13, 7, 0, 57, 13, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; From 6cc48ec555f06ab8dbf7cfb262e06d1fcebf334c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 07:23:20 +0000 Subject: [PATCH 092/158] mesh.validate() / BKE_mesh_validate() --- functions now check for duplicate vertices used within the same polygon. (which would crash otherwise) --- source/blender/blenkernel/intern/mesh_validate.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index aebbcd4208d..446ad399e11 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -240,9 +240,23 @@ int BKE_mesh_validate_arrays(Mesh *mesh, PRINT(" loop %u has invalid vert reference (%u)\n", sp->loopstart + j, ml->v); sp->invalid = TRUE; } + + mverts[ml->v].flag |= ME_VERT_TMP_TAG; *v = ml->v; } + /* is the same vertex used more then once */ + if (!sp->invalid) { + v = sp->verts; + for (j = 0; j < mp->totloop; j++, v++) { + if ((mverts[*v].flag & ME_VERT_TMP_TAG) == 0) { + PRINT(" poly %u has duplicate vert reference at corner (%u)\n", i, j); + sp->invalid = TRUE; + } + mverts[*v].flag &= ~ME_VERT_TMP_TAG; + } + } + if (sp->invalid) continue; From bb7db9383737bb49f78d8e63225aa2094abeb7c4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 10:09:31 +0000 Subject: [PATCH 093/158] temp disable 'use last operator settings' - too unreliable, we keep getting reports in about some menu item not working right, will try have this ready by next release. --- .../windowmanager/intern/wm_event_system.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 42fb03d5d64..ae02ff33950 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -747,6 +747,7 @@ static void wm_region_mouse_co(bContext *C, wmEvent *event) } } +#if 0 /* disabling for 2.63 release, since we keep getting reports some menu items are leaving props undefined */ int WM_operator_last_properties_init(wmOperator *op) { int change = FALSE; @@ -805,6 +806,20 @@ int WM_operator_last_properties_store(wmOperator *op) } } +#else + +int WM_operator_last_properties_init(wmOperator *UNUSED(op)) +{ + return FALSE; +} + +int WM_operator_last_properties_store(wmOperator *UNUSED(op)) +{ + return FALSE; +} + +#endif + static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, PointerRNA *properties, ReportList *reports, short poll_only) { wmWindowManager *wm = CTX_wm_manager(C); From 7669d0e3179b569efb50270207c5555ae5427daa Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 10:24:31 +0000 Subject: [PATCH 094/158] disable bevel for release after discussion with brecht and sergey, this works far too poorly to be included in release. --- source/blender/editors/mesh/editmesh_tools.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index 005947ce49b..f3737925850 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -4091,7 +4091,7 @@ static int edbm_bevel_exec(bContext *C, wmOperator *op) BMEdge *eed; BMOperator bmop; float factor = RNA_float_get(op->ptr, "percent") /*, dfac */ /* UNUSED */, df, s; - int i, recursion = RNA_int_get(op->ptr, "recursion"); + int i, recursion = 1; /* RNA_int_get(op->ptr, "recursion"); */ /* temp removed, see comment below */ const int use_even = RNA_boolean_get(op->ptr, "use_even"); const int use_dist = RNA_boolean_get(op->ptr, "use_dist"); float *w = NULL, ftot; @@ -4168,7 +4168,8 @@ void MESH_OT_bevel(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_float(ot->srna, "percent", 0.5f, -FLT_MAX, FLT_MAX, "Percentage", "", 0.0f, 1.0f); - RNA_def_int(ot->srna, "recursion", 1, 1, 50, "Recursion Level", "Recursion Level", 1, 8); +// XXX, disabled for 2.63 release, needs to work much better without overlap before we can give to users. +// RNA_def_int(ot->srna, "recursion", 1, 1, 50, "Recursion Level", "Recursion Level", 1, 8); RNA_def_boolean(ot->srna, "use_even", FALSE, "Even", "Calculate evenly spaced bevel"); RNA_def_boolean(ot->srna, "use_dist", FALSE, "Distance", "Interpret the percent in blender units"); From 7ac4bd9105b93b621a3cb5715b1fc8bfa22c5867 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Wed, 25 Apr 2012 11:15:55 +0000 Subject: [PATCH 095/158] Enable building of the installer with MinGW-w64, patch by Caleb Joseph (Dobz) thanks a lot! --- build_files/scons/tools/btools.py | 8 +++----- release/windows/installer/00.sconsblender.nsi | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index ca0ac2dd8da..efc80fcd3c5 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -665,12 +665,10 @@ def NSIS_Installer(target=None, source=None, env=None): if env['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'win64-vc', 'win64-mingw'): print "NSIS installer is only available on Windows." Exit() - if env['OURPLATFORM'] == 'win32-vc': + if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw'): bitness = '32' - elif env['OURPLATFORM'] == 'win64-vc': + elif env['OURPLATFORM'] in ('win64-vc', 'win64-mingw'): bitness = '64' - else: - bitness = '-mingw' start_dir = os.getcwd() rel_dir = os.path.join(start_dir,'release','windows','installer') @@ -762,7 +760,7 @@ def NSIS_Installer(target=None, source=None, env=None): cmdline = "makensis " + "\""+tmpnsi+"\"" startupinfo = subprocess.STARTUPINFO() - startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + #startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, startupinfo=startupinfo, shell = True) data, err = proc.communicate() diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi index eb9b6629108..f6e5b783faa 100644 --- a/release/windows/installer/00.sconsblender.nsi +++ b/release/windows/installer/00.sconsblender.nsi @@ -90,7 +90,6 @@ Function .onInit ${If} ${RunningX64} ${If} "[BITNESS]" == "32" - ${OrIf} "[BITNESS]" == "-mingw" StrCpy $INSTDIR "$PROGRAMFILES32\Blender Foundation\Blender" ; Can't use InstallDir inside Section ${ElseIf} "[BITNESS]" == "64" StrCpy $INSTDIR "$PROGRAMFILES64\Blender Foundation\Blender" From d53133d25f7373ee03b5d53f5eaf35cd9fc26d4e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 25 Apr 2012 11:31:01 +0000 Subject: [PATCH 096/158] fix for border de-selecting with sync selection --- source/blender/editors/uvedit/uvedit_ops.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index d0486807e8f..1c62ce3a684 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -2512,15 +2512,14 @@ static int border_select_exec(bContext *C, wmOperator *op) } if (change) { - /* make sure newly selected vert selection is updated*/ -#if 0 /* BM_elem_select_set API handles all of this? */ + /* bmesh API habdles flushing but not on de-select */ if (ts->uv_flag & UV_SYNC_SELECTION) { if (ts->selectmode != SCE_SELECT_FACE) { - if (select) EDBM_select_flush(em); - else EDBM_deselect_flush(em); + if (select == FALSE) { + EDBM_deselect_flush(em); + } } } -#endif if (ts->uv_flag & UV_SYNC_SELECTION) { if (select == FALSE) { From 3a947461699742b7ca312f2deeb748589012327c Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 25 Apr 2012 18:12:41 +0000 Subject: [PATCH 097/158] 2.6 Ocean Modifier UI: * Fix an alignment issue, column_flow layout apparently does not use the whole width, leaving a small gap on the right side. This should be fixed in the layout engine, but too close to release now. --- .../startup/bl_ui/properties_data_modifier.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index a4e7d107099..9c4e79c4c34 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -440,11 +440,15 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): layout.separator() - flow = layout.column_flow() - flow.prop(md, "time") - flow.prop(md, "resolution") - flow.prop(md, "spatial_size") - flow.prop(md, "depth") + split = layout.split() + + col = split.column() + col.prop(md, "time") + col.prop(md, "resolution") + + col = split.column() + col.prop(md, "spatial_size") + col.prop(md, "depth") layout.label("Waves:") From 2f74471dd96382521c57e53fc99fb0df3974f7dc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 02:24:55 +0000 Subject: [PATCH 098/158] fix invalid memcpy() use in text editor (backspace would call memcpy with overlapping source and destination). --- source/blender/blenkernel/intern/text.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index a7e49dd7fc8..1197ec23907 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -2652,7 +2652,10 @@ void txt_backspace_char (Text *text) } while (mrk && mrk->lineno==lineno); } - memcpy(text->curl->line + text->curc - c_len, text->curl->line + text->curc, text->curl->len-text->curc+1); + /* source and destination overlap, don't use memcpy() */ + memmove(text->curl->line + text->curc - c_len, + text->curl->line + text->curc, + text->curl->len - text->curc + 1); text->curl->len-= c_len; text->curc-= c_len; From 0daa5b0c474067b54b2e26a3408df03c0042f9d8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 03:40:10 +0000 Subject: [PATCH 099/158] bmesh: inset tool depth used bad normals for edge verts. --- source/blender/bmesh/operators/bmo_inset.c | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index ee52f8bc0a9..712f6b736d6 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -495,8 +495,6 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) BM_face_copy_shared(bm, f); } - MEM_freeN(edge_info); - /* we could flag new edges/verts too, is it useful? */ BMO_slot_buffer_from_enabled_flag(bm, op, "faceout", BM_FACE, ELE_NEW); @@ -505,6 +503,28 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) float (*varr_co)[3]; BMOIter oiter; + /* we need to re-calculate tagged normals, but for this purpose we can copy tagged verts from the + * faces they inset from, */ + for (i = 0, es = edge_info; i < edge_info_len; i++, es++) { + zero_v3(es->e_new->v1->no); + zero_v3(es->e_new->v2->no); + } + for (i = 0, es = edge_info; i < edge_info_len; i++, es++) { + float *no = es->l->f->no; + add_v3_v3(es->e_new->v1->no, no); + add_v3_v3(es->e_new->v2->no, no); + } + for (i = 0, es = edge_info; i < edge_info_len; i++, es++) { + /* annoying, avoid normalizing twice */ + if (len_squared_v3(es->e_new->v1->no) != 1.0f) { + normalize_v3(es->e_new->v1->no); + } + if (len_squared_v3(es->e_new->v2->no) != 1.0f) { + normalize_v3(es->e_new->v2->no); + } + } + /* done correcting edge verts normals */ + /* untag verts */ BM_mesh_elem_hflag_disable_all(bm, BM_VERT, BM_ELEM_TAG, FALSE); @@ -537,4 +557,6 @@ void bmo_inset_exec(BMesh *bm, BMOperator *op) } MEM_freeN(varr_co); } + + MEM_freeN(edge_info); } From af7eb3f2106612543e1e0a22e639fdfde3035dc8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 04:03:25 +0000 Subject: [PATCH 100/158] fix for buffer overrun crash with saving scene name longer then 24 characters. writing render info would try write= 64 length string into 24 length buffer. updated py script to extract render info too. --- release/scripts/modules/blend_render_info.py | 2 +- source/blender/blenloader/intern/writefile.c | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py index 7c30b480d6b..5a09f664637 100755 --- a/release/scripts/modules/blend_render_info.py +++ b/release/scripts/modules/blend_render_info.py @@ -75,7 +75,7 @@ def read_blend_rend_chunk(path): # Now we want the scene name, start and end frame. this is 32bites long start_frame, end_frame = struct.unpack('>2i' if is_big_endian else '<2i', blendfile.read(8)) - scene_name = blendfile.read(24) + scene_name = blendfile.read(64) scene_name = scene_name[:scene_name.index(b'\0')] diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 0f2990a9157..61969c7878a 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -757,24 +757,30 @@ static void current_screen_compat(Main *mainvar, bScreen **screen) *screen= (window)? window->screen: NULL; } +typedef struct RenderInfo { + int sfra; + int efra; + char scene_name[MAX_ID_NAME - 2]; +} RenderInfo; + static void write_renderinfo(WriteData *wd, Main *mainvar) /* for renderdeamon */ { bScreen *curscreen; Scene *sce; - int data[8]; + RenderInfo data; /* XXX in future, handle multiple windows with multiple screnes? */ current_screen_compat(mainvar, &curscreen); for (sce= mainvar->scene.first; sce; sce= sce->id.next) { if (sce->id.lib==NULL && ( sce==curscreen->scene || (sce->r.scemode & R_BG_RENDER)) ) { - data[0]= sce->r.sfra; - data[1]= sce->r.efra; + data.sfra = sce->r.sfra; + data.efra = sce->r.efra; + memset(data.scene_name, 0, sizeof(data.scene_name)); - memset(data+2, 0, sizeof(int)*6); - BLI_strncpy((char *)(data+2), sce->id.name+2, sizeof(sce->id.name)-2); + BLI_strncpy(data.scene_name, sce->id.name + 2, sizeof(data.scene_name)); - writedata(wd, REND, 32, data); + writedata(wd, REND, sizeof(data), &data); } } } From bd7d3c5e9db2af90b81b3506c616f66e72e85e03 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 04:15:27 +0000 Subject: [PATCH 101/158] removed unneeded fnmatch include from outliner, comment files as needing header cleanup. --- .../editors/space_outliner/outliner_edit.c | 11 ++--------- .../editors/space_outliner/outliner_select.c | 12 ++---------- .../editors/space_outliner/outliner_tools.c | 12 ++---------- .../editors/space_outliner/outliner_tree.c | 19 +++++++++---------- 4 files changed, 15 insertions(+), 39 deletions(-) diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c index 981c4a5d867..4c1c6b15042 100644 --- a/source/blender/editors/space_outliner/outliner_edit.c +++ b/source/blender/editors/space_outliner/outliner_edit.c @@ -29,6 +29,8 @@ * \ingroup spoutliner */ +/* TODO - HEADER CLEANUP - many of these are copy-pasted */ + #include #include #include @@ -56,15 +58,6 @@ #include "BLI_utildefines.h" #include "BLI_math_base.h" -#if defined WIN32 && !defined _LIBC -# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ -#else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -#endif - #include "BLF_translation.h" #include "BKE_animsys.h" diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index c7aa4dc4e92..5594f22fc91 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -29,6 +29,8 @@ * \ingroup spoutliner */ +/* TODO - HEADER CLEANUP - many of these are copy-pasted */ + #include #include #include @@ -56,16 +58,6 @@ #include "BLI_utildefines.h" #include "BLI_math_base.h" -#if defined WIN32 && !defined _LIBC -# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ -#else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -#endif - - #include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_deform.h" diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index ba3637a88af..3a8f8c54d05 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -29,6 +29,8 @@ * \ingroup spoutliner */ +/* TODO - HEADER CLEANUP - many of these are copy-pasted */ + #include #include #include @@ -56,16 +58,6 @@ #include "BLI_utildefines.h" #include "BLI_math_base.h" -#if defined WIN32 && !defined _LIBC -# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ -#else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -#endif - - #include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_deform.h" diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index e83fce0cf05..83c2bdaf347 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -34,6 +34,15 @@ #include #include +#if defined WIN32 && !defined _LIBC || defined __sun +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# endif +# include +#endif + #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" @@ -57,16 +66,6 @@ #include "BLI_utildefines.h" #include "BLI_math_base.h" -#if defined WIN32 && !defined _LIBC || defined __sun -# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ -#else -# ifndef _GNU_SOURCE -# define _GNU_SOURCE -# endif -# include -#endif - - #include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_deform.h" From 61015fbd8cf4c4ee70773a12e9463a7b7071ef20 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 04:41:27 +0000 Subject: [PATCH 102/158] fix for memory leak in the knife tool --- source/blender/editors/mesh/editmesh_knife.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index 0ace06b1a1a..670b06887eb 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2746,6 +2746,9 @@ static void knifetool_exit(bContext *C, wmOperator *op) if (kcd->cagecos) MEM_freeN(kcd->cagecos); + if (kcd->linehits) + MEM_freeN(kcd->linehits); + /* destroy kcd itself */ MEM_freeN(kcd); op->customdata = NULL; From 5b0fcbd8f908b85ad344d7caeac892d50c18f33f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 05:17:54 +0000 Subject: [PATCH 103/158] outliner header cleanup (copy pasted headers when split up Im guessing) --- .../editors/space_outliner/outliner_draw.c | 26 ++------------ .../editors/space_outliner/outliner_edit.c | 35 +------------------ .../editors/space_outliner/outliner_ops.c | 6 +--- .../editors/space_outliner/outliner_select.c | 35 ++----------------- .../editors/space_outliner/outliner_tools.c | 22 ------------ .../editors/space_outliner/outliner_tree.c | 24 ------------- 6 files changed, 8 insertions(+), 140 deletions(-) diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 73289dce968..779475943dd 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -29,49 +29,30 @@ * \ingroup spoutliner */ -#include -#include - -#include "MEM_guardedalloc.h" - -#include "DNA_anim_types.h" #include "DNA_armature_types.h" -#include "DNA_camera_types.h" #include "DNA_group_types.h" -#include "DNA_key_types.h" #include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meta_types.h" -#include "DNA_particle_types.h" -#include "DNA_scene_types.h" -#include "DNA_world_types.h" -#include "DNA_sequence_types.h" #include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_sequence_types.h" #include "BLI_blenlib.h" #include "BLI_utildefines.h" +#include "BLI_ghash.h" -#include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_deform.h" #include "BKE_depsgraph.h" -#include "BKE_fcurve.h" #include "BKE_global.h" -#include "BKE_group.h" #include "BKE_library.h" #include "BKE_main.h" #include "BKE_modifier.h" #include "BKE_report.h" #include "BKE_scene.h" -#include "BKE_sequencer.h" - -#include "BLI_ghash.h" #include "ED_armature.h" #include "ED_object.h" #include "ED_screen.h" -#include "ED_util.h" #include "WM_api.h" #include "WM_types.h" @@ -85,7 +66,6 @@ #include "UI_view2d.h" #include "RNA_access.h" -#include "RNA_define.h" #include "outliner_intern.h" diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c index 4c1c6b15042..62d93f62d0f 100644 --- a/source/blender/editors/space_outliner/outliner_edit.c +++ b/source/blender/editors/space_outliner/outliner_edit.c @@ -29,72 +29,39 @@ * \ingroup spoutliner */ -/* TODO - HEADER CLEANUP - many of these are copy-pasted */ - -#include -#include -#include -#include - #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_camera_types.h" #include "DNA_group_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meta_types.h" -#include "DNA_particle_types.h" #include "DNA_scene_types.h" -#include "DNA_world_types.h" -#include "DNA_sequence_types.h" #include "DNA_object_types.h" #include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_math_base.h" #include "BLF_translation.h" #include "BKE_animsys.h" #include "BKE_context.h" -#include "BKE_deform.h" #include "BKE_depsgraph.h" -#include "BKE_fcurve.h" -#include "BKE_global.h" -#include "BKE_group.h" #include "BKE_library.h" #include "BKE_main.h" -#include "BKE_modifier.h" #include "BKE_report.h" #include "BKE_scene.h" -#include "BKE_sequencer.h" -#include "ED_armature.h" #include "ED_object.h" #include "ED_screen.h" -#include "ED_util.h" +#include "ED_keyframing.h" #include "WM_api.h" #include "WM_types.h" -#include "BIF_gl.h" -#include "BIF_glutil.h" - #include "UI_interface.h" -#include "UI_interface_icons.h" #include "UI_resources.h" #include "UI_view2d.h" #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_enum_types.h" - -#include "ED_keyframing.h" #include "outliner_intern.h" diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index d2ef4573ccf..12f8f2cb38b 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -28,9 +28,6 @@ * \ingroup spoutliner */ - -#include - #include "DNA_space_types.h" #include "WM_api.h" @@ -42,10 +39,9 @@ #include "outliner_intern.h" + /* ************************** registration **********************************/ - - void outliner_operatortypes(void) { WM_operatortype_append(OUTLINER_OT_item_activate); diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index 5594f22fc91..f43e9b19672 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -29,46 +29,21 @@ * \ingroup spoutliner */ -/* TODO - HEADER CLEANUP - many of these are copy-pasted */ - -#include -#include -#include -#include - #include "MEM_guardedalloc.h" -#include "DNA_anim_types.h" #include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_camera_types.h" #include "DNA_group_types.h" -#include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meta_types.h" -#include "DNA_particle_types.h" -#include "DNA_scene_types.h" -#include "DNA_world_types.h" -#include "DNA_sequence_types.h" #include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_sequence_types.h" +#include "DNA_world_types.h" -#include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_math_base.h" -#include "BKE_animsys.h" #include "BKE_context.h" -#include "BKE_deform.h" #include "BKE_depsgraph.h" -#include "BKE_fcurve.h" -#include "BKE_global.h" -#include "BKE_group.h" -#include "BKE_library.h" -#include "BKE_main.h" -#include "BKE_modifier.h" -#include "BKE_report.h" #include "BKE_scene.h" #include "BKE_sequencer.h" @@ -80,12 +55,8 @@ #include "WM_api.h" #include "WM_types.h" -#include "BIF_gl.h" -#include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "RNA_access.h" diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index 3a8f8c54d05..5c527face83 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -29,48 +29,31 @@ * \ingroup spoutliner */ -/* TODO - HEADER CLEANUP - many of these are copy-pasted */ - -#include -#include -#include -#include - #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" #include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_camera_types.h" #include "DNA_group_types.h" -#include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_meta_types.h" -#include "DNA_particle_types.h" #include "DNA_scene_types.h" #include "DNA_world_types.h" -#include "DNA_sequence_types.h" #include "DNA_object_types.h" #include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_math_base.h" #include "BKE_animsys.h" #include "BKE_context.h" -#include "BKE_deform.h" #include "BKE_depsgraph.h" #include "BKE_fcurve.h" -#include "BKE_global.h" #include "BKE_group.h" #include "BKE_library.h" #include "BKE_main.h" -#include "BKE_modifier.h" #include "BKE_report.h" #include "BKE_scene.h" -#include "BKE_sequencer.h" #include "ED_armature.h" #include "ED_object.h" @@ -80,12 +63,7 @@ #include "WM_api.h" #include "WM_types.h" -#include "BIF_gl.h" -#include "BIF_glutil.h" - #include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "RNA_access.h" diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index 83c2bdaf347..e3c89c82ec6 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -31,8 +31,6 @@ #include #include -#include -#include #if defined WIN32 && !defined _LIBC || defined __sun # include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ @@ -64,41 +62,19 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_math_base.h" -#include "BKE_animsys.h" -#include "BKE_context.h" -#include "BKE_deform.h" -#include "BKE_depsgraph.h" #include "BKE_fcurve.h" -#include "BKE_global.h" -#include "BKE_group.h" -#include "BKE_library.h" #include "BKE_main.h" #include "BKE_modifier.h" -#include "BKE_report.h" -#include "BKE_scene.h" #include "BKE_sequencer.h" #include "ED_armature.h" -#include "ED_object.h" #include "ED_screen.h" -#include "ED_util.h" #include "WM_api.h" #include "WM_types.h" -#include "BIF_gl.h" -#include "BIF_glutil.h" - -#include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" -#include "UI_view2d.h" - #include "RNA_access.h" -#include "RNA_define.h" -#include "RNA_enum_types.h" #include "outliner_intern.h" From c30dba9a92b1d5cf0b88902c4c33388b3681fcc8 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Thu, 26 Apr 2012 08:04:11 +0000 Subject: [PATCH 104/158] Fix OIIO dll copying for win32-mingw --- SConstruct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index 96d27ae76b0..b1603fd0397 100644 --- a/SConstruct +++ b/SConstruct @@ -774,7 +774,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb.dll') dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb64.dll') - if env['WITH_BF_OIIO']: + if env['WITH_BF_OIIO'] and env['OURPLATFORM'] != 'win32-mingw': dllsources.append('${LCGDIR}/openimageio/bin/OpenImageIO.dll') dllsources.append('#source/icons/blender.exe.manifest') From 2118d3c19cdff3de2ff39f664f1e86051f989f08 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 08:27:50 +0000 Subject: [PATCH 105/158] code cleanup: bmesh comments/todos, no functional changes. --- source/blender/blenlib/BLI_array.h | 2 +- source/blender/bmesh/bmesh.h | 35 ++++++++++++ source/blender/bmesh/intern/bmesh_core.c | 68 +++++++++++++++++++----- 3 files changed, 91 insertions(+), 14 deletions(-) diff --git a/source/blender/blenlib/BLI_array.h b/source/blender/blenlib/BLI_array.h index d66b8c009d7..dac0143b5b6 100644 --- a/source/blender/blenlib/BLI_array.h +++ b/source/blender/blenlib/BLI_array.h @@ -64,7 +64,7 @@ #define BLI_array_staticdeclare(arr, maxstatic) \ int _##arr##_count = 0; \ void *_##arr##_tmp; \ - char _##arr##_static[maxstatic * sizeof(arr)] + char _##arr##_static[maxstatic * sizeof(arr)] /* this returns the entire size of the array, including any buffering. */ diff --git a/source/blender/bmesh/bmesh.h b/source/blender/bmesh/bmesh.h index 6b41babd927..13926c42192 100644 --- a/source/blender/bmesh/bmesh.h +++ b/source/blender/bmesh/bmesh.h @@ -192,6 +192,41 @@ * - bmo_xxx() - Low level / internal operator API functions. * - _bm_xxx() - Functions which are called via macros only. * + * \section bm_todo BMesh TODO's + * + * There may be a better place for this section, but adding here for now. + * + * + * \subsection bm_todo_tools Tools + * + * Probably most of these will be bmesh operators. + * + * - make ngons flat. + * - make ngons into tris/quads (ngon poke?), many methods could be used here (triangulate/fan/quad-fan). + * - solidify (precise mode), keeps even wall thickness, re-creates outlines of offset faces with plane-plane + * intersections. + * - split vert (we already have in our API, just no tool) + * - bridge (add option to bridge between different edge loop counts, option to remove selected face regions) + * - flip selected region (invert all faces about the plane defined by the selected region outline) + * - interactive dissolve (like the knife tool but draw over edges to dissolve) + * + * + * \subsection bm_todo_optimize Optimizations + * + * - skip normal calc when its not needed (when calling chain of operators & for modifiers, flag as dirty) + * - skip BMO flag allocation, its not needed in many cases, this is fairly redundant to calc by default. + * - ability to call BMO's with option not to create return data (will save some time) + * - binary diff UNDO, currently this uses huge amount of ram when all shapes are stored for each undo step for eg. + * - use two differnt iterator types for BMO map/buffer types. + * - avoid string lookups for BMO slot lookups _especially_ when used in loops, this is very crappy. + * + * + * \subsection bm_todo_tools_enhance Tool Enhancements + * + * - face inset interpolate loop data from face (currently copies - but this stretches UV's in an ugly way) + * - vert slide UV correction (like we have for edge slide) + * - fill-face edge net - produce consistant normals, currently it won't, fix should be to fill in edge-net node + * connected with previous one - since they already check for normals of adjacent edge-faces before creating. */ #ifdef __cplusplus diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index f3f7614fe02..756fd742fa6 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -50,6 +50,9 @@ #endif +/** + * \brief Main function for creating a new vertex. + */ BMVert *BM_vert_create(BMesh *bm, const float co[3], const BMVert *example) { BMVert *v = BLI_mempool_calloc(bm->vpool); @@ -85,6 +88,12 @@ BMVert *BM_vert_create(BMesh *bm, const float co[3], const BMVert *example) return v; } +/** + * \brief Main function for creating a new edge. + * + * \note Duplicate edges are supported by the API however users should _never_ see them. + * so unless you need a unique edge or know the edge won't exist, you should call wih \a nodouble=TRUE + */ BMEdge *BM_edge_create(BMesh *bm, BMVert *v1, BMVert *v2, const BMEdge *example, int nodouble) { BMEdge *e; @@ -181,10 +190,11 @@ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short co BLI_array_staticdeclare(verts, BM_NGON_STACK_SIZE); BMLoop *l_iter; BMLoop *l_first; - BMLoop *l2; - BMFace *f2; + BMLoop *l_copy; + BMFace *f_copy; int i; + /* BMESH_TODO - grow verts array in one go! (right here) */ l_iter = l_first = BM_FACE_FIRST_LOOP(f); do { if (copyverts) { @@ -196,6 +206,7 @@ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short co } } while ((l_iter = l_iter->next) != l_first); + /* BMESH_TODO - grow edges array in one go! (right here) */ l_iter = l_first = BM_FACE_FIRST_LOOP(f); i = 0; do { @@ -222,18 +233,18 @@ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short co i++; } while ((l_iter = l_iter->next) != l_first); - f2 = BM_face_create(bm, verts, edges, f->len, FALSE); + f_copy = BM_face_create(bm, verts, edges, f->len, FALSE); - BM_elem_attrs_copy(bm, bm, f, f2); + BM_elem_attrs_copy(bm, bm, f, f_copy); l_iter = l_first = BM_FACE_FIRST_LOOP(f); - l2 = BM_FACE_FIRST_LOOP(f2); + l_copy = BM_FACE_FIRST_LOOP(f_copy); do { - BM_elem_attrs_copy(bm, bm, l_iter, l2); - l2 = l2->next; + BM_elem_attrs_copy(bm, bm, l_iter, l_copy); + l_copy = l_copy->next; } while ((l_iter = l_iter->next) != l_first); - return f2; + return f_copy; } /** @@ -270,6 +281,9 @@ BLI_INLINE BMFace *bm_face_create__internal(BMesh *bm) return f; } +/** + * \brief Main face creation function + */ BMFace *BM_face_create(BMesh *bm, BMVert **verts, BMEdge **edges, const int len, int nodouble) { BMFace *f = NULL; @@ -319,6 +333,12 @@ BMFace *BM_face_create(BMesh *bm, BMVert **verts, BMEdge **edges, const int len, return f; } +/** + * Check the element is valid. + * + * BMESH_TODO, when this raises an error the output is incredible confusing. + * need to have some nice way to print/debug what the hecks going on. + */ int bmesh_elem_check(void *element, const char htype) { BMHeader *head = element; @@ -446,14 +466,16 @@ int bmesh_elem_check(void *element, const char htype) } /** - * low level function, only free's, - * does not change adjust surrounding geometry */ + * low level function, only frees the vert, + * doesn't change or adjust surrounding geometry + */ static void bm_kill_only_vert(BMesh *bm, BMVert *v) { bm->totvert--; bm->elem_index_dirty |= BM_VERT; BM_select_history_remove(bm, v); + if (v->head.data) CustomData_bmesh_free_block(&bm->vdata, &v->head.data); @@ -461,6 +483,10 @@ static void bm_kill_only_vert(BMesh *bm, BMVert *v) BLI_mempool_free(bm->vpool, v); } +/** + * low level function, only frees the edge, + * doesn't change or adjust surrounding geometry + */ static void bm_kill_only_edge(BMesh *bm, BMEdge *e) { bm->totedge--; @@ -475,6 +501,10 @@ static void bm_kill_only_edge(BMesh *bm, BMEdge *e) BLI_mempool_free(bm->epool, e); } +/** + * low level function, only frees the face, + * doesn't change or adjust surrounding geometry + */ static void bm_kill_only_face(BMesh *bm, BMFace *f) { if (bm->act_face == f) @@ -492,6 +522,10 @@ static void bm_kill_only_face(BMesh *bm, BMFace *f) BLI_mempool_free(bm->fpool, f); } +/** + * low level function, only frees the loop, + * doesn't change or adjust surrounding geometry + */ static void bm_kill_only_loop(BMesh *bm, BMLoop *l) { bm->totloop--; @@ -502,7 +536,7 @@ static void bm_kill_only_loop(BMesh *bm, BMLoop *l) } /** - * kills all edges associated with f, along with any other faces containing + * kills all edges associated with \a f, along with any other faces containing * those edges */ void BM_face_edges_kill(BMesh *bm, BMFace *f) @@ -526,7 +560,7 @@ void BM_face_edges_kill(BMesh *bm, BMFace *f) } /** - * kills all verts associated with f, along with any other faces containing + * kills all verts associated with \a f, along with any other faces containing * those vertices */ void BM_face_verts_kill(BMesh *bm, BMFace *f) @@ -587,7 +621,9 @@ void BM_face_kill(BMesh *bm, BMFace *f) bm_kill_only_face(bm, f); } - +/** + * kills \a e and all faces that use it. + */ void BM_edge_kill(BMesh *bm, BMEdge *e) { @@ -615,6 +651,9 @@ void BM_edge_kill(BMesh *bm, BMEdge *e) bm_kill_only_edge(bm, e); } +/** + * kills \a v and all edges that use it. + */ void BM_vert_kill(BMesh *bm, BMVert *v) { if (v->e) { @@ -746,6 +785,9 @@ static int bm_loop_reverse_loop(BMesh *bm, BMFace *f return 1; } +/** + * \brief Flip the faces direction + */ int bmesh_loop_reverse(BMesh *bm, BMFace *f) { #ifdef USE_BMESH_HOLES From f92fcbd413274bb417a0f0dd363b0cfad2931f24 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 26 Apr 2012 11:23:37 +0000 Subject: [PATCH 106/158] Minor fix in response to Koji Iigura's mail. Own error, sorry about that (I tend to forget not all OS are utf-8 yet :/ ). --- source/blender/makesdna/DNA_modifier_types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 6c1d9892ba2..30280e95646 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -898,7 +898,7 @@ typedef struct WeightVGEditModifierData { typedef struct WeightVGMixModifierData { ModifierData modifier; - /* XXX Note: I tried to keep everything logically ordered – provided the + /* XXX Note: I tried to keep everything logically ordered - provided the * alignment constraints... */ char defgrp_name_a[64]; /* Name of vertex group to modify/weight. MAX_VGROUP_NAME. */ From 41ebd0bb77cf532fa8b95dc0dee62cd21da574d4 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Thu, 26 Apr 2012 11:48:36 +0000 Subject: [PATCH 107/158] * Compile fix for recent Outliner header cleanup. --- source/blender/editors/space_outliner/outliner_tree.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index e3c89c82ec6..e2d43386c5e 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -62,6 +62,7 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" +#include "BLI_math.h" #include "BKE_fcurve.h" #include "BKE_main.h" From 426daf8cc5f8734737da2f254c466d93da7dee7f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 26 Apr 2012 12:13:22 +0000 Subject: [PATCH 108/158] Fix related to #31067: missing update when toggling Premultiply on a sequencer strip. --- source/blender/makesrna/intern/rna_sequencer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 2ed2f295cb6..c94d420da8a 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -1243,7 +1243,7 @@ static void rna_def_filter_video(StructRNA *srna) prop = RNA_def_property(srna, "use_premultiply", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL); RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha"); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); prop = RNA_def_property(srna, "use_flip_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX); From 6d4841ba827511c64fe44987837d35ec9c30b86f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 26 Apr 2012 12:13:26 +0000 Subject: [PATCH 109/158] Fix #31058: missing Simplify panel for cycles. --- intern/cycles/blender/addon/ui.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 4a8b639b390..624d00b377d 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -783,6 +783,31 @@ class CyclesTexture_PT_colors(CyclesButtonsPanel, Panel): layout.template_color_ramp(mapping, "color_ramp", expand=True) +class CyclesScene_PT_simplify(CyclesButtonsPanel, Panel): + bl_label = "Simplify" + bl_context = "scene" + COMPAT_ENGINES = {'CYCLES'} + + def draw_header(self, context): + rd = context.scene.render + self.layout.prop(rd, "use_simplify", text="") + + def draw(self, context): + layout = self.layout + + rd = context.scene.render + + layout.active = rd.use_simplify + + split = layout.split() + + col = split.column() + col.prop(rd, "simplify_subdivision", text="Subdivision") + + col = split.column() + col.prop(rd, "simplify_child_particles", text="Child Particles") + + def draw_device(self, context): scene = context.scene layout = self.layout From ec6c3f632ede3d9bdbc75fec19d6a0b2d49a646c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 26 Apr 2012 12:30:37 +0000 Subject: [PATCH 110/158] Fix #31066: cycles keeps rendering in viewport after window closed. --- source/blender/editors/include/ED_render.h | 2 + source/blender/editors/render/render_update.c | 47 ++++++++++--------- source/blender/editors/screen/screen_edit.c | 3 ++ 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/source/blender/editors/include/ED_render.h b/source/blender/editors/include/ED_render.h index 73bbd5ffef8..5392ef86ba7 100644 --- a/source/blender/editors/include/ED_render.h +++ b/source/blender/editors/include/ED_render.h @@ -37,6 +37,7 @@ struct MTex; struct Render; struct RenderInfo; struct Scene; +struct ScrArea; /* render_ops.c */ @@ -46,6 +47,7 @@ void ED_operatortypes_render(void); void ED_render_id_flush_update(struct Main *bmain, struct ID *id); void ED_render_engine_changed(struct Main *bmain); +void ED_render_engine_area_exit(struct ScrArea *sa); void ED_render_scene_update(struct Main *bmain, struct Scene *scene, int updated); /* render_preview.c */ diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index 35b4126339e..48c35873304 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -116,33 +116,38 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated) CTX_free(C); } +void ED_render_engine_area_exit(ScrArea *sa) +{ + /* clear all render engines in this area */ + ARegion *ar; + + if (sa->spacetype != SPACE_VIEW3D) + return; + + for (ar = sa->regionbase.first; ar; ar = ar->next) { + RegionView3D *rv3d; + + if (ar->regiontype != RGN_TYPE_WINDOW) + continue; + + rv3d = ar->regiondata; + + if (rv3d->render_engine) { + RE_engine_free(rv3d->render_engine); + rv3d->render_engine = NULL; + } + } +} + void ED_render_engine_changed(Main *bmain) { /* on changing the render engine type, clear all running render engines */ bScreen *sc; ScrArea *sa; - ARegion *ar; - for (sc = bmain->screen.first; sc; sc = sc->id.next) { - for (sa = sc->areabase.first; sa; sa = sa->next) { - if (sa->spacetype != SPACE_VIEW3D) - continue; - - for (ar = sa->regionbase.first; ar; ar = ar->next) { - RegionView3D *rv3d; - - if (ar->regiontype != RGN_TYPE_WINDOW) - continue; - - rv3d = ar->regiondata; - - if (rv3d->render_engine) { - RE_engine_free(rv3d->render_engine); - rv3d->render_engine = NULL; - } - } - } - } + for (sc = bmain->screen.first; sc; sc = sc->id.next) + for (sa = sc->areabase.first; sa; sa = sa->next) + ED_render_engine_area_exit(sa); } /***************************** Updates *********************************** diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 03d8b3d3e9c..cafa4527c20 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1154,6 +1154,9 @@ void ED_area_exit(bContext *C, ScrArea *sa) ED_fileselect_exit(C, (SpaceFile *)sl); } } + else if (sa->spacetype == SPACE_VIEW3D) { + ED_render_engine_area_exit(sa); + } CTX_wm_area_set(C, sa); for (ar= sa->regionbase.first; ar; ar= ar->next) From 6d2cd240108caea9c8c19b2f413f28384cf06675 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 15:20:26 +0000 Subject: [PATCH 111/158] fix memory leak in validating mesh and remove unneeded knife operator settings store. --- source/blender/blenkernel/intern/mesh.c | 2 ++ source/blender/editors/mesh/editmesh_knife.c | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 514380dc980..b9a65403f84 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1154,6 +1154,8 @@ void mesh_strip_loose_edges(Mesh *me) for (a = 0, l = me->mloop; a < me->totloop; a++, l++) { l->e = new_idx[l->e]; } + + MEM_freeN(new_idx); } void mball_to_mesh(ListBase *lb, Mesh *me) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index 670b06887eb..b3bc0a1ffa9 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2721,10 +2721,6 @@ static void knifetool_exit(bContext *C, wmOperator *op) WM_cursor_restore(CTX_wm_window(C)); - /* remember setting for later */ - RNA_boolean_set(op->ptr, "use_occlude_geometry", !kcd->cut_through); - WM_operator_last_properties_store(op); /* XXX - this is clunky but modal ops wont do this automatic */ - /* deactivate the extra drawing stuff in 3D-View */ ED_region_draw_cb_exit(kcd->ar->type, kcd->draw_handle); From ef0a4c0ba9a43107b60f7af1d75066d8fabf9223 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 15:38:16 +0000 Subject: [PATCH 112/158] fix for bevel modifier creating invalid geometry - simply tell BM_face_split() to check for doubles. --- source/blender/blenkernel/intern/mesh.c | 2 +- source/blender/bmesh/tools/BME_bevel.c | 36 ++++++++++++------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index b9a65403f84..59dd7db43da 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1128,7 +1128,7 @@ void mesh_strip_loose_edges(Mesh *me) MEdge *e; MLoop *l; int a, b; - unsigned int *new_idx = MEM_mallocN(sizeof(int) * me->totedge, "strip_loose_edges old2new idx mapping for loops."); + unsigned int *new_idx = MEM_mallocN(sizeof(int) * me->totedge, __func__); for (a = b = 0, e = me->medge; a < me->totedge; a++, e++) { if (e->v1 != e->v2) { diff --git a/source/blender/bmesh/tools/BME_bevel.c b/source/blender/bmesh/tools/BME_bevel.c index 6a91d6f9d00..a357767e1d8 100644 --- a/source/blender/bmesh/tools/BME_bevel.c +++ b/source/blender/bmesh/tools/BME_bevel.c @@ -305,7 +305,7 @@ static BMVert *BME_bevel_split_edge(BMesh *bm, BMVert *v, BMVert *v1, BMLoop *l, e1 = e2; } ov = BM_edge_other_vert(e1, v); - sv = BM_edge_split(bm, e1, v, &ne, 0); + sv = BM_edge_split(bm, e1, v, &ne, 0.0f); //BME_data_interp_from_verts(bm, v, ov, sv, 0.25); /* this is technically wrong.. */ //BME_data_interp_from_faceverts(bm, v, ov, sv, 0.25); //BME_data_interp_from_faceverts(bm, ov, v, sv, 0.25); @@ -347,7 +347,7 @@ static BMVert *BME_bevel_split_edge(BMesh *bm, BMVert *v, BMVert *v1, BMLoop *l, else { is_split_vert = 0; ov = BM_edge_other_vert(l->e, v); - sv = BM_edge_split(bm, l->e, v, &ne, 0); + sv = BM_edge_split(bm, l->e, v, &ne, 0.0f); //BME_data_interp_from_verts(bm, v, ov, sv, 0.25); /* this is technically wrong.. */ //BME_data_interp_from_faceverts(bm, v, ov, sv, 0.25); //BME_data_interp_from_faceverts(bm, ov, v, sv, 0.25); @@ -371,8 +371,8 @@ static BMVert *BME_bevel_split_edge(BMesh *bm, BMVert *v, BMVert *v1, BMLoop *l, if (vtd1->loc == NULL) { /* this is a vert with data only for calculating initial weights */ - if (vtd1->weight < 0) { - vtd1->weight = 0; + if (vtd1->weight < 0.0f) { + vtd1->weight = 0.0f; } scale = vtd1->weight / vtd1->factor; if (!vtd1->max) { @@ -537,14 +537,14 @@ static BMLoop *BME_bevel_edge(BMesh *bm, BMLoop *l, float value, int UNUSED(opti se = l->next->e; jf = NULL; if (kl->v == kv) { - BM_face_split(bm, kl->f, kl->prev->v, kl->next->v, &nl, kl->prev->e, FALSE); + BM_face_split(bm, kl->f, kl->prev->v, kl->next->v, &nl, kl->prev->e, TRUE); ke = kl->e; /* BMESH-TODO: jfke doesn't handle customdata */ jf = bmesh_jfke(bm, kl->prev->radial_next->f, kl->f, kl->prev->e); BM_vert_collapse_edge(bm, ke, kv, FALSE); } else { - BM_face_split(bm, kl->f, kl->next->next->v, kl->v, &nl, kl->next->e, FALSE); + BM_face_split(bm, kl->f, kl->next->next->v, kl->v, &nl, kl->next->e, TRUE); ke = kl->e; /* BMESH-TODO: jfke doesn't handle customdata */ jf = bmesh_jfke(bm, kl->next->radial_next->f, kl->f, kl->next->e); @@ -583,14 +583,14 @@ static BMLoop *BME_bevel_edge(BMesh *bm, BMLoop *l, float value, int UNUSED(opti se = l->e; jf = NULL; if (kl->v == kv) { - BM_face_split(bm, kl->f, kl->prev->v, kl->next->v, &nl, kl->prev->e, FALSE); + BM_face_split(bm, kl->f, kl->prev->v, kl->next->v, &nl, kl->prev->e, TRUE); ke = kl->e; /* BMESH-TODO: jfke doesn't handle customdata */ jf = bmesh_jfke(bm, kl->prev->radial_next->f, kl->f, kl->prev->e); BM_vert_collapse_edge(bm, ke, kv, FALSE); } else { - BM_face_split(bm, kl->f, kl->next->next->v, kl->v, &nl, kl->next->e, FALSE); + BM_face_split(bm, kl->f, kl->next->next->v, kl->v, &nl, kl->next->e, TRUE); ke = kl->e; /* BMESH-TODO: jfke doesn't handle customdata */ jf = bmesh_jfke(bm, kl->next->radial_next->f, kl->f, kl->next->e); @@ -605,7 +605,7 @@ static BMLoop *BME_bevel_edge(BMesh *bm, BMLoop *l, float value, int UNUSED(opti } if (!BMO_elem_flag_test(bm, v1, BME_BEVEL_NONMAN) || !BMO_elem_flag_test(bm, v2, BME_BEVEL_NONMAN)) { - BM_face_split(bm, f, v2, v1, &l, e, FALSE); + BM_face_split(bm, f, v2, v1, &l, e, TRUE); BMO_elem_flag_enable(bm, l->e, BME_BEVEL_BEVEL); l = l->radial_next; } @@ -633,7 +633,7 @@ static BMLoop *BME_bevel_vert(BMesh *bm, BMLoop *l, float value, int UNUSED(opti l = l->next->next; /* "cut off" this corner */ - /* f = */ BM_face_split(bm, l->f, v2, v1, NULL, l->e, FALSE); + /* f = */ BM_face_split(bm, l->f, v2, v1, NULL, l->e, TRUE); return l; } @@ -694,7 +694,7 @@ static BMFace *BME_bevel_poly(BMesh *bm, BMFace *f, float value, int options, BM f = l->f; /* max pass */ - if (value > 0.5f && max > 0) { + if (value > 0.5f && max > 0.0f) { max = -1; BM_ITER_ELEM (l, &iter, f, BM_LOOPS_OF_FACE) { if (BMO_elem_flag_test(bm, l->e, BME_BEVEL_BEVEL) || BMO_elem_flag_test(bm, l->e, BME_BEVEL_ORIG)) { @@ -835,7 +835,7 @@ static void BME_bevel_add_vweight(BME_TransData_Head *td, BMesh *bm, BMVert *v, vtd->weight = weight; } } - else if (vtd->weight < 0) { + else if (vtd->weight < 0.0f) { vtd->factor = factor; vtd->weight = weight; } @@ -897,11 +897,11 @@ static void bevel_init_edges(BMesh *bm, int options, float angle, BME_TransData_ const float threshold = (options & BME_BEVEL_ANGLE) ? cosf(angle + 0.001) : 0.0f; BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { - weight = 0.0; + weight = 0.0f; if (!BMO_elem_flag_test(bm, e, BME_BEVEL_NONMAN)) { if (options & BME_BEVEL_SELECT) { if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { - weight = 1.0; + weight = 1.0f; } } else if (options & BME_BEVEL_WEIGHT) { @@ -925,10 +925,10 @@ static void bevel_init_edges(BMesh *bm, int options, float angle, BME_TransData_ } } else { - weight = 1.0; + weight = 1.0f; } - if (weight > 0.0) { + if (weight > 0.0f) { BMO_elem_flag_enable(bm, e, BME_BEVEL_BEVEL); BME_bevel_add_vweight(td, bm, e->v1, weight, 1.0, options); BME_bevel_add_vweight(td, bm, e->v2, weight, 1.0, options); @@ -1071,9 +1071,9 @@ static BMesh *BME_bevel_mesh(BMesh *bm, float value, int UNUSED(res), int option if (l->v != v) l = l->next; if (l2->v != v) l2 = l2->next; if (l->f->len > 3) - BM_face_split(bm, l->f, l->next->v, l->prev->v, &l, l->e, FALSE); /* clip this corner off */ + BM_face_split(bm, l->f, l->next->v, l->prev->v, &l, l->e, TRUE); /* clip this corner off */ if (l2->f->len > 3) - BM_face_split(bm, l2->f, l2->next->v, l2->prev->v, &l, l2->e, FALSE); /* clip this corner off */ + BM_face_split(bm, l2->f, l2->next->v, l2->prev->v, &l, l2->e, TRUE); /* clip this corner off */ curedge = bmesh_disk_edge_next(curedge, v); } while (curedge != v->e); BME_Bevel_Dissolve_Disk(bm, v); From d3c1ece20120b9b91db7bb5b9123aa15f6f1407a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 16:32:30 +0000 Subject: [PATCH 113/158] fix [#31113] bmesh.types.BMLayerCollection getter calculate key indices wrong (own fault) also add check so layer.name won't crash incase the layer becomes invalid. --- .../python/bmesh/bmesh_py_types_customdata.c | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/source/blender/python/bmesh/bmesh_py_types_customdata.c b/source/blender/python/bmesh/bmesh_py_types_customdata.c index 91104fb23f5..6a02d8e4a25 100644 --- a/source/blender/python/bmesh/bmesh_py_types_customdata.c +++ b/source/blender/python/bmesh/bmesh_py_types_customdata.c @@ -63,7 +63,15 @@ static CustomData *bpy_bm_customdata_get(BMesh *bm, char htype) static CustomDataLayer *bpy_bmlayeritem_get(BPy_BMLayerItem *self) { CustomData *data = bpy_bm_customdata_get(self->bm, self->htype); - return &data->layers[CustomData_get_layer_index_n(data, self->type, self->index)]; + const int index_absolute = CustomData_get_layer_index_n(data, self->type, self->index); + if (index_absolute != -1) { + return &data->layers[index_absolute]; + } + else { + PyErr_SetString(PyExc_RuntimeError, + "layer has become invalid"); + return NULL; + } } /* py-type definitions @@ -126,9 +134,10 @@ static PyObject *bpy_bmlayercollection_active_get(BPy_BMLayerItem *self, void *U BPY_BM_CHECK_OBJ(self); data = bpy_bm_customdata_get(self->bm, self->htype); - index = CustomData_get_active_layer_index(data, self->type); + index = CustomData_get_active_layer_index(data, self->type); /* absolute */ if (index != -1) { + index -= CustomData_get_layer_index(data, self->type); /* make relative */ return BPy_BMLayerItem_CreatePyObject(self->bm, self->htype, self->type, index); } else { @@ -146,7 +155,12 @@ static PyObject *bpy_bmlayeritem_name_get(BPy_BMLayerItem *self, void *UNUSED(fl BPY_BM_CHECK_OBJ(self); layer = bpy_bmlayeritem_get(self); - return PyUnicode_FromString(layer->name); + if (layer) { + return PyUnicode_FromString(layer->name); + } + else { + return NULL; + } } static PyGetSetDef bpy_bmlayeraccess_vert_getseters[] = { @@ -311,7 +325,7 @@ static PyObject *bpy_bmlayercollection_keys(BPy_BMLayerCollection *self) BPY_BM_CHECK_OBJ(self); data = bpy_bm_customdata_get(self->bm, self->htype); - index = CustomData_get_layer_index(data, self->type); + index = CustomData_get_layer_index(data, self->type); /* absolute, but no need to make relative */ ret = PyList_New(0); @@ -426,9 +440,10 @@ static PyObject *bpy_bmlayercollection_get(BPy_BMLayerCollection *self, PyObject int index; data = bpy_bm_customdata_get(self->bm, self->htype); - index = CustomData_get_named_layer_index(data, self->type, key); + index = CustomData_get_named_layer_index(data, self->type, key); /* absolute index */ if (index != -1) { + index -= CustomData_get_layer_index(data, self->type); /* make relative */ return BPy_BMLayerItem_CreatePyObject(self->bm, self->htype, self->type, index); } } @@ -471,9 +486,10 @@ static PyObject *bpy_bmlayercollection_subscript_str(BPy_BMLayerCollection *self BPY_BM_CHECK_OBJ(self); data = bpy_bm_customdata_get(self->bm, self->htype); - index = CustomData_get_named_layer_index(data, self->type, keyname); + index = CustomData_get_named_layer_index(data, self->type, keyname); /* absolute */ if (index != -1) { + index -= CustomData_get_layer_index(data, self->type); /* make relative */ return BPy_BMLayerItem_CreatePyObject(self->bm, self->htype, self->type, index); } else { From 7e5c02672ae9c368260632f3717d56b4927a99f7 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 26 Apr 2012 17:01:04 +0000 Subject: [PATCH 114/158] Fix for undefined reference to abort() in outliner selection module --- source/blender/editors/space_outliner/outliner_select.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index f43e9b19672..c06576e48a6 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -29,6 +29,8 @@ * \ingroup spoutliner */ +#include + #include "MEM_guardedalloc.h" #include "DNA_armature_types.h" From 73a6ae710679ad5f2186e61d57d916442d23a43a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 26 Apr 2012 17:48:07 +0000 Subject: [PATCH 115/158] Fix crash clicking Render button in render layer compositing node. Actually this crash could happen in other situations too, problem was a bug in the jobs system. A job could be suspended, and the operator would stop before the job was actually done since it was not marked as running. --- source/blender/windowmanager/intern/wm_jobs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index 774aec51216..877b8a92296 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -173,10 +173,12 @@ int WM_jobs_test(wmWindowManager *wm, void *owner) { wmJob *steve; + /* job can be running or about to run (suspended) */ for (steve = wm->jobs.first; steve; steve = steve->next) if (steve->owner == owner) - if (steve->running) + if (steve->running || steve->suspended) return 1; + return 0; } From e75e40c97281078730ed9c0a649e99b7e981c919 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 26 Apr 2012 17:49:48 +0000 Subject: [PATCH 116/158] Release commit, 2.63! Special thanks to Mango team for awesome splash screen! And everybody else who made this release! :) --- doc/manpage/blender.1 | 20 +- release/datafiles/splash.png | Bin 188517 -> 229594 bytes source/blender/blenkernel/BKE_blender.h | 4 +- source/blender/blenloader/intern/readfile.c | 6 +- source/blender/editors/datafiles/splash.png.c | 13071 +++++++++------- 5 files changed, 7198 insertions(+), 5903 deletions(-) diff --git a/doc/manpage/blender.1 b/doc/manpage/blender.1 index 97c11bc138c..6257a78171b 100644 --- a/doc/manpage/blender.1 +++ b/doc/manpage/blender.1 @@ -1,4 +1,13 @@ -.TH "BLENDER" "1" "April 05, 2012" "Blender Blender 2\&.62 (sub 3)" +.TH "BLENDER" "1" "April 26, 2012" "Blender Blender 2\&.63 (sub 0) + build date: 2012-04-26 + build time: 19:38:31 + build revision: 45987 + build platform: Linux + build type: Debug + build c flags: -fopenmp -msse2 -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -Wall -Wcast-align -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=return-type -Wstrict-prototypes -Wno-char-subscripts -Wno-unknown-pragmas -Wpointer-arith -Wunused-parameter -Wwrite-strings + build c++ flags: -D__STDC_CONSTANT_MACROS -fopenmp -msse2 -msse -pipe -fPIC -funsigned-char -fno-strict-aliasing -Wall -Wno-invalid-offsetof -Wno-sign-compare + build link flags: -pthread + build system: CMake" .SH NAME blender \- a 3D modelling and rendering package @@ -15,7 +24,7 @@ Use Blender to create TV commercials, to make technical visualizations, business http://www.blender.org .SH OPTIONS -Blender 2.62 (sub 3) +Blender 2.63 (sub 0) Usage: blender [args ...] [file] [args ...] .br .SS "Render Options:" @@ -220,6 +229,12 @@ Enable floating point exceptions Enable debug messages from FFmpeg library .br +.TP +.B \-\-debug\-libmv +.br +Enable debug messages from libmv library +.br + .IP .TP @@ -406,6 +421,7 @@ Arguments are executed in the order they are given. eg \fIBLENDER_SYSTEM_DATAFILES\fR Directory for system wide data files. \fIBLENDER_SYSTEM_PYTHON\fR Directory for system python libraries. \fITMP\fR or \fITMPDIR\fR Store temporary files here. + \fISDL_AUDIODRIVER\fR LibSDL audio driver \- alsa, esd, dma. \fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python. .br .br diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png index 47aca040453b8e6e23722b47317387855a1a7c49..2dab9257905f0bb51fb8383f2a4d13fcb07cd03d 100644 GIT binary patch delta 228679 zcmbsPRZyJI*9D9QcNyGaa0wO&?m9q%dxE<=gFiTfyM*8p+%-7C3BiK9yA#~b@Bg0j zU7YK0U367EuD1w zwmRwwi0?np9Hhno-(ba zp{NFrD$w()m2 z8@zg`vc@%G?mz|_XlxpKI}`KQe9U! z6^D4AKm8AWnbAUlM!>Gd0=AQ-UaoSrn^fTM+)9zXE4bf)+(kF1(Pj8D6$jJb)fzh(2N+7_`Sr<{q#SLOc=F9;Aaxv!g8r7wQ#S?NwYQQ~U-clpagB?DwmpIVa!bVFa3 z#~Vlt;J&(qf2Sr&{4!p<+5#6b=VSz?t?>?xezejACjJWIgTCeb`_Fq`60kep1fQpC zTI$osx2%lkEl|KVeFP+zM({ka5g#{4O8bS`J&tDedEbH(^NbhZ2;7 z@4M>_yVaX zwP&|Swx=*i1-=EI8h#D_`RdG#i<|qB^rY;m!mya4^?|JXSwn_{7Eu~N)Lf274W%iS z((TqkG5{Fi>l>=HrF1vzBTtt25V=zFl^`#omS5Q?{9m&7O(eR{>}C9M_~AJ568n-% zUWX5BYS>#EHkdD@K;BQ@OK-b9D(^Ujq_-u;rN!4!I@DzX+{nqF!hCO6wIn6lU z`kY>?twi7LZ~oADKH0^+;Dd?_tcvAMeSNoba<=YFh4|7CbeC0@mn)wG_uSSFthx*S z->sHX-Pe)t=|9=d)0G+0MW(2nFDO5|y=Y08WY-W?LN`@i+`zWpp?W_3n%Ga z>wgY*O04mpeWpO3_6=JLG+w0RdXQ3s{{aOTsE^!&j& z8@A$~dHzar(b+EM(*X0E6{HBMjE&f@7JqzqkxF~@iqd-C_h|TfVnF?72YO)on;`Jt z**Yjg82-KH-T8KGwfbqY#FQ0w%Gx@0bKF+2?00J`_ojsfV)?n3yWP+?NiBNCh{{3aX;d~+ag?;_W;_B}8{1j#7 z5%hC*)#>;Avi#Ru!{-h=a;ZIQxTPmIUMm#&6Z z;;xC+Txqs)vvlTM_Vu>ob|}IGabkA>?%8fJ&<==SEVqkw*^*&1F^YxAQc85~cl#Tk z8f5v^zJ%4hd`;UWze6g?;CJ%<*{`##+JdI?Cfr|P_{r;v7#M{@lU@Su98z%BKD}HB zCr$>J75&z{|FZwNZ?nJOsvTS6BpP#X>nc_paC$ zNK=R1SE>CKubYQh5g55LZ5Mz%_4Q961=VIJy&R zI*-akj#<*-aH-yqAT7DianunU@M|j%vK&SCDleyR``yX=Z~Z7#Ty(`~YqP#0zZx92 zkD7W;_tHGR2+RF)bh<^?FMa_qlzHIBdp+8Pb8cdfJ)wv$cP>WTXDw^;uTSzSvKW zU!PEHkUYeJoFg*YyPT5VKPD9J0jePL8QM+-*T^r^@EyoM5JK&S^s=L{>2j&kV zAy2#N8*HBbz`s2=>pjwT!?%Y=y-WUSOJMnr#c?ht(tndWy?Y&5^tnB&Zj@gV%e{px z@1NrRJ10!M`}DtyMt^jFqr;fiKyA6Zu98TYUs=jNqrAid#TSY1FA*nRgqn`|3~+WP z-@Vg@z$++H37&jCQr-J;6QBu_3T7_ZukV^;-$KN3}g&1W6mdr~fc#8Cr`u8m=LEM82wb2U5{tNW9KVZI%={LYUne($<4 z?g0^~I6duep4L0%kLi8BbMt#ue^vi`&WASws!Gmko(hIsL^_i#UIOYT67|b|Vu`BJ zz;I>hnemW1pWV(L&LYHILf0Su#`g@K^fw%WRn_8ZSgG6G#;c%XBOJP@E6?lVep2r^ zd|0~#kW)NR*YZggI;Apk5Or!gha0di&j6yztM_oxXI#|v+WG*Q_upB zU>7-c!Ry+i>Uj70SvR(b#k~A~4^5Su^^sb;VYg>`-a4iqr9=I9$Csz$z_&KLr~P;0 z-s0_7(LLf>i2kOgS2N2Sw~w3w*w;QhdiZL4h<1hzbOfLR0m-?BJ}r9BgI=bUYv5)1 zOk~hBXH#NARAch=o}heVJhAE%6-InJjjNw`fv(Q2(Nb30EZ^8I#>NhOqE%bBqO74u zbF^m176H(1%C0UP?YE-w;!m`;mH&jRJ>Jvam5$;^jbv^`CfIsI;4f0qd`q<)vatSz zsvIDKzLhogoL%_RUTyF9=H*lYz#9hWAzyTP74Dhw;``YvXCTo0`nr%k{W7pC| zzQshO*S-^sC6!)^-0Ez)c6Z}Mj5>NNa=p2m^!lwGdzQ^BydF{XogorXuJPg;uwRXs zrPX!$$x`ae{%Xw^jHhurEh{0Dp|hc}YTb!`PmUFx(2dvdf(eDt`DMcgn!7tN$O8(n zUr_#+A>_hD&I5S8vwR~q);;kg*L`ze^V-FI{X0{%HSao09^xwF#o^GX(~q)d;a9vnOb>hVHiREEE!Q1P zu{bj$`WR1V1#K0AzvY*$!541+?+-8fE~tEU@8(wlvin;D>KCjFJ-fsX@#l{h{RZc6 z2bkS0zU@pa@xBkx)t87sYCWJ);XA|mmy-Y44tjqCVE>Bue^t_*%k3@V!f^8;T*;R8 z7~@|gevSI(7wh-bK8K+;jDm|Yqz2M7UdUU!#opRnP6$zf-(VAaQ&_p6oY>zLe?l3H zuQWbbUOGPGvdrN0nzJ$({oZw6u|T12C&XEL{-jlOy!`dT(Ri-o-@&t7C) z!%0Cu;4NJKQHnD@<+bf;0&czexKQPt%DS-Av)~nRV{i*)T-N5DrxUdIMI?NEjp4{S zXO8E8EbKtQ|K=&)$OB7n9ktCI7#$1V5LhPEvwbZF?iwEYbO2G#x1;Vq$($#oA`O5Fo6%Kc^!>>BvunVck>P*MqTHUT|0PA@ zuH;2jMS9pNH`fMN@y)>{!x{RG0nrk3ulc(kT0rlGlfB zruBaa_s?r~5KNY2@e9fB`4e*50v6R`z1BO~SOOO3kj1sa^m75Em$$uk^k!9$DGIc)QW;`u@y^hzoZKLjK-^_> z9$Fd&U30L2K#gA@%2T$ihNs&$DfR}x>$z#&vGVqz*uu(iXY_QnaEP1BYF}&j-E2*Z z>-i0Wr^r7#oJkJoL`%T%>f3`&+<7hn0DWnO7xxu^d{h_n02n*gzyHtf2>uex?%&aC z{Es(Ak0NOgzFhwAv%9|QJ$ieOP-l6m z#2ub|sh|9XFFKM@A6M@RKd*bl?b7eRRGqz&XJt(8p{%|rS;tqsfZ45Hne~TXEPM;- z#93(1*BiQ*tueZvsn}Bj?%Jq_Y}`i0({7p9pf2Zt*511SHJLSDtVn$Pcw;q`1iST1 z(8lim%p>%5^ZWe>rw{vp(RiIp@2fIuV*ww9x|BLR|8uo?;ff1}@ZZr$IT)q=*)oqh zyxD*QGMNvvlU1G9>Ecf0d_%Fp@5t2Oo}p)q`mH`tW`Jo7fZ_i<)Dh{q z`-KIp_>#`p&6(Vj|CcU-^_gEbmhi>L{C75}kzZDSU*C2Byw3A_D`YD8iEet2ci-ov zo+}OZ@7)jMTj1BBNfWuKe!n00?Y)RErvJxi?lEz1o_67aeOcGze<+c>3{a4#iy@k$ zvSW5{x5K3PvwS{cpp2Pl)tS*X{N@N#bprDH0UFLW7eCyIMfU%^e5~jT`e`zc$cHjv ziVO7U`5trX`_Ai};4LS!d%9)t(JjV{eSLa542Dq{k*m}obY1d(-@oy!5x|)kLGVMo zN87NX3cgukVq~OpELanH`BL9~tNY9+{8PUkble`fZex#M*6#z2 zDw<`Ewd_D$dj$JiOE=9p$FBioXip|fA}8W#9T|KYE4z(1GdKv;d4vNmm9VVxtrwRb z;wf!^U!sc)kN(Z69#i%$YJ;~9eBd4!Pj>mAICc0TMhK;#70RtZ%u#MHo)nDQhSdNefzK5Ytczl7?*DvTBa zDb=(^(uDQWFmRz-lEh_b1nFljVD*pZp>LZamO-LQS+!ZE@w69Vs5B`gYGoNsyT)3n zwsPo-n3Sj)WCd}S19k&0Uy(qPpFkcW%#>W(K%ca52`zS+G%jzjrdcW*m{}pzlu(jo zty#r3W)>B(oSZez9W6CfMz$0YgxlMI5MJ0y)|>gvgf29A($rz%}L*Dlr*Xn|}cO05kUE!Kl>IcCrqVc&yC(=%#x+2>8^Ch)Uvu zy~FkE2u%EI{+Ltm(QUVyC%`=8lnTsC!bfp^$7qm-23WYckFD5`WjuV?|3Z&i?@*Ocqr7RniteL0f_8gYt)$#x2xqAoKK+=A1IJN#C?e8J zD-zT2%lcq4XZUOa?P+cpt_BccuW28{rTr+$jHh~jP>xrCDf`;uH^^P29aqoW*PVmiTqCKC!Jl^!@uL zbx{{*jamy6JJP&}#V%mMmG?&~$Uto(qm2p;)GAbDurAOT z7SJ{3MS;hoNQLPYE8)tSkj8wHla`3ipHmjX9o{t1TME$RcB6F z0@?KpkfeX^xyDTd8@mOCsWs9Ff=XdRY+tsTq)-Yi)z{S&rTipwQ%vWSw+92RT21L{ zP?7V2Wn;pwXQunM0 znllDI2V;Ch?2n~DATR4H)No}i&XLOhjX;JCsBcBhj$W!C5Q>;9LaaIL<)r=c6y+Mx z)>=FB&cB<)+`)8sgZ9~j(X#(#AlO=K@`Ze$tG!Sp1tVE(2j^tcB?ca5*~*o{flP=} z9lJk_Q*sxoM)J|A4U=kPJ7N=oQPp~j5YV-Kq;UInLOE#3xKJol0`X1BRfHW1UR#v_ z%dfWw{=xxkXcp)tYSjjh#8zCM2x9SLKD%2Oci_9?_!351^p z_O22I!2yojSN{cWR76Vy~CM!}Nu?XhD6rU%a0ZAtfSalSVupqMh zKJ?&of-K7{F4CnUs)=Zxc1LgmSIkjyHV3p(dyGJ%cScpgeX8uIsb0bctfg09-KEXi|T0C8)`_ZhCbx8Vq;IDzY$oIBI z9&g$|y+2b)e&S|tMHLhJh??!*s##8Ul%V>7hD2LJNLA0bnzoghkLW8xfvQ_EG83#> zIYN;+{5w8Hl$I-Q0b&O)xyJnbAlgi(8l@_0sv@l^YiQGy>=EkEgrcoeu>x~x`otxR z-p`qNutK$EkHmVuHVSPeQy2+AgU*d=i8OYoP9K(IpK8mdDQVZ9vCycy{1rtFnEg}BKATmCEg&+$FibfJaQZ@XPF#&#e+^cw5(v{y6Xi3^_Ux^k%Qrm38ZBV4NV>diLh_@c7sPr z`R63jb%G})N{Xn0Vq%wrJ2;bhFt9KSe3DPlDz|A6v2}80! zw00l<6NFnaoB+clz~pqM!475CjU8srkS{P-ROb^6M3SxGUV`-pfe95e*h9zvpT7j* z!TD*Ko0R-$RHZp}8w;uuJE;B?C z5*ga@3uVBUIjz)t!2SS@zTZTNH8Sw8+E&y~6o_=6CZy?gNTyP>OJCid9utAw-#ozH ze4)lmuTFsMFv7pmJbF0BpLRi@9-Xv_iexfnn8TXID?`n!moJq-zo>o&W{skD_;I^h zMrX!13aDCY1=n&fx31IfVS`G_KPVv`wp|y-A;W?DhwXnz2s!;C@05i-|W7STmN0-6Y3w6KG_6Z zSUF8<9-IaeoR*{m`(!U}3W+|1uQWvQn%V!9a$6Gx4ZVxbXDNm$goNM{olI3h#^Yk| zXNfUPVw`YxM(W!i$PazP2qV@rPZa?O0WY%}!bldYYH;4qFz%0&GJ=8aW~Lb-b`BvH zxIjuE3{Ofb#JHd}XsXgo^;d#3LVBQL-a0oiL*sBrOV8wo^rrj+$fWNtSv5o`#NT?W zMfr0nDmU_nZ!`(K#z&AC7=wtgNA?wrL^8&dAa;l3@Epgj$rLCok3>}7Rc~cTGq^OGgFTQ=QW|# zLgpXItjplbN?GerrROC-suM`1ON3@1#w!;$L!_HLDW*Se_kD*Tu@V-`Ng8k~+4V^c zpQTKF2kT^-6iJf&PSV$>s5llLtdq6{hZAz6B`y@a^J;(SzhpJ1Hc3TGwVb(!0m$IY zO)3_?4;Z4X3F&S{`~^_mm?C8e8Sdxz*N~c2U1=W65VZy~vmc>1>&JLT3k$O17C zl;2y3gl#1GtXlGIxKjbi^yp0mLNs7HN^>-0I$KH)e*^6SiEP+Lvy|OI5!zEqs(Gj{$gfayr|9dztfT8uA(#+s2$!Wxco^&_ zenenuuy#HVI33~~!3@!IRexl*)+|CTB(x3XK;{j$laR*QhD19BLgWC-<~Vj$#Ku$U zG=~_AF%$qBa2?n>V47?z@G)^O1rxW;bgVGZamV4q7bFiCQc`2Y1Q~gs3g0Iuitl?zh z6Aib5>$ItNI{#*!!<}g|H3Zi;V)py6ghY+IzG|TK1qV*5K9JO$wT+L}w#Lf4M4tpXV_Y{;(O7GU07(3pItQF z5VqT85XQm+0Cs_mMH{#M>fG{{u=_#85GrvCnvmi@p<93)+Ey^=26@ZQaJfm@4qB}X zW?H3i7aG`antubUJEs|cv;UTX7>nQ-t_R+*4l+b>9rc3;OeV7f&Y6x-ir z^XidD1gkVNphSrxGn+7fy!;4OI&I$qogyhJAl5=Kydu#Sj0s1bZ5oy*>JMp+PqA+$ zKvzvqv;`gE;e>y0zG$sJNc&FUl0=%8HO=Bu7GptQOv;U!vcn9w%vyPct|0m^s+u*M z%wo2QHxc=hPKJlIwsxEB`rQl}i1-#K=%)p9xG!V6*+!%o(pc((^by`xm^s{fMn3#^ zz=N9jL}`bNnMK{;09iMcflsBM3}z#zS6#bgvW=H5Yf21ZP@h3Po=nDGI*O7aN6`w) zr=BD^>xNWgwya2vZHoAGkOuE)-{H4k(;mDll>S3nEc-TYbwFvXmLJ15j7?ZTUMA!n zsG9;NtJ4{dBQBXI@&HBbmd`?FHOmwL(zHOwT2v{$_ZN=I%1F)47qtTkcmo6tr)k*N zCyS~QmuF9x4LbgGoV4KS{CNG*DX*2)Je;mStUNSN{7AJsf>dBtLV48c5O zDz(gcqvG8VgZVN$hx|%(clhdXC5#A^$Uo>KVa&l{?+k10TiJp&GVNl#93>+F#&5@P zgr+gDCR%oS+@hpwAsKQhwynv~2*INzWn~xB(65s3H_pt-)go1qVuPzNqIT{{(qllAx8%@=};ZxTS{7A5G{o zVwqD@@aPn$WhUb+^l5B?+WdQM6)eK@tQ0~sg@hooRDB+4>o+5_k$#c`Vf}s!$CNb| z)Jz_ig9Wjz7(-?bb}h@Lvr}eF8JTR0N_I0FIx>l-68z%&BF{wqPD1w|iXKcqw_XDK z<7Qj)j_Il!P1SKqLsDTyibeHhqDt(DYyzaF{bebbAF3}@Cl}NK>fd$6lq6pe*~(1K zic7ifqSRH{H95Tq`;qQGDWdg{{7zJ-{a%NbZxX7Hir9!zWMNXLQoA+NMw=eXVJg_%$Yj zXSLoqK8J^zE*p&&5GCg^u|ZG@@vqJxXv4i^c1P`X$aci%l~W|1B!QW<0{Kw=e;m_U zjSEB9c#P{TmxLvRawV@Fk&X@=MEbF@e^BqPDYEG8B&ze&ozYGK@u@*YOb?U8+I6gW zDLo=ZTq)Gh*wK}&%-BEg3^5F_QnZvde{!N}>n*^r<<3Qc9l^Twh}1$EwV{r%#gEKq z#b}AVIGyUC%p-O4Z;U#dSuwM@oFN~3C45!r$8ZVxp3iTcaEa*T(EKorL7;B3~c z-*+?lm~C2mtpfHD3wz`kdF|*PT3ORi5FB!D?*1GA_X}gK&H`1eIvXn?R{pFkL{8M0 z_S6O*M9)W89aS~aG`UN47d0RS%O`v@w?du91o4;>gY<}_XM*KSvYgybs<$b=c-T9h znQ7@O{$eONE|sljlfmbfeP7eM6Z|6by1|(Hd=GLB+&QLbai{1$#$O58SL37d5cG$Q zwZsFLQ#fmKN5~ujV`dA`-hr6t#1o`LgkHj%Ta{Vl2Y54#-XFZGe*LM8kZJrR$;cfc zye*+~Hh-m|9n7Y_KG;sMn%)$DP0xoa#Q_%w*+@${cR0C0GH#?HT|INEH1`5ToUws} zPv4%BV*N!~*c?FwQdL~dLV>tnOzhTdn@9lv6B3i0z#z9SsU?6B_PMB;8%ceRBuye` zJJ!#Xgr}lwBddGY3;qHYQl(r!h!mis`$ BxiDBGh`~tO;%7$s>Rz^Q~A58P#Qod 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 z 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

X!HyUV8_7+@ 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≦o`Dm!}37 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

#=( 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 Eg8!W9cK`qY diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index e0fac79359d..507200802f4 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -41,8 +41,8 @@ extern "C" { /* these lines are grep'd, watch out for our not-so-awesome regex * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ -#define BLENDER_VERSION 262 -#define BLENDER_SUBVERSION 4 +#define BLENDER_VERSION 263 +#define BLENDER_SUBVERSION 0 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d2f6100517a..d278d3733e6 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -13301,6 +13301,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) + if (main->versionfile < 263) { /* Default for old files is to save particle rotations to pointcache */ ParticleSettings *part; @@ -13308,11 +13309,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main) part->flag |= PART_ROTATIONS; } - /* put compatibility code here until next subversion bump */ - { - - } - /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */ diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index 0b313dcb143..2c4d6b0c834 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,5898 +1,7181 @@ /* DataToC output of file */ -int datatoc_splash_png_size= 188517; -char datatoc_splash_png[]= { -137, 80, 78, 71, 13, - 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 10, 79, -105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,103, - 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, - 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131, -163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, - 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248, -126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1, -192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, - 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, - 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, - 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, - 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, - 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, 54, -142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, - 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69, -161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,224, -190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29, -211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, - 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111, -193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202, -179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196, -194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, - 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35, -142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, - 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26, -132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48, -192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137, -245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17, -218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, - 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, - 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, - 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, - 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247, -105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, - 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42, -182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83, -125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,164, -126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117, -129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, - 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170, -150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71, -103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,238, -152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6, -219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60, -163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185, -166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,120, - 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37, -214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,109, -182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115, -180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105, -157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,245, -113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,208, -195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176, -183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195, -111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33, -191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,247, -231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, - 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60, -218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,135, -226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148, -240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, - 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, - 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,110, -139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205, -137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, - 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,151, -174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89, -223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,180, -169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,237, -245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, - 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77, -213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14, -182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, - 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, - 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105, -218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, 16, -116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60, -254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, 22, -255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, 79, -188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,207, -254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, 38, -158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,235, - 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40, -255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75, 71, 68, 0, - 0, 0, 0, 0, 0,249, 67,187,127, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, - 0, 7,116, 73, 77, 69, 7,220, 2, 15, 16, 38, 41, 22,193,141,250, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,220,101, - 87, 85,231,253, 93,123,159, 59, 60,207, 83,115, 85,170, 50,146,137,132,132, 81, 8,208, 54, 40, 70, 9, 32, 40, 42, 72,130,208, -138, 10, 10,221, 14,221,106, 55,130,173,253,170,175,162, 4, 7,212, 87,232, 38,109,191,190,106,171, 40,210, 14,216, 56, 16, 20, - 25, 84,196,200, 76,152, 50, 48,101,170,212,252, 12,247,222,115,246, 94,239, 31,123,237,115,246,189,169, 74, 42, 69,134,170,244, - 89,245,121, 62,245, 12,247,158,123,134,189,247,111,173,223,250,173,181,161,183,222,122,235,173,183,222,122,235,173,183,222,122, -235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173, -183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222, 30, 16,243, 15,240,231,137,125,141,129, - 11,156,227, 52, 85,214,129,218,126,223, 91,111,189,245,214, 91,111,189,157, 2, 38,128,115, 78, 30,254,227, 87, 62,238,205, 31, -250,197,111,185,227, 99,191,242,188,125, 63,247,237, 79,248,211, 97,229, 46, 43, 94,211, 91,111,189,245,214, 91,111,189,157,228, -145,186, 0,195,239,123,246, 35, 94,243,139, 47,184,228, 37,123,234,141,149,211,182,172, 44,125,245,191,186,232, 17, 95,117,201, -105, 87,188,247,250,219,110, 59,176, 58,251, 52,160, 61,184,247,214, 91,111,189,245,214,219,201, 13,234, 14, 88,254,154,243,150, -190,245,153,187,155, 71,111,236,221, 79,125, 96, 31,205,198,148,139, 47, 62,119,251, 11,190,234,194,231,126,234, 75, 7,252,103, -110, 57,252, 97, 96,163, 7,246,222,122,235,173,183,222,122, 59,185, 35,245,209,251,111, 62,124,219,206,173,195,199, 62,245,194, - 45,167,107,163,132, 35,135,105,142, 28, 97,251,238,221,213,139,158,254,200,175, 9,177,185,232,189,159,184,237,131,192,190, 30, -216,123,235,173,183,222,122,235,237,228, 4,117, 0, 81,229,200,219, 63,113,232, 67,183,111,132,157,207,184,116,219,197, 99, 95, - 81,111,108, 16, 14,238,135,209, 50,207,120,234, 35, 47,125,236,185, 91, 47,255,187,143,221,114,243,234,164,185,177,127, 68,189, -245,214, 91,111,189,245,118,252,209,243, 3,253,121, 99, 96, 43,112,246, 87, 61,124,243,119,254,207, 23, 93,240, 61,231, 46, 85, -227,245,245, 26,188,199,157,121, 30,227,115,206,225,134, 91,246, 29,126,197,175,191,235,231,223,249,161, 47,189, 17, 56, 98,239, -215,147,249,102,170,234,101,192,118,251,241, 70, 17,121, 72, 59, 37,255,167, 93,111,111,189,245,214, 91, 15,234, 71, 55, 7,108, - 1,246,156,190,165,250,166, 63,248,206, 11,127,228,171, 78, 95, 57,125,178, 17,128,136,236, 57,155,165,135,157,207, 76, 35,255, -233, 55,223,247,219,255,207,159,126,244, 39,128, 47,216,249,126,217,192,174,170, 23, 0, 23, 28,231,203, 15,136,200,117,199,121, -220,119, 0, 87,216,143,175, 22,145,171, 31,226,160,254,127,212,245,246,214, 91,111,189,157,236, 86,125, 25,160, 28,129,205, 59, - 55, 13, 30,179,115,165,218, 25, 85,100,206, 83, 16, 16, 17,209,252, 27,201,191,111,255, 90, 1,203,117,208,141, 31,126,251, 29, -127,249, 43,223,114,206,183, 60,101,247,202,182, 89,173,112, 96, 31,147,229, 77, 12,118,238,225,215, 94,113,249, 75, 46,123,248, -158, 71,252,208,155,222,253,202,131,171,179,247,222, 71,192,126, 37,240,218,123, 1, 94, 0,111, 1,174, 21,145,107,250, 97,243, -144,117, 82, 60,240,175,128,175, 3,158, 4, 60, 10,216, 3,140,128,131,192,231,128,127, 4,126, 79, 68,254,225,126, 58,135, 39, - 3, 87, 1, 95, 11,156, 5,236, 4,214,237,179, 63, 2,188, 7,120,187,136,124,225,100,189,134,222,122,235,237,212,138,212, 5, -112, 43, 35,255, 21, 63,251,236,115,127,238, 69,143,219,125,249,214,165,193, 48,138, 75,128,237, 92,250, 18, 65, 42, 63,247, 51, -206, 33,222,119, 63, 75,250, 91, 68,180, 86,137,227,170,242,148,199,241, 30,135, 48, 88, 25,243,145,155,110,223,251,178,215, 95, -251,147,255,252,233,189,191, 9, 76,191, 28, 96, 87,213, 87,221, 27, 80, 95,176,107,129,171, 68,228, 64, 31,169, 63,116,174, 87, - 85,255, 43,240,124, 96,247,113,190,229, 93,192, 75, 69,228,166,251,232,243,207, 2,222, 0,124,243,113,188,252,157, 34,114,197, -201,118, 13,189,245,214,219,169, 27,169,159,246,186,231,158,255,250,239,123,202, 89, 95, 61, 91,143,104, 20,188,147, 20,192,171, -164, 47, 28, 18, 37, 65,175, 2, 78, 82,108, 31, 21, 60,136, 72,138,247, 21,188,136, 84, 78,188, 69,196, 9,212, 21, 80, 37,138, - 48, 93,159,241,216,115,119,159,246,142,159,123,254,175,127,223, 27,255,246,162,223,255,155, 79,255, 60,176,247, 62,138,218, 51, - 80, 31,203,174, 56,202,207,239, 80,213,103, 28, 13,216,123, 59,101,237,223, 30,229,119,251, 44,178, 61,104, 17,243,163,233,196, -165,151, 3,255,172,170, 95, 35, 34, 31,251, 50, 1,253, 81, 6,176,187,138, 95, 31, 2,110, 4, 14, 0,155,129,139, 73, 90,148, -147,242, 26,122,235,173,183, 83, 23,212,101, 52,112, 23,124,227,165,219,159,164,107, 53,245,100, 10, 49, 38,144,110,153,117,131, - 91,145, 14,119,189,195,237,220,109,224, 30, 17, 7, 68, 99,241, 5, 90,132,119, 49, 1,191,115, 16,108,249, 17,152, 77,107,182, - 14,135,238,247,126,244, 57, 63,252,164, 71,156,254,152, 31,251,141,247,253,232,180, 14, 31,186, 47,128, 93, 68,158,113, 15,139, -110,166,235,115, 30,254, 50,224,229, 64,159, 67,126,232,217, 39,129,223, 4,254, 92, 68, 62,177, 48, 14,118, 0,255, 17,120,149, -141,204, 29,192,219, 84,245, 82, 17,153,156, 32,160,159, 15,188,179, 0,244, 15, 2, 63,102,209,120,179,240,218, 71, 3,207, 3, -206, 63,153,174,161,183,222,122, 59,121,204,157,192,123,252,172,142,251,222,252,145,189,239, 23, 55,101,101, 24, 88, 89,130,229, -177,218, 87,236,190, 31, 69,198,110, 6,161, 70, 70,203, 9,228, 99,132, 24,105,163,114, 0,102, 16, 39, 16, 55, 64, 39,192, 52, -253,172, 51,123,189,162, 26,169, 67,164,153, 6,126,248, 91,159,116,197, 59, 94,247,173,127,114,222,158, 45,207,183,133,201,221, -159, 55, 73, 68,222, 2, 60,195,162,166,108, 87,246,195,231, 33,101,239, 7,158, 35, 34,151,138,200,235, 22,193,208,198,193,126, - 17,249,113,224, 37,197,175,207, 59, 70,132,124,188,246,223, 73, 57,111,128, 63, 0,158, 36, 34,127,181, 8,232,246,249, 31, 19, -145,159, 17,145,151,158,100,215,208, 91,111,189,157, 36,118, 34, 57,245, 1,137, 6,124,212,215, 92,184,233,249,151,158,190,116, -174,128,139,170, 49, 31, 50,106,130,236,245, 89,116,143,127,216,230, 71,126,239,211, 30,126,193,184, 26,187, 8,144,115,234, 8, - 52,235,136, 23,220, 57,143,195,157,246,112,100,203,233,200,120, 11, 52, 83,226,218, 94,244,200,173,196,189,159,134,102, 2,126, -201,114,237, 30,193, 49, 92, 25,241,233, 91,246, 29,250,250, 87,255,175,151,223,116,235,161,183, 90,180, 30,143, 51, 58,154,203, -169,139,136, 28,231,251,222,100, 17,250, 81,223,119, 34, 57,102, 85,221,110,145,127,182,235,238, 11, 90,127, 65,225,127, 66,229, -102,247,116,140,147,229,122, 23,206,243,186, 7, 34, 45,162,170,127, 9, 60,203,126,124,143,136, 60,237, 4,142,241, 34,224,247, -236,199,143, 3,143, 23,145,250,129,154,252,247,197, 53,244,214, 91,111, 39,151,157, 8,253, 30,128, 53,224,250,191,187, 97,245, -245,127,119,195,234, 18, 71,111, 98,179,243,217,143,221,253,178,231, 63,241,252, 51,150,221,208, 53, 81, 19,245, 62,153,160,211, - 53, 8,107,248,139,191,154,234,137, 47,198,159,255,149,199,164, 16,116,255,205, 52, 55,188,147,240,185,247, 33,126, 8,170,168, -192,108,125,198,197,103,238,220,250, 39, 63,253,205,111,120,250, 43,255,112,255,157,135, 38,127,195,125,151, 99, 63,150,221, 39, -117,216, 6,108, 47,183,104,255,178,163,252,253, 70,224, 26,224,154, 99, 1,148,170,190,182,120,239, 91, 68,228,154,226,184, 47, -103,161,100,207,142,121,245,241,168,247, 85,245,229, 36,122,246,130,123,123, 94,247,199,245,222,205,181,190,202,142,187,189,120, -249,181,198,170,220,223,246,103, 5, 32, 94,122,130,199,248,247,197,247,175,122, 32, 1,253, 62,188,134,222,122,235,237, 20, 7, -245, 8, 76,128,134,212, 20,198,178,222,109,212,175, 34, 60,242,234, 23, 92,252, 83,175,188,252,188,203,195, 12,102, 33,160,245, - 20,157,172, 67, 51,133, 74, 25, 61,231,199,168,158,248,162,123,166, 18,118,156,199, 96,199,203,112,167, 63,150,230, 3,191, 1, - 46, 36,200, 23, 97,182, 94,243,216,139,206,216,245,250,127,119,249,235,190,227,181,127,249,124,224,243,247, 51,168,151,224,113, - 66,209,160,170, 94, 1,252,225,194,177, 22,237, 2, 99, 18, 94,174,170, 87, 29,163, 78,254,178, 34, 74,190,214, 26,193,188,233, -104,160, 89, 28,243, 77,170,122,153,136,188,226,110,192,247, 77, 28, 59,181,144,207,235, 74, 85,125,198, 3,120,189, 71,187,214, -119,220,195, 49,239,111,219, 87,124,191,229, 4,198,193, 35,129,236,205,222, 1,252,229,169,118, 13,189,245,214,219, 67, 3,212, - 49,224,172,237,139, 2,208,253,185,187,198,207,125,211,139, 46,185,250, 89, 23,239,186,104,186, 17, 9,161,134,233, 6, 52, 53, -136, 34, 3, 24, 61,239,231,241,143,254,134,246, 96,135, 55,166,252,213,135,110,230,175, 62,124, 51,251, 87, 55, 24,120,225,210, - 51,119,240, 77, 79,124, 56, 79,184,240,140,116,224,115,158,132, 12, 55, 83,191,247,151, 96, 88,165, 83,112, 66,179, 58,229,219, -159,254,232,199,255,207,119,126,242,101,127,245,129,155, 95,195,151, 89,238,118, 15,209,230,149, 11, 17,225,189, 61,198,149, 6, -112,165, 93,103,199,202, 78, 66, 25,205, 94, 64,167,180,191,238, 30,156,141, 63, 44, 34,235,183,216,113, 51, 32,150,231,253,114, - 85,189,241, 24, 84,249,107,143, 2,232,229,177,242,185, 93,118,148,235,120,160,174,119,251, 2,160, 31, 40,206,239,130, 7,112, -238,156, 87,124,191,247, 4,222, 95, 58, 69,239, 22,145,240, 32,204,255, 47,247, 26,122,235,173,183,135, 8,168,207, 5,211, 6, -162, 91,159,253,232, 29, 63,124,205, 85,143,248,209,179, 55, 45, 45,109,172, 5, 52, 76,161,158,218, 39,121,164, 89, 99,240,212, -239,153, 3,244,127,252,204,173,188,242,119,223,195,141,119, 30, 97, 60, 26, 48,168, 28, 78,225,195, 95,216,207, 31,253,195, 39, -121,238, 19, 47,228,191, 92,249,213, 44,143, 6,184, 61,151, 80, 61,250, 42,154, 15,254, 38,108,222, 3,104, 74,162,171,240,211, - 47,121,202,247,252,245, 63,223,252, 71,170,124,140,148, 34,184,175, 1,253, 77, 11,160,113,205,189, 60,198, 5,118,140,108, 55, - 2,175, 16,145, 69,231,224,234,133,232, 54,127,246, 19,239,230,240,175, 42, 0,248, 21,139, 20,182,125,246, 31, 22,224,249, 42, - 85,157,163,186,141,114,127,249, 2,248, 94,181,144, 71, 47,207,237,138, 7,233,122, 95, 85, 28,239,213, 38, 98, 92,124, 86, 15, -132,189,160,248,254,253, 39,240,254, 39, 21,223,127,196,206,125, 39,240, 50, 59,246,133,192,178,129,237,191,144,168,242,223,185, -143, 41,250, 47,247, 26,122,235,173,183,135, 24,168,103, 64, 63,255,135,190,238,172,159,121,237,179,207,251, 55, 85,172, 88,159, -214, 16,102, 16,154,148, 71, 23, 64, 3,178,235, 28,170, 39,119,162,219,207,220,118,128,151,188,225,175,184, 99,163, 97,121,101, -137,218,123, 6, 3,207,208, 11, 94,135, 72,104,120,235,251, 63,139,119,142,159,125,241,229, 41, 98,127,248,215, 18, 62,245,151, - 16, 86,161, 90, 74,122,187, 89,205,227, 47,220,125,250,147, 47, 61,253, 89,239,255,196,109,215,147, 82, 4,199, 29,173,155,112, -238, 88,118,197, 81, 0,236,104,224,116, 79,246,166,133,232,242,137,199,202, 75,139,200,181, 70,111,231,136,244, 50, 85,125,249, - 61,228,195,175, 21,145,171,142,113,188, 27, 85,245,213,118,188, 28,237, 94, 97, 78,192, 34, 88,102,192, 60,106, 29,126,113,110, -255,252, 32, 94,239,141,199, 58,222, 3, 36,146,123,198,130,211,241,251, 39,112,152,199, 22,223,223,170,170,207, 4,126, 11, 56, -125,225,117,231,216,215, 55, 3, 63,174,170, 47, 20,145,127, 62, 73,174,161,183,222,122, 59,201,236,203, 41, 5, 19, 64,118,172, - 84, 87,188,249,187, 30,241,199,175,255,198,243,254, 13, 53, 76, 99,157,202,209, 36,192,192, 65, 37, 80, 9,202, 12,127,241,211, -144, 77, 93,127,141, 87,255,238,251,248,204, 23, 15,113,168, 17,110, 93,109,248,194,161, 25,159,189,115,131, 27,239,220,224,192, - 36,160, 85,197,214,173,155,248,147,127,250, 12,215,126,216,154, 94,249, 10,127,193,211,208,195,123,193, 59, 16, 37, 10, 12,151, -134,188,240,242, 71, 92, 65,202, 13,222, 91, 85,255,107,239,230,235,138,133,232,252, 25,247,182, 85,172,229,128,203,227,188,250, -158,192,199,232,231,107, 22,156,139,187,179, 87,220,195,241,174,165,163,169, 41, 89, 7,163,201, 75, 22,226,234,187, 59,191,163, -156,219, 3,125,189, 87, 63, 88,141,127, 84,117,235, 2, 3,241, 65,224,173, 39,112,168,157,197,247,143,179, 72, 60, 3,250, 29, -164,118,176,255, 0, 28, 94,120,102,127,167,170, 79, 57, 73,174,161,183,222,122,123, 8,128,122, 22,197,109,250,234, 11, 55,255, -200,251,190,255, 81,127,244,194, 75,119, 60,110,125, 61, 16, 8, 16,235,116, 84, 47,136, 23,164, 18,196, 59,164, 18,220,153,143, -110, 15,114,211,237, 7,249,139, 15,125, 30,150,151,186, 50, 55,239, 9, 56,142, 76, 3, 55,237, 93,231,198, 59,214,169, 85,136, -222,243,206,143,126,174, 59,129, 93, 15, 71, 55, 14, 3,141,157,141, 66, 19,185,228,236, 29, 23, 2,103,112,255,109, 84,115,165, - 69,145,247,150,226, 45, 1,234,192,189,112, 10,174, 93,248,236, 99,217,117,199, 89,178,118,221, 49,206,233,138, 5,128, 61,158, -243,123,203,131,116,189, 55, 62, 88,253,247, 85,213, 89, 52,157,155,191,204,128,151,181, 91, 28,220, 59, 43,187,195,253, 0,169, - 55,251,237,164,230, 50,167,139,200,211, 68,228, 41,192,105,192,247,147,196,169,144, 40,249, 55,171,234,150,147,224, 26,122,235, -173,183,147,204,238, 45,253,158,233,246, 51, 95,250,149,167,253,212, 27,159,123,238,247, 14,162,103,125, 22,193, 43,104, 68, 20, - 36, 10,234,197,168,247,244, 22,169,134,184,237, 15,107, 15,116,243,222,195,108,172,215,176,101,212,249, 9,121, 89,113, 14, 84, - 57,184, 90, 83,207, 26,206,222, 90,113,100,210,165, 18,101,243, 30,192,195,116, 29, 89,218,140,162,208, 52,156,191,103,243,238, -209,208,159, 62,157,133,235,239,229,117,189,250,110,254,118,129,129,212, 5, 36,106,184, 85,127,223,139,104,241,138, 99, 0, 43, -247, 20, 93,151, 77,122, 76,185,126,221, 61,128,225,221,217,141,119,115,141,247,234, 88,139,231,246, 0, 94,239,117, 15,226,124, -249, 37,230,123,179,191, 82, 68, 62,120,130,199, 26, 47,252,188, 6,124,173,136, 92,191,112, 79,102,192, 27, 85,245,115,192,159, -219,175,207, 1,254, 29, 39,214,209,240,190,188,134,222,122,235,237, 20, 6,117, 1,216, 60,246, 79,249,133,111, 56,251,117,175, -184,236,180,167,206,102, 48, 25,164,150,175, 26, 20,169, 35,195,161,227, 80, 8,113, 9,231,168,124, 91,193, 46, 0,218, 53,201, -218,189,117, 25, 63, 28, 16, 34,214, 47, 94, 13,212,237,127, 21,240,142,181,245,154,207, 77, 38,140, 30, 87,156,170, 6,208, 58, - 53,165,113, 91, 16,141,104,140,236, 88, 25, 44,111, 93, 30,110,191, 99,182,113,175, 24,136,227,108,154,242, 42, 82,222, 57, 55, - 79,121, 7,119, 47, 94, 43,173, 44, 51,187,192,154,182,156,136, 29,139, 33,248,114,169,232, 19, 2, 97,123,237,101, 15,240,245, - 62, 40,160,174,170,255, 23,240, 67,197,175,222, 32, 34,191,246,101, 28,114,157,212,211, 61,219,213,139,128,190, 48, 70,255,183, -170,190,165, 96, 48,190,251,222,130,250,253,112, 13,189,245,214,219, 41, 8,234,153,202, 30, 92,178,103,252,226,223,125,225,249, - 87, 63, 97,247,242,238,141, 89,132, 81,149, 0,189,142, 84,117,100,184,228,249,241,119,126,233,195,231,110, 27,110,251,222,203, - 78, 59,119,162, 32, 57, 90,175,107,226,157,159,197,157,147, 68,191,151,158,181,147,127,117,209,110,254,254,250,189, 80, 85, 9, -196,157,206,247,133,139,233,189,147,253,107, 92,116,122,183,190,235,225, 91, 96,122, 24,157,110, 67,108,199, 24,141,217, 41,192, -113, 63,208,239, 34,114,181, 69,145,185, 19,221,241,136,215,142, 6, 78,247,102, 47,247, 7,195, 14,220, 7,175, 61,149,174,247, -120,192,240, 63, 1, 63, 93,252,234,119,129, 31,252, 50, 15,187,186, 0,234,191,125, 28,239,249,173, 2,212, 31,161,170,187, 69, -228,142, 7,241, 26,122,235,173,183, 83, 12,212, 51,221,190,251,170,175,216,241,202, 95,125,206,217,255,254,244,241, 96,184, 30, - 5, 89, 78, 33,184,206, 34,227,168, 76,134,240,131,111,251,220,219,174,121,223, 29,127,252, 63,174, 58,239, 71, 69,141,121,247, -166,126,175, 28,122,123,183, 17,148,115,194, 79, 60,239,137, 60,231, 19,127, 14,147, 26, 70, 67,219,221,205, 64, 61, 2, 26, 97, -117,157,199, 63,242, 44,190,227,107, 30,213,190, 55,222,113, 61,170, 53, 18,102,233,133,170, 56, 81,246,175, 78, 54, 14,175,207, -142,220, 95, 55,203,128,189,220,178,245, 74,238,101,105, 27,137, 2, 63,209,206,116,167,226,174,112,167,244,245,170,234, 15, 0, -191, 80,252,234,143,129,239,186, 15,114,208,119,146,244, 31, 0,251, 68,228,115,199,201,140,176,224, 48,221,241, 32, 94, 67,111, -189,245,118, 10,129,186, 0, 82,121,185,248, 53, 95,127,230,175,190,242, 95,159,254,172,166,129,245,202, 33, 35,135, 70, 69, 55, - 2, 43,149,112,243,180,153,124,247,255,188,233, 55,222,245,233,195,191, 11,196,207, 31,170,111, 71,244, 18,109, 35,117, 96,188, - 76,184,249,189, 84, 7,110, 70,182,159, 7,192,179, 31,127, 30,215,252,187,175,229,135,254,199,123, 88, 63, 56,133,241, 40, 41, -218, 85, 97, 86,195,250, 6, 79,184,100, 15,127,244,202,111, 96,101, 60, 72,103, 85,111, 16, 62,241, 86,100, 56, 74, 10,123,141, -104, 12,224, 28, 55,220,118,112,239,100, 22,246,114,255, 9,229, 32,229,156, 51, 93,125,197, 9,188,255,154,135,250, 62,235, 15, -149,235,181,218,253,146,158,254,107,224,219,142,182,217,202, 9,216, 39,129,199,100, 80, 63,206,247,236,187, 27, 70,228,193,184, -134,222,122,235,237, 36, 51,119, 15,160,190,251,181,207, 57,235, 13, 63,250,212,211,159, 53,105,160, 94,174,144, 37,143, 70, 96, - 61,176, 50,246,252,237, 45,107,183, 95,254,198, 79,254,228,187, 62,125,248,191, 2, 55, 3, 95,250,212,157,147, 79,225, 4,130, - 5, 2,222, 37,138,189, 89,165,126,239,235,231, 62,228,123,159,254, 40,254,225,231, 95,192, 15,125,227, 99, 56,127,199,136,177, -214,108,114,129,167, 92,180,139, 95,255,190,175,227,221,175,185,146,243,247,116, 66,225,230, 3,191,129, 30,188, 25, 6, 35,212, - 68,120, 52, 1,156,240,169, 47, 30,248, 28,169, 89, 71, 60,201,238,243,177, 84,231,167,250,249, 93,113,138, 94,239,241, 0,250, -119, 3,255,173,112, 16,223, 13,124,139, 9,215,238, 11,251,120,241,253,232, 56,223,179, 40,174,155, 60,200,215,208, 91,111,189, -157, 66,145, 58,231,108, 31, 94,254,221,143,217,241,244,217, 36,194,166, 1, 50, 20,116,166,248, 73,195,104,197,243, 59, 31,222, -247,201, 31,248,163,155,127,225,240, 70,120,143, 69, 17,107,192,248,221, 55, 28,249,167, 91,143,212, 47,221,181, 60,168,130,106, - 87, 4,183,180, 76,252,252,187,105,222,247, 43, 84, 79,237,244, 58,143, 61,119, 23,175,127,233,211,248,249,239,104,184,109,255, - 26,195, 65,197,153, 59, 86,238,114, 62,225, 19,127, 74,243,145,223,129,241,114,242, 58,156, 71, 67, 68, 66,164,158, 76,121,235, -123,110,120, 31,169, 31,253,253, 9,234, 39,146, 31, 46, 5,101, 87,168,234,246, 7,171,206,250, 24,118, 99,113,126,151, 29, 39, -232, 93,118, 10, 95,239, 61, 93,219,139,129,223, 40,192,240,253,192, 55,138,200,198,125,248, 49,239, 46,190, 63, 83, 85,199,199, -177,159,249,226, 62,234,183, 63,200,215,208, 91,111,189,157, 66,145,122,117,222,142,209, 69,219, 71,158, 38, 38,117,187,174, 7, -134,179,128,140,132, 87,254,213, 23,174,125,201,239,220,240, 31, 15,111,132,119,218,226,114,136, 84,243, 90,223,114,112,246, 79, -111,189,254,192,135, 6, 21,232, 36, 0,138, 56, 82,189,250,242,102,194, 71,126,155,250,218,159, 64,215,239,156, 15, 67, 6, 21, -231,237,217,122, 87, 64,175, 55, 8,239,127, 35,205,123, 94,131,140,134,136,247, 41, 95, 63, 24, 65,221, 48,112,240,143,159,186, -245,182,191,255,196,237,215,146,122,191,223, 47,160,190,176,197,231, 98, 68,122,119,182, 88, 38,246,242,147,108, 28,148,231,183, -221,218,182,158,104,148,126, 42, 92,239,221, 61,227,111, 37,137,214,242,220,248, 32,240,245, 34,114, 95,107, 53,222, 77, 71,167, - 15,128,203,143,227, 61,207, 42,190, 63, 72,162,240, 31,204,107,232,173,183,222, 78, 33, 80,247,159,184,125,227,211, 95,156,133, -102,121,217,179, 92, 7,150, 61,172,250,168,223,254,135, 55,254,254, 47,190,227,214,159, 2, 62, 76, 18,252,172,145,250,173,231, -141, 94,110,255,213,191,187,253, 45,135,234, 64, 85, 7,168,163,237,133, 78, 18,206,173,108, 38,222,240, 23,204,222,250, 18,194, -199,223,138, 30,254,210,209, 23,216,181,189,196, 27,174,101,246,199, 47,165,249,224,127,135,241, 24,124,149,154,205,136, 32,110, -128, 76,106,240,202,207,190,249,131,127, 12,124,214, 62,255, 62, 7,117,107, 56,179,184, 57,201, 91,142,231,189,214,159,188, 20, -139,189,234, 30, 34,221, 7,218,222,194,188, 40,237, 85,199,113, 47, 94,117, 10, 95,239,177,174,235,185,164,118,169,121, 43,225, -143, 3,207, 20,145,131,247,245,103,217, 6, 46,165,226,253,199, 84, 85,238,230,220, 54, 51,175, 86,127,187,136,196, 7,243, 26, -122,235,173,183,147,207,238,150,126,223,183,218,124,224,133,191,127,211,213, 63,244,180, 61, 87,238, 92,174,182, 94,127,231,228, -139,255,237,189,119,188,237,227,183,172,255, 25,112,171, 69, 11,179, 5, 16, 13,192,198,103,247, 78,254,226, 53,127,115,219, 21, -175,251,134,115,158,209,172, 54, 80, 57,100,228, 59, 50,112,121, 11, 52,135,168,223,251,115,200,112, 19,178,243, 18,220,142, 11, -161, 26, 67,172,137, 7, 63,143,238,253, 56, 76, 14,194, 96, 0, 43, 69, 3, 46, 5,162, 67,167,194,112,147,227,183,174,253,212, - 39,254,250, 95,190,244,251, 36,234,253, 62,221,147,218,162,243, 43,184,235,254,226, 7,184,119,202,247, 87, 48,223,123,253, 29, -182,205,232,181,199,241,249, 87, 26, 16,220, 47,130, 51, 17, 57,160,170, 87,211,149,235, 93,161,170,111, 58,218, 22,173, 6,232, -199,179,237,233, 73,123,189,199,248,220,103,154,115, 99,138, 76, 62, 13, 92, 33, 34,119,126, 25,199, 44,213,229,207, 19,145, 63, - 89,120,201,207, 3,223, 67, 42,109,123, 26,240,122, 85,253,145, 69,176, 86,213,101,224,205,164,166, 51,216,124,187,250,129,184, -134,222,122,235,237,161, 3,234, 53,176,255, 31,110, 60,242,255,254,195,141, 71,222, 97, 11,207, 62,224, 54, 18,213,190,106,175, - 89, 44,139,201,251,173,223,246, 75,239,188,245,245,143, 63,103,249,252, 23, 61,110,231,195, 55, 14,207,144, 45, 67, 24,185,212, -105, 14,133,193, 0, 25, 12,146,130,125,223,135,105,238,184,174, 61,156,184, 10,170, 33,172,108, 90, 88,185,128, 89, 64,227, 18, -227,209,144,235, 62,115,251,129,255,240,223,223,255, 58,139,210, 55, 56,129, 29,218,244,110, 90,163,221, 29,104,221,155, 60,177, -117, 75,123, 5, 93,207,237, 12,116,215,146,232,234,197,190,236,217,153,200, 17,238,171,239,231,177,112, 13,243,219,160,190,220, -104,248,107,138,115,187,130, 68,165,111,183, 72,252, 0,199,200,193,159, 2,215,187,104,127,194,188, 96,109, 29,248,255,142,119, -104,136,200,215,159,128, 51,181,215,202,205,126,203,126,245, 31,128,167,169,234,111, 0,215,219,252,124, 2,169,123,220,185,197, - 91,255,111, 17,249,200,201,112, 13,189,245,214,219,169, 3,234,193,128,187, 49, 16,119,246,187,169,125, 5,142,189, 19, 90, 3, -172, 70,213,143,254,219, 55,223,244,179, 59, 87,170,215, 60,243,225, 91,207,154, 28,154,193,230, 1, 50,246, 93,253,122, 66,112, - 24,142,239,190, 14, 77,129,168, 48, 13,196,195, 51,150,206,216,195,245,183, 30, 88,189,234,234,191,187,250,208, 90,253,158,194, -201,184,191,237, 58, 3,244,123,221,217, 76, 68,174, 41, 26,216,108, 47,128,242, 65, 87,136, 91,180,126,149, 69,215, 23, 20, 96, -251,218,163,188,252, 0,112,213, 49,254,118, 74, 92,239, 81,108,105,225,231,175,120,128,238,251,111,171,234, 25,192,207,217, 28, -123, 60,240,134,187,121,203,175, 0, 63,115, 50, 93, 67,111,189,245,118,242,152,187, 7, 24,109, 72,249,242, 3,192,126, 18,221, -190,110,191,215,123,120,239, 20, 56,116,120, 35,188,235,121,215,124,250, 63,255,206, 7,247,125,114, 60,116, 12, 14,215,196, 67, - 53, 76, 98,123, 20, 65, 16, 57,202,151,253, 35, 0,179,136, 30,110,144, 3, 83,150,182,111,227, 93, 55, 30,186,237, 89, 63,121, -237, 79,222,120,251,234,255,178,115, 91,231,254, 83,189, 95,107, 17,235, 85, 34,242,196, 19, 1,244, 18,232, 72,237,101,175,225, -248,154,171,188,133, 68,101,223,239,155,152,216,166, 48, 79,188,135,207,186,150,180,237,233,117,167,250,245,158, 44,102,105,134, -203,129,127,186,155,151,125, 4,248, 38, 17,249,225,163,229,210,123,235,173,183,222,224,254,109,210, 2, 73,172,179,108, 81,218, -163,190,251, 41,187,191,231,103,158,125,214, 55,157,181,117, 88, 53, 83,165,169, 4,198, 30,169, 92,138,220, 93,113, 58,170, 16, - 64,155, 8,147,128,175, 35,131,129,112, 56,192,207,189,103,255,223,254,242,219,110,120, 83, 29,226, 7,232, 74,233, 78,201,102, - 26, 70,113, 47, 82,216, 55,146,118, 55,187,246, 65, 60,175, 76,135,151,123,162, 95,123,156,187,193,157,114,215,123, 18,141,135, -139,128, 39, 1,103,218,252,188, 13,248, 71, 17,249, 76,191, 92,245,214, 91,111, 15, 54,168,103, 96, 31,147,182,154, 60,253, 97, - 59, 70, 95,247,242,175,222,253, 45,223,121,217,174, 39,159,189,121, 48, 64, 5, 85, 37,138, 16,139,179,113, 10, 78, 53,149,174, - 9,236,155,132,248, 7, 31,222,255,209, 55,189,239,142,183,125,228, 11,107,111, 7,190,104,204,193,198,169, 10,232,189,245,214, - 91,111,189,245,118,170,129,122,254,156, 33,176, 2,108, 1, 78,223,177,169,250,138, 39,159,183,233,201, 47,120,220,142, 39, 61, -238,172,229, 51,182,143,252,202, 74, 37,195,202,137,107, 34,186, 30,226,236,208, 44,174,127,230,142,141,189,111,249,208,254,127, -249,251, 27, 87,255,233,150,131,179,235,128, 47, 1,135, 73, 57,244,251,173, 38,189,183,222,122,235,173,183,222,122, 80,191,251, -207,114, 36,117,238,178,125,109, 6,118, 0,123,150, 71,110,231,184,114, 91, 6, 94,134, 77,212,102,210,232,145,245,105,216,167, -202, 29, 36,138,253, 48, 41,111,190,198, 61, 11,245,122,235,173,183,222,122,235,173, 7,245, 7, 16,220, 7, 22,189,231,175,138, -174, 97, 6, 22,129,215,246, 53, 51, 32,111,122, 48,239,173,183,222,122,235,173,183,147, 7,212, 23, 63, 63,131,124,254,191, 4, -117, 45,254,239,129,188,183,222,122,235,173,183,222, 78, 98, 80,191,187,243,233, 65,188,183,222,122,235,173,183,222,122,235,173, -183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222, -122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235,173,183,222,122,235, -173,183,222,122,235,173,183,222,122,235,237,126, 50,185,236,180, 93,170,128, 56, 16, 60, 14,240,206, 33, 78, 82, 39, 24,201,173, -222, 28, 34,224, 36,245,135,241,222,225,108, 31,116,239, 82, 35, 56, 5,188, 19,196, 9,131,252,122, 0, 17,236,109,120, 71,251, - 62, 39,224, 17,162,166, 93, 87,157, 19,124,126, 33,138, 23,193,171, 18, 81,156,203,251,174, 87,136, 6, 28,130, 31, 8, 62, 4, - 70, 78,240, 40, 30, 80,167, 16, 97,136, 50, 85, 37,160,108, 21, 88,169, 28,195, 42,245,163,165,242, 92, 60,155,240,132, 11, 4, -249,198, 11,224, 43,214,144, 29,207,131,241, 51, 96,184, 2,178, 9,100, 37, 93,188,206, 64, 87,161,190, 29,142,188, 14,253,244, - 77,240,143, 99,226, 71,239, 96,114,243, 97, 14, 15,132,102,101,204,157,107,240,169, 53,144, 8, 91, 6,176,105,224,112, 46, 82, - 71, 88,171,133,105,128,129,128,162, 4, 32, 58, 65, 67, 32, 70,104, 52,221, 59, 81,235,190,163,160, 2, 66,218,165, 78, 28,169, - 57,110,126,104,154,254,182,216, 83,183,253,187,245,237,145,246,169,104,123,255,219,215,216,126,245,115,191, 3, 84, 28, 98, 71, - 83,181, 70,126, 66,219, 10, 72, 36,245,242,245,214, 11, 80, 4, 42, 15, 81, 29, 81, 99,215, 49, 72, 23,143,156,118,211,109,255, -164,224,237, 69, 51,210, 56,113, 2, 3, 7,227, 42, 29,171,137, 16, 3, 72, 37, 12, 61,108, 95,169,216,188,175,230,172, 93, 75, - 84,223,117, 22, 60, 50,192,142,139, 96,211, 85, 48,126,108,250,128,250, 19,176,246,103, 48,109, 64, 46,128,112,115, 58,250, 48, -192,182, 43, 97,240,104, 82, 71,226, 85, 88,127, 39,124,238,191,193, 39, 60,251,174,190,137, 27, 42,229,208,192, 81, 7, 88,118, -214,203, 88, 32,186,244, 92,163,192, 76, 29,177, 14,204, 80, 98,128,105,132,160, 16, 4, 66, 80,102, 81, 17, 32,106,250,125,190, -110, 5,156, 83,198,164,107,209,152,126, 31, 21, 26,148,202,158,231, 84, 96, 26,210, 51, 70,211,120, 73,131, 99,126,140, 84, 54, -142, 28,218,182, 98,172, 28, 12, 68, 24, 58,216,228, 97,164,202, 29,181,114,103,147, 78, 98,164, 80, 9,172, 6,216, 80,109,231, -221, 88, 96, 87, 5, 35,129, 89,132,101,129,109, 14,238, 12,202,135,167,112, 48, 40,162,202, 52, 20,231,148,199, 93,241,115,110, -255, 88, 14,153,114, 24,196,252,224, 17, 68,180, 29,125,206,190,198,164,243,139,105, 10, 19,237,218,134,164,251,155,199,123, 69, -234, 49,173, 54,130, 29,202,200,254, 94,147,238,187, 22,195, 48,146,174,119, 18,187,115,245,246,229,138,249,147,223,211,144,239, -143,180, 45, 47, 21,165, 18, 88,178,175,129, 77, 73, 87,206, 51, 73,107,219, 80, 96, 69,210, 39,205, 20,234,252,252,237, 61,209, -198,132,147,180, 17,198, 72, 28, 94,210,239, 39,170, 76,219,215,203,220,156,174,128,136, 16,236,247,145,124,108,101,136,176,221, - 41, 75,192,134,194,106, 76,115,113, 93,149,219,163,114, 32,166,223, 47,139,112,182, 75,235,239, 94, 85, 86, 53,125,102, 19,243, -241,148, 90,161, 70,105,138, 49,156,103,177,179,103,148,231,171,144,215,175,180, 80, 69,164,125, 6, 51,148,105, 84,136, 17,161, -235,239, 93,142,137, 60, 36,212,174, 81,224, 46,227, 34,127,137, 20,231,144, 23,163, 98,237,155, 91, 95, 22,142,131,192,192,121, -156,147, 22,195, 70, 26,113,162,108, 68,152,218,170,231,129, 74,187, 57,165,118,222, 1,233,182, 2, 21,193, 11, 12, 92,197,168, -170, 24,120, 79,227, 61,235,245,140,122, 54, 67, 99, 64, 5,230, 27,164,118,239,165, 56,175,104, 63,167,239,243,249,187,118, 13, -135,132,185,222, 87, 68,160, 81,197,197,200,226,162,172,237,189, 77,227, 20, 85, 69, 52, 29, 72,109, 11, 84, 81,219,226, 92,139, -187, 99,223, 56, 17, 68,237,160, 78,218, 1,235,178, 23,160, 66,144,180, 72, 57,215,157,158, 72,247,254,116,234,206, 62, 43,218, -244,180,133, 6, 1,231,210, 77,117,180,206,133, 83, 69,109, 53, 20,177,197, 33,223, 16,192,185,118,229, 64,129, 74, 4,111, 94, -137,243, 48,208, 4,144, 3, 34, 1, 73,103, 16, 3, 90, 76,205,110,186,147, 30,167, 12, 64, 54, 67,165, 48,126, 1,114,246, 47, -161,151, 68,220,193,237,140,238,156,178,114,100,131,189,190,225,112, 28,224,156, 50,240,201,121, 24,136,226,241, 68,133,202,219, - 57, 69, 5, 17, 6,164,133, 60, 22,231,174, 24,144,219,205,116,206,208,132,136,196, 60,197, 99, 58, 51,129,136, 75,131,217, 97, -175, 41, 39, 95, 66,128,202, 29,107, 11, 59,215, 78,160,114, 2, 36,160, 79,231, 40,136, 57, 22,121,193,138,243,147,206, 0, 61, -109,141,235, 24, 58,101,214,164,201,157, 23,210, 60,233,165,123, 44, 54, 86,180, 3,128,242,243, 21,115,222, 34,106,231,226,134, -130, 87, 24, 58,112,123, 39,236,172, 61,213,183,236,129,199, 4,216,122, 38, 44, 93, 1,163, 75,210, 50, 31,111,129,141, 15,193, -250, 45, 32,231,147,118,230, 5,164, 2,105,138,229, 33,164,101,193,237,132,241, 18,108,153, 49, 64, 88, 82, 69, 42, 24, 84,224, -196, 17, 52, 18, 98, 2, 58,196,158, 31,218, 62,180,236,103,229,169, 32, 2, 35, 73,139, 67, 99, 99,185,156, 62, 18,211,177,199, - 62, 57, 50,117, 76,227,219,197,244,158, 1,105, 81,198,165,191, 57,233, 6,197,220,115,178,181, 97,104,192,224, 13, 76, 42,215, - 57,132,211, 38,237,124,180, 63,164, 5, 54,131,144, 23, 24,219,235,130,129,231,192,198,221,192, 9, 42,105, 54,228,215, 45, 11, - 28,178, 25, 49, 20, 3, 37,251,140,202,156,153,238,153, 43,206,238, 67, 67, 90, 59,202, 5,220,139,206,129, 67, 40,158,200,178, - 36, 80,143, 6,110, 83, 45,150, 29, 77,159,237,153,239, 29,157,207, 91,165,115,192, 26,187,166,198, 0,222,171, 50, 64,216,148, -150, 20, 54, 52,189, 70, 10, 80,145,226,222, 6, 32,168,166,177,216,190, 70,147, 19, 75,218,128, 2, 77,199, 31, 73,186,255,106, - 7, 25,230,115,162, 3,241, 65, 1, 42,106,159, 91,231,207, 85, 69,196, 17, 36,129,115,176,187,181,100, 19, 76,237, 94, 52, 10, -162, 9,136, 43, 3,180, 96,231, 80, 9, 8,142,101,129, 37, 17, 20,101,162,145,198,230, 83, 0,106, 21, 14, 3, 51, 85, 60,202, - 70, 84, 84,160, 65,136, 54,162,156,164,135, 53, 18, 97, 44, 74,208,132, 3,141, 57,143,216,243,172,138,235,105,180,187,150,228, -128, 69, 60, 14, 17,161, 22, 80, 21,162,179,207,137, 58,119,159, 99, 17,160,116,200,210, 61,149,242,181,249,222, 75,225,212, 57, -145,185, 77, 64, 90, 80, 84,230, 28, 3,230, 86,245,136,199, 83, 1,155,156, 48,148,138,195, 54, 94,199,121, 12,199,128, 67, 65, -149,218,214,232, 88, 2,122,123,254, 66,144, 52,143, 91,108,243, 3,130, 11,136,166, 59,226,142,178,198,249, 34, 62,139,249,170, -139, 49,172,133, 91,226,128,177,243, 44, 47, 47,227, 70, 99,234,160,204, 66, 77,168,107, 66,140, 52, 33,164,232,160,112,145, 68, -161,138,237, 66, 33,173, 71, 40,154,135,178,164, 69, 7,105,189, 36,177, 40, 27,115, 0,164, 13,187,156, 69,245, 98,139,185,189, - 63,135, 23,237, 49, 12,204,180, 59,249,204, 10,136,218,205, 17,177,133, 95,108, 48,119,222,178, 35,180,171,154,152,135,216,104, -158,116, 58, 7, 16,222,188, 37,181,133,111,232, 34, 34, 46,121, 50, 2,113, 45,224,107,187, 41, 98,199,197,131,248, 98,184,196, - 52,140,252,102, 24, 61, 1, 54,127, 29,114,209,219,209,195,219,112,251,182, 48,254,212, 12, 38, 13,181,171, 24, 8,108,114,145, - 37,192,139,208,152, 71,229, 21,212, 67, 84, 37,218,125,112, 34, 56,169,168,189,226, 66, 36,154,119,136, 43, 34,118, 27,220, 62, - 33, 10,209,158, 79,200,215,234,238, 58,136,219,255,157,177, 31,230, 32,229,209, 21, 53,226,237, 25, 32,221,164,202, 32,221, 29, - 36, 13, 74,113,198, 20,196, 4, 74,190, 93,196, 28, 34, 49,129,138, 70,212,238,119,142,212, 18, 56, 59,134, 30, 26, 34, 46, 64, -140,218,122,230,184, 52,144, 99, 72, 3, 93,204, 9,112,146,198,128,139, 9, 48, 6,164,232,125,115,173,156,113, 40,176,233,249, -103,194, 83,129,173,123, 96,252, 20, 88,186, 12,220,102,208,195, 48,253, 16,172,127, 18,166,147,132, 16, 58, 3,183, 12,126, 25, - 6,203, 32,203, 54,173,166,246, 76,183,193,210, 54,216,117, 59,195,229, 1,123,102,235,204,150, 29,179, 0,235,117,100, 18, 32, - 24,120,103, 70, 37,196, 4,244, 33, 58, 52, 51, 19, 58,207,152, 68,187,137, 78,230,129, 61, 47,232, 85,147,174,221,107,154, 7, -193,165,215, 52, 81, 24, 59,101, 57,194,204,117,142, 80,158,163,217,113,136, 54,126, 70,249,158, 21,127,247, 46,157,235,106,132, -181, 90,187, 69,199, 94, 27,237, 57,143,108,236,212,161, 3,193, 28,169, 4,151, 22,171, 1, 9,216,110, 13, 65, 13, 0, 0, 32, - 0, 73, 68, 65, 84, 43, 1,167,233,122,102,115, 32, 93, 70,235,105,177,109,138,107,141,210,177, 20, 57,174,174,200, 44, 83,199, -174, 5,123,223,212, 0, 44, 59, 0,211,194,241,240,154, 64,116, 84, 56,149,100,167, 66,161,145, 14,112, 92,187, 6, 40, 51,133, - 41,202, 8, 88, 17, 88, 66, 88,151, 20,141,182,247, 83,187, 8, 50, 44, 68,148, 33, 3,140,118,247,186,124,206,121,157, 89, 18, -216, 36,146,152, 16,133,117, 77, 78,151, 20, 14, 94,158,203, 30,152,153, 51, 84, 91, 52, 95, 58, 59, 67, 18, 83, 20,237,158,172, - 27,224,136, 8, 67,187,155,181,157, 55,118, 95,182,122, 71,133,178, 30,148, 96, 75,195, 58,112, 40, 10, 19,251,124,204, 89,186, -131,116,110,209,220,177,236,148,169, 64, 84,105, 29, 85, 81,101,217,214,250,166, 24,135,195, 5, 86, 35,154,147,225, 84,113,162, -157,147,105, 78,206,196, 57, 26, 18, 43, 25, 11, 71, 42,127,102, 11,108, 5, 22, 57, 41,162,236,133,144, 75,237,115, 97,158, 17, -114,204,163,185,204,133, 49,105, 77,246, 34, 44, 9,140, 69, 88, 5, 38,230, 60,165, 64, 85, 17, 39,104, 84, 84, 59, 64,159,139, -139,165,163, 12,242,216,142, 22, 68, 69,186,193, 41,234,138,160,136,121,224, 45, 93, 74,157,103, 50,165,192, 78, 15, 12,125,133, - 27,140,136, 49, 82, 57, 7,126, 68, 13, 56,141, 72,240, 52,245, 12,140,149,201, 8, 94, 73, 62, 82, 11, 6, 29,233, 35, 70, 23, - 43, 98, 19, 37, 17, 3,233, 14, 10, 34, 41,226, 75,236,123,114, 55,196, 37,170,206, 25, 37,159,192, 74, 18,230,171, 38,208, 54, -207, 36,104, 76,224,134,107,207, 33, 15,108,143,162, 6,246, 94, 44,142,183,155, 46,133,135,227,236,116, 84,211, 93, 21, 39,184, -168,105, 80, 8,204, 52, 34,234,104, 66, 36, 0,163, 33, 12,124,132,224,136,107,147,196,159,102, 36,109,151,181, 50,162,163,139, -236, 6, 59, 96,211,139, 33,126, 14,185,248,227,112,235, 38,170,189,107,108,254,194, 42,131, 81,205,166,225,144, 97, 52,170,187, -136, 82, 43,187, 61,181, 72,235,237, 2,212, 26, 91,146, 77,132, 20,198,133,136,132, 8, 81,169,156, 35,198,216, 69,228, 2, 33, - 96, 76, 5,109,116,158, 28,161,244, 88, 93,177,224,198,121,222,179, 29,233,145, 69, 0,119, 93, 40,217, 78, 2,181,129, 14, 18, -204, 55, 21,240,226, 16,151,134,123, 57,216, 69, 36, 57, 18,193,174,221, 39, 6,166,202, 3, 95,192,121, 65, 85,237,245,142, 58, - 68, 99,110,186,153, 87,217, 98,130, 64,133, 48, 18,216,236,148, 93,119,204,216,122,217, 14,120,233, 16,182,157, 13,163,231,192, -248, 9,224, 79, 79, 80, 57,187, 17, 86,255, 9, 38,251,147,167, 16,107,155, 33,219,192, 85, 9,220,197,205, 47, 1,126, 59,140, -118,192,150,219,169,182, 13,217,186, 62, 97,125,160, 76,106, 97,221,168,245,236, 96, 69,163,171,243, 68,110,136,115, 52, 71,122, -157,125, 19,211,152, 47, 41,188, 28,107,199,152, 22,100,209, 14, 0, 7,230,236, 4,187, 23,227, 10,124, 20,154,168,212,230,236, -249, 60,225,205,225,117,146, 35,186,110,133,205,167, 51, 85,152,198,152,156, 34,205, 35, 90,168, 68, 25,155,227,148, 1,211,134, - 19, 83,133, 42,106, 98, 69,128,245,144,206,125, 11,176,226,146,147,144,253,200,188, 64,184, 12, 90, 54, 7, 51,112,197,133, 5, -183,164, 90, 27, 59,151, 96,224,144, 23,249, 90,231, 29,130,146,201,201, 79,172, 46,162,223, 80,240,235, 82,208,175,195,246, 51, - 58,208, 9,230, 44, 52,154,128,125, 51, 48,201, 81,150,205,211, 90,139,221,163,180, 59,215, 88,210,176,246,252,189, 43,159,107, - 74,245,173, 24,224,175,197, 68,121,207,232, 28, 35,236,220, 59, 96,207,169, 53,153, 75,163, 5, 59,199, 13, 99,133,198, 22, 36, -169,118, 84,120, 14,128, 26, 77,115, 52, 81,253, 48,176, 52,101,142,246, 55, 20, 14, 42,236,183,239, 7, 70,245,214, 10,107,182, -126,108,146,148,198,153,229, 96, 3,193,139,182,142, 57, 34, 4,115,192, 42,160, 54,103,104,163, 24, 59,161, 24,123,129, 60,231, - 93,139, 25, 67,115,110,107,113,212, 46, 57,255, 65, 59,167,168,100,245, 88, 96,163, 50,205, 94,178, 41, 81,230,157,228, 98,105, - 76, 1, 71, 1,254, 37, 53, 95, 89,170,119, 44, 48,114, 9,208, 55, 16,162,116,243,116, 36,137,101,216, 0, 38,182,238,106,166, -183,219,220, 87,183,112,230,111, 27,148, 24, 26, 52,198,196, 78,101, 86, 70,239,194,184,183,209, 57, 28, 13,240,101, 46, 56, 19, - 28,181, 0,205,140,161,171, 24, 12, 61,222,251,196, 88,169, 50,211,136,162,196,186, 78, 44,182, 57,103, 85,233,253,228,153,145, -105,114,140,134,202, 51,121,145,118,117, 54,163,180,205,121,100, 34, 91,230, 40, 93,231,186,139,203, 78, 68, 75,247,138,180,224, -157,239,153,119,201, 99,116, 46,141,154,104, 81,130, 20,185,123,215,185, 53,237,194,155, 40,119,135,151,148, 43, 25,186, 20,128, - 55,196,228,113,169, 34,150,219,198, 59,130, 42,172,213, 72,227, 33,206,204, 61, 21,208,169, 1, 92,181,176,180, 12, 97,112, 38, -172,252, 32,156,253,147,112,217, 94,228,200, 78,182,220,182,193,174,245, 25,119,110,246, 12,156,183, 72, 56, 45,236,138, 18, 37, -233, 6, 90,180, 39, 22,212, 81,108,239, 81,212,128,134,142,122,137, 26,237, 94,217, 42, 18, 99,231, 44,104,231,222, 75,155, 51, -207, 83, 41,182,209,226, 92, 4,142,182,212,144, 55,250, 62, 77,144,208, 29,215,242, 51, 30, 73,192, 28, 19, 29,158, 39,140, 72, -196, 57, 71,140, 57,221,145,216, 15,103, 90, 6,181, 8,195, 41, 12,109, 96,121,213, 54,234,143, 33, 13,184, 38,216, 34, 39, 93, -228, 53,176,232,222,161,233, 25, 57,216,132,178,235, 64,205,182, 51,151,113, 63,189, 27,118,157, 15,195, 23,193,232, 49, 41, 45, -130, 66,216, 11,147, 15,192,198, 29, 48, 91, 55, 26, 32,130,140,192,173, 44,196, 95, 5, 76,184, 61,176,244, 66,216,118, 13,114, -254, 1,248,176,167,158, 42,235, 33, 69,176,190,160,100, 23,193,169, 90,136, 68,195, 28,252, 24,195, 17, 22, 83, 95, 50, 15,126, -246,127, 48, 71, 43, 42, 52, 17,182, 84, 48, 26,192,122, 16,134,209,232,109, 3,247, 68,177, 11, 99, 20,231,211, 34,225, 84,209, -144,162, 58, 53,154,115, 32, 66, 20,157, 75,129, 12, 93,202,247, 86,162,212, 77, 90,156,113, 41,189,160, 49, 13,175, 97,118,134, - 73, 57,244, 32,176, 25,161,118,202,186,118,115,173,140,144,114,110, 94,138, 84,196,188, 80,131, 57,178, 59,211,146,181,148, 26, -129,238, 94,138,116,121,241, 18,220,109,136, 49, 43, 86,195,234, 40,121,241,146, 61, 41,211, 63, 27, 36,176, 93, 49, 29,193,192, - 34,225,104,128,144, 29,156,166,252,204, 5,112, 8, 22, 89,139,165, 31, 42, 27,188,171, 6,200, 13, 41, 82,206,251, 69, 7,186, -207,106, 36, 81,251,217,185, 79,243, 34, 57,174, 10, 76,236,164,167,118, 44,117,194,192, 64,191,182,200,186,142,210,134, 27, 3, - 18,115, 81, 17, 9,154,158,207, 17, 21, 99, 39, 36,233, 8, 52,209,223, 57, 39,159, 89,145,153,129, 50, 45,251,145,214,172,136, -165, 61,165, 99, 22, 70,118, 94,119,198,196, 66, 76, 99, 58, 31, 41,243,225,118, 13, 30, 24, 69,165,114, 90,168,123, 82, 36, 60, -192, 37,214,110, 65,103,145,103,167, 44, 12,155, 57, 64, 47,242,233,177,136,106, 89, 0,118, 41,194,178, 88,230,211, 69, 88,118, -233,107, 34,194, 70, 76,201,196,161,116,250,162, 37,129, 70, 18,243,219,136,107,169,109, 45,128,217, 21,224,235, 77, 67, 22,112, -104,108,210, 4,106,255,106, 17,249,162,150,233, 40,233,245,204, 76,148,227, 87,236,238,141,157,103,105, 52,102, 88, 13,113,206, -211, 8,224, 60,206, 57, 54,204,201,156,134,136,196,208, 6, 79,149,138, 16,164,136,136, 45, 47, 35, 5,240, 58,243,192,112,174, -163, 8, 52, 3,124,167,224,113, 20, 33,170, 57, 7,206,120, 9,231,100, 30,132, 72,130, 58, 41,126, 70,210,255,193, 0, 67,131, -154,152, 78, 11,106, 66, 58, 82, 68, 93,235,116,180,185, 70,141,168, 1, 86,144, 72, 37,201, 49,169, 13, 4,189, 40, 3, 39,184, - 10,154,153,192,145, 26,234,204, 47, 23,183, 93, 39, 73, 48, 55, 71,172,218, 84, 26, 61, 2,182,252,103,228,226,255,130, 78,214, - 24,125,118, 43,103,127,124, 31,113, 58,101, 99,105, 41,129,156, 68, 26, 81, 84,197,162,180,124,220, 72,204, 98, 52, 11,107, 6, -106,116, 46,193,174,209,181,217,174,214,191,139, 54, 69, 92,151, 51,239, 22, 54, 37,250,124, 9,177, 29,125, 34,106,193,183,107, - 35,237,110,216,107, 55,185,164,244, 16, 93, 98, 63, 92,196,101, 70, 64, 58,141, 67, 90,121, 35, 85,166,225, 93, 90,234,188,166, - 72, 61,143,139, 44, 2, 10,222,232,197,144,120,225, 0,196, 6,154, 16, 91, 33,101, 6,246,161,131,177,139,109,158,184, 18,216, - 58, 13,137,214,124,213, 30, 56,237,124,168, 94, 12,227,199,219,114,166,105,233,156,124, 0, 86, 63, 6,211, 35, 48,155, 66,181, -100, 87, 51, 52, 90, 34, 64, 92, 77,116,124, 27, 15, 54,105,217, 24,158, 13,205, 89,200,198,117,212, 7,103,172, 15, 6,132,152, - 62,187,141,220,196, 0,154,121,103,182,133,241, 76,101,186,196,106,136,104,151,234, 42, 28, 23, 41,132, 69,229,236,110,138, 8, -119,102,145,213, 54,159,206, 97,170, 66,200, 14,144, 9,246, 6, 62, 69, 64, 98, 81,149,152,246, 4, 77,116,162, 15, 74,229, 82, -158, 48, 90,142, 56, 83,178,170,202,134,194, 68,133,169, 42, 49,182,119,177, 91,128, 67, 58,215,195, 49,229,246, 71, 22,173, 55, - 81,152,233,130,192,205,156,198, 16, 19,179,163,134,168,177, 88,104, 23,183, 91, 12,133,170,169,196,251,170, 20,145, 37,101, 69, - 33, 0,234,156,167, 65, 17, 61, 75, 41,220, 42,192,193, 27, 75,161,210, 1, 88,206, 79,175,106,146,171,140,109, 20, 53,210, 69, -202, 72,231,172, 21,153,162,185, 8,176,164,142, 21,101, 2,166, 49,154, 95,180, 35, 73,112, 54, 44, 34,199, 60,135,242,241,134, -162,140, 16,214,201, 57,110, 12, 92,211,154, 53,176,235,173,109,213,115, 6,242, 21,176,100, 26, 12, 85,101, 29,216, 31,147,232, - 77, 16,166,118,157, 65,231, 29,160,148, 11, 23,102, 40,107, 70,195, 15,115,158,190,125,114,243,201, 60, 65, 88, 35,165, 20,102, -106, 84,188, 46,228,139,181,123,182, 65,149,129, 42, 3, 7, 42,182,186, 27, 62, 8,142, 72,180,244,107, 10,176, 6, 44, 56,112, - 69,144,182, 64, 70,205,253,174, 20,144,198, 34,186,239,158, 77, 55,174,150, 36,105, 70,214, 17,166,154, 65, 89, 25, 26,230, 69, - 96,146,157,157, 28,181,170,131, 66, 87,228, 76, 48, 30,165,116, 36,164,197, 52, 39,166,131,144,133,188,254, 81, 88, 8, 22,116, - 2,165, 19,169, 54, 70, 86, 6, 21,219, 55,111,193, 47, 45, 35, 49,226, 92, 69,101,236, 73,211,164,232,220, 13, 42,240,130,134, -180, 78,251,148,134,210,206,187, 40, 78,166, 20, 76,181,143,184, 64,116,165, 3, 89,147,156,117, 17,164,204,107,175,165, 77, 24, -228, 92,141, 44,136, 36,180,163,126,213,117,209,162, 40, 78, 92, 7,250,154, 40,226,246,115,181,115, 62,202, 69,214,145,162, 71, -212, 49,112,129, 42,118,169,139, 74, 28,222, 69,124, 37, 52,235, 2,119,212,232,116,104, 82, 8,223,221,122, 61,156, 68,114,140, -138, 24,192,150, 6, 25,166, 72,113,235,171,145, 71,252, 56,250,244, 49,155, 14,110,229, 97,183, 31,226,118, 55, 97,178, 52, 78, - 2,194,168,166, 81,144,118,145,104, 31, 97, 76, 30,151,198,144, 68, 37,196,116, 63,188, 51, 47, 85,146,226,186,205,155,107,118, -121, 83,116,163, 14, 79, 82, 83,133, 16,230,133,114,153,154,207,207,211,199,130, 54, 77, 30,168, 6,185, 75, 46, 93, 76,116,135, -229,122, 93,142,214, 53, 61, 87, 87, 16,201,106,142,155, 51, 47,179, 18,197,187, 52, 57,242, 34,171,249,177, 42, 68, 23, 83,148, -158,159,131,239, 34,222,156, 87,243,146, 34,197,170, 74, 81,208,146,135,205,107,202,224, 41,219,224,162,211, 65,254, 53, 12, 31, -105,207,164, 78,255, 55,119,192,250,251, 97, 99, 63, 76,102, 80, 15, 83,200,175, 83,144,237, 73, 32, 23, 39, 48,219, 7,203,107, -197, 50,221,101,191,241, 91, 96,155, 75,169, 3,215,229, 79, 75,138,215, 89, 14,188,157,176, 85,138,230, 93,236,198,241, 44, 22, - 30, 77,232,132,161,170,138,120,215, 58,102, 90,140,253,210, 6,133,194, 91, 20,150, 28, 84, 33,249,156,117,166, 95, 37,127, 22, - 45,128,102, 2,168,105,186, 8,119,104, 90,136, 38, 38,149,190,179, 8,112, 18,104, 41,208, 28, 81, 54,154, 41, 96,139, 2, 21, -106, 99,182,166,116,170,251, 37,201, 57,108,155,243,210, 69, 69, 51,151,216, 4, 47,194,212,216, 3, 89, 88,104, 83,174,177,212, -138,148,162,161,206,221,170,142, 34,237,212, 66, 88,151,165,158,194,188,142, 70, 23, 22,198,202,126, 25,237,134, 74,235, 96,195, -196,158,229,184,112,172,114,164,185,178, 16,197,151,145, 96, 22, 17,102, 5,254,192,128, 54, 85,218, 36, 17,172, 20,224,239, 74, -138,121,225,153,143, 12,108, 2,202, 84,165,213,204, 84,139, 14, 80, 91, 21,160,140,115,228,111, 58,162, 0,172,199, 68,181, 79, - 45,114, 11, 40, 7, 45,106, 63,150, 34,124,102,207,119, 36,137,245, 41,215,106,135, 82,107,202,197,231,156,255,196, 28,133, 70, -165,173,120,136, 11,122,146,188,198,100,209, 95,140, 80, 57, 65,165, 67, 88, 21, 65, 53, 69,236,165,115, 88, 21,168,151, 83,135, -193,158, 81,208,121, 0, 47,211, 51,190, 76, 9,105,231,100,182,207,173, 8,150,167, 69,165,205,208, 38, 77,134,180,172,112,143, - 8,149, 19,164, 74,235,106,204,194,108, 5,231, 92,155,214,117, 6,252,222,156,150, 38,139, 13, 77,128, 20,109,157,206, 58,140, -120, 23, 2, 75,138,212,169, 51,109,135, 90,197, 81, 98, 72, 42, 95,225,171, 4,228,226, 43,188, 23,106, 28,135,102, 83, 38,235, -135, 25,185, 1,163,225,144,102, 56,166,137, 19,203,173,155,250,221, 75,151,211,142, 54, 49, 59, 79, 35,166, 73,236, 76,177,190, - 16,165,119, 96,161,173,158,186, 19,188,217, 68,201, 37,109, 11,131,218,201,252,136,203,185, 97, 17,109,193,189,144, 64, 24,173, -221, 81, 31,106,220,157, 47,156, 3,113, 9,236,209,208,130, 68,109, 74, 77, 39, 32, 46,178,105,217,177,115,139, 32,107, 2,235, - 1,153, 68,139,204, 93,151, 1,211,181,132,168,238,140,163, 80,183,211, 68,237,142,191, 18,118,255, 40,124,205, 47,226,116, 51, -155,255,188, 98,240,197,253, 28,116, 19,142, 44, 47,209,136,152, 74,191,243,247,197, 70,153, 11,130,196,216, 10,117,208,164, 30, - 21,205, 17,109,102, 72,192,123, 73,164, 85, 8, 45,161, 32, 57,215,174,225,174,138,244, 54,162, 52,117,181, 82, 76,192,142, 33, -192,165,170, 0, 23,211,100,203,185,119,103, 30, 31,150, 46,145,214,205, 11,243,229, 45, 98,142,151, 79, 66,170,236, 97, 71, 59, -126,180,114, 30,138,212,138,179,103, 23,165, 91,252,242,128,247, 70,193,143, 92, 2,184,165, 38, 48, 82,143,123,248, 10, 34, 35, -240, 59,192,143, 76, 85,227,147,111, 61,253, 24, 76, 14, 66,152, 66,157, 22, 12,209, 8,113,154,158, 97, 16, 83,190, 71, 8, 7, - 97,176, 1, 44,207,187,250,238, 52,228, 49,203,200,255, 62,140,175,187,136, 56,171,183,157, 81, 18,222, 60,167,218,137,229, 55, -211,133, 36,226,178,211,118,168,206,235,121, 37, 59, 98,133, 18, 82,140, 5,169,116,158,118,171,108, 5,170, 99,114,124, 6, 46, -221, 23, 9,105,241,214,152,233, 83,109, 35,120,236, 51, 51,107, 48, 52,237,133,138, 50, 11,105,177,143, 64, 29,147, 58,125, 96, - 11,119,166, 63,115,148, 91, 23,165,113, 85, 76, 63, 79,141,229, 26, 91,117,201,160, 85,253, 91,212,104, 74,247,129, 69, 56, 81, -211,179,115, 72, 82,145, 23,202,111, 45,227,192, 5,102,178,140,182,178, 35,225,139,212, 96,118,104,114,154, 34, 22,116,108,233, - 60,100,189, 72, 25, 9, 38,109, 77, 87,106,213, 42,221, 77,104, 55, 44,114,246, 13,221,245, 45,205,187,126, 45,152,123, 3,253, -145,192,216, 68,100,171, 6,100, 94, 74,250, 87,231,104,228, 88,204,155,202, 4,110, 41, 45, 96, 37,135,210,229, 99, 7,197,121, -137,221, 95, 44, 50, 95,178, 99, 76, 45, 58,207, 57,238,124,239, 14,107,202,237, 75, 1,214,186,144, 50,105, 10, 13, 65, 64, 24, - 74,186,142,105, 78, 63, 88, 30,191, 54, 6,161, 49,182, 39, 75,235, 18, 80,207, 59, 3,177,248, 33,144,242,239,121,253,136,115, -225,170,182, 65, 89,171, 89, 40,216,150, 12,196, 57,229, 23,115,153, 99,145,146, 41,211,174,229,161,245,104, 37,109, 54, 70, 99, - 72,250,175,202, 74,250,130,233, 12, 2, 88,181, 77, 2,105,135, 80, 59, 95,212,235,165, 40,124, 32,157, 38,196,105, 2,127,111, -215,227, 92,170,150,193,214, 2, 87,232, 4, 92,113,127,180, 43, 16,179, 74, 17,135, 56,151,212,252,170,169, 44, 56, 42, 65,148, - 67,117,205,198,129,253, 44,143,134,108, 26, 47,195,112,196,106,211,176,177,177,198,146, 10, 75,227, 33, 50, 28,227,196,179, 46, - 66, 51,155,161, 49, 82, 85,222,163, 69, 60, 46, 5,229, 85, 10,230, 22,201, 37, 89, 16, 73, 81, 68,233,106, 94, 96,101, 81,156, -162,230,141, 40,206,120, 66, 39,157,194,175, 84,213,231,168,222,187,124,209,230, 40,152, 71,227,219, 76,180,182,245,134,185,224, -171,242, 41,194,117, 46, 57, 0, 34, 48,240, 14,135,209,197, 70,157, 74,136,172, 29, 22,198, 81,208, 89,128,141,136,232,106, 17, -238, 55,160, 53,232, 45, 32, 59, 44, 98,159, 46,144, 65,211, 20,177,143,159,137,236,110,208,203,127, 25, 25,140, 25,191,125, 7, -167,125,254, 32,195,141, 9,245,112,204,186, 13, 72, 23, 35,161, 74,209,183,134, 60, 1,186,154, 31,135,164, 18,184,185, 28,190, - 24,239,160, 29, 93,239, 58, 30, 80, 26,157,207,207,148,160, 89,148,200,205,179,189, 46,157,128,221,120,137, 93,153, 89,118, 10, -156, 83,163, 64,179,126, 34, 73,191,115,121,161,216,162, 22,189,121,186, 81,231, 40, 39,141,185,254,218,142,151,129, 74,141,190, - 82, 24,104,164,170,186,219,237, 36, 45,114,198,244, 51, 20,101,105, 18,169, 70, 35,228,172,101, 88, 94,129,225,206,228,133,228, - 24,175,249, 34,108,252, 11, 52, 19,168, 29,218,116,206, 41,177, 78, 58, 9, 89, 7,153, 89, 8,179, 6,113, 13,220,210,188,204, - 70,119, 32,103, 47,227, 70, 73,100,169, 46, 57, 53, 90, 0,135,203,207, 37,231,117, 53, 69,198,141,198,148, 59, 21,136, 49,141, -251,236,228,102, 70,170,117, 56, 77,172, 22,138,249, 83,121, 73,202,122,186, 82, 50, 33,249,147,177, 0,118, 33,229, 50,215,173, -196,174,142, 41,194,174, 45, 15,239, 10,138,117, 10, 12, 93,226,156,115,137, 87, 44,114,255,121,190, 13, 11, 49, 74,206,141,175, - 91, 73, 76, 6,142,153,192,154,166,235,205,181,213,162,243,226,166, 17, 93,165,194, 44, 11,232,114,132,146,197,120, 34,212,170, -237,226, 13, 66, 83, 36,166,100, 65,219, 35, 71,139,190,115,228, 70,238,113, 32,115, 85, 1,101,224,144, 34, 94,105,131,129, 12, -182,205, 66, 89,149, 73, 96,169, 92,138,222, 91, 7, 40,215, 44, 27,184, 74,177, 80,187, 34,159, 61, 22, 97,127, 84,142, 20,218, -128, 97,113,237,163,226,190,180, 14,183, 22, 12,135, 57, 3,149, 69,253, 81, 18,101, 47, 69,105,168, 24, 77,159,105,228, 92,143, -191, 17,211,251,243,156,159,216,243,219, 80,230,202,101, 41, 34,225,122, 65,160,134,166,103,156,203,170,178,168, 48, 26,160,215, -154, 0, 62,208,105, 59, 40,198, 80,180,126, 3,178,208,131, 34,139,172,155, 24,147,246,166, 88,171,219,212, 76, 33, 20,244,139, - 37,176,116, 41,188,172, 59,169,181, 19, 28,230,178,202, 50,192, 88,172,101,207,247,174,177,241, 59,144,200, 88,133,202, 22,203, -152,233,242,150, 11, 79,192, 29,140, 89, 16,231, 58,221,150,253,189, 50,119, 56, 87, 93,164,190, 46, 21, 65, 26,211,165, 68,123, -182,137,101, 78,142,174,118, 2,225, 18, 71, 11, 38, 47, 90, 9,118, 16, 79,144,136,134, 72,136,129,213,201, 6,235,211, 13, 14, -173,173, 83, 13,135,248,170, 98, 92, 85,248,106, 64,140,145, 81,140,140, 70, 35, 54,166, 27,192, 52, 57,140,177,200,145,137,116, - 37,102,217,207, 19, 91,233,133, 46, 47,158, 20,160, 9,173,212,114,188, 71,243,142,200,234,110,171, 85, 79,107, 72,202,153,106, - 22,157,123, 3,106, 21, 84,211,136,205, 84, 71, 37, 86,156,159, 75,157,180,149,186, 91, 46, 63,226,189,239,234, 26, 69, 76, 77, - 31, 77,237,152, 38,229,104, 40,104,132,145, 75,147,123, 54,205, 34, 35,208,105, 68,214, 3,196, 3, 54,229, 77,247,170, 13,196, -125,224,110, 5, 57,183,144, 76,149,196,225, 20,100, 12, 75, 95,143,236,174,225,105,111,132,173, 99,170,183,239, 97,219,245,119, -194,234, 6,245,120, 76,172,160, 9, 66,136, 41,199,158,242,134, 93,238, 42,149,237, 5,139,186,164,168, 95, 82,188, 26,109,237, -181, 40, 65, 75,130, 56,113, 57,158,215,246, 9,120,107,108, 50, 95,255,201,188,236,199,128, 39, 77,134, 46,223,158, 91, 30,100, - 92,234, 74,131,140, 47,111,153, 1, 37,122,103,244,123, 90,176,221,130,184,165, 89,200, 33, 55,161,203,253,182, 3,191,144, 59, -139,229,144, 43,159, 0,105,105, 26, 25,132, 10,247, 85, 59,145, 39,109,135,173,103,193,224, 92,139, 83, 2,196, 47,193,218,251, - 97,122, 16,226, 12,157, 6,152,249,212,100, 38, 24,113,169, 13,200,106, 2,120, 87, 37, 10,126,180, 31,220, 22,107,117,146,117, - 20, 35, 56,109, 51, 50,116,248, 89, 96,176,228, 83, 62,215, 82, 12,106,233,181, 12,146, 77,209, 92,166,182,200, 53,196,110,193, -235,228,175, 11, 10, 93, 19,146,182,213, 2,246,152, 71,149, 48,200,148,182,129,123, 29,140, 30,142,176,201,209,214,160, 79,162, - 50,177, 8,125,166, 41,151,157,129,211, 39, 85, 70, 74, 76,196,142, 2,246,101,196,233,210,177, 71,185, 54,220,193, 52,216,115, -119,169,241,205, 84,161,246,233,239, 75, 10, 27, 34, 73,183,145,243,255,190,203, 57,123,132,113, 33, 10, 27, 26,128,110,100,149, -127, 33,136, 26,216, 98,233,173, 84, 44,150, 81, 56, 29, 56,233, 49,213,193,243,130, 56,183,176,160,231,232, 19,101,142,154,207, -141,109,198, 93,102,132, 13,237, 42, 0,102, 2, 99, 77,209,112, 44,152,199,137, 69,188, 67,129,205, 38,174,243, 69, 9,225,200, - 30,245, 17, 3,155, 97,209, 92,102, 0, 44, 91, 83,172, 18, 72,157, 57, 70,195, 5,128,115, 6, 4,193,214,184,144,157, 63, 77, -140,193, 38,103,206,135,116, 32, 21,115, 74, 72,231, 25, 5,218,230, 68,157,227,228,143,114, 55,131,233, 22, 66,225, 4,228,231, -218, 20, 77,124, 90,165,186,106, 91, 65,222,222,247, 5,133,247, 93,250, 41,228,242, 43,113, 45,111,224, 45,135,237, 76,111, 80, - 54,152,169,164,211, 86,148,140, 99,118, 20, 43, 19, 88,230,117,170,233, 42,123,231,203, 59,237,222, 52,116,172,115, 80,101, 18, - 3, 85, 72,248,149, 75,248, 52,139,229, 12,208,165,168, 0,234,202,109, 19,197, 46, 22,140,138,233,163, 68, 18,147,234,226, 0, - 37,208,208, 20,138, 4, 77,213, 66,222, 19, 98, 76,245,177,229, 56,176, 26,222, 84, 85, 19, 83,245,152, 56,188, 56,130, 79,245, -190,222,198, 88,211,212, 12, 52,178,105,105, 39,245,210,152, 3, 7, 15,224,166, 19, 54,111,218,140, 46,175, 16, 66,131,134, 72, - 52,231,175, 16, 30,104, 91, 50,225,164,204, 99,148,253,109,116, 94,244, 38,119,109,225,224,140,194, 72,199, 43, 84,239, 86, 19, -168,153,198,207, 3, 65,170, 68,225, 34,214, 85,174,163,113,165,168,111, 79,145,173, 22,170,193, 20,245,121,103, 74,197, 8, 90, -229,154, 90, 97,224,146,168,104,105, 32,196, 58, 82,185, 20, 41,229,142,104, 51, 95, 17, 39, 83,170,181,149, 36,176,210,198, 70, -245,204,142,183,150, 58,148, 13,119, 89,141,243, 17,136,251,193,237,182, 41, 92, 39, 10, 88, 70, 48,126, 46,236,220,130, 92,246, -107,232,150, 35,248,183,157,198,142,143, 30,196, 31,152,242,249, 65,197,161,145, 16,131,213,199,230,188,118,214, 35,228,112,218, -123,187, 79,161,229,145,162, 81, 85, 41,125,222,117,123, 75, 13,156,124,155,131,213,216, 32,174, 3,100, 22,196, 26,221, 19, 10, -214,225, 47, 87, 42,116, 93,224,212,101,181,123, 26,196,149,151,142,177, 23,235,134, 18,115,159,129,104,147, 80,230, 22, 88,236, - 28,106, 27,195,209,190,111, 98,202,145, 59, 19,200,229, 6, 37,222, 74,132, 6,214, 32,104, 73, 96,101, 18, 25,174, 58,252, 37, -219,144, 23,238,130, 51,207,129,193,183, 1, 15,179,176,242,150,212, 53,110,245, 75,208,172,195,108, 2,117,101,209,184,107,117, - 1,105,182,248,244, 60,101, 9,102, 95,132,233,118,112,219,193, 13, 58, 24,145, 1,108, 94,198,109,245, 12,246, 5,134,155, 96, -214, 24,253,151,187,139, 24,120,139, 69,208,161, 33, 9,205,172, 40, 65, 85,231,230, 72,219,123, 33,211,167, 5,245,230,139,116, - 68,101,236,209,216,244, 8,141, 74, 91, 23, 95,219, 61,170,130, 81,234,182,152, 55,157, 94, 49, 57,192, 69, 90,171,113, 73, 28, - 57, 49, 10,119,224,210,189,111, 29,116, 59,207,154, 84,218, 83,209, 41,228,107, 59,159,117, 77,140,192, 88,146, 96,175,209,212, -200, 38,218,245, 7, 59,118,165, 93, 62, 52, 47,196, 19,186,198, 44, 25, 28,114,115,150,236, 96,148,206,160,106,234,187, 16,138, -104, 47, 71,196,113, 81,201, 94,140,233,160, 41,245,147,197,159,161,204,173, 23,236,131,155,203,195,167,241, 42,170,173,211, 95, -219,178, 50,147, 78, 92,229,205, 1,153, 88,249,215, 33,133, 85, 96,139,192, 78,103, 0,107,192,220, 81,212,243,181, 50, 43, 46, -141,229,181,216,229,126, 75, 86, 34, 20, 76,129,180, 37, 87, 41,173,226,138,206,129,222,114,164, 89, 33, 94,118,167, 91,182,244, -194, 42, 73,249,238,109, 85, 26,219,177, 6, 40,107,154,158,137, 90, 57,242,144,178, 97, 76,210, 71,228, 58,116,191, 72, 19, 23, -234,246,174, 10,161, 77,178,182,209,182, 71,231,196,132, 37, 21,238, 77,203, 80,229,124, 58,169, 75,168,183, 52,105, 62, 78,217, - 25, 81,100,222, 17,213,194, 17, 10,208,150,201, 6,201, 93, 58, 11,177,158, 20,142,146, 72, 18, 75, 22,247, 58, 68,101,166,129, -202, 41,195,170, 66,156, 7, 39, 22, 51, 73,219,212, 6,115,152,213, 20,237,218,130,189,173,193,177,171,123,247, 86,105,146,115, -236,177, 76,109,169, 50, 16,135,120, 71,144,144,142, 87, 8,172,114,119,208, 44,182, 77,125, 88, 92,170, 48,178,106,165, 28,235, -213, 49,114, 96,245, 48,205,250, 42, 97, 58, 65, 84,169, 15, 31, 66, 87,143, 88,218,156, 36,166,115,237, 35,234,162, 7,209, 46, - 78,111, 35,110,233, 34,119, 41,101,189, 38,150,202,171, 84,110, 32,130, 22,224,159,219,238,229, 34,127,203, 33, 56, 39, 56,151, - 98,147,172, 42,118,210, 29, 63, 55, 52, 17,237,142,167, 42,109, 45, 96, 9, 86,137, 42, 49, 1,142, 79, 20, 75,101,229,113, 46, - 42,226,133,145, 79,142,192, 76, 3,218, 40, 99, 7, 58,137,169, 48,180,153, 38,186,150,104,229,109, 27,105,101,157,125, 22,220, -185, 48,184, 40,249,230, 58,129,230, 35,224, 47, 73,234,120, 53,137,143, 27,193,210,229, 32,155,144, 71,190, 1,182,125, 30, 62, -184,157,109,239,158, 48,248,232, 17,110,154,212,236,223, 50,192,161,204, 98,164,206, 15,213, 91, 94,166,209,244, 96,136,105, 80, - 72, 87, 11,233,178, 42,221,165,156,177,203,250,216,162, 69,231,124,221,250, 66,196,147,251, 0, 19,239,162,118,159, 43,173, 48, -167,206,137,195, 59, 77, 30,182,189,181, 66,105, 52,206, 45,206,226,230, 83,244,181,130,183,104, 54,104,162,137,163,137,179, 70, - 30, 42,151, 38,132, 51,111, 61,216,108, 21, 15, 3,167, 44, 57, 88,170, 35,163,137,163,122,204, 22,220,203,182,193,249,103,194, -224, 74,224, 18,251,212, 47,194,198, 91,224,240,199, 82,135,150,112,208,138,142,165, 11,151,188,128, 27, 90,211,157,218, 34,246, - 38,157,216,228,147, 48, 56, 3,134,155,128, 21, 3,245, 37, 24,109, 66,206, 24, 81,237,157,225, 53, 38, 1,140, 38,218, 51, 88, -198,162,141,204, 67,162,190,179,239, 80,138, 32,157,148,229,156, 93,169,150, 95,232, 15,224,114,231, 54, 39,140,124,215, 95,128, -144, 88,141,118, 33, 13,169, 70,124, 40,194, 52,198,182,181,108,249,153,101, 30, 49,218,138,156, 85,200, 49, 88, 78,223,106,231, -115, 75,134, 72,114,186,188, 1,112,180, 38, 63, 81, 82,117,194, 6,137,118,223,229, 96, 91,149,110,225,204,198, 82,147,117, 44, - 22,113,229,226,165,202, 58,146,121,133,169, 40, 78,211,130,159,137,139, 78,180, 54,175,105,118,243, 18,213,246, 94,229,181, 73, - 23,114,147, 20, 45, 53,187,158,111,243, 29,185,114,133, 78, 85,170,232,164, 43, 95, 27, 22, 93,209,196,238, 65,101, 17,252,154, - 74, 91,235, 62, 48,103,106,221,190, 14, 42,108, 86,216, 33,176,213,132,131,185, 21,108, 46,115, 92,145,228, 0, 76, 76, 41, 94, -149,138,108,187, 15,117,241,204, 42,211,254,168,206, 63, 75, 45, 20,251, 19, 77, 99, 43,106,138,110, 51,115,176,106,192,236,138, -161,239,117, 94, 96,231,108, 61, 31,146,244, 42,179,104,105, 6, 45, 1, 60,165, 71,186,246,185,185, 99,219,188, 32, 78,138,231, -157,157, 36,103,141,132, 68,230,149,240,173,248, 83, 82,137,170,138,164,158, 6, 42,109,251,240,204,110, 13,138,138,131,178,215, - 65, 60, 74,207,129,129,165,234, 26,233, 28,214,185, 54,171,218,117,155, 83,233, 82, 64,177,240, 84,166, 49, 18,155,134,202,167, -117, 79,173,189, 50,209,225,188, 3, 26, 66, 12, 38, 60, 75, 35,207, 75,234, 34, 39, 86, 98, 93, 57, 97,224, 28,149, 56,106, 9, - 56, 13,105,188,183,159,157,114,228, 18, 2,131,193, 0,231, 61, 33, 4, 66, 12, 72, 91,254,166,115, 42,249,220,208, 45, 5,123, - 62, 21, 63,155,224, 58, 0,245,108,210, 9,197,157,233, 27, 66,176, 57,145,220,197, 74,117, 62,151,145, 85,230, 74, 7,206,210, -130,168,116, 53,236, 57, 19,111,139,159, 20, 57, 17,213, 12,206,157,104,206,185,228,125, 56,111,255,163,133, 48, 43, 90,111,249, -121, 69,171,107,203,234,204,163, 12,214,169,204, 46,220, 57,105,197,113, 73, 20,230, 82, 71, 35, 7,203,190, 19,214,205, 80,134, -214,120,164, 65,169, 53,189, 14, 95,161,177, 78, 97, 73, 51,161,109,250,167,117, 2,239, 16, 97,118, 8,252, 7,192,239, 78, 17, -158,236,129,240, 73,208, 59,193,127, 37,200,206, 20,159,104, 99, 17,251,147,193,239,130,193,239, 35,187,222, 15,143, 13,108,122, -215, 54, 46,252,189,131,184,253, 51,142,236, 28,160, 78,152, 54,166,230,205,194, 35,187, 95,161,200,191,122,159, 35,239, 68,203, - 26,166,162, 69,223,108,114,207,251, 28,229,120, 91, 51, 11,245,181,148,110,236, 92,121,219,124,219, 81, 17,143,115,145, 74, 99, -187, 56,100,189,123,202,163, 75,145,234, 0,141, 89,108,162,233,123, 91,220,156, 75,183, 78,213,165, 22,150, 46, 80, 85,150,231, - 5,124,236, 90, 2, 84, 30,198, 78,216,228,149, 77, 77, 96,188,230,168, 46,221,140,123,217,102,184,224, 76, 88,190, 10,120,172, -141,137, 59, 96,253,191,194,129, 15,145,187,123,232,172, 73,180,187, 77,146,212,109,101, 4,110,156,150, 83,157,153, 91, 31,146, -218,108,114, 0,170,191, 79,207,200, 95,144,116, 17, 84, 73,206,190,107, 96,148, 89, 74, 99,228, 14, 88, 3, 81, 26, 99, 45, 98, - 80, 26,235, 52, 55, 47,202,145, 98,220,206, 51, 36,217,183, 29, 59, 65,188,166,146, 57,151,169,201,121, 26, 86, 13, 68,172, 2, - 48, 49, 29, 62, 69,235, 51, 21,243,230,173,165,232, 81,196,167,149,149,104, 57,237,212,195,169,185,205,124, 62, 52,152, 40, 42, -183, 53,117, 22,125, 46,217,128, 8, 22,225,109,196, 4, 4,155,156,112, 36,106,218,179,160, 21, 3,130,119,106, 98,193, 68, 93, - 86, 5,149,155,243,164, 90, 54,118, 41, 96,184, 76, 17,137,204, 83,182,190, 80, 83,119,244,176,180,139, 96,197, 93, 36, 38,201, - 25,208, 78,153, 55,199, 88, 45, 28, 63, 11,241,196, 0,126, 40, 93, 84,216,180,101,134,106, 45,157,187,250,238,117,133,181, 0, -123,173,223, 60,153, 77,177, 24,103,139,192, 14,235, 16,152,115,219,173,232,107, 17, 24,237, 57,141,236, 58,214,179,118,161,232, -212,151, 89,158, 65,161,151, 25,200, 93,234, 55,230, 58,174,229, 28,126, 83, 8,232,218, 64, 41,166,116,201, 90, 25,189,218,184, -194,156,176, 28,253,134,130,162,143,119,109,128,214, 82,212, 3,235,139,144, 53, 26, 25, 60,171,133,250,108,103, 79,177,145,252, -124,114, 9,150,182,109,169, 85,117,174,221,107,181, 80,178, 86, 21,101,148,190,232,192,153, 91,166,213,185, 74, 66,187,231, 25, -203,118,197, 69, 61, 92,136,145, 72,211,122, 3, 42, 14,231, 60, 33, 8, 33, 6, 92,140,109, 13,187, 43, 74,213, 48,103,102,224, - 28, 3,163,237, 69, 60, 34, 77, 81, 64,175, 93,173, 80,108,112,141, 48, 24, 14,113,131, 1,174,113,168, 75, 81,187,138, 9,123, -115,185,118,218,132, 5,109, 27,168, 57,162,116,209,125, 46,155,155, 99, 96,139,214,196, 49, 70, 42,181, 22,130,222,149,141, 64, -202,198,142, 50, 7,248,206,205, 55, 28,144,210,219,208, 34, 10,148,148,124,243,222,225,157,199,121,105, 85,192, 20,253,114, 83, - 84,216,149,212, 37, 47, 78,186,182,175, 69,157, 99,110,125,154,107,227,197, 34, 29,103,185, 43,113,169,148,102,224,187,235, 73, - 93,235, 60,149,213, 63, 27,105,159,110, 14,145, 32, 30, 93,141, 72,109,138,119,197,208, 98,218,209,183,179,155, 97,116, 59,184, -173,169,225,137,127, 52,132,143, 66,248, 48,248, 71,128,236,162,221,252,133, 33, 12, 31, 14,254, 7, 97,244, 44,216,242,110, 56, -235, 93, 44,159,215,112,225,107,215,248,194,254,154,176, 99,192,164,130, 80,203, 92, 61,111,119, 95, 6,133, 7, 23, 91, 97,160, - 20,202,209,114,186, 68,163, 19, 51,117,216, 57, 97, 58, 39, 51,158,107, 66, 99,157,162, 84,138,188,149,164,218,244,202, 38, 93, - 44, 22,124,172,169,143,134, 46,130,204, 10, 4,181,222,229, 41,130, 76,139,124,229, 18,159,238, 61, 12, 27,207, 82,149,192, 31, - 13,169,217,144,165, 77,150, 92,100, 84, 69, 54,133,200,120, 29,170,115, 87,112,255,118, 59,114,225,165,176,252,221,224, 31, 99, - 25,209,195,176,241, 39,112,231,223,167, 29, 73,214, 6,104, 93, 37, 69, 89, 19, 90, 23, 94,134, 77, 42, 81,195,106,213,115, 83, - 33,167,198,196, 8,108,220, 4,163,207,129, 63,183,203,226,250, 49,178,213, 83,225,169,172,254, 59,228,197, 45, 74,167,232,151, -174,251,153, 22,250,145,156,109,148,130,135,204,185, 64,135,105, 5,124,242,242,107,235, 37,148,231, 66, 44, 74,233,234,144,212, -230,161,145,156,109, 74,254,136,104,171, 84, 15,139,125,168, 10, 65,100,152,235, 51, 45,212,134, 12, 3, 73, 77,144, 92,212, 86, -164, 89, 42,171, 53, 66, 99,105,144,145,135, 81,147, 64,127,205,186,176, 45,249,178,139,152, 24,157,155,158,125,219,109,173,165, - 97,165,141,132,103, 22,149,249, 66, 79, 80,219, 25,122,233, 68, 66,101,254,191,141,168, 23,218,237,150,101,116, 25,196, 93,217, - 11,159,252,124,148, 70, 58, 70,195, 47,168,237,197, 40,248, 80,232, 63,102, 22,137,175,197, 34,197,145,169, 97, 43,225,245, 11, -145,244,204,126,183, 34,176,197,193, 86, 7,187,114,103, 57,157,103, 15, 22,235,172,115,254,119,104,121,250,213, 96, 81,119,209, - 1,186, 44,161,203,116,250,208,198,228, 97,163,146,181, 0,180,220,122,216,119, 29, 28,218,220,117,119,207,148,173, 8, 19, 7, - 7, 98,231,184,102, 96,159,153,224,174, 44, 27, 91,100,134, 68,231,203,197,114, 95, 9,111,218,139,156, 78,105, 59, 22,182, 84, -116, 94, 75,186,115,173,172,204, 88,172, 13,246, 64, 82, 47,132, 88, 56, 7,200,252,198, 47,142, 5, 81,158, 93,127, 85, 86, 48, - 20,226, 79, 93, 16,124,199,133, 40, 62,177,173,202, 58,129, 97,140,224, 93,219,236, 9,107,252,165, 20, 37,106,222,155,248,210, -208, 81, 5,245, 66, 12,190, 91, 3,231, 74,239,148, 89,104, 24,212, 80, 25,176,107,244,196, 24, 76, 68,151, 78,180,109,198, 38, -146, 54, 38,107,215, 20,103,167, 24,139,206,149,101, 40,161, 93,185,168,152, 16,112, 49,239,218,121,192,106, 98, 56,215,129,119, -209, 2, 76,139,182,164, 45,237,104,162, 8,113, 21,174,242,214,109, 44,183, 19,143,150,103,113,115,191,111,213,247,185,182, 90, -156, 85,151, 41,206,249,162, 17, 14,182,139,155,229, 6,179,154,214,169,149, 97,165,186,111,103,194,166, 76, 47, 13,173,215,117, -162,144, 21, 85,215,230,243, 98,180, 36, 98, 19, 19,168,103,129, 85,140, 86,235,188, 53, 21, 78,179,110, 15, 95,192, 89,110, 55, -126, 30,194, 13,224,215, 65,206,164,173,110,213,202,202,175,158, 12,225,177, 48,124, 38, 60,253,151, 25,251,235,121,216,207,110, - 16, 14,215, 76, 54,109,164, 86, 87, 0, 0, 32, 0, 73, 68, 65, 84, 13,208, 40,204,172,172, 13,117, 86, 74, 21, 16,141,120,201, -145,121,209, 47, 64,244,232,125,222,181, 83,190,107,177,106,204,111,242,146,115,222,182,249,139,116,212,190, 3,196,107,218,240, - 38, 59, 14,174, 75,173,136,183, 62,251,182, 0,135, 8,117, 78,158, 23,249,202, 88,212, 58, 59, 67,180, 61, 59, 6,156,254,228, -205,204,110,217,224,246,235, 55,208,232, 80,137,120,107,240, 50,116,202, 74,163,140, 86,149,106,251, 50,238,223,239, 68, 46,126, - 6,172,124, 27,248,179,211, 61,141, 7, 97,227, 47, 96,223, 31,194,190, 25, 28, 89, 70, 39,210,133, 63,217, 59, 30, 89,171, 93, - 89, 74, 83,187,217, 72,165,109,177, 6,181,120, 72,150, 32, 12,160, 57,104,101,140,227,244,188,137,200,138,107, 55,239,112, 8, - 98,247,170,178, 46, 6, 98,224,215,138,154,178, 76, 81,230,119, 8,201,142,144,196, 98,247, 52,159,247, 52,176,232, 35, 42,234, -147,130, 94, 85,137, 77,162, 1,235,188,235, 91, 73,227,105, 18, 80, 13, 13,212,146,198, 65, 90,125, 73, 17, 28,204,139, 85,233, - 20,204, 57, 63,235, 45,146,207,115, 35, 88, 4, 95, 73, 98, 80,106,159, 82, 40,174, 16,126,173, 6, 83, 93, 91,241,126, 46, 11, -171,173,244,105,174, 65,140,129,187, 47, 34, 77,151,233, 92,203,217,143,236, 30, 4, 43,221, 35, 90, 35, 36, 55,191,209, 71,217, - 11, 60,231,156,231,183, 93,234, 26, 40,185, 98, 83,140,170,136,238,181,248,123, 25,132,100,186,119,106,117,222, 89, 0,217,230, -174,139, 50,182,177,149,190,197,185, 8, 53,117,130,219, 36,202, 22,139,208,243, 6, 51,235,154, 90,149, 12,164,235,170, 22, 84, -219,136, 87,205,145,202,180,251,145,152, 54,205, 81, 91, 65,202, 46,121,180,245,240,176,100, 13, 92, 98, 1,218, 27,218, 53,228, -177,154,156, 54, 90,141,197,255,174,232,172, 55, 20,216, 41, 41,107,181,186, 64,251,151, 84,123,174, 47, 47,219, 28,151,243, 61, -235, 41,188, 9,243,252, 28, 91,107,247,172,108, 74, 99,205,110, 6,237, 30, 33,202,216, 54,169,137,226,152,105, 74, 75,206, 49, - 42, 11, 93, 39,243,248, 9,116,142,151, 22,165,144,181,118, 44, 90, 60, 74,137, 91,236,218, 82,165, 29, 66,173,169, 79,118,202, -157, 53, 43, 11, 70, 73,136,235,182,151,105, 53, 25, 62, 9,175,243, 53,121, 47,109,247,208,178,226,168,235,157,146, 38,103,221, - 52,104, 84,134,131, 1, 50, 24,128,247, 52, 26,105,130,109,239, 37, 69,251,115, 75, 53,231, 52,135, 58, 33, 70,215,130,186, 22, -122, 55, 10,167, 46,179, 27,173,242,175,108,229,160,133,104,161,108,174,172,161, 19,191,209,182, 88, 44, 55, 40, 20, 42,239,169, - 6, 3,219,116, 69,219, 19,240, 57,143, 46,105, 55,143,174,239,124, 74,196, 59, 21,156, 79, 91,185,138,184,164, 42, 52,241, 66, -234, 45, 46,157,112, 46,154,208, 76, 18, 5,152, 23,142,129,171,210,131,144,180,229, 95,202,245, 40,131, 65,100, 36,145,213, 25, -168,183, 93,192,170,172,116, 17, 43,129,154, 90,136,107, 84, 45, 13,140,182,194,240, 76,235, 46, 55,235,166,143, 59,195, 92,199, -195, 73, 57, 47, 51,112,103, 89,158, 54,231,113, 43,240, 43,224,159, 0,254,106,248,218, 31, 99,116,240,163,156,251, 11,107,108, - 12,132,125,227, 1, 97,102, 37,110, 14, 42,141, 86,163,191,176,125,170, 83, 19,164, 56,212,182, 49,108,159,141,115,136, 79,187, -215,137,179,146,108,149, 86,240,182,216,162, 80,212, 33, 46, 9, 50, 68,230,235,102, 41,104, 45, 53,192,240, 89,160,232,160, 14, -210, 46,226,174,227, 14,238,210, 21, 52, 90,165,196,146, 8, 59,207, 24,176,233,235,246,176,241,215, 95,164,250, 72,164,118,169, -191,184,143,138,175, 34, 35, 7,163, 41, 84,155,150,144, 23,111, 69, 46,185, 28,150,191, 29,252, 25,166,186,219,128,213,191,133, - 35,127, 4, 7,215,208, 91,151,173,152, 54,116, 53,112, 89,181, 84,169,209,238, 46, 37,134,227,134,129,183,218,243,200, 59,223, - 53, 16, 15,147, 50,199,131,228,132,229,221, 51,170, 28, 81, 88,149,134,164,252,185, 20,125,165,130, 21,193,184,146, 82,141,166, -148, 53, 79, 41,198, 46,130, 25,121,211, 78,132,142,122,174, 85,209,186, 83,209,151,189,229,203,157,208,162,213, 38,138,149,222, -168,237, 45,208, 53, 54, 41, 34, 89,235, 6,169, 11, 27,193,248,162, 31,122,110, 88,130, 36, 86,139,130,117,136,164,241,147,155, -224,212, 69,243,150,105, 76,206,243,192,162,200,188, 11, 90,166, 77,115,143,139, 44,228,202, 98,215,156, 14,240, 2,155, 69,152, -137, 48,139, 16,102, 41, 91,181,236,148,218,218,156, 46,164,191,231, 42,105,124,177, 80, 58,165,213,207, 80, 68,236,177,232,242, - 85, 89,202,168,235,248,215, 1, 90,217,113,174,234,146,110, 93,202,160, 43, 54,201, 11,100, 91,149, 80, 2,217, 72,186,146,181, - 97,225, 80,143,172,246, 56, 59,103,153,101,136,196,174, 63,129,209,232, 19,203,211, 79,138, 8, 59, 2, 35, 73,187,203, 73,219, - 66, 54, 57, 93, 91, 92,102,210, 18,104, 30,116,112,208,154, 30,141,173,252,176, 46,168,247,134, 46,135, 31,179, 0,205,156,184, - 45,214,195, 35, 26, 72,104, 17,249,181, 75,254,209, 90, 2, 46, 52,173,202, 14,195,176, 45,111,236,214,137,220,242, 55,167, 66, - 93, 78, 45,154,192,174,220, 68, 39,231,216,115, 91, 91, 45,158,213,162,163,154,230,136,180,192,159, 5,154,117,209,130,185,116, - 54,145,249, 84, 69,238,117,223, 54,190,210,174, 26, 37,111, 98, 86, 70,195,101,202, 39, 20, 27,190,232,194,118,177,185,147,100, - 87,226,215, 61, 67, 80,154,216,160,179, 72, 21, 35,126, 52,196,251, 10,156, 35, 74,147, 34,124, 85,156,119,120, 95, 17, 68,168, - 67, 64,235,218, 82,216,243,169,175, 50, 13, 94, 74,213, 43, 76, 81, 45, 90,182,113,237,132,106,226, 92,231, 33, 47,108,186,146, - 85,172,105,115,151, 20, 85,123,231, 16, 95,181,106,245,188, 53,167, 56,151, 64, 61,119, 5,114, 98,226,175, 20,174, 59,231, 24, - 84,149, 9,232, 82,225,191,119,130,183, 99, 58, 17,196,167,200, 31,180,109,220, 34,206,227, 84,241, 18,210,228,210,152, 60, 41, - 81, 70,218, 88,119,180, 6, 95, 69, 42,175, 12, 53,166, 14, 90, 62,166,156,143, 75,139,107,218, 68,229,136,221, 22, 43,210, 25, -140,210, 78, 94,126, 79, 2,104, 61,146,186,148,101,223, 88,150, 82, 52, 79,128,184, 14,220, 4,178, 59,213,182, 35, 41, 55, 47, - 86,224,226,207,129,229,159,130,231,124, 63, 75,255,252, 37, 46,120,199, 42,205,110, 33, 12, 43,166,117,154,236, 81, 99, 90,140, -124,161, 98,199,132,126,178, 56,217,180,235,113,158,127, 31, 45,154, 95,216, 3, 89,138,189,207, 93,238,223, 94, 76,150,178,113, - 77, 37,243, 11,107, 91,106, 29,157,245,162,183,221,152,108,177,206,173, 98, 67,148,118,235, 94,205,251, 21, 19,217,248,226, 12, -255,219,159, 99,237, 11, 83,178, 94,207, 71,197,123,101,105, 0,203,179,200, 64, 60,238,210, 49,242,148, 11, 97,229,155,147,126, - 33,235, 95,103,159,129,181,191,134,201, 26,122,104, 9, 14,154,148, 62,187,255, 3, 91,106, 7,214, 66, 77, 12, 25,227, 97, 8, - 71, 18,113, 2,200,104,106, 66,199, 17,232, 56,109,240,162, 70,216,233, 65,104,214,208, 91,103,201,121,114,138,107,253,248,172, -120,215,162,191,123,177, 64,200,194,150,138, 11, 17,115,219, 89, 47, 40,193, 9, 33,104, 42, 67, 11,133,128, 39,206,111,112,145, -201,135, 58, 80,180,230,237,162,199,178, 43,149, 22, 98,179,118,175,112,233, 22,115,219, 80,217,132,109, 93,139, 90,231, 32, 6, -105,119, 33, 11,182,169, 71, 6, 22,111, 73,201,124, 94, 83, 75, 19,148, 61,217, 61,221,126,208, 89, 37, 92, 21,170,245, 96,224, - 53, 44, 6,227,118,149,255,159,175, 55, 15,182,109,187,202,251,190, 49,230, 92,123,239,115,238,185,247,190, 70, 79,122, 79, 72, -168, 65, 2, 44, 4, 18,141, 19, 11,132, 93,136, 96,226, 34,193, 21, 87,108,210,144, 30, 87, 58, 10, 59,142,157, 96,167, 41, 39, - 16, 92,130, 74,140, 93,216, 36, 85,164, 82, 41, 39,184,202,105, 42, 78,170, 82,128,177, 33,216, 70,142,145, 82, 70, 52, 22,168, - 1,233, 73, 79,175,185,253,105,246,222,107,173, 57, 70,254, 24, 99,204, 57,215, 58,231,137,170,139,164,251,238,187,231,156,189, -247,154,115, 52,223,247,251,240, 13,207,111,240,238,127,250, 20,191,250, 51,151,248,229,151, 71, 12, 94,140,172,179,187,155, 37, -170, 5, 55, 37,180, 11,125,109,125, 91,252,158, 23, 45,117,204,234, 7,173,233, 12, 26, 79, 32, 32, 48, 65, 16,228, 21, 14,150, - 59,202,220, 83,108, 69, 65,176,217,137,150,239,130, 58, 9,114,195,214,128, 76,106,159,155, 8, 66, 98, 5,178, 79, 18, 35, 10, -247, 92,180, 75,108,232,138, 37,165, 26, 55,139,238,243,181, 87,224, 68, 91, 88,244, 9, 89,105,122,207,185,240, 99,160, 95,125, - 0, 41,107, 59, 29, 90, 44, 46,193,196,126, 76,134,140,141, 11, 73,137,174, 91, 8, 87,177,166,180,230, 99,116, 36,183, 89, 67, -121,174, 85,192,166, 93,163, 18,120, 86,168,125,254,250, 53, 72,192,109,242,130,218,215, 19,225,168,119,229,214, 9,203, 81,151, - 19, 30,244,144,154, 27, 26,143,122,182,117, 5, 72, 16, 46, 89, 21,224,212,245,178,237,153, 39,177,210,132, 58,142, 5, 0,204, - 46,188,235,197,200, 88,217, 4,209,225,136,117,158,236,188,223,108,145,242, 0, 30, 54,182, 99, 71,100,105,152,181, 45,229, 1, - 99, 74, 40,211,100,192, 49,135,128,232,226, 51,175,221, 24, 30,200,188,130,185, 48,150, 59, 91,234,212, 62,177, 51,172,249,230, - 61,182,134, 19, 56,101, 83,155,147, 81,232, 82, 74, 32, 50,188, 93,100,168,163,238, 85,172, 99,207, 41, 25, 2, 47, 15, 24,134, - 12, 38,118,242, 27,213,164, 26,114,149,124, 70, 67,242,162,248,241, 19, 2, 41, 78, 38,192, 98,182, 52, 54,178, 23, 95,164,216, -238, 35,145,217, 40,252, 82, 25,152, 76,229,152, 25,213,195,160,126,108,146,195, 30,105,107,177,158,228,131, 72,189,112,107,219, - 73,231,247,187,242, 93,237, 96,255,153, 30,248,205,249, 92,231, 16,118, 86, 23,191, 3,184,251,131,192,159,252,115,184,243,153, - 25,239,248,212, 5,248,141,183,112,127, 59, 96, 62, 26, 69,206, 94, 23, 93, 10,125,180,239,140,109,174,107,111,100, 89,172, 75, - 40,185, 11,192,137, 35,245,208,241,247,132,185, 57, 27,210,106,150,198, 43,128,141,118,188,205, 4,211, 38, 12, 84,236, 98,170, - 23, 6, 67,252,240, 39, 7,240,219, 56, 90, 92,129,201,184, 60, 31,113,249, 91, 19,116, 86, 80, 86,100,143,103,220, 50,176,157, - 20,121, 2,248,214, 6,244,221, 79,129,222,240, 33, 32,191,195,156, 4,162,192,241, 55,128,199, 63, 6, 92,190, 6,125,204,192, - 61, 0,151,179,181,141, 89,141,159, 26,105,170,224,118,178,232, 19, 96, 26,161,135,226,179,208,160,125, 28,172, 56,147, 51,212, - 17, 9,200, 71, 37, 19,176, 87,240,134, 45,104,131,151,193, 19,157,147,176, 98,124,165,178,178, 13,196,211,175, 59,120, 85, 80, - 9, 89,232,138,136,182, 56,215,174,139,212,110,119,169,175,211, 28,173,125,192,137, 26, 47, 92, 59, 44,171,118, 95, 91,169, 57, -252, 42,191,220, 21,236,228, 73,120,232,226, 81,197,219, 51,233,144,170,179,171,254,143, 26,194, 62,237,186, 74,237,180, 52,203, -232, 99,234,118,207, 91, 50, 94,253, 11, 74,120,255, 31, 60,197,233,191,121, 7,219,159,189,170,214, 53,238, 18,227,184,187, 48, -146, 94, 79,227,162,142,140,113, 83, 42, 87, 15,138,209,213,161, 26,123,216,210, 21, 38, 49, 54, 47, 21,108,211,237,163,187,253, -118,118, 91,219, 72,192, 99,233,149,217,129,252,180, 17,230,232,113,203,226,191, 71,110, 55, 82,191,240, 7, 87,197,239,213, 46, -208,193,223,176, 9,237,163, 26, 52,181,216,229, 39,143, 52,141,124,128,212,105, 41,118,190, 34, 56,135,141,242,147,183, 37,167, -158,135, 62,106,103,159,243,226,176,207, 40, 63,243, 21,229, 57,155, 48, 82,174, 73, 63,175, 99, 78,251,157,255,224, 95,239,110, -108, 50,189, 43, 15,145,221, 50, 19, 93, 61,164,198,181, 30,221,180,111,215, 67,179, 16,104,106, 15,209,137, 85, 81,247,204, 4, -211,127,238,192, 72,181, 19,167, 37, 65, 79, 87, 52,123, 44,120, 42,161,159,208, 58,238, 78,126,206,217,100, 84,155,211,136,130, - 43, 98, 55,231, 92, 10,142,211,132,195, 60,161, 76, 99,181,160, 1,203,253,127,191,223,142,226, 71,165,128,230,201,154,221,148, - 81,105, 92,206, 49, 97, 21,156,230, 13,238,156,222,194, 40,130,253,120,196,241,112,133, 50, 78, 62,169,190, 62,137, 85, 27, 88, - 54, 59,219, 98,180,162, 77,125, 30, 98,170,200, 48,143, 87,141,252, 93, 53,101,123,170, 34, 8,179,172, 49, 56,101,100, 78,181, -155,108,188, 94,139, 98,205, 57, 33,109,118,200,195, 96,127,142,185,238, 10,153, 21, 36, 77, 46,166,101,114,236,100,100,114,183, - 15, 93, 82, 49,161, 15,181, 29,196,204,130,193,173, 20, 3,169,119,187,193,231, 85, 83, 54, 66,124, 47,191,241,169,122, 36,146, -240,162,118,180, 83, 81,157, 35, 30, 62,117,106,219,175,249, 69, 64,146, 21, 1,229, 4,200,123,159,213, 60,239,221,224,108,227, -121,218,218,158,253,203,254,109,208,135,127, 2,207,254, 25,194,240,233, 43,108,158,222,226,254,201, 22,147, 88,138,121, 17, 65, -138,220,120,132,117, 40,222,167,226,247,122,248,139,169,225, 52,125, 44,100,183,120, 0,101,196, 20,241, 10,176,219,225, 8,166, -255,163,149,107,129,186, 93, 89, 28,126,169,250,147,217, 94, 67, 16,144, 61,148,193, 25,176,197, 17,183, 85,105, 81, 59, 24, 65, -113,101,188,178, 93,150, 67, 17, 12,131,133, 61, 12,163, 32, 99, 0,127,231, 25,240,190,247, 2,187,239, 48,135,129, 42,112,249, -191, 1, 79,126, 10,120,248, 4,122,121,215,230,140,231, 19, 48,205, 14, 62,247, 10, 98,172,251, 2,159,245,205,192, 60, 67,247, - 98, 39,220,193,143,164, 13, 3,233,224,116,158, 51,160, 92,180,121,169,138,193,105, 78, 18,176,201,224, 50,129,187, 21,211,130, -234,129, 46,165, 80,219, 62, 14,162,203, 0,130,190,227,171,216, 92,109,160,144,213, 5,190, 16,244,116,118, 42,155, 37,120,103, -121,195,154, 35, 50,204, 37, 89,107, 28,104, 12,174,208,145, 54, 81,209,110, 12,207, 97,241,210,118,145, 9,154,165, 38, 58,138, -112, 52, 76,142, 13,141, 75, 44, 84,248,245, 66,247, 14, 56,124,232,115, 80, 7, 97,105,100,145, 66,246,185,164,248,153,255,245, - 28,227, 79,159,227, 69, 8,118,201,192, 76, 2,198,134,212,138, 31, 93,122,164, 99,146,128, 46,103, 59,105,135, 17,213,102,117, -138,215, 54, 16,212,140,101,154,215, 90,115, 48,160,157,117,234,175,217,220,145,200,212,161, 65,147, 11,200,230, 78,123, 42, 29, - 72, 72, 17,161, 71, 46,248,165, 38, 51, 30,200, 45, 73,218, 0, 50,123,255,187,178, 11, 86,135, 14,113,155, 86,106,247,173,167, -140,165, 46,177,237,177,127,223, 33,180,123,150, 45, 29,237, 1, 3, 79, 92,184,122,219,133,199,231,164,139, 80,155, 30,248, 19, -175,195, 22,150, 53,176,247,130,101,132,122,182,122,179, 7,246,250,171, 30, 78,149, 3,236,211,239,186,125,242, 19, 58,129,109, -247,239, 14,174,152,135, 11,155, 79, 42,165,143,112, 80,197,168, 38,150,139,145,249,184,198, 46,175,172,110, 3, 53,138,223, 76, -141, 58, 55,119,197,219,210, 47,212, 79, 40,173,233, 65,209,133,126,131,137,171,223, 92, 59, 38,187,177, 86,212,166, 64,100, 90, -155, 89,108, 68, 30,233, 72,175, 59, 25,168, 5,166,103,147,184, 90,157,138,149, 64,137, 25, 41,155, 23,160, 68,234,155,152,120, -249,108,179, 67,202, 3, 84, 21,135,162, 80,153, 22,200,183,102, 51,180,239,223, 47,111, 90, 82,243,251, 31,154, 86,187,245,168, -112,220,119,206,204,200,236,187,111,207, 89,207,105,112,197,238, 12,242, 2, 32,172,103,214, 88, 15,200,219, 19,228, 97, 99, 94, -117, 17,171, 62, 2, 74,224, 47,114,242, 7, 69,157,186, 67,162,213,187,170,126,177, 23, 53,166,245, 76, 82,247, 53, 2, 69, 73, -126,121,176,237,233, 21,230, 63, 54, 86,175, 29, 16,137,213,194, 77,152,124, 20,171,109, 96,232,227,123, 83,172,133,173,224,137, -237,107,233,204, 21,242, 5, 24, 95, 3,142,143, 77,117, 77, 3,144, 79,129,225, 37, 96,243,110, 19,123,213,180, 55,191, 60,242, - 63, 3,188,227, 17,232, 47,254, 52,238,254, 88,198, 87,254,202, 37,238,239,103,124,241,108,131,139, 77,178,145,148,174, 19,162, - 18,136,220, 55, 46,182,163,141,189,121,140, 58,219,174,181,184,163,192,239, 62,170,102,132,166,204,142, 29, 30, 45, 85,182,253, -199,159,107,209,228,108,113,127,255, 6, 17, 28, 99,100,235,133, 87, 32,130, 99, 95,184,113, 31,103, 17,134,170,243,195, 60, 24, - 60, 51,176,133, 98, 56, 0,252,230, 45,248, 59,159, 5,206,254, 89,128,223, 98,213,198,254,231,129,123, 31, 6, 30,110,161, 47, -223, 54,176,246,254,104, 34,185, 67,177, 83,109,195,141,249,121,226, 55,176, 8,116,242, 69,225, 69, 1,206,221,112,157, 0, 61, -177,211,148,240,196, 94,136,233, 41, 19,224,165,231,171, 12,150,178,128, 88,145,242, 42,124,163,187,175, 67,112, 54,251,115,195, -222,209, 74, 71, 73,161, 46, 59, 65,168, 89,213, 84,174,119,225,235, 78,162, 14,209,220,221, 82, 96,242,142, 5,134,243,134, 61, - 39, 9,181,177, 52, 53, 25,188, 80,243,169, 43,150,118,163, 45, 90,166,120, 14,237,138,103,106,143,254,158,151,174,224,224, 27, -138, 0,234,244, 24,236, 68,174, 89, 9, 39,158,247, 61,193, 41,138,218,152,245,191,182,159, 77,254,192, 54,234, 20, 81,100,106, -251,253, 25,203,144,142,254,181, 41,171, 66, 40,198,253,209, 54,164,232,230,176, 76, 87,171,129, 31, 61,228,100,161,134,239,132, - 79,104,169,101,232,196,169,163, 51,222,115, 55, 42,159, 53,244, 39,132,141,104,197, 11,247, 69, 90,114,187, 84, 38,251,185,199, - 96, 58,132, 86,128,218,196,115,232,206, 86,233,128, 50,240,139,153,187,215,124,116,145, 95, 15, 56,186,235,108,142, 43, 69,229, -196,159,184, 90,254, 42, 58, 94, 93, 70,218,198, 69, 60,120, 98,219, 93,182,221,252,209, 19,221, 84,151,112,153,133,245,208, 95, -196, 43,255,126,230,110, 85, 64, 93,191,223, 79, 78,102, 88,138, 91,134, 37,132, 62,113, 61, 74,248,248,237,245,233,199,226,180, -184,136,123,234,101, 20,159,135,206, 9,145, 58,152, 79,193,114,101,164,253,247, 83,159, 81,178,152, 15,245, 32, 21, 78,224,100, -234,244, 41, 10,148, 88,121,116,141, 45,251,152, 28, 85,241,174,139, 78,125,237,179, 39,220,140, 91, 87,111, 74, 33,132,132, 12, -164,228,162, 59,182,130,250,176, 7,246, 87, 72, 57, 99, 59,108, 32,219,217, 52, 57,101, 94, 17, 20,151,249, 17,139,228,152, 20, - 80,128, 62,193,171,114,225, 27,175,157,153,145, 82, 66, 78,102, 93, 35,230,186, 67, 87, 82,187,128, 69, 64,201,246,157,236,248, -215,180, 25,144,182, 39,200,121,176, 10, 89,102,219, 19,248,195, 81,105,176,158,116, 86,197, 10,209,129, 42,217, 11, 17,112,148, -216, 93,177,248,152, 73, 43, 31, 24,126, 72, 19,139,189,185,190,231,103, 5,242, 64,224, 29, 65, 95, 30,129,105,219, 41, 50,182, -166,138,198, 19,127, 12,142, 62,154, 15,193,149, 63, 30,202,192,124,110, 59,222,241,137,185, 63,105,231, 23,251,203,192,240, 89, - 96,120, 43,176,121, 59, 48, 60,239, 99,124, 15, 10,200,255, 18,240,229,111,133,254,240,127,139,237, 71, 30,226,133,191,126,196, - 83,159, 58,224,181,243, 9,247,239,102, 92,109,178,117,238,218,209, 76,209, 68, 54, 73, 58,251, 18,213,230,220,170,181, 14,161, -197,196,190, 79,181, 27,197, 68,216,126,136, 72, 53, 67, 88,145,227,153,188,218,169, 54, 99,247,234,120,187,107,176, 21,237,233, - 72, 93, 32,200, 54,163,138, 36,139,171,182, 51, 3,155,172, 56, 17, 96,251, 64,144,110,157,128,255,253, 59,192,243, 31, 0,248, -247,218,235,115,252, 40,240,218, 15, 66,191,144,128,151,110, 1,175, 78, 54,114, 31,103,232,249, 84,151,163,116, 39,219,141, 53, -251,109, 73,126, 85,205, 98,180,150,203,217, 10,128,139, 14,202,141,193,103,172,175, 0,121, 0, 78, 63, 1,156,190,217,199,253, -163,189,206,131,171,253, 75, 7,192,232,162, 87,209,141,109,227,105,234, 93, 32,125, 55,223, 79, 61,194, 47, 43,235,157,223,181, -225, 89, 7, 93,238,196, 97,182, 54,234,108,132,221, 94,176,103,124,235, 13,136,218,190,227, 85, 90, 18,218, 34,164, 36, 98,149, -231, 98,147,129,156,196,189,238, 77,181,189,130, 13, 47,190, 15, 38, 67, 62,159, 49,225, 93, 91, 35, 61,126,238,114,198,232,239, -151,168,249,251,137,237, 48,159, 96,228,187,212, 89, 98, 3,122,146,169,187,188,169,167, 36, 82,229, 96,160, 83,119,215,239, 75, -163,203,210,133, 40, 74,209,209,145,125, 13,216, 3,159,137, 60,167, 66,155, 16,107,232,132,192,221,219,129, 43,116,240, 30,109, - 44,117, 82,235,222, 12, 8,146,172, 8,246, 96, 36,203,194, 16,100,111, 72,198,107,121, 12, 81, 88,153,204,118,203,158,168, 23, - 95,211, 39, 60, 83,199,220,231, 94, 0,136,118, 25,238,221,134,120,161,209,225, 42, 6, 34,156,145,105,115,174,168,249,231,165, -251, 28,104,199,133, 39,239,188,181, 75,129, 41, 55,116,185, 11,203,157, 95,138,167,141,179,233,226, 64, 90,132,200,132,248,110, - 82,193, 78,200,160, 74,176,201,192,149, 90,240, 75,113,186,154,212,166,237,250,180, 37,246,231,165,251,140,207,139,123,170, 75, -246,139,238,153,172, 96,141, 2, 42, 43, 28, 40,195,152,181, 88,195,226,205,105,143,157, 21, 98, 71,221,182, 37,125,242, 63,171, - 76,208, 34,142,121,189,174,245,160,245,115,210, 63,131, 53, 54,220,102, 68, 42, 2, 41,214,177,111, 56, 65, 61, 56,106,158,103, - 20,153, 49, 31, 38,228,205, 22,219, 97,107, 63,239, 4,232, 44, 46,193,108, 95,120, 49,126, 15,255,166, 89,201,120, 17,124,223, -103,199,134,162,143,185,243,160, 83,219,129, 51, 86, 51, 47, 38, 91,250, 19,192,121, 64,222,238,144, 55,131,125, 40, 75, 1,100, -246, 7,183,137,223, 64,228,227,100,187,220,137, 77, 49,207,108, 30, 66, 22,174, 84,181,218,223,104, 40,241,125, 20, 77,246,145, -202, 68, 6, 26, 16,123,240, 6, 88,103,192, 16, 28, 68, 48,188,116, 64,126,114, 2, 26,238,248, 13, 58, 0,252,148,177,223,213, -163, 59,245,178, 13,126,244,202, 46,124,221, 1,227,203,246,234,150, 2, 76,159,243,131,126, 0,242, 22, 56, 14, 64,254, 28,144, - 62,106,185,221,249,141, 54,186,207, 79, 1,252, 12,144,190, 21,244,244, 87, 0,223,241,215, 64,223,244, 81,156,254,163,115,188, -245,127, 24,241,244,111, 30,112,255, 86,193,195,167, 7, 92, 73,131, 49,196, 97, 22,196,164,152,160, 80, 93,151,232, 34, 24,131, - 28,239, 26, 7, 63,177, 19,235, 4,117,124, 26, 81,139, 89,165,217, 49,252, 2, 33,191,200,227,214, 96, 47, 42, 70, 89,101, 18, -248,200, 95, 33, 72,108,100,166, 20,104, 95,182,247,104,195,138, 13, 91,215,176,125, 44,200, 60, 32,253, 71,119, 65,239,251, 61, -192,246, 95, 4,210,179,192,252, 24,120,244, 95, 65,239, 29,129,151,223, 4,188, 54, 2,247,142,208,227,108,254,118, 47,254,128, - 4, 28, 5,148, 5,216,165, 38, 4, 40,197, 78,178,189, 71,154, 61,118,144,121, 2,112, 96, 96, 18,232,209,210,241,112,122, 31, - 24,239, 1,167,129, 4, 46,192,156,128,109, 2,205, 51,136,172,235, 27,177,236,106,226, 69,147,213, 94,177, 79,161,142,124,229, -196, 22,214,194,115,120,103,253,105,211, 37,136,164,183,101,205,235,253,111,252, 79,159, 96,241,170,203,234,133, 97,189, 24,105, - 13,111, 70,103,219,193,106, 47, 31,207,238, 9, 24,111,123, 46, 99, 36,197,103,238,205, 40, 52,215,142,149,186,125,183,220, 84, -192, 16,225, 14, 17,190,249,185, 13,222,242,238, 1, 31,255,196,136,223,186,156, 23,135, 92,216,220,142,176,231, 48,173,232,135, -189,176,176,247,227, 19, 53,171,228, 90,145,189,176, 63,145, 39,131, 81,103, 81,234, 68, 98, 21,221, 73,109, 7,171, 93,144, 85, -172, 29,135,174,235, 27,125,215, 30,218,128,177,155,116, 72, 71,216,204, 68, 70,211, 99,219, 37, 83,213, 24,152, 48, 18, 82, 64, - 40, 85,161,173, 94, 8,164,238, 82, 61,141,203, 52,112,168, 20,175,151,141,163,117,229, 99,239,187,231,210, 93,202, 2,197, 1, -132,135,254,209,223, 46, 86, 43,218, 32, 61,125, 52,173, 23, 84,115,215,197,110, 98, 50, 67,203,247,191,191,147,194,182,120,226, -187,253, 30,235, 90,250,245,201,162, 51,181,239,245, 74, 4, 59,102,100, 88, 10,224, 93, 40, 46, 65,120, 66,192,209,223,100,233, - 86, 65,252, 58, 83,174, 88, 77,245, 89, 0,189,182, 34, 92, 83,235,209,219, 64,192, 9, 39,204,153,113, 80,215,103, 69, 8,139, - 20, 72, 41,134, 20, 6, 32,204,139,203,152,217,246,224, 51, 39,232,100,202,245, 30,115, 44,175, 35,226,148,192,110, 71,222,168, -168,107,161,172, 16, 44, 34, 32, 21,155, 2, 56, 53,142, 55, 3,198,194,152,143, 71,148,113, 66,222,110,176,217,108,189, 56,157, -236,140, 81, 99,170,132,179,161,238, 35,123,242, 82,148,247,139, 93,187,118,123,105, 31, 81,112, 78, 45,137,173,194, 26,218, 40, - 79, 89,145,192,246,103, 19, 35,101,147,241,179, 20,148,105,118, 48,130,250, 37,220, 14,175, 70, 10,234, 87, 0,236,255, 92,220, -180, 47,104, 39,164,141,236, 75,114,159, 33, 21,187,252, 85, 65, 69,161, 78,242,178, 58, 90, 48, 36,197,113, 82, 60, 24,129,187, - 7,193,201,253, 2,228, 59,221, 41,117,199, 61,204,238, 87, 47,143, 93, 16,183,113, 97,213, 3,239,212, 15,246,159,170,192,241, - 2,120,164, 80,246,233,196, 86, 45,171,114, 24,128,225, 55,129,124, 2,164, 51, 32,191,201,114,193,183,239,183, 78,126,251,131, -192,155, 62, 11,124,251,223, 4,127,211, 47,226,206,207, 61,193,233, 95, 61,226,238, 23,143,184,247,108,194,227, 13, 99, 82, 66, -145, 22, 40,172,218,239, 5, 61, 88, 71,189, 93,151,149,240, 45,172,105,210, 82,189, 50,195, 17,137, 45,134, 51,117, 99,124,237, -132, 58,209, 8,167,254, 50, 17,223, 67,106,105, 65, 47,108,169, 99,153, 26,108,132,201, 84,188, 57, 1,187, 34, 56,217, 3, 89, - 50,210,127,124, 23,244, 45, 31, 0, 54,127, 28,200,239,178,111,244,248, 17,224,252, 37,224,252, 25,224,188, 0,143, 39,232,126, -130,202,232,227, 41, 95,242,110,124, 32, 71,158, 69, 26,163,163, 25,192,113,178, 86,229, 48,155,124,124, 95,108,143,126,167, 24, -166,173, 36,168, 38,208,120,116, 15,251,209,233,129, 78,218,219,154,234,149,198,229, 72, 43,186,162, 88,121,228, 58, 10, 39,204, - 22,140,187,184, 64, 99, 76, 23,175,225,228,251,119,238,133,112,157,112, 38,119,187, 92,237, 68,106,253, 57, 36,180, 68,243,162, -131,111, 68, 68, 37, 24,160, 98, 5,150, 82,191,139, 84, 27,165,118, 23,251, 12, 96,235, 87,226, 83,204,248,125, 31, 60,195, 27, -254,194, 11,120,245,207,126, 1,159,250, 59,179,243,174, 27,226,185, 87, 29,235, 74,152,182, 35,224,133,129,145, 7,224, 31,127, -102,194,199, 30,140, 53,250, 56,246,185, 17,229,155, 86,153, 4,165,195,124,246, 73,112, 88, 81,211,214, 34, 65,209,101,244, 42, -212, 25,220,157, 35, 64,186, 17,113, 19,124,209, 34,231,156,176, 20, 90,201,234,130,232, 33, 42, 49,209, 52, 75,150,239,248,201, - 58,206, 1,166,235, 17, 87, 29,176, 42,164,216, 33,157,124, 58, 80,193, 40,145,201,237,123,242, 1,141,230, 55,118, 98,193,209, - 87, 22,235,238,111,125,185,150,134, 21, 89,188, 94, 83, 23, 85, 29, 84,190,129, 90, 19, 36,212,118,178,218,141,203,201,245, 17, - 73,151,118,193,254,125, 15, 1,219,222,139,166,125,199,250, 23,234, 47,179, 54,133, 58, 70,178, 96, 8, 51,197, 46,161,157, 11, -229, 50,247,206,141,246,179, 73, 87, 12,233, 74,216,169, 93,166, 58,187,250, 63,185, 45, 45, 7,228,104, 85, 8, 36, 0, 39, 76, -216,229,132, 43, 78, 96, 50, 31, 72,124,174, 98,242, 34,218,214,204,228, 5, 68,114, 33, 93, 78, 70, 7, 5,180,114, 18,250,162, -171, 47,172,117,241,153,215, 14, 17,219,141,245,189, 24,157,139,233,189,192,132, 76,140, 97,216, 32,109, 7, 28, 64,152,199, 3, -100,182,142, 93, 55,155, 54,110,137,194, 70,125,149,101, 85,101,199,238,236,128, 38, 1,156,169,149,180,170, 5,137,228,140, 60, - 12,246,207,164,212,200,204, 32,190,241,144,253,211, 27, 73, 54, 9,156, 51, 56, 49,168, 20,136,204, 80, 41, 80, 7,232,179, 42, -152,115,165,197,177,123,131, 99,164,111, 19, 4,139,164,171, 47,150, 10,164,204,181,116, 47, 69, 48,137, 88, 55, 79,254,248,178, -121,134, 38, 81, 20,255,129, 51,219,155,240,104, 86,156, 23,197, 41, 19,228,179,151, 72, 28, 53,237,224,244, 56, 87,189,203, 4, -140,143,128,233,220, 99, 59,189,143,144,217, 41, 55,197, 61,209, 9,250,144,128,203,226, 86, 47, 1,210, 0,108, 4,184,117, 4, - 54, 87,160, 91,175, 1, 39,191, 3,156,126, 12, 56,249, 8,112,250, 71,129,221,215, 2,249,107,140, 39,255,220,191, 0,252,177, -255, 14,249, 3,191,140,167,127,232, 10,183, 62,122,196,131,167, 20,175,158, 38, 92,177,145,205,180,248, 69,236,243,161,226, 43, -127,144,127,201, 24,203,166,198,191, 14,241,202,228,116,179,129, 66,217,171,222,173, 53,219,143, 22, 44, 4, 24, 97,245,176,192, - 24, 66,164, 32,155, 99, 91,235, 1,149, 56, 33,195, 94, 95, 26, 8, 36,100,126, 76, 98, 12, 40,216, 22, 32, 29, 18,210,119,237, - 64, 31,250, 32,176,253, 1, 32,189,221,118,220,227, 39,129,199,127, 21,250, 88,129,171, 1,184, 56, 64,175, 70,232, 60,154, 80, - 37,164,215,147,135,203,108, 59,226, 78, 96, 14,103, 7,148, 31,102, 99,121,206,165,209, 40,164, 3,214, 87, 14,190, 99, 44, 40, - 25, 41,240,105, 6, 31, 7, 80, 73, 72,251,185, 93, 2,106, 21, 60,121, 81,107, 35, 59,191,156,184, 49,224,129,101,152,206,181, -145,181, 46, 53, 41,178,218,189,133,240,148, 58,185, 49,173, 56,225,241, 32, 14,238,102,156,252,247,178,239,249, 69,218, 51,203, -170,182,250,208, 22,214, 3,237, 44, 88,158, 6,118,139, 8,207,159, 18, 18, 4, 95,248, 51, 95,196, 71,255,193, 30,133, 21,236, -227,126,137, 14,182,142, 78,237,178, 72, 30, 25, 26, 0,143, 7,170,248,200, 43, 19, 62, 63,154, 62,102,227, 99,213,190,211,207, -206, 20,239, 23,129,125,209,180,238,114,210, 74,115, 16, 59,113,193, 82,231, 16,228,183,212,133,187, 20,119, 41,172,199,160, 10, - 93, 30,178, 29, 42, 91,169, 53, 19,145, 11,111, 54, 48,138, 0,100, 36,143,232,132, 11,179,226, 16,159,213, 71,168,106,196,244, -172, 97,205,210, 90,115, 22,109,182, 81, 90, 41,200,185, 35,233,237, 60,253,237,194,247, 47,195,202,170, 90, 47,225,213, 37,222, - 10,126, 59, 63,139, 39,191,197,180, 35, 57,211, 32,146,210,160,171, 41, 19,150,176,149,158, 37,191,166,226, 21,135,247,204, 30, -120, 67, 14,224, 25,130, 82,184,176, 72,155,197, 47,166, 29,213, 89, 64,138,137, 25,163, 2,231, 80, 15,227, 2,230,110, 79, 21, -133,100,233, 26,144, 21,173,182, 70,232, 82,151, 46,154,233,186,206, 85, 59, 24, 82,160,203,137,184,174,155,227,253,158, 92, 38, - 71,157,118,172,196, 63, 39,152,176,155,236,206,113, 38,118, 43, 98,110, 0, 65,233, 13, 66, 77,237, 94,237,228, 43,106, 35, 88, -218,132, 32, 30, 90, 34, 32,243, 14, 39,187, 45,142, 4,200, 52, 65, 75,193,144, 7,232,206,182,195, 82,196,159,123,110,121, 7, -113, 96,145,106,173,240, 35, 48,190, 39,186, 41, 28,147, 55,100,195,215, 21, 35,104,176,251,208,137, 25,196, 9, 57, 15, 64, 82, - 87,109,251,229,222,147,234,136, 77,225, 94, 49,131, 92,177,177,213, 35, 79,214, 1,234,108,150, 32,134,123,160, 41, 24,244,228, -251,245,134, 80,181,221,165, 56,145,139,192, 62,119, 19,241,205,131, 10,114,178,136,201,215, 14, 86, 60,104, 82,232,111, 78,192, -120,101,101, 30, 50,192,103, 64,122, 26, 40, 7,187,212,203, 30,152, 30, 57,100,102,107, 74,118,157, 60,233,131, 91,194, 91,114, -162,196, 49,146, 77, 74, 4, 34, 3, 57, 65,135,236, 92,201, 9,244,220, 63, 2,158,251, 12, 80,254, 40,112,251,187,205, 19,143, -175, 4,248,135,128,119,254, 50,232, 39,254, 10, 54,255,211,103,241,220, 79, 29,112, 50, 77,120,229,169, 1, 23,196,152,185,133, -185, 80, 63, 10, 15,166,187,239,175,147,154,248,222, 4, 90,140, 82, 74, 99, 53, 39, 31,189,138,221,105, 34,203, 11, 41, 18,245, -170, 8, 63,217,133, 62, 73, 49, 37,178, 74, 23,180, 97, 43,152,224, 70,167, 68,160,217, 71,172,172,200, 52, 99, 43, 64, 86, 70, -122, 62,129,191,231,221,192,233,127, 0,208, 91, 92,180,246, 10,240,248, 47, 0,247, 94, 4, 30, 63,227,212,140, 2, 29, 71,211, - 78, 68,168,135,167,149,144,114,123, 42,134, 8,188, 38,139, 86,219, 23,127,237, 11,112,144,142, 21,170, 30, 31,235,129,225,105, -103,235, 16, 20, 63,213, 19,240,116, 2, 61, 86,240,101, 6,243, 92,245, 28,236,187, 81,113, 5,114,176,159,227,196, 9, 60,230, -216,133, 93, 4,226,180,160,209,225,174,169,175,169, 89,152,250,188,106,213,165,102, 53,210,192,164,235,145,139,119, 35, 73,218, -133, 24,137,108,203,195, 89,187, 3,180,253,190, 84,184,135, 66, 50,240,138, 42,190,248,145, 61,238,237, 5, 83, 82,108, 32,158, - 40,104,170,100, 66, 88,149, 26, 47, 94, 59,223,242,164,138, 7, 99,241,245, 65, 88,225,186,159, 69, 91,161, 67,157, 82,189,199, -127,234,170,147, 90,239,204,141, 11,222,132, 78, 11,237,174, 71, 78,198,229, 92,148, 42,199, 29,221,142,188, 6,165,116,214,205, - 38,226,178,247,121, 88,121,182, 75, 8,183,186, 78,171,238,125,197,138,166, 66,234, 10,125,109,130, 55, 52,164,109,255,222,231, -110,108, 28,246, 53, 80,243, 90,199, 24,251, 82, 2,220,210, 8,108,201,223,199, 64,217, 82,119,233, 6, 24,103, 19,100, 58, 23, -215, 77,213, 57,160,173, 83,247,115,190,172, 71,195,218,108,204,158,132,189,152,156, 96, 53,161,137,220,245,192, 30, 23,103, 36, -204,126,193,111,220,140, 51,122,212,237,232,231,117,116,224,234, 32,170, 72, 65, 99,109,226, 54,234, 71,146, 55,234, 67, 91,193, - 86,145,181,126,233, 6,207,127,234, 86, 4,189,120,143, 18, 67,136, 49,139, 66,146,175,146,161,102,211, 37,245,213,101,139, 30, - 55, 0,145, 9, 7,136,109, 28, 95, 68,204,159, 46,101,241,157,209, 77,147,165,149, 45,176, 29, 31, 38,174,219,228, 1, 24, 6, -204,211, 12,153,103,168,171,222,145, 18,138, 40,104, 30,145,242,128,147,237, 14, 37, 15, 40,101,178, 36,205,221, 45, 28, 41,161, -140, 71,228,196,160,156, 77,184, 10,255, 97,250, 47,198, 62, 99,165,152,237,251, 1,192, 41, 33, 15, 22, 89, 39, 50, 87,191, 28, -197,222,155,204,255,205,137, 45,205,102, 16, 96,158, 33,197, 54, 62, 84,188, 91,135,237, 54,197,103,137,196,201,253,228,210, 20, -125,222,101, 19,168,146,212, 64, 4, 77,230,103, 7, 19, 56,251, 94,190,113,243,236, 34,240,138, 84,139,225, 56,171,193,221,187, -254, 39,147,226, 98, 84,220, 25, 20,178, 97,148,207, 95, 33,239,127,221, 70,226,128, 73, 86,248, 13,128,190, 2, 76,143,237,114, -150,131,117,228,124,102, 23,112,192, 75, 72,218,163,234, 19, 5,236,103,191,156, 86,165,116, 34, 83,110,111, 19,244,139,103,192, - 91, 47, 64,111,255,239, 1,122, 8,220,250, 94, 32, 63, 7,240, 45,128,190, 29, 56,251, 58,208,247,253,215, 72, 95,243,243,184, -243,159,141,216, 62,152,241,224,142,224,225,134,112, 84,170,137, 92, 49, 46,227, 16, 84,105, 39,162,153,151,202,146,193, 71, 92, - 21, 70,227, 39, 91,136, 66,226, 19, 41, 62,128,168,158,209, 4,140,163,160,136, 89,155, 2,153, 26,127,145,138, 5,233, 36, 38, - 36,175, 16,152, 20, 3, 41, 54, 89,145,103,182, 66,240,219,111, 3,207,255,187,230, 10,208, 1, 56,252, 58,240,232,135,160,175, -252, 14,240,210,109,123, 29, 47,246,144,151, 14,144,199, 19, 52,140,202,170,203,116, 20,245,211,119,203,253,242,209,118,233, 87, - 5,216,139,165, 23, 41, 64,194,109, 30,216, 51, 64,137,219,220, 62, 13,192,150, 64, 91, 6,157, 16,240,200, 34, 35,169,227,235, - 71, 81, 73, 36, 94, 44, 82, 45, 62,133, 0, 46,253,104, 48,240,174,173,133,162,200, 84,184, 97, 31,220,119,165,133,250,188,114, - 63,176, 57,108,113,221,191, 35,254,169,163,118, 64, 14, 68, 40,172, 77, 83,161, 84,187, 83,238,118,156,169, 59, 4,199, 89, 48, -122, 81,183,205,246,231,132,218,216,151,161,181, 91,231,149, 15, 62,193,106, 90,246,213, 78,212, 79,226, 57,226,169, 59,196,122, -191,248,188,210, 35,160,219, 7, 43,150,151, 77,191, 46, 96,213,133, 91,148,234,240, 0, 0, 32, 0, 73, 68, 65, 84, 31,153,171, -160,137, 22,250,132,232,152,230, 8, 25,234, 68,129, 61, 9, 49, 44,128,201,171,217,158, 63,111,151,191,165,207,165, 46,128, 90, -220,222, 55,118, 94,106,214,182, 99, 15,250, 92,162,165,127,126, 61,186, 14, 24, 80,234, 70,203, 59,255,217,206,213, 4,109,141, -139,160,109,229,163,215, 3, 61,178,182, 92, 2,114, 90, 94,228,220,119, 91,187,133, 58,188,116,195, 46,233, 68,108,125, 71, 43, -120,253,255, 91, 43,210,129, 38,230,155,123, 39,129, 54,215,132, 86, 44,107, 87, 32,213,167,172,217, 10,171,127,124, 45,144, 83, -186,214,165,175, 59,223,254,178, 79,139, 41,143,143,228,217,194, 65, 4, 97,131, 22,156, 16, 35,167,140,189, 42,138, 76, 94,116, -115,253,160, 55,122,139, 57,169,192,108, 22,213, 18,197,255,117,225,227, 53,135,202,235, 88, 43,225, 1, 90,156,135,246,249,242, -149, 52, 68,193,217, 34, 85, 45,161, 84,176,201, 25,154,179,253, 60,121,192,201,102, 3, 85,193,164,132,253,113,223,212,239,210, -129,100,184,243,123,163,235,226, 65, 14,148, 73, 9, 36,197,147, 40,154,104,160,134,191,248,172,196,160, 49, 25,154, 0,153, 39, -232, 52,161,232, 17,154,146, 81,227,180, 89,112, 36, 9, 56, 9, 4,201,210,215,220,234, 66, 29,175,176,248,131, 69,170, 16,110, - 94, 63,234,248,124, 97, 47, 10,111,225,236,220,236,224,117, 15,217, 42,239,131, 0,156,252,128,216, 50,244,162, 0,247,190, 8, - 60, 51,187,101,109,107,160, 25, 69,227,135,207, 7, 79,109, 59,119,198,228,109,179, 96,233, 33,228,191,230,101,175,234, 21,241, -244,143,150,203, 11, 2,232,130,129, 29, 3,151, 9,120,116, 2,125,124, 0,126,207,223, 0,189,241, 51,192,217,159, 0,134,119, - 24, 36,133,223, 4, 12,127, 30,244, 45, 95, 5,252,228, 79, 97,247,103, 47,240,198,151,102,236,238, 20,220,219, 38, 28, 8, 40, -243,210,165, 96, 9,104,188,176,255,176, 15,226,114, 28,230,188, 76, 7, 51,235,224,242, 1, 10,208, 16, 59, 83, 64, 38, 64,102, -241, 0,132,110, 84,111,177, 56,182, 99,100, 32,177,212,170, 62,145, 98, 96, 27,191, 51, 18,240,108, 6,222,247, 14, 96,251, 94, -123,220,198,223, 1,126,231, 95,129,126,122, 2,246,207, 1,219, 45,128, 9,250,185, 3,228,254,222,166, 64, 91,110, 65,237,125, -203, 23,144,239, 80,229,205,197,160, 52,163,119,233,197, 59,245, 32,251, 30,139,143,239,197,166, 43,228,156, 52,190,101,171,150, -156,157,194,145,129,204,245, 66,239,205, 52, 33, 46,148, 30, 16,210,227,231,147,125, 89,237, 60,193,232,186,247,222,242,214,187, - 8, 4, 43,223,115,167,158,143,253, 98, 86, 11, 92, 49, 7,130, 46, 4, 78,150, 87, 99,250,149,112, 95,134,178, 93,253,210, 45, -165,161, 55,163,181, 81, 81, 92,138, 59, 65, 68, 43,100, 67, 96,227, 79,118, 62,118,189,216,123,114, 94,191,203, 21,173, 65, 26, -220,113,201, 55, 88,166, 0, 78,139,198,139, 58,116, 15, 86,199,177, 94, 83, 12, 23,159,142,104, 71,244, 91,231,104,211,194, 66, -214, 52, 62, 49, 82, 7,173, 70,237,126,193,136,175, 46,106,209,210,141, 82,161,186,140,129,173,107,132,182,142,208,149,152,146, - 87,204,135, 78,146,116,237, 64, 79, 93,238,124,164,177, 21, 31, 81, 71,120,205, 41, 20,183,253,243, 48, 5, 32,199,183, 81,243, - 10,180, 19, 93,238,142, 34,169,205, 68,115, 12, 43, 82, 65, 13,169,189, 24,101,251, 65, 44, 43,161,165,126,137, 75,125,125,161, -235,106, 45, 16, 59,119, 46,173,158, 94, 90, 20,151,214,217,254,127,151,174,164, 75,189,149, 51,180, 94,175,243,189,197,251, 51, -117,133, 78, 95,128, 36, 88,211, 41, 68, 85, 60, 73,106,211, 69, 73, 12, 45,115, 13, 70,169,207,106,112,209, 35, 66,220, 87,194, -179,216,106,111,137,214,165,165, 72,149,174,179, 37,214,203, 3, 17, 69,153, 38,228,141,218, 72,221,197, 20, 5, 5,165, 20,164, -153, 64,121, 3,100,155,182,202, 60,130, 83, 54, 16,216, 52, 34,113,130,228,140,195,126,143,195,229,185,133,105,181, 13, 76,111, - 89,105,221,121,123,184,200,127, 32,179, 17,113,189,208, 19,200, 43,151, 33, 0, 12, 82, 32, 58,131, 99,172,206, 12, 42, 30, 16, -163, 5,202,106, 98,178, 24,135,184, 15, 75,165, 88,133,162,178,176,183, 85, 43,128, 16,180, 20, 15,183, 79,190,119, 12,232,138, -214, 75, 93,138, 66,216, 20,199,179, 42, 54,170,102,103, 80,224, 40, 6, 56, 32, 47, 7,101, 3,232,213, 0,253,236,167, 65,239, -126, 4,224,118, 67, 50,200,149,209,199,202, 8,204,151,192,116,207,163, 62, 47, 0,253,114, 71,197,138,225, 71, 7,110,237, 64, -148,223,179, 64,167,210, 78,126, 88,178, 21, 10, 3,251, 25,196, 19,240, 56, 3,143, 79,161, 95,243, 43,160, 47,255, 83,192,237, -239, 3,182,127, 0, 72,119,157, 96,247,189,160,175,122, 30,250, 87,126, 4,233,135,174,112,231,227, 71, 12, 34,120,176, 83,156, - 15,102, 69, 34, 37, 83,251, 43, 32, 65, 74,243, 90,155,179, 64,103, 79,184,242,198,214, 25, 60,237,225,236,198,248,204, 12,113, -144, 2,147, 32,185, 85, 70,168, 29,118, 34,189,216,203, 58,242,228,226, 26, 37, 32,179, 98, 67,138,129,216,130,125, 52,129,222, -117, 10,126,203, 31,180,176,155,178, 7, 30,254,151,208,127,188, 7,238,125, 25,240, 6, 31, 80,221, 63, 64, 62,123, 5,221,143, - 16,182, 27,135, 6,251,188, 17,183,153, 45, 81, 76, 60,178,203,148,139,253, 58, 22, 96, 20,232, 36, 70,148, 3, 64, 51,217,133, - 63,139,181,193, 19,128,105, 50,159, 58,109,129,244,156,121,214, 6, 1, 78, 0, 26, 60, 57, 80,101,161, 95, 13,209, 79,100, 84, -179,243, 14,138, 24,135,154, 85, 65,137, 48,206,122,227, 1,174,235,173,165,243,224, 75, 47,156,235,109,138, 93, 80, 75, 20, 81, -212,117,204, 49,112, 24,188,165,154,117, 53,218,235,148,223, 68,215, 3, 78,230, 58,248,112,133,118,236, 12,125, 44,220, 46, 68, - 47,109,146,231,179,119, 93,207, 28,157,181,182, 80,145, 96,181,247,227,234,170, 58,167,235, 63, 43, 58,210,157,160, 21,169,113, -121,246,226, 53,185, 14,249, 91,136,146,184,147,101,149, 21, 88,169, 31,157,231, 85, 97,162,171,108,119,238,222,177,132,150, 43, - 94,180,233, 31, 56,236,177,253,165,175, 75,121, 24,173,144,194, 33,234, 26,186, 21, 66, 4, 3,109,124,248, 52,249, 5,127,230, - 29,250, 25,128, 51,127,255,142,218,166, 16, 19, 34, 60,198,143, 27,180,176,156,106, 81,163,102, 11, 3, 53,253, 3,117, 94,252, -121, 81, 72,182, 43, 42,246,204,210,165,178, 21, 93, 94,196,114,205,131,221,245, 52,218, 38,125,210, 77, 51,214,228,114,245,196, -179, 62,222,149, 52, 46,116,189,214,168,243,202,167,142, 85, 40,153,116,108,133, 76,141,237, 15, 23,184,153,147,202,126, 70,113, -120,135,166,140,189, 10,202, 60,219,116, 33, 37,204,254,190, 16,147,173,146, 0, 48, 25,182,124, 38,134,200,100,174, 6,106,226, -214,158,170,184,198,237,106,231,115,215, 14,205, 13, 85, 31,185, 23, 80, 26,144,136, 33, 57,153, 99, 75, 11,166, 2,224,120,192, - 70, 5,105,216, 96, 82,193, 56, 30,204, 77, 35, 70,232,204,195, 6,137, 19,182,155, 77,219,169,115, 61,176,233,154,215,214, 64, -243, 62, 86, 55,181, 84,181,193, 69,224,138, 93,242,212,160, 39, 62, 27, 86, 42,149, 4, 69,185, 11,170, 86,181, 68, 55, 78, 72, -193,138,247,203, 92, 59,245,138,129, 15,108,103, 47,253,195,162, 82,231,158,245,107,121,153,166,110, 3,155, 3, 19,206, 97,225, - 50, 16,198, 56, 43,166, 2,191,136, 60, 77, 40, 15,208,223,126, 13,244,173, 47, 1,155,231,125,215,234, 53,180,122,223, 37,151, -192,213, 4, 61, 20,208,217, 43,192, 89, 1,134, 55,199,163,100,221,245,137, 95, 14,137,237, 73, 59,250,210,243, 40, 45,210,182, -192,236, 88,179, 53,250, 64, 1,253, 86, 2, 30,156, 65,223,115, 31,120,215,143,130,158,253, 57,224,244,251,129,225,157, 0, 15, - 0,190, 3,244,194, 51,160, 31,249, 79,129,255,230, 33, 78, 63, 34, 24,142,123,236,146,224,113,102,204, 81, 99, 83,120, 54, 61, -180, 69, 21, 50,181,195, 45,187,126,143,104, 57, 26, 69, 87,188,133,255,159,147,137,165, 36, 89, 7, 88, 5,116,140,133,119, 37, -113,140, 64,141, 33,192, 76, 78,242, 19,208,176, 1,113, 2,109, 19,248,253, 47, 0,111,248, 22, 59,178, 14,191, 12,124,241,227, -192,195,103, 13,125, 37, 51,240,242, 12,249,212, 99,200,147,189,173,101, 60,198, 75,149,237,179, 67,190, 23, 96, 79,210, 56, 73, -174,129,240,214,102, 47,214,137, 79, 98, 30,117, 87,198,171, 8,104, 44, 13, 17,118, 36,155,186,200,185,105, 33,120,103,199,226, -142,129,147, 12, 26,134,101,228,176,118, 93, 54, 80, 81,190, 91,183,145, 49,181,112, 19, 89, 41,100,200,145,161,177, 87,207,104, -151,120,221,219,173,227, 33,125, 15,162, 98,175,191,114,235,126, 8,141, 98,151, 82,187,160,145, 76,143,169,190, 79,174,239,103, -231,243,142, 9, 65,137,238,147, 90,215,143,106,103,212, 26,158, 18,161, 39, 53, 6, 51, 34,108,163,211, 45,214,249, 0, 90, 71, -126, 85,157, 28,196, 61,106, 7,119,191,179,213,238, 20,174,217,224,157,231, 62,190,247,121, 61,205,236, 33, 60,157,238, 64,226, -251,236, 70,174,172,205,224,220,239,238,235,184, 95,219,115, 64, 43, 53,124,234, 58,109,234,126,134, 56,172, 99,243,148,180, 93, -134,212,173, 88,218,110, 88, 23,197, 84,124,173,141,255,125, 83,247,251,161,130,151,149,223,122, 14,154, 29,217,134,105, 77, 30, -148,142,234, 22, 16,107, 14, 34, 32,181, 96, 23,238,160,213, 82,109,144,122,173, 99,174, 13, 30,209, 66, 23,113,205, 91,127, 77, - 96,119,253,159, 75,245,137,199,179,177, 44,120,150,221, 62, 45,154,200,155,106,191,254, 25,187,169, 19,110,133, 27, 97, 36,197, - 73,133, 41, 89,134, 9, 59, 30,156,138,235,192,216,216,139,133, 25,101, 26, 49,139, 32,147,171,206,115,134, 50, 99, 42, 5, 92, -138,221,119,137, 64,100,165, 70, 93,239,213,103, 9, 43, 13,128,118, 63, 87, 23, 53,215,137, 30,201,167,228,115,153, 49, 29, 15, -200,158, 76,202,238,141, 87, 78, 80,102,140,243,140, 34, 5,105,158, 77,112, 78,108, 22,230,204, 21, 19, 13, 15, 57,203,232, 16, -177, 11, 95, 39,173,153,203,218,240,152,104, 18,255, 42,178, 67, 75, 92, 35,239,152,217, 59,104,142,191,197,133, 7, 20, 10,121, - 47, 18, 44,230,211,195,125, 85,186, 8,184,174,234,241,175, 17,226, 5, 18, 1, 58,175,122,248,220, 65, 14,203, 80, 27,143,216, -197,110,254,105,187,248, 5,123,117,248,129, 51,214, 11, 51,202,150,161,191, 53, 2,231,191, 4, 60,251,181,150,141, 78,228,227, -117, 31,189,207, 7,232, 21, 1,143, 1,189,100, 80,185, 15,220,153,157, 74,150,205,155,126,114,176,203,102, 59, 55,115,236,209, -245,190,165,235,214, 67,133, 50, 2,152, 14,192,158,129,203, 25,116,127, 11,124, 94,172,107,127,219, 15, 0,119,255, 29, 96,247, - 33,179,216,165,127, 2,120,234, 47,129,255,212,159, 6,253,181,251,224, 95, 24,240,236,241, 2, 67, 41,120,156,146, 5, 56, 84, -212,185, 86,145,119,168, 49, 19,181,216,208,165,224, 69,151,229,156,127,143, 73, 60,204,164,120, 33, 18, 15,153,120, 32, 8, 89, - 4,161,104, 27, 80, 68,225,144,161,224,221, 0, 30, 50,104, 47,224,175,221, 2,239,255, 16,176,123,155, 37,167, 61,248, 9,232, - 23, 21,216,238,236,111,125, 52, 67, 62,123,137,242,202, 17, 50,205,174,139, 48, 5,189,169,182,115,149,225, 83,180,167, 91,246, - 16,237,226,221,183,120,151, 94,172, 83,159,172,112, 34,153,129,139,193, 63, 95,108,100,140,177, 0,122,191, 49,176,248,204,200, -116,187,198,188, 12, 17,210, 84,109,126,228,105,108,126,128,179,177,236,139, 18,148,237,175,172,130, 67,255,156,195,167, 77,220, -173, 45,146,179,191,225, 34,186,250,103,227,223,139,132, 43,183,117,198,229,115, 45,192,164,235,154, 74,168,116,213,234,158, 96, - 89, 67,201,133, 92,209, 37,234, 34,196, 98,173,214, 13,187, 28, 51, 48,148, 62,110, 52, 80,181, 13,168, 94,237, 63,180,170,245, -176,204,171, 22,186, 14,221,161, 53,237,173,126,121,186, 6,241,192, 74, 60,183, 24,109,118,182, 64, 90, 29,165,225,222, 17,159, - 52,244,157,182,116,171, 69,172, 88,235,164,109, 28,222, 2,123, 26,245,172,248,235, 90, 22,133,136,253,128, 57, 66,171,220,125, - 64,221,197,222,143,220, 77,100, 70,181,120,161, 14, 41, 60,250,190, 94, 61,242,183, 0, 56,248,229, 58,118,212,189,202, 84,138, - 49,183,195, 95,158,234, 84,232,201,153, 20,199,176, 1,162,165,145,149, 27, 58,109,237,214, 69,253,235, 5,186, 33, 44,101,245, - 62,210, 13,124,245, 5, 9,113,133,122,229, 53,195, 0,221,103,120,169,145, 91,237,166, 91,236,240, 77,133, 69,241, 38,117, 14, - 42, 29, 25,172, 44, 19, 99,224,108,239, 13,145, 37,164,145,193,101,138,223, 5, 33, 12, 79, 76,216, 12,131,199,199,218,250, 52, - 56, 17, 66,134,119,133,136, 7, 38,117,174, 10, 98,183, 90, 99, 5,166, 69,213,173, 45,220, 6,241,108,139, 69,179,218,186, 88, - 77,124, 39,218, 77, 21,128, 82, 20,162, 35,118, 68,216,158,156, 66,136, 48,205, 35,166,105,198, 60, 30,237,240, 73,169,237,212, -171,200,164, 83,186, 47, 72, 97, 17,207, 74, 93,200, 11, 5,217, 45,132, 33,161,108, 12,133,178,120,242,140,214, 72, 81, 21,139, - 8,101, 54, 54,124, 74,185, 70,141,154,202,158,171,240,139,216,170,149,102,174, 66,151, 59,174,208,185,248,126, 4, 32, 45,158, -177,142,234, 39,156, 84,205,202, 38, 90, 5, 56,179,239, 66,138, 63,229,156,128, 9,138,137, 1,253, 93, 64, 63,253,113,208,221, -207,187,119, 58, 74,123, 87, 87,149,163, 33,165,174, 12,219,164, 2,144, 94, 0,119, 94, 4,248, 57,128, 78, 64,187, 43,232,110, -242, 16,237,220,186,246,163,137,247, 80,252, 45,157,165, 43,181, 21, 50,205,160,195, 12, 58,206,160,243, 1,244,210, 41,244, 61, - 87,160,175,251, 81,224, 77,127, 31, 56,249,126, 32,125, 25,192, 95, 13,220,249, 49,208,247,254,135,192, 83, 79,192, 63,115, 23, -119,206,207,177,153, 38, 60, 32,198,101,183,227, 21,105,220,113, 67,235, 19, 56,149,133,127,154,208,129, 25,116,185,231,171,226, - 37,233, 56, 6,221,135, 49,188,153, 22,213, 73,200,201, 14,250,172,130,156, 9,124, 58,128,246, 9,124, 10,208, 31,126, 55,232, -249,239,177, 77,235,254,231,128,151, 62, 5, 92,221,178, 47,118,255, 8,125,188,135,220, 59, 66,198, 9, 74,226, 43,152, 80, 75, -118, 27, 87, 98,208,134,173,112, 58,165,166,206,185,154,235,232, 29,147,216, 26,103,246,196,187, 89,129,139, 2,154,197,190,222, -158,160, 71, 6, 77,151,174, 36,212,198,211,221, 36,208,192,181,253,150,212, 29,198,206, 52, 39,136,211,225,200, 87, 75,142, 46, -136,206, 36,244, 39,126, 99, 30, 21, 72,217, 45,102, 98,240,159, 24,115,135, 95, 55, 87,145, 92,179, 19, 13, 93,240,138,250,215, -168,209, 11,245,242, 51, 22,117,236,140,197,117, 16,209,246, 43,135, 51,166,165,174,113,103, 73,234,121,214,138,118,112,215, 98, - 70,187,213, 87,127, 72,135, 31,219, 9, 93, 27,168,213, 87,126, 64,204, 46, 38,139,144,148,210,217,167,180, 3,183, 96,213,153, -221, 52,150,167,107,102,171, 78,248,212,109,187,214,141,200, 66,105,172, 13,101, 32, 55,136,188,168,175, 87, 86,170,251,212, 77, - 50,218,101,164,238,185,167,174, 30,210, 10, 24,210,110,146, 25,241,197, 65,204, 76,126, 97, 30,187, 75, 46, 20,249, 19,150,185, -238,203, 85,131, 46, 0, 56,232, 46,247, 40, 66, 70,191, 20, 7, 50,100,172,120, 12,240,163,206,243, 31, 49,189,220, 1,129,168, - 31, 25,251,231,202,178,217,245,154, 56,239,245,132,106,215,183,219,184, 1,140,186,116,101, 80, 21, 42,182,152,214,235,255,166, - 94, 95, 99,241,106,194,213,125, 51, 92, 11,102,194, 94, 20, 3,171,195,207, 12,206,161, 72,208,164,216,176, 81, 80, 15,176, 56, - 85,168, 34,229,100,246,235,148,170,195, 59, 51,163, 48,219,120,156,201,154,153, 50,251,122, 46,132,116,104, 73,167, 55,124,207, -235, 19, 55,190,249, 90,172,171, 57,147,200,145,233, 38, 8,247,180, 54,166, 10,100, 19,215, 73,148,253, 21, 52, 37, 76,211,132, -121,158,236,123,131, 77,246, 50, 86, 99,166,122,185, 6,201,205, 71, 88, 28,163,118, 52, 1, 81, 29,108, 57,169, 45, 81, 83, 48, - 88, 68, 67, 83,164,104,153,187,248, 86, 63, 12,105, 65, 40,240, 44,106,235,134, 56, 25,129,142, 52, 50,164,217, 47,150,138,218, -240,139,124,185, 80, 9,197,170,192,192, 15,147, 43, 76, 69, 4, 5,130, 50,199, 14, 52, 4, 48, 30, 54,145,129, 91, 23, 10,254, -123,175,128,190,234, 23,129, 59,111,111, 57,220,234,137,198,243, 4,140,108,179, 48,135, 89,107, 33,227,142,157,221, 7,210,214, - 46,243, 91, 4,220, 98,235,190,175,162,210,114,112,138,175, 7,234, 55,155,162,108, 86, 40,102,232, 56,131,198, 17,180,223,128, - 95,219, 64, 63,191, 5,190,233,239,130,222,253,219,174,142,255, 0,128,119, 2,183,127, 28,244, 93,127, 26,188,125, 0,250,249, -187, 56,185,119,137,231,174,246,216, 64,113,158,147, 77, 40,188,155,216,100, 96, 67,197,222, 15,181, 29,209,226, 41,147,118,240, -193,243,119,152, 29,237,233,127, 79, 79,125,168,200,222,142, 60, 53,184, 61, 49,147, 32, 11,192,155, 12, 26, 18,120, 18,208,191, -250,229,160,175,254, 97,179,144, 29, 62, 15,156,255,117,232, 33,219,160,176,204,208,139, 35,228,229, 3,100, 63, 26,114,177, 75, - 61, 81, 85,208,224,175, 27, 17,184,144,237,216, 79, 96, 52, 57,130,141,218,227, 50, 63, 20,232, 97,130, 30,213,254, 46,144, 5, -209,236, 39, 27,207,159,101, 63,193,213,198,239, 50,218, 62, 93, 11,144,196, 2,250, 78,179,127,210,123,241,168,223,251,174,125, - 84, 53,145, 98,248,127,165,227,164,167, 80, 90, 51,131,148,113,247,132,112, 85, 4,227,108,233,133,161, 70,150,213, 97,217,139, -104, 66,237,108, 69,167,213,149, 57, 89, 45, 24,187,194,226,234,123,235,238,219,206, 81,113,125,241, 76,137,160, 73, 77, 3,170, -173, 59, 87, 63,144, 42, 57,204,219,163,121,117, 57,114, 47, 10,211, 54,221, 73,222, 25, 7,232,131, 60,115, 29, 76,166, 83,244, -203,125, 34, 50,146, 92,119, 41,177, 46,155,132,178,154, 34, 93, 3,193,248, 68,162,223,165,167,149,117,172, 23,168,201,234, 53, -150,149,152,171,223, 11, 75, 55,254,214,206,134,168,238, 43,143,113,122,179,240,217,235,223,127,189, 16,244,197, 20, 4, 98,201, -151, 27,102, 20, 85, 76, 46,170,154,171,213,177, 37,218, 77,190, 21,106,161, 59, 84,139, 12,215,194, 86, 52,113,207,240,143,215, - 40,182, 83,123,109,252,117,192,142,162,128, 27, 61,118,236,111, 10,109, 72,216, 27,227,118, 36,174,166, 18,134,122,232, 76, 11, - 51,145, 27,212,105,175, 55,146,215, 27, 13,104,215,231,234,109,205, 69, 43, 80, 11,181,159,150,218,223, 88, 73,131, 66,184, 41, -167,162, 95,207, 20,143,152,102,181,228,207,156, 24,153, 50,100, 48, 43,219,196, 70, 1, 36, 40, 68, 76,129, 62,164,140, 33,103, - 36,206, 85,171, 52,112, 2, 13, 4, 21,103,194, 3, 75,155, 75,157, 30, 52,188,172,122,209,173,215, 94,147,206,218, 73,237,103, - 21, 81,232, 60, 99,216,236,176,221,109,160,100,186,166,226,150,185, 82,138,163,150, 11, 74,153,129, 34, 86,124,108, 54,200, 57, -163, 20,179,151, 75, 41, 72,239, 56,187,245,231,205,137, 70,117, 55,196,157,242,175,250,255,124,255,192,201, 43,153,110,251, 18, - 72, 77, 78,185,118,116,129, 20,141,249,161,237,204, 75,133,202,176, 87, 73, 86,253,219,238,151,201,202,134, 72,208, 76,253,104, - 40,152,229,180, 34, 45,244, 10, 20,127, 10, 9, 10,214, 82, 59,166, 45, 19, 78, 72,107,215, 31,154,169,129, 20, 39, 25,216, 56, - 54,118, 11, 65,126, 66,224,247, 93, 1,207,124,192,112,175,243,203,192,116, 1, 76,175, 2,151,247, 45, 45,108,111,150, 41,131, - 56,251, 9,153, 21,196,197,151,203,206, 82, 29, 21, 56, 40,104, 22,131,167,140,106,221,122,168,148,180,193,156,181,204,174,204, - 86,232, 52, 3,165, 64,231, 25,116,159, 64,159,219, 1,251, 75, 96,243, 17, 80,250, 37, 35, 80,211,123,129,221,119,129,222,254, - 27,160, 23, 94, 3, 94, 59, 65,158, 18,118,165, 96,152,102, 72, 34,136, 71,160, 14,201,134, 6,213,254,163, 30,134,163,205,191, - 92, 71,128,172,245, 53, 44, 74,152,103,187,220, 69,220, 85,224, 0, 14,142,145, 36, 41,134,164,216,102,181,120,205,164, 24, 50, -131, 79, 18,210, 4,240, 63,117, 6,250, 67,127, 17,216,125, 53,112,252, 93,224,201,143, 2,247, 63, 9,220, 59,181,225,225,213, - 12,125,233, 10,229,222, 1,114, 28,109,100, 94,167, 61, 54,102,167,236,191, 6,251,197,183, 55,192,243, 27,224,118,182, 19,239, - 73, 49, 11,225,161, 0, 87, 5, 58, 10,244, 24, 68, 30,107, 73,185, 48,232, 77, 3,112, 39,219,172,242,153, 2,186,157,129,211, -111,177,144,157,195,111,128, 30,126, 6, 56,156, 24,205,238, 11,151,152, 15, 5, 83,166,214,193,114, 23, 18,231,194,180, 18, 20, - 47, 87,165, 39,127,110,114, 98,156,164,140,247,126,215, 29,188,245,159,187,141, 71, 31, 59,226,226, 74,124,240,160,215,198,152, - 90, 47, 56, 90,248,216,193,109,175, 13,191, 96,226,114, 37,130,237,248,194,230, 67,171, 95,171, 86,138, 92,244, 19,115,206,220, - 92,158,246, 76, 58,148, 36,209,138,128,213,119,233,188,162,153,117, 24, 85, 1, 33,251, 25,188,241,205, 72, 36,142,197,207,153, -253, 87, 20, 62,220,229, 77, 36, 90, 94,146,253,127,207,221, 21, 64,171,253,116,164,128, 13,180, 92, 3,193, 71,220,189,141,236, - 38, 97, 23,110,224,117, 99,177, 79,191,190, 39,174,105,100, 43,213,117, 47,220,170,222,119,120,129,151,216, 38, 24, 43, 27, 95, -241,127, 65,170, 45,140,170,238,162,116,151,156,184,240,173, 39,182, 97,133,211,149,181,109, 14,246, 94,156,144,109,157,142, 17, -216, 76,109, 69,100,188,125,187,224,238,144, 21, 2, 7, 0,247, 69, 13, 9,221,105, 28,150,190, 44,194,186, 63, 88,119,229,181, - 9,164,213, 31, 12,234,168, 79,249, 18, 59,220,103, 61,115,167,133, 35,183,141,220,233,102,123, 27,174,173, 57,184,114, 10,110, - 13, 3,118,219, 29,178,231,161, 19, 51,132,185,146, 9, 55,156,144, 83, 70, 98, 83,199,199, 36, 33,249,142,125,195, 12,164,100, - 97, 42,243,220, 61,164,180,200,230, 96,231,173, 16,249,167,187, 54,164, 55,121, 7,154,126,161, 20,197, 56, 30, 49,143, 71, 72, - 49, 30,200, 52, 77,152,198, 17,243, 52,162,204,118, 47, 4,149, 42, 86, 2,182,202, 78,190,102,208,198,208,168, 25,200, 76,139, - 14,133,152,151,239, 69, 39, 26,130, 54,219,155,104, 71,213,169,135,178,172,126,152,104, 15,156,181, 93,216,159, 86,109, 56, 74, -182, 17, 60, 57,149,137,164, 83,222, 71,118,181,167,190,233,194, 95,133,154,233,220,122,121, 96, 46,138, 35, 3,147,135, 54, 20, -175, 60,149,236,111, 27,103,197, 46,153,176,174,108, 8,250, 8,208, 79,188, 4,122,251,167,129,147,247,251, 9, 58,219,142,189, -192, 78,244,131, 24,130,116, 22,160,116, 25,184,207, 2,116, 58, 88,168,195, 45,182, 29,237, 9, 3, 83, 2,237,109,239,171,179, -223, 2,220,117,234,226,221, 41,164,234,242,136, 10,104, 44,208, 97, 6,149, 1,252,247, 78, 64,159, 28,160, 95,113, 15,248,138, -255, 17,244,182,159, 1,206,254, 36,176,251, 17,224, 27,255,103,208,151,253, 95,192,255, 1,228, 79,220,198,217,189, 43, 12,151, -123,156, 51, 99,220,248,107,210, 89,121,224, 9,111,186, 48, 96,248, 1, 86, 20,196,166,114, 62,198,154, 34,198,129,254,239, 15, -138, 38, 8,226,214,201,108, 54,192, 80, 8,148, 19, 72, 18,232,180,128, 62,244,109,192,201,123,128,249, 8, 28, 63, 6, 92,124, - 2,122,145,129,121, 0, 46,103,232, 75, 23,144,151,246,144,171, 9, 58, 22,155,178,132,128, 41, 62, 92,153,107, 41, 78,204,192, -169,191,174,228,114,224, 41,110, 88, 65,173, 84, 42,145, 67,161, 76, 86,137,239, 61,206,144,220, 31,118,188, 0,202, 19, 96,120, -155,177,231,115,178, 44,159,129,145,134, 45,118,105,194, 33,219, 65, 83, 68, 33,174,193,235,247,195,125, 22,121, 53,173,251, 66, -121,115, 66, 72, 73,113,239, 23, 14,184, 58,159, 49, 36, 3,129, 68, 23,167, 43, 79, 53, 86, 66, 58,248,164,172,248,197, 85,168, - 29,148,138,198,145,175,103, 52, 55,132,175, 58,175,160, 72,159, 85,238,145,172, 3, 97,154, 27,148,166, 66,132, 40, 58,205,134, - 18, 61,160,137,193,208,133, 0,245,240,150, 16,166,205,106,129, 33, 59, 47,200, 51, 3, 91,167,222,157, 1,216,129,112,128,173, - 48,194,167,109, 96, 36,127,250,107,254,128,217, 87,117,181, 84, 79, 93,253, 94, 86, 52,182,109,175,114,167,101, 23,216,194, 75, -150,105, 99, 61, 18,168,116, 23, 97,174,240,160,213,168,191,147, 18,111, 29,226,164, 95,162, 48, 96,191,136, 73, 45, 91, 97,195, - 9,156, 50,174,202,140, 89,154, 8, 78,160, 53, 38, 52,190,207,138, 71,213,165, 34, 29, 30,142,148,180, 17, 97,162,209, 46,184, -206, 89, 23,175,202, 6,178,245, 8,135, 54, 64, 35,205,203,206,210,141,203,125, 39, 0, 47, 43,225,190, 40, 14,210, 94,163,202, -171,232,214, 37,129, 52, 94,160,249,190,132,237,109,209,105,247,184, 91,186,121, 71,175,164, 43,239, 55,117, 97, 74, 54,145,125, - 61, 39, 69,109,166,201,137,134,100,225, 99,179,154, 67,104,203, 38,232, 53, 43, 42,129, 57,161,116,154, 39,230, 54, 78,175,250, - 22,226, 54,117, 86, 1, 51, 53,189,139,116, 19, 51,234, 19, 24,216, 38,202,224,197, 74, 65, 8, 85, 59,130,138,234, 21,136,144, -113, 87,166,169, 85,231, 85, 41,207,157,254,198,218,106, 17, 1,198, 17,188,129,117,236,228, 36,189,107,204,247,106,103,235, 62, -160,126,217,135,106, 29, 30, 59, 9, 87,149, 67,109,127,206, 76,203,203,187,251,230,217, 31,216, 22,186, 82, 64,147, 56,185, 51, - 85, 85,113, 10,200,135,219,212, 82,133, 94, 80,141, 7,213,240, 84,137,161, 58,137,185, 82,137, 52, 14, 30, 17, 76, 80, 92, 78, -132,219,108,161, 34, 86,123,152,114,103,138, 29, 22,187,200, 65,197, 42,225, 79, 78,160, 15,254, 42,176,123,175,117,235,228, 60, -173, 34,246,135,131, 65, 94,212, 58, 68,214,170, 10, 86, 37,208,105,178,147,237,118,182,142,126, 78,160, 67,134, 78,198,129, 86, - 4, 90,212,231,110, 3, 87,181,125, 20, 42, 26,154, 65, 85,208, 36,208,113, 2,141, 3,248,181, 29,232,227, 59,232,215,221, 3, -125,243,127, 1, 60,251, 3, 64,250,215, 65,111,253, 86,224, 95,251, 73,224,111,255, 42,210, 47,158, 98,247,128, 49, 60,217, 99, - 47,130,227, 96,241, 1,145, 36, 43,165, 75, 3, 35,172, 6, 95, 2, 8, 97,238, 18,197, 18,128, 13,123,230,179, 46,211,157, 2, -131, 57, 40,144,102, 5,239, 50,104,147,192, 71, 1,255,145, 51,224,249,127,163,121,249,203, 99, 15,189,219,218,229,250,240,128, -242,187, 7,148, 39, 35,100,154,141, 88,150, 90,129,201, 66, 70,234,181,120, 63,251,223, 39,108,221,246, 46, 53,236,214,104,163, - 23, 45,190, 27, 46, 46,146,235, 25, 51, 83, 49, 61, 68,118, 61,195,165,152,176, 49, 61, 5,240, 41,144, 78,129, 84,128,179, 4, -204, 9,124,220,225,116, 16,204,116,196,145,197,196,159,165,143,254,164,154, 66,215,123, 90, 99,215, 39, 16, 92,237, 11,126,245, -111,158,227,106, 82, 36,167, 43,182,245, 75,187,196,231,213,164, 50,252,228,197, 1, 34, 83,183, 39,148,186,255,165,202, 23, 40, - 62, 63, 86, 23, 6, 17,181,162,109,147,154,254, 84, 73,235, 46, 62,101, 23, 64,106,195, 63,151, 88,187, 69, 86, 0, 19, 82,209, -186,118, 72, 29,161,171,142,174,185, 6, 0,250,190,207,138,210,201,121,222, 17,141,218, 51, 18,102,105, 52, 62,138, 61,161,147, - 49,138,218, 52, 43,185,202, 57, 46,169,238, 14,115,183,141,214, 11,253,196, 11,203,212, 37,187, 69, 36,170,174,224, 35, 88,129, -109,176,126, 93, 97,231,130,118, 66, 52,238,148,219,235,221,109, 15,188,145,222,254,213, 93, 82,197,207,164, 13, 10, 78, 57, 65, -152,113,161, 82, 51,234, 75,183, 31,159,110,240,136, 23,175, 28, 7, 86,231, 4,144,231,149, 47, 39, 16,218,209,221,114, 39,112, -102, 31,181, 55,127,122,179, 25, 26,144,209, 78,128,199, 0, 30,137, 73,134,142,226, 93,179, 94,119, 31,132, 72,186,237,218, 59, -181, 34,186,203,170,187,140, 9, 55, 49,208,123,141, 2, 93,179,197,209,235,208,227,168, 83,239,115,111,181, 93,173,115, 66,188, -150,136,161, 41,225,137, 40,112, 56, 32, 19,176, 29, 54, 22, 38,227,223,179, 20, 19, 33, 13, 62, 81, 41,228,235, 55,215,205,100, -183,191, 77, 90,204, 82,189,246,138,177,137,122,149,100,241,154,217,100,165, 37,192, 47,168,157,220,135, 20,217, 8, 46,132,172, -125, 97,208,239,229, 21, 46, 28,134, 39, 2,186, 78, 71,199,209,176,205,105,176,159,169,230,109,243,242,133, 11,197, 85,140, 17, -226,247,168, 42,184,165,137,234, 20,144, 50, 27,255,189,203,152,165, 34,141,103,221,115,121,136, 22, 35, 66,173,227,122,123,242, -205, 58, 71, 32,157,125,239, 45,245,210,163, 0,237,163,117,161, 65,116,214,142,191, 12, 21,211, 59,169,226, 48, 3,187,141,117, -251, 90, 45, 63,161, 52,140,142,206,171,172, 47, 42,240,228, 69,224,153,209,201,113,212, 44,110,117, 58,160,214,177, 7,237,172, -104, 69,117,105,180, 41,183, 1, 28,179,141,235,111, 3, 60, 22,136, 8,116, 95, 34, 53,160,181, 86, 9,158,181,168,245,235,232, -172, 85, 78,194, 51,108,255, 60, 23,240, 52,129, 63,178,129, 30, 11,232,219,254, 18,240,134, 13, 64,127, 0,120,230,199, 65,223, -253,211,192,237,159, 66,250,153, 29,240,244,128,147,151, 47,145, 14,214,113,206,153,106, 81, 67, 43,236, 71, 5,173, 36, 50,120, - 30, 90, 46,111, 13,236, 33,243,216, 75,119, 88,102,242,241, 62, 41, 82,102,208,105, 6, 31, 51,248, 61, 71,224, 67,223, 15,228, -175, 52,111,255,229,255, 9,156,255, 44,244, 0,211, 37,220, 63, 66, 62,117, 9,121,184, 71, 57,142,152,146, 39,207, 45,173,225, -118, 33, 39,139, 67, 5, 49,104,151,128, 51,239,220,143,197,230,225,174,114,199, 44, 38, 72, 60,106,139,117, 10, 68, 64, 81,224, - 56,251,114, 26,192, 3, 1,142, 71,160, 60, 2,232,237, 22,178,147, 29, 74,243, 85, 39,192,191,245,118,240,167,239, 99,251,159, -124,194,243,227,169,142, 78, 85,177, 82, 88, 59, 50, 65,188,147,245,207,156,206,197,222,189,100,212,172, 34, 29, 54,181,239,164, - 56,232,111,232,236, 58, 85, 14,103,124,117,242,194, 90,116,201, 49,247,131,185, 56, 76, 38,147,197,154,194,191,159, 57, 14,186, -108, 53,203,132,182,122, 73, 41, 46, 62,203,147,214, 16, 68,170,237, 27, 55,162,216,184, 82,126,138,105, 12,145,241,220,181,165, -198,193, 57,244,113,209,141, 93, 52,105,246, 17,173,248,165,155,188,179,179,177, 61,213, 75, 43,220,134,228, 65, 41,113,225,103, -159, 2,206,157, 24, 45, 70,171,201,187,205, 74,110,163,200,124,167, 69, 31, 94,133,190,218, 18, 15,165,187,170,116,161,252,182, -175, 61,119,226, 58,116,196,186,155,118,201,165,147, 69, 69, 63, 45,218,164,205,177,203, 47,162,216,161, 96, 67,140, 45, 19,198, -210,237,238,129,197,174,188,215, 13,100, 10, 20,113, 23,204, 66,228,193, 40,246,153, 60,174,246,236, 92, 73, 27,214,165, 87, 21, -187,251,244,137, 76,220,184,245,253,254, 61, 0,143,197,222,215,176, 72,233, 10,125,218,226,111,123,156,146, 94,123, 69,214, 94, -236,165, 5,143, 32, 43, 69, 36,117, 83,162, 40, 24,230,110, 31,157,110,208, 65,244, 19,174, 30, 97,219,131,106, 42, 85,142, 13, - 9, 59, 22,243,229, 18, 49,212,183,112, 19,137,157,119, 78, 44, 45, 12,104, 17, 91, 31,167,132, 6,149, 51,252,185,138, 63,211, - 74, 38,248,166,150, 92,170, 20,205,218,242, 98, 7, 39,168,175,152,209, 9, 97,117, 33,216, 20, 40,241,170,168,161,102,253,236, - 65,107, 61,140, 34,138, 18,181,142, 93,147, 70,167, 78,139,252,103, 68,230,108,163,228,181,157, 29, 4,162, 2, 71,204, 88,231, -169, 49, 14, 47,208,194, 43,197,163, 46,146,226,137,227,239,215,142,182,228, 46, 79,223,183,131,217,133,121, 12, 85, 6,102, 15, -159, 23, 75, 94, 35, 54,123, 0, 81,251,112,136, 95,142, 42, 98,112,155,216, 59,168, 98, 6,225,232, 19,243, 74,165,242,177,102, -137, 20, 41, 34, 80,178, 75, 77,207, 1,189,184, 15,210, 3,144,159,182,116,181,254, 21,157,252, 66,159, 66, 53, 86,154,148, 56, - 24,156,119,178,117,235, 79, 39, 83,225,137, 2, 99, 6, 29, 4,196,147, 21, 16,197, 31,138,136,101,202,214,150, 69, 54,175,138, -212,215,173, 76, 0,207,130,114, 44,208, 91, 5,186,153,145, 62,126, 6,189, 53, 1,191,255, 39, 65,249,205,192,240, 53,192,233, -247,129,190,253,105, 40,127, 24,233,111,109,129,183,222,193,246, 11, 15,129,125,193,145, 24, 19, 45, 33, 9,220, 89,127,168,243, - 9,101,138,247,169,117, 17,234, 36,147,250, 96,137, 54, 81, 24, 0,222, 37, 32, 37,240,197, 30,244, 47,191, 7,184,251,199,128, -249, 33,112,254, 55,128,139, 95, 2,174, 30, 0,151, 59,224,209, 12,125,105,143,114,239, 10,229,106,196, 68,132,105,110,121, 66, -236, 12,159, 96,233, 19,179, 49,232,111, 39,224, 78, 2,110,123, 59, 95,196, 39, 33, 98, 58,132,105,134, 28,102,219,119, 85, 75, - 12,129,166,226,197,140, 27,122, 54, 0, 94, 81,232,227,115,208,151,125, 30,192, 55,154,123, 33,121, 5,240,252,206,190,137, 95, - 59,183,207, 91,118, 4,172,239,252,168,223, 49,118,227,207,208,153,132, 91,192, 14, 92, 66,210, 54, 38,212,174,139,169,123,113, -189,174, 38,170, 99, 58, 24,208,134, 92,187, 17,164,184, 56,164,181,223, 62,101,199,245,106,119,169,244,107,130,232,102,195,137, -226, 58,129, 8,129, 89, 36,177, 69,225, 70,118, 49,195, 47, 68,113,200, 76, 47,156,210,213,161, 10, 63,160,143, 65,112, 80, 11, -195,200,220, 44, 86,210,237,140,103,255,251,185,139, 17,206,104,148,154, 68,140,172, 10, 33,131, 70, 73,116,159,164,139,196,178, -133,137,163,107,197,121,117, 25,243, 77, 10,124, 93, 93, 77,206,218, 31,195, 3,238,132,188,224, 75,197,198, 71, 23, 69, 30, 85, -164,104,115, 1,117,150, 69,119,227, 36, 54,158,254, 38,153, 13, 50,148,241,218,169,182, 5,205,126,154,213,116, 63, 3,181,131, - 62,121, 69, 56,249,170, 98,175, 77, 80,135,174, 91, 23,255,172,156,116,175, 83,234,126, 29, 84,241,138, 90,150,249,236,159,239, -242, 37, 72,114,180,250,255, 92, 87, 64, 90,145,187, 75, 32, 12, 93,227, 42,210, 13, 4, 57,138, 41,172, 51, 25, 88, 90, 48,205, -154, 98,136,133,112,146,170, 51, 69,187, 9, 75,205, 68,247,206,160,248,116,119, 67, 6,160,217, 36,127,117, 37,238, 2, 53,108, -249,236, 78,174,148,157, 24,105,234,243,136,150,102,192, 8,110,241, 13,106,203,136, 18,110, 31, 62,237,155, 94,152, 98,158, 97, -147, 96,136,214,134, 86,107, 84, 48, 45, 8, 5,181,163,119, 97,185,174, 38, 16,132,229, 33, 84, 73,170,101, 70, 14,127, 57,199, - 24,165,219,129,215, 15, 72,120,196,131,105,236,151, 57, 85,108,171,137,229,200, 2,210,155,194, 39,150,248, 98,241,167, 97,205, - 73,220,213,189,106, 2,182,228,251, 67, 21, 63,196,216, 92,125,154,146,231,167,219, 97,164, 14,174, 97,136,135,191, 16,138, 6, - 73,141, 42,234,140,176, 4, 83, 76,210,236, 18, 61,157, 74,252,110,158,196,246,200, 56,245,147,236,225,104, 52,185,205,155,129, -237,155,129,139, 19, 16, 43,180, 26, 90, 75,179,168, 93,145, 43,180, 99,166,234, 18,210, 51, 54, 21,252, 27,146,123,168, 7,208, - 85, 1,149, 12, 61,204, 45, 98,169,151, 41,160, 59, 41, 82,167,255, 35, 7,232,140, 5,170, 71,232,169, 2,233, 18,252,177, 83, -208, 83,247,129,175,255, 49,128,254,156,193,106,182,127, 24,244,251,175,160,227,143, 35,253,194, 14,120,219, 83,216,188,120, 1, -156,143,192,174,225,211,235, 67,230,151, 53,137, 85,172,236, 7,188,118,163, 51,168,235, 17,164, 13, 23,200,249, 58, 25, 64, 26, - 8, 56, 77,224,251, 10,250, 32, 3, 95,254,239, 89,197,180,255,187,192,254, 87,128,195, 5,244, 49,123,164,234, 8,185,191,135, - 92,142,214,104,231,214,237,176, 15, 48, 34,104,134,114,140, 90, 13, 96,131, 59,185, 37, 98, 60,113,182,193,100, 23,187,204,102, - 99, 67, 20,110,226,104, 7,245,145,213,222, 85, 93, 91, 0,123, 2, 46,142,246, 30, 3, 54,126,247, 21, 16,254,223,199,192, 95, -254, 60,228,165, 39, 24,183,179,219,219,155, 88, 16,171,195,113,132,253,189,235,240,145, 69,103,161,122,109,229,184,228, 23, 70, -255, 0, 0, 32, 0, 73, 68, 65, 84,210, 28, 53,188,174, 31,198,228, 2,178,226,133,142,189,230, 14,165,209,230,129, 71,231,135, -166, 4, 80,105, 94,247,232, 32,147,182, 61,229, 28,180,176, 32, 14,122, 92,113,158, 61, 63,158, 9,217,255,174, 65, 98,251, 65, -152,252, 48, 18,215, 85,136,175, 14, 68,151,235,129,120,125, 6,247, 69, 31, 0,100, 31, 53,199,222,177,231,160,199, 81, 48,107, - 20, 29,230,168, 40,220,104,135,117,127,219, 11,166,186,101,108,251,175,122,163,176,109,209,119,174,186, 59,186,246,158,208, 2, - 64,147,212,125,251, 78,118, 75, 4,236,153,141,119,209, 29,208,241, 51,196,212,177, 21,129, 90, 31,117, 19, 85,218,243,181,117, -197,251, 33, 50, 4, 86,176, 81,238,148,253, 67, 39, 28,142, 93,252, 12,155,202,140,221,239, 45, 94,255,174, 74,233,245, 15, 17, -166,243, 68,129,123,170,216,135, 26,223, 63,163,250, 58, 54, 53, 90,119,228, 43, 47,217,235,241,216, 35,224, 72, 87,234,131,182, -250, 37, 95,195,104,189,180,248, 6,193,223,250,217,161,170, 47,137,142, 61,168,111, 29,220,217,255,160, 72, 8,112, 25, 74,102, - 81, 99,255, 84,132, 29, 59, 98, 45,227,162, 79,196, 78, 61,181,215,121,158,205,118,150,114,118,203,108,105,239,189,195, 96,140, -131, 86, 58, 27,101,148, 58,220, 10, 29,234,167, 26, 95,130, 60, 25, 84,108,238, 45, 98, 90,227,150, 65,214,120,139,118, 43, 48, -181, 34,176, 62,240,203, 49, 75, 83, 55, 50, 47, 9, 75,236, 8,215, 16, 77, 84,146, 88,236,193, 61,110,149, 72, 91,167, 47,221, -222,163, 26,168,169,250, 37,169,250,209,109, 52,204,148,192,100,161,239,148, 76, 17, 15, 9,207,180,174, 34,248, 26, 25,169,207, -170, 69,103,221,241,115, 31, 91,238, 42,156, 48,245,147,217,220,230, 42,178, 74,192,227,189,237,129,177, 3, 54, 47, 0,155,167, -236,132, 67, 19, 66, 97,114,218, 72,113, 83,143,120,185, 28, 49,105, 57, 3,167, 25,184,179,113, 44, 20,128,125, 2, 29,179, 41, -226,103,105,158, 27, 88,187,107,232,248,118, 4, 41,122, 97,150,161,111,249, 80,204, 51,239,115,242,244,247, 79,161,233,211,160, -175,253,207,129,179, 31, 0,182,239, 3, 78,190, 7,244, 29,167, 80,124, 24,233, 23, 6,224, 45,183,176,249, 60,192, 87, 35,166, -220,235, 8,204,134, 36, 21,233,168, 93, 74, 19, 53,208, 3,199,235,140,154,154, 22, 67,137, 4, 69,218, 24, 14,152,166, 25,244, -237,111, 5,242, 55, 2,227,139,192,213,175, 3,101, 52,100,235, 67, 6, 30, 78,208,251, 7,200,131, 3,230,253,140, 9,240,238, -171,225, 76,107, 81,182,105,196, 54,218, 50,232,204, 69,114, 57, 59,231,125,110,239, 65,180, 78,208, 74, 44,212,248,240,219,220, - 23,122, 33,160,113, 2,182, 27,203, 38, 56,122,229, 16,175,127, 41, 64,154, 1, 18,232,217,140,233,214,132,227,209, 68,114,234, -124,115,197, 82,253, 61,105,111,172,209,107,192,137,133,249,121, 65,205, 90, 30,157,212, 61,124,210,205, 24,109,108,109,159,175, -112, 46,148,234, 71,215,182,183,243,216,202, 48, 29, 7,121,203, 3,139, 45, 97,206,215, 86, 97,227,108, 59,118,170,149,212,160, -190,223,238,242,190,217,119,212,129, 9, 21, 34, 47,114,122,149,247, 50,168,102,205,110, 23,109,160,163,222, 11,158,252,210, 22, -183,232,137,175, 32,102,255,253,224,207,199, 8,223,128, 86,228,151,152,214,157,125, 43,212, 59,122, 93,255,234,170, 46,198,227, - 1,128, 41,175,115,129,101,183,106,134, 90,127,232,214, 81,170,234, 4, 55, 67, 77, 79, 98,235,149,126, 28,221, 94,143,126, 88, -221, 10, 60,248, 56,253,212,191,255,201, 73, 81,125,144, 79,138, 98, 32,240,172, 85,248,101,133,210, 92, 37,198,126, 33,119,219, - 59, 10,173, 6, 26,195, 96,246, 63,187, 7,240, 80,129, 71,218,255,189,215, 89,239,132,215,191,224, 95,239,207,172,135,241,180, - 50,183,105,231,247,167,170,181,160,234,143, 15,189, 17,223,112,153,247,205,102,234,247,240,125,113,135, 6,250,169,236, 20,159, - 42, 82, 88,118, 65, 22, 96,196, 98, 16, 26, 0, 27, 7,208,204,197,226,189,133,138,219,160,129, 73, 4,179,122,196,170, 79,145, -173, 91,215, 58,245,181,123, 55, 1,172, 16,245,130,129,185,174,107,105,245,106, 69,209,135,222,214, 74, 84,109,214, 93,181,224, - 32,169, 30, 55,188, 68,254, 80,247,185, 38, 32,216,239, 90, 35, 79,227, 33,173,118, 3,114, 74, 82, 8,229, 86,102,156,228, 25, -174,232,222, 68, 20, 11,207,224,148,186, 93, 45,183,144, 16,138, 78,159, 91, 64,188,143, 22, 73, 45, 93, 75,217, 98,228, 56,101, - 59,164,217,105, 63,153,189,244, 22, 55,233,115, 87,241,105,203, 94,215,235, 21,228,236, 42,217, 56,100, 40,246,122,234, 90,171, -248, 36,109, 9,250,234, 37, 80,206,253, 82,120, 14,216,189, 27,216,254,127,192,110,182, 11, 59,212, 92, 97,107, 67,129,102,155, - 72,224,145,119,252,187, 64, 59,145,249,163,239, 20,224, 50,217, 5,181, 79,166,138,244,184, 88, 83,110,251, 46,254, 40, 77,197, - 92, 71, 46,237, 48,228,108, 16,159,116, 57, 3,229, 18,152,128,244,183, 78,160,227, 75,160,247,127, 24,184,243, 39,128,221, 7, -129,147,127, 30,244, 29, 27,104,249, 97,164,255,103, 11,188,229, 20,244, 26,128,199,118, 61,149,193,119,205,125, 37, 77, 77,196, - 13,182,175,197,196, 38,126,202, 90,197, 85, 82, 98,114,227, 93,227,134, 65,143, 1,122,129,128,183,189,207,110,187,253,111, 2, -211,139,208,195, 99,224, 66,172,179,190,152,161, 15, 14, 40,231, 35, 38, 17, 28, 19, 87,142,188, 82,168, 76,131, 80,152,252,251, -240,185,236, 54,128, 51, 98,251,241,209,198, 44,122,112,214,251,140,234,115, 15, 33,165,198, 84,104,240, 41,206,229, 12,236, 12, -198,105,159,177, 55,250,233, 62,185,248,209,170, 92,161, 25,101,158,172,242,166,138,241,175,106,221,224, 88,151,197, 1,214,230, -241, 13,230, 97, 2,190, 27,189, 81, 55,128, 51, 8,180,216,199,153, 24,145,205,123, 76, 75, 13,109,196,103, 82,143, 94,101,191, - 68, 74, 99,100,115, 87, 38,146,155,189, 19, 90, 87,102,202,117, 66, 97, 31, 13,250,205, 82,164,185, 34,184,227,120, 7,195, 98, - 16,131,147,192, 71,211,165,235, 24,215, 7,126,245,197, 67, 59,150,120,235,178,226,128, 86,106, 69,122, 4,174,204,157,143, 89, -253, 57,239, 3,137, 34,140,101,115, 67,142,125, 37,238,173, 73,115,218, 46,236,254,222,231, 78,212, 23, 93,114,252, 57,162,150, - 95,111,235, 10, 83, 26, 23,166, 26,121,203, 93,199, 40, 55, 20, 55,138,158, 30, 71,216,185, 82,241,138,129, 25,140,209, 95,127, -170,226, 65,155,112,136,119,246, 45, 85,147,106,145, 39,157,215,190, 63,161,171,162, 62, 34, 80,253,159, 93,194,114,218,195,142, -217, 7, 8, 9,214,162,205,155,193, 50,116,173,111,199,151,180,151,181,255,161, 11, 61, 73,205,102, 15, 61,148, 59,107, 4,215, -227, 94,105,229, 56, 33, 90,105, 33,186,162, 58,194, 91, 90,120,146,214, 0,170, 40, 52, 98,180, 45,201, 62, 37,165,204,254, 76, - 16,198, 34,152,167, 17, 74, 84, 1, 63, 80,159, 56,167,100,141,166,154,151, 92, 35,124,140, 93,127, 70,221, 78,202, 71,108, 53, -208,139,121,241, 26,104, 47,213, 15, 26, 97, 21, 19,117,233,134,212, 86, 69, 11,240,167, 58, 88,170,211,166,229,240, 46,199, 87, - 73,213,103,167,254,159,173, 51,177,228,170,230, 79,175, 94,244,240,165,219,156, 3,234,163, 13, 94,236, 8,219,135, 85,212,246, - 39, 49,214,215, 58,191,243, 31, 68, 92, 62, 11,216,168, 35,101, 19,220,185,255, 79,184,249,187,235,115,170,237, 0, 66,135, 17, -228, 10,152, 33,204,162, 30, 17, 75,208, 98, 30,107,174, 74, 99, 69,137, 52,181, 93, 6, 94, 62,130,246,159, 5,110,253,147,150, -159,190,251, 10,224,244, 14,112,242,170,207,133,219,108, 95, 75, 76, 33,164,138, 37,232, 53,106,151,250,157,108,145, 65,183,217, -124,238,167, 9, 56, 20, 80, 33,232,145,150, 80,106,114,245,207,212,118,117, 90,137,101,214,165, 20,239,188, 84, 10,112,225,162, -187,164, 72,191,116, 10,197, 67,208,215,255,101,227,153, 15,223, 0,108,190, 19,244,161,223,134,158,255,239,224, 95,219, 0, 47, - 40,114, 1,112, 57, 90, 44, 45, 58,225,106, 66, 85,200, 27,205, 34, 16,190,246,189,133,186,184, 72, 4, 62,152,243, 32,101,247, - 15,159, 43,232,143,156, 0,219,119, 1,135, 87,129,253, 47, 2,135,207, 0, 15, 20,184,175,192,197, 4,125,124, 68,121,120, 68, -185,156,113,100,178,176,130,154, 2,232, 81,150,108, 54,147,214, 78,145, 81,222,110, 51, 48, 12,118,195,158,187, 64, 78, 44,200, - 69,103,255, 85,252, 1,146,149, 1,124,240, 35,100, 15,187,216, 15,197, 57,160,113,242, 91,149,173, 83,105, 34, 59, 47,182, 52, - 19,102, 49,247,128,176, 29,144,202,192, 60, 95,199, 37,172,113,169,212,237,176, 67,173, 91,104,181,119,212,235,104,179,122, 96, -121,117,144, 83, 51, 89,244, 24,214,216, 59, 6, 52, 8,157, 64,201,146,216, 90,119, 25,206, 5, 74,181, 46, 94,170,144,137,161, - 89,236,115,233, 44, 5,245,228,185, 74,189,227,118,123,115, 38,112, 49, 81,224, 20, 24, 82, 93,130, 88, 24,138,169,187,176, 43, - 69, 43,114, 26,170, 56,110, 89, 32,233, 13,157, 31,176,236,202,121,213,189, 17,154, 7, 92,213,133, 75,234,144, 36,146,250, 81, -136,203, 55,225, 6,198,187, 23, 65, 76, 75,202, 98,241,169, 76,234,136,126,161,141,141,215,165, 72, 28,200, 13,163,219,176,180, -198, 32, 79,186, 84,183, 39, 38,220,242, 29,242, 35,109,221,218,164,150,133,174, 62, 37, 8, 81, 96,181,175, 81,123,189,162,219, -157,189, 64, 80, 16, 70, 63, 91, 83,119, 21,132, 93,242,216,197,160,214, 60,249,174,104, 91, 20,138,175,211,161,235, 13, 94,127, -220,208,233,211,181, 97,187, 94,143, 26, 14,212,184,234,245,231,103, 69,252,187,105,100, 93,187,122, 63,147,215, 95, 87,187, 48, - 45, 84,189,137, 88,130,104,232, 82, 72,234,180, 3,228,224, 53,191, 92,179,163, 98,197,157, 95, 44,230,111, 87,103, 6,216,103, - 89, 22, 47, 70,124,190,169,118,156,188,180,223,233, 53,174,174,255,252, 22,235,170,244,250,133, 82,235,202,169, 90,161, 67,107, - 65,213,170,232, 24,215,228,151,120,186,198,120,215,106,172,143,202, 32,229,228, 99,135, 14, 66,227,112,139,154,214, 85,230,110, - 71,175,149,248, 73, 53,161,200,235, 53,181, 3,147,108, 25,224, 86,161, 25, 50,155, 23, 39,229,236,140,173,226,233, 98,102,123, - 9, 4,106,132, 99, 48,181, 55,172,127,225,194,234,102,135,154, 98, 96,211, 0,212, 45,128,218, 3, 95,216,158, 92, 58, 77,192, -200,208,251,191, 9,122,174, 0,186, 1,134, 23,140, 91,126,251,229, 70,114,153,220, 62, 87,164, 58,248, 56,249, 71,236,156,128, -151,124,129,149,217,189, 35,100,161, 33, 91, 6,109,200,172,110,147, 88,106, 27,100,233,163,153, 1, 34,113,162, 30,170,152, 39, -224, 12,147, 43, 90,139, 0,155,253,209,194, 86,102, 65,250,133, 91,208,227, 35,208, 55,252, 48,112,247,219, 0,254, 67, 64,254, - 46,208,135,126, 21,184,255, 34,248,213, 13,228,169, 17,188, 7,134,163,162,108, 60,132, 34,160, 38,131, 5,210,105,169,128,106, -228, 29, 97,251,149, 59, 28,239, 77, 56,124, 97, 90,104, 2,205,172, 64,254,186,101,224,221,103, 64,121, 14,152, 62, 9, 28, 62, - 1,125,181, 0, 15, 8,120, 92,160,143, 39,200,171, 87, 40, 15,143,166, 51,164,198,170,103,136, 11,198,188, 0, 36, 11,113,161, - 68,224, 76,118,161,223,102, 32,139,181, 26, 71,231,188,239,197, 46,115, 9,230,123,105, 40, 94,238,144,199,148,236,247,231, 98, - 28,121, 36,128,199, 46, 89, 36,162,115, 93, 13,229,102,107,114, 70,168,248,231, 99,227,197,246, 88, 86,251,207, 21, 91, 35, 45, - 84,209,173,189,144,110,151, 86, 15,172,132,101,128,117, 20,210, 97, 91,235, 97, 76,113, 33,178,143,154, 67, 13,223,157,128, 86, - 7,233,226, 84, 84,223,191, 65,154, 46,130,250,175,231,207,143,106,194, 20, 11,224, 4,179,180,117,231, 0,119, 17,166,129, 27, - 29,224,184,104, 44,233,120,212, 93,192,189, 99, 32, 14,244, 41, 70,240,145, 59, 79,215, 47,134,168,245,103, 89,238, 80,231,238, -114, 56,106,203, 7,143, 93,115,133,163,116, 59,199,212,177, 0, 66,246,146,180,159,128,180, 81,119,175,157,239, 83,191,234,100, - 35,132,166,161, 27,242, 3,211,234, 73,170,230,101,238, 24,230,179, 3,127,224,227,114,192,206, 74, 86,197,142,128, 19, 53,113, -225, 72,228,197,128,113,235, 51, 20,165,203,160, 47,129, 10, 69,248,182, 9, 59,163,122,184,189, 45,240,195, 84,115, 51,162,144, -236,127,159,171, 96,177,195,151,214,158,183,157,249,170, 95,202,106,246,165,187,116, 93,119,248,215, 19, 90, 42, 91, 93,181,125, -237,228, 94,110, 93,105, 38,234, 46, 61, 46,103,194,194,129,181, 96, 5, 4,218, 92,122, 24, 81,151,200, 39,237, 25, 13,103, 74, -157, 70,145,193,209,214, 69,138,101,142, 21, 16, 89, 50, 41,177,180,221,183, 83, 47,137,150,133,235,178,217,108,254,121,186, 9, -162,235,119, 48, 92, 92, 87, 95,199,170,121,107,163,122,187,234,186, 72,111,255, 90, 57,178,203,147, 87,167,138,181,120,199,241, -156,107,178, 91,221,230,184, 80,142, 9,156,125,156, 94,189,184,113, 97,248, 91, 85, 12,255, 74,145, 58,133,142,235, 30, 94,246, -154,194, 6,191, 44, 45, 83,136,216, 70, 30, 80,177,177, 7, 90,162, 91, 36,224,196, 36, 96,157,207, 87,247,138, 94,161, 14,209, - 53,177,118,234, 68,135, 98,136, 34,179,128,230, 12,124,246,147,192,187, 30, 0,252,188,197,160,238,190, 26,116,251,163,208, 77, -105, 39,175,103,202,235,104,136, 81,241,253,138,238,253,199,126,149, 13,233,116, 55,217,105,114,151,129,243, 12,202, 51,148, 11, -104,199,160,131, 93,236,117, 27, 68,189,242, 81, 59,179,107,219,213, 73,176,198, 61, 88,101,115, 60, 2, 15, 11,100,156,145,127, -254, 22,240,202, 30,120,255,255, 13,122,203, 63,180, 81,252,237,111, 6, 62,248,179,160,255,229, 33,210,110, 7,188, 65,128,135, - 19,184, 20,168,159, 60, 82,108, 2, 80, 52, 68, 87,118,136, 83, 1,240, 96,194,197,171, 51,246,179,214, 92,241, 29,155, 6,128, - 78, 9,116,197,160,223,123, 10,122,211,115, 64,153,129,227,223,129,190,118, 1,124, 97, 11, 60, 60, 2,143, 39,219,163,191,188, -199,248,100,196, 33, 51,142,165,211,123, 6,175, 94,235, 56,192,192,235,202,160, 77, 2,221,202,198,123, 87, 24,231,125,223,161, - 97, 39,133, 30, 20,178,159,161, 71,159, 92, 12,238,107, 47, 0,111, 24,180,181,255,110,144,108,182, 89, 38,147,125,190,212,175, -153,228, 33,204, 27, 24,193,142, 24, 12, 27,201, 77,197, 95, 11,183,252,181,209, 52,215, 49,109, 85,179,251,134,136, 74, 11, 71, -146, 14,206, 17, 54,152,224,110,107, 99, 57,213,200,207,184,208,213,112,244,214, 33,122, 93, 34,253,254,218, 5, 70, 77, 60,230, -138,245,210, 35, 99,125,231, 22, 30,250,200,206, 22, 93,100,141,199, 62, 47,226, 63,213,191, 86, 78,230, 79, 19,135, 66,145,235, - 40,138,134,168, 79,107,177, 82,191,218, 42,121,142,125, 42, 35,157, 91,101, 88,236,223,181,139,221, 92,238, 96, 85,232, 90,135, - 24,245,200,216,133,213,100,162,150, 72,215,253, 26,252, 57, 65,135,130,221,186,143, 62, 0, 71,225, 34,152, 98,255,172, 75,197, -117, 79,145,107, 99,234,200, 97,111,183, 75, 80,242,138, 87, 77,228,137,145,165, 27, 19,251,233, 85, 35,107, 99,228,127,215,139, -151,135, 98,255,174,185, 4, 4, 7,109,154,218, 40,238,234, 20,175,131,199, 8,140, 96, 93,188, 5,210, 5, 8,199,125,237, 74, -216,185, 56,175, 26,129,253, 80, 9, 20,114,209,155,179,210,251,223,227, 27, 58,243,215,219,127,119,181,227,226, 47,109, 84, 66, - 93, 68,223, 74,115,100,131,169, 81,230,250, 32, 35,189, 1,108,163,171,194,154,233,186, 48,175, 77,103,216,255,191, 96,170,249, - 36, 49,225,113,142,191, 68, 81,214,126, 26,209, 2, 42, 38,236,206, 41,119,107,170, 46,106, 55,180, 72,221,228, 64, 87,118,221, -197, 40,189,183,151,241, 42,238,208,149,114,150,235, 66, 45, 33, 49,214, 73,125, 94,124,104, 53,226,133,163,107,240,186, 62,102, - 18, 21, 71,151, 22,194, 54, 50,100, 44,115,243, 47,182,214,203,109,106, 84, 95, 48,174, 23,184,184,247,189, 75,237,241,194, 2, -157,168,164,150, 86, 53,196, 55,217,158,149, 77, 20,164,197,222,148, 89, 5,204,169,218,178,156, 33,212, 69,225,105,221,141,204, - 98, 37,123,124,128,171, 29, 95, 60,221, 74, 92,128,117,107, 7,252,206, 19,224,240, 41,224,244,121,251, 40,108,222, 9,108,111, - 1,219,243,142,105, 79,208,217,119,227, 14,233, 22,144,169,182, 47,103,208,189, 88,160, 13,192,217,198,160, 41,103, 0,206, 25, -116, 72,141, 55,234,185,145, 90, 74,135,124,212, 5, 70, 84,187,241, 81,104,162, 10,128, 34,100, 98,191,177, 96, 83,174, 0,153, -145,254,193, 41,232,119,183,192,251, 30, 2,239,249, 89,208,155,222, 14,122,231,155,161,223, 86,192,127,251, 2,120, 14,192,238, - 0,121, 56, 65,142,179, 63,165,234,182,111,155, 98,176, 40,230, 4, 28,175, 20,227,163,201,124,181,126,184,108, 7,155, 36,164, -228,134,196,153, 65,239,223, 0,195, 91,140,210,118,249,162, 9,227,206,103,224,201,136,242,218, 30,229,229, 61,166,251, 19,206, -137,219,223,165, 38,118,138,181,115,188,221,217,127, 88, 74, 0,221, 74,192, 29,159,118,204, 98, 43,135,163,216,216,125,180,238, - 92,199,201,225, 64,102, 95, 35, 1, 56,101,228,103,119,224,119,238, 32,159, 57,122, 96,183,199,178,130, 12, 64, 51,189,232,175, -240, 96,183,102, 78, 86,245,109,168,222,212,226, 39, 68,114,175, 88, 47,142, 99,191,128,235, 33,195, 90,179,234,235, 46,122, 33, - 62,181, 98, 41,245, 9, 93,171,118,128,169,169,176, 77, 32,166,216,116, 11,217,234, 20,224,128,129,116,118, 50,191,108,213, 11, - 66,113, 74, 96, 5,135,112,219,163, 22,174,102,145,197,197,198, 93, 33, 18, 10,238, 56, 3,184,179, 10, 38,210, 5,155, 93, 52, - 18, 26,215, 97,154,141, 2,201,193,148, 32,120, 16, 20, 85,186, 28,186, 61, 42,117,211,128,198,255,198, 53, 31,111,188, 30, 7, - 7, 32, 69,178, 30,119, 99,107,243,122,219,139,181,131,226,148, 2,186,226,151,152, 56,173,175, 19,106,114, 71,123,211,174, 91, - 95,159,143,189,129, 37,206,179,236,197, 86,129, 11, 10,125, 18,161,218, 60,239,189, 55, 41,200,113, 3, 1,119,200, 20,241, 79, -212, 10, 70, 37,198, 36,197, 24,224,110,173,227, 53, 14, 53,192, 92,176,142, 63,107,155, 90,246,249,242,179,127,135,183, 59,245, - 59,200,215,121,205, 86,191, 24,171, 7,140,136, 86, 30,248,215, 27,201,223,212,177,215,224, 22,255,220, 44, 46,249, 40, 45, 92, - 83, 37,184,249,235,172,217,238,139,187,131,156,113,177, 2, 56,209, 10, 14,132, 78,115, 33, 90, 0, 98,204,165,120,231,205, 85, - 67, 22, 5,170,168,184, 12,220,222, 67,213, 98, 54, 53,181,116,198, 33, 39, 28, 60,128, 69,231,210,105,211,204,115, 30,214,237, - 94, 23,181, 12,198,105, 33,105,186,250,112,171,234, 2, 8, 23, 86,239, 5, 67,160,183,215,118,226,136,220, 95,222, 11, 43, 69, -215,181,171,239,108,134,196, 93,229,205, 72,217, 46,116, 18,133, 56,101,103, 65,161,163,190, 3,247, 23,183,120, 71, 47, 22, 29, - 70, 29,216,161, 97, 8,189, 43,170,163,127,243,252,177,179, 41,153, 18,204,212,102, 3,168,172,108, 59, 67, 54,145, 2,117,187, -196,120,136,106,101, 44,132,145, 21, 3, 45, 71, 65, 10, 96, 2, 97, 26, 5,219, 39, 51,244, 41, 0, 47, 23,208,131,127, 8,156, -125,192, 46,221,252, 20,112,114, 23, 56,125,140,106,226, 71,228,216,250,104,100, 38, 43, 42, 84,173, 8,185,240,241,244,206, 23, -163, 27, 0,119, 1, 92,100,208,149, 9,188,120, 16, 72, 41, 54,242,214,235,130,105,149,182, 63,237, 33, 21,161,143, 40,158,168, - 53,123, 58,214,246,201, 1,121, 63, 33, 29,182,200, 15, 79, 64, 47, 19,244,247,125, 1,244,182,167, 65,223,240, 12,244,188,128, -127, 67, 65, 59,167,123,157, 43,228,114, 70, 81, 96,156, 20,199, 66, 11,143,173, 56,228, 98,164, 38,100,225,122, 88, 2,184, 2, -248, 93,183,128,183,109, 1,121, 6,192,185,155,104,147,229,207,191, 58,162,124,113,143,233,254, 1, 79, 70, 96,239,194,162,210, -209, 85, 19, 55,114,176,166, 21,248,154,201, 4,114,196,192,147, 17, 56,159, 0,177,203, 92,198,217, 58,245, 89,128, 99,177,131, - 83,140,194,151,158,201,224, 63,254, 38,224,168,160, 79,222, 51,237,195, 35, 1,222,154,128,111,217, 1,211, 30,184,250,152,249, -233,161,150,124,115,178, 74,238,112,227,108,124,126, 39, 68,148,102, 75,150,170, 33, 72, 21,226,228, 69,133,218,207, 34,101,181, -251,149,128,213,248,123,156,154,102, 65,168,159,136, 53, 23, 71, 4,118,204,107,100, 42, 26, 99, 54,249, 8, 54,190, 7, 13, 27, - 39,119,151, 15,147,137, 28,181, 41,164,251, 28,241,224,138,135,144,172,196,254,152, 21, 92,150, 59, 76,210,166, 56, 7,217, 0, -100, 46, 77,137, 22, 48, 29,234, 24,227,234, 99,228, 44,237,178,184,150,138,230,226, 51,146, 54,129, 8, 82, 94,205, 15,143, 38, - 65,123, 14,185,214, 21,197, 16,138,245,216,128, 57,249,112, 19,170,246, 14, 66, 51,119, 84,182, 62, 87,189, 58, 79,168,105, 40, -215, 23,133, 84, 94,128,221,164, 19, 8, 91,106, 66, 56, 37,211, 25, 69,220,110,184, 8, 82, 45,128,216,255, 14,155,184,100, 54, -254,250,222, 33, 81,129,150,157,203,140, 89,230, 58,246, 79,157,238,172,208,178, 43,182,129,147,107, 10, 58,249, 88,238,126,182, -187,254,135,207,197,146,221,116,101,125,147,158, 97,161,171,120, 94,220,156,163,190,206, 26,232,221, 16,116,237,146,239,189,236, - 88,169,185,151,127, 22,171, 34,224,154,181, 78,227,190,106,109, 49,215,176,161,229, 61, 0, 38, 23,126, 39,204,170,152, 74, 65, - 82,173,233, 66,169, 91, 55, 36, 15,226,153,165, 56,103,189,205, 23, 44,122, 85,145, 83, 66, 73, 25,101, 46,109,246, 17, 14,176, -133, 37,184, 41, 41,235,190,189,254,115,170,218,153,126, 53, 87,109,145, 62,247, 87, 18, 44,205,200,254,222, 74,139, 62, 87,102, -243,169, 83,181,174, 81, 21,140,244,187,194,196,140,156,216,187, 8, 70,206, 25,156,147,121,104,231,217, 41, 87, 33, 46,241, 81, -187, 56,218,115, 81,165,249, 7, 93,164,230,206,114,141,175,236, 55, 12, 90,191, 31,138, 25, 98,177,165, 95, 8,221,108, 20,202, - 0,101, 16, 44,197,134, 96, 33, 46, 66, 12,114, 97, 76,237, 44, 84,160,106,160,254, 18,177,137,157, 30,138,184,137, 72,110, 93, - 58,121,108,206,208, 23,127, 13,244,214,189,213,200,124, 98,214,182,211,207,181, 36, 20, 54,130,144, 42, 42,250,149,130,245,152, - 93, 29,127, 14,208,203, 62,235,123,118,107,229,246,211,217,196,114,158, 1,142, 98, 99, 29,157,157, 15,223,193, 9,122,152, 70, -139,150,109, 67,145,232,231,139,211,190, 70, 34,108, 39,193,246,201, 30,122,156,145, 14,179,135,116,100,208,219,206, 64, 31,184, - 11, 61, 8,232, 11, 64,122,214, 22,142,186, 47, 40,123,207,114, 22, 64,192, 21, 0,163, 2,140,213,163,109, 16, 12, 48, 76,104, -152, 0, 62, 2,252,245, 59,208, 16,201,107, 23,118, 67,157, 37, 96,231, 76,247,243, 25,135,163,224, 64, 9,135, 82, 3,235,236, -107,144,219,154,130,192, 43,106, 23,123, 60,184, 91,216,132, 67, 11,112, 25,204,125,177, 14,116, 20, 72,237,216,255,127,198,222, - 45,214,186, 44,187,239,250,141, 49,231, 90,123,159,115,190,239,171, 75,119,117,117,181,187,221,118,219,177, 29,108, 18, 59,177, -157,155, 29,146, 16, 64, 40, 79, 33, 68, 81,128,135, 4,164, 16, 9,129,120, 8,239, 65, 32, 16,215, 7,224, 33, 40,188,192, 19, - 10, 2, 9, 41, 70, 74, 32,196, 36, 16,133, 64, 18, 39,142,113,220,238,118,187,219, 93,221,213,117,253,110,231,156,189,215,154, -115, 14, 30,198,152,107,205,125,170, 58,144,168,228,170,254, 46,103, 95,214, 90, 99,142, 49,254,255,223,191,109,118, 48, 81,113, - 83,241, 87,239,176,191,125, 71,187, 45,126, 45, 93, 37,248,210,236,175,237, 27, 2,245,180, 47,182,147,238,214,136,117,168,176, - 38, 81,119,119,160,133, 12,234,104, 19,208,100,100,243, 3, 16,205, 46, 70,110,250, 32, 80, 37,169,132,170,222,208, 7, 39, 97, -189,160, 45,246,233,152,109,154,193,126,198,209, 7, 15,212, 20, 98, 45,237,215,160,250, 24, 86, 59, 76,100, 56, 8, 20,113,112, -203, 50, 82,204,228,210, 55,222,163,100, 83,116,212,246,160, 93,147,173,127,240, 14,217, 2,232, 39,189, 57, 48,127,166,148,113, - 4, 31, 98,188, 50, 48,222,215, 22, 98,213, 33, 93,172,201,206,208,238,191, 38,131, 24,118, 76, 69,235, 5,186, 79,249,242, 48, - 57,232,221,120,119,188,108,170,246,193,130,215,226,160, 86, 54, 62,254, 94,236,107, 28,244,237, 98,159,126,105, 53, 45,131, 54, - 64, 90, 80,136, 17,159, 6,244,160, 22, 81,154,212,109,220,190,154,119, 83,115,208, 51,251, 99,115, 59, 88, 8, 28,195,215,239, - 78,164,180, 1, 76, 74, 93,247,156,140, 88,125, 20,219, 73,110, 53,254,220, 14,247,186, 68,180, 90,199,246,138,175, 89,102,133, -167,230,124,130, 58,236,228,245, 1, 32,233,130, 14,103,151, 99,239, 81, 32,122, 81,184,135,206, 83,185,204,101, 31,133,114, 31, -215,212,127,130,189,250, 19,211,225, 46,251,125, 29,212,152,194,190,126,234,255,187,108, 33, 50, 26,250, 7, 15, 24,219,109,134, -157, 70,232,127, 71,109, 70,109,213,181, 97,145, 23, 66, 36,128,214, 90,161, 86, 14, 57, 83,115,166, 46,203,160, 84,237,141,222, - 30,191,219, 68, 55,163,229, 37, 88,134, 45, 36,201, 66,173, 63,102, 65,192,238, 65,255,216,126, 62,180, 44,194,110, 87,218, 26, -173,126, 52, 72,114,121, 10,245,184,186, 68,206,126,230,201, 41,145,167,217,111,242, 90,247, 93,222,166,164,216,227, 88, 85,186, -221,109, 15,214, 27, 71, 86, 4,172,166, 35, 94,251,254,184,159,198, 71,101,171, 10,113,106,175, 36, 75, 30,105, 24,163,246,166, -234,224,148,174,174,143,211, 47, 10,137, 11, 79,216, 32,104,150, 93, 0, 56, 4,157,136,193, 57, 65,185,171,232,243, 21,121,116, -128,175,188, 11, 63,249, 54, 76, 63, 4,233, 10,242,247,192,205, 47,186,133, 11, 13,143,164,186, 95, 90,109,112, 74,198, 72, 41, - 27,122,231,186, 3, 14,103,127, 10, 61, 14,255,250,107, 13, 57, 53,184,173,232, 57,209,104, 97,135,169, 99,102,142,255,109, 50, -140,220,251,248,125,195, 58,198,124,163,249, 94,113, 85, 71, 32, 22,140,235,187, 51, 83, 49,248, 7, 74, 58, 42,150, 64,190,231, - 6,126,215, 19,248, 95, 27,170,110, 33,108, 31,158,177,231,141,146,166,136,165,245,207,116, 83, 76,203, 62, 82, 22,133,137, 40, - 52, 77, 32,207,240,197, 43, 44,221, 32,245, 29, 40,223,118,208, 75, 82, 47,172, 55,254,225, 23, 81,135, 56, 52,134, 14,172,143, -133,119,247,182, 89,196,156, 87, 65,102, 69, 30, 37,111, 3,215,230,187,244, 90,177,197,104,119, 43,237,222,211,236,108,173,251, - 67, 49,108,113,235,251,247,216,127,191, 4, 60, 61,161,175, 95,195,143,100,228,149, 43,176,199,208,190, 1,211,167, 65,174, 92, - 52, 39, 2,231, 21, 78,234, 35,253,184,198, 71, 79,121,227,242,115,232,187,241,238,215,215,161,155,126,136,193,244,149,153,109, -194,183, 54,140,194, 68, 46, 28, 63, 91,244,166,138,175, 39,242, 32,255, 61, 74,247, 32, 59,161,173,231, 37,148, 16,122,109,106, -225,100,212,234, 93, 91, 11,141, 73, 7,185,172,178,147,238, 76,119,110,120,181, 93, 65, 91, 6,156,170, 60,200, 50,207,178,191, -207,113,199,175,195,238,216,134,226,144,128, 41, 41,214, 4, 93,140, 22, 81,176, 23, 29,157,141,107,132,253, 64,128,108,209, 10, -241,235,126, 40,185, 22,119,142,106,240,203,117, 40,238,189,240,204,161, 79,245,113,188, 31,232,235,112, 95,149, 65, 81, 95,135, -169, 65, 31,183,143, 92,117,196,134, 60,123,255,188, 78,241,185,245,201,100,137,239,193, 26, 28,213, 2,147,171, 17,107,219,182, -238,235, 62, 14, 12,115,136,138, 25, 28, 8, 34,112,101,198, 25,227, 44, 29,203,236,182,133,148,140,220,124, 12,156, 98, 28,255, -188, 99, 98, 7,240,237, 39, 97, 85, 71, 69,249, 20,248,216, 3,240,170,248,159,127,106,254,119,209,184, 16,104,217, 39,116,216, -246, 96, 74,242, 73, 49,171,227,218,169, 31, 42,251,225, 32,125,146, 16,220, 46, 27,202, 11,246,195,240, 35, 26,123,124, 44,193, -126,239,153,236,109, 16,152,118, 91,143, 88,136,102,187,112, 78, 28,217, 44, 67,168, 82, 11,187,154,201,110, 23,221,142,114, 54, -116,202,219,228,162, 81, 91, 37,155,215,200, 53,197, 51,163, 61,220,255, 71,231,190, 5,178,216,158, 99, 60, 28, 93, 68,190,139, -129,208, 62,225,127, 29,214,107, 61, 81,179,119, 4,210,105,160,200,104,235,136, 81,158,122,234, 75,202, 19, 42, 48,165,228,169, - 52,165, 96,181,184,234, 54,167, 61,166,117, 16,248,104,223,187, 15, 86,158,189, 11,217, 25,243,180,134, 73, 10,200,130,207,227, -198,174,158,190,235,232,179,159,152, 8,152,164, 77, 49, 44,177, 92, 76,129, 13,109,214, 80,177,205,111,232,210,199, 97,227,101, -182,185,118, 91,220,173,146,252,102, 95, 13,150, 38,172,107, 99,250,112,197, 94, 57,194, 55,238,145, 15,255, 38,188,245, 35, 80, -103, 56,252, 38,228,201, 95,193,166, 53,210,195, 4, 73, 13, 59,143, 75, 40,245,180, 51, 51,172,130,205, 70,187, 19,244,125,129, -195,226, 10,179, 43,133, 87,147,251,214, 75, 70,175, 93,189, 45,197,144, 82, 47, 18,212, 90, 40,224,123,129,237,227,223,106,178, - 41,117,187,181,105,141, 12,224,170,208, 84, 48, 21,110,150,130,124,248, 18,249, 37, 65,143,134, 77,138,188, 57, 99, 63,253, 4, -254, 90, 69,175, 27,114,179, 48,127,180,146,172,208,204, 85,195,155,176,164,139,103,162,203,153,155,243,222,147,250,232, 61,253, -200, 12,175,205, 72,170,176,126, 21,158, 47,216,123, 13,238, 23, 56,175,113, 98,110,152,122,145,217, 60,170,109, 31, 51,183, 7, -196, 53,233,208,161, 89,124,159,158, 92, 65,207,157,139,227,218,253, 74,187, 43, 78,118, 90, 43,245,108,145,179,220,173, 66, 70, - 43,149, 85,141,212, 38,242,205, 1,126,230, 0, 63, 32,112,252, 45,206,231,124,244,127,186, 93,177,171,219,106,241,133,230,210, -176,151,149,182,238,126,217, 58, 88, 62, 91,218,187,207, 52,176,199,183,180, 51,251,132, 16,146, 17, 12,209,117, 4, 35,254, 49, -108,139, 93, 68,170, 98,155,105, 98,138,207, 93,163,221,153,227,254,220,167,113, 29,149,233,226, 79,171, 67, 16, 96, 12, 56,212, - 70,110,183, 95,186,107, 40,171,187,205,205,234,142,141,221,114,161,183, 7,169,108, 29,222,106,195,238,115, 0, 97, 72, 29,112, -208,114, 25, 69, 74, 20,222, 47,228,196, 15,253,233,215, 56,253,218,202,207,255, 79, 47, 88,180,110,185,240, 34,187, 55,125,204, -207,110, 31, 43, 25,141, 73,125, 35,115,140, 29,250, 33, 58,246,195,224, 61, 47,195, 33, 97, 14,183, 76,141,233,192,194,254, 93, -241, 9,133, 47,109, 5,209,182,247, 62,160,187,221, 34,187,117,233, 62,182,173,155, 23,168,139,224,124, 20,223,209,164, 30, 88, -211, 11,155,110, 19,130,110,255,237,105,135, 26,118, 56, 84, 67, 87,208,168,230, 35,252,132,112,147,179,143,119, 91,221, 2,160, - 22,115,241,219,102, 53, 30, 62,187,244, 64, 96,120,148,125,125,145,250,103, 38,240,174, 25, 95,110,178,225,127,215,161, 32,247, -107,185,125, 12,129, 40,223, 85,241,254,208, 87,126, 97,249,250, 46, 52,191,209,197,253,208,223,223,203,192,212,143, 46, 50,122, -210,173, 27,187, 46,184,240, 12, 53,173, 79,138, 26,144, 74,101, 74, 74,155, 18,101,141, 48,175,176,172, 89,232,197, 58,201,109, -139, 56,189, 96, 68, 64,173,149, 82, 11,146, 60,103,189,172,235, 62,102,231, 50,215,100,131,196,116,191,185,236,159,128,141, 29, -248, 54, 95,177,253,122,219,141, 72,241,190,122,188, 97,219,185, 21,131, 48, 47, 51, 60,152, 70,116, 93, 74,137,249,112,140,204, -102,239,212,235,178,108,180,174,113, 28,214,187,100, 21,245,135,141,237,227, 57, 29,200,114,189,208,111,167, 50,147,176,132,196, -120, 36, 58,119,207,136,238,127,191, 99, 62, 83,192,107, 90, 51, 68, 42,154, 52,190,196,120, 88,137,239,213,173, 4,127,217,243, - 75,221, 46, 23,199,202,142, 63, 85,118, 85,124,231,199,247, 81,218, 25,225,100,141,171,219, 51,172, 87, 32, 87,216,215,254, 26, -242,214, 31,243, 39,223,244, 37,120,244, 58, 60,249, 22,124, 71,246,150, 77,234,222,210,230,234, 92,247,136,254,172, 40, 58, 23, -228, 37,200,119, 98, 4,252,153,131,255,223, 79,185,239, 90,106, 67,215,176,117, 88,130,243,128,100,221, 66,225,194,198, 22, 94, -245, 58,140, 10,155,237,161,136,219,174, 51, 32, 33, 96,112, 90,224, 91,183,228,100,232,141, 96,250, 8, 62,115,132, 31,187, 70, -254,247,149,244,202,204,244,209,137, 71,207, 43, 77,109,139,214,236, 87, 69,177,184,217,197,200, 41, 56,222,193,193,151,159,188, -114,170,222,169,120,200,202,211, 21, 62, 90,225,105,161,125,176,210,158,158,169,167,194, 34,187,224, 40,244,128, 27,112, 38,201, -131,174, 44, 43, 50,137,115,222,175,162,226,220, 45,112, 46,212, 82,105,167, 74, 91,156,202,103,167,230, 73, 69,253,230,173,248, -159,157, 4,121,169,164,215, 15,200,207, 94, 33,191, 45,193,107,223, 15,135,159, 5,251,187,240,248, 10, 30,253, 33, 79, 59, 97, -129,245, 12,207,103, 56,249,123,105,193,106,110,131,235, 35,133,229,176,213, 88, 89,109,247,207, 78,112,179,225,193,218,134, 29, -120,191,207, 90,252, 55,131,208,173,197,110,116,251, 59,163,160, 31,196, 41,136,185, 19,228, 34, 67,189,239,254,182, 60,244,200, - 56, 0,241, 49,188,121,241,213,176,207,140, 99,250,115,172,138,114, 40,249,123, 71,166, 49,146,181, 40,248,173,249,195,114,137, -247,144,135,177,234, 22,192,216,125,230,106, 14,111,106, 59,161,178, 92, 76,232, 4, 45,198,231,127,112,230, 83,127,234,179,124, -231,223,125, 59, 44,100,186, 17, 40,221,158,231,175,127,244,208, 39,118,133,123,127,228,215, 10,171, 6,139, 61, 62,199, 28,121, -240,121,155, 20, 94, 10,255,186,176, 49,197,251, 28,133,124,187,132,218, 6,145,217,131, 76,249, 49,161, 79, 60,181,176,170,231, - 74,180,177,131,141, 66,127, 6,212,132,169, 55, 58,106, 78,245,139,233, 94,137,213,200, 58, 0,121,196,218,246,185, 46, 64,221, -158,183,190,210,172,145, 24, 54,171, 70,132,109,227,208,140,123,115,189, 64,137, 9, 0,230,107,178,113, 85,209, 15, 61,115, 92, - 87, 19,194, 1,227,213, 16,170,126, 20,135,236,105,216,239, 86,219,225, 64, 29, 73,108, 3,195,236, 99,180,188, 79,240,168, 63, -220,185,203, 39, 2,107,228,193,129, 96,224, 52, 6,169, 84,135, 73,212, 40,251, 22,121,200, 55,176, 75,229,189,236, 1, 65, 18, -153,227,158,175,145, 72, 8, 53,188,109,210,247,225,253, 61,181, 29,242, 42,195,200,193,164,139, 63, 43,173, 22, 44,133, 83, 70, -118,135,217,199,135, 23, 97, 27, 31,222,153,116,177,182,141,244,184, 75,101,193,197,103,170, 67,117, 31, 79,204,162,177,234, 22, -154, 53,239,212,181, 83,225,162, 70, 77, 41, 49, 29, 15,190, 55, 87,197, 90,161, 45,107,100, 53,142,175,115,143,147, 75,227,130, -127,179, 39,200, 38,102,209, 62,254,136, 27,184,191, 72, 29, 80, 12,210,153,238, 12, 62, 19, 11, 96,140, 73, 88,218,162,179,219, -104,114,187,186, 64, 52,147,181,120,102,238,134, 55, 77,180,230, 9, 57,157,102,183,239, 88, 90,252,247,136,118,244,132,170,114, -106,200,179, 21,125,243, 6,254,254,219,200, 79,124, 21, 14, 63, 10,211,235,112,253,121,120,229,155,142, 43,213,206,236, 12,238, -120, 53,247,160, 7, 75,222,215, 48, 70, 43, 6,147,145,146, 56,152,230, 74,225,149, 12,175,206,126, 92,191,173,200,148,144, 67, - 69,170, 98, 75, 95,137,184, 0,168,218, 3,161, 92,221,213,193, 45,212,146, 59,220,223,127, 61,137,231, 97, 91, 92, 12,122,119, -130,183,141,233, 23, 50,146,179, 43,137,126,248, 10,222, 61,145,254,110,193,222,186,230, 81,121, 9,247,198,253, 72,136,136,182, -167, 4, 24, 38,107, 24, 17, 42,104,155,224,211, 71,191,251,159, 23,231,203,191, 40,240,188, 97, 79,207,180,119,238,168,239,156, - 57,173, 94, 76, 74,187, 84, 92,111,240, 37,219, 39, 47,106,230,142,138,163, 34, 61, 24,103,109,240, 34,138,248, 82,177,123,215, - 61, 88,169,212,210,252, 80, 19,123,232, 52, 59,121, 80, 94, 10,249,250,128,254,204, 53,242, 59, 21, 94,255, 18, 28,127, 7, 60, -250, 97,104,191,232, 18,254,252,134,115, 72, 85, 93, 0, 0, 32, 0, 73, 68, 65, 84,223,250,245, 4,167, 2, 47, 38,184, 95,105, -247,171,103,168,199, 94,183, 67,153, 44, 68,130, 45, 78,220, 73,205, 31,218,195,216,118,203,188,139, 40,223, 60, 20, 17,141, 81, - 92, 69, 46,246,145, 41,212,236,155,142, 37, 30,188,199,188, 25, 19,252, 48, 5,148,102, 14, 58,209,216, 1,246,131,127,219,145, -171, 23, 65, 50,253,220,105,126,224,233,211,191,201,220,221,176, 70, 92,234, 20, 42,226,142, 65, 61,197,132, 70,101,232,214, 69, - 54, 55, 74,221,198,235,182, 17, 26, 77, 46, 19,198,198, 17,235, 57, 11,191,248,246,153,175,252,142, 47,243,206,169, 81,242,160, -180,111,123, 23,165, 54,132,214,236,228,219,173, 67, 86,204,187,210,104, 2, 90,136, 46,171,250,123,201, 15, 8,115, 41,246,215, -141,198, 57, 26,146,212,181, 41, 24, 41,104,149,107, 32,114,203, 16, 94,147,135, 17,189, 61, 40, 64, 61,188,165, 13, 10,103, 17, - 15, 70,233,175, 97, 17, 35, 53, 97,214, 93, 44,136, 53,154,213, 77, 85,191,142, 97, 44, 18,223,175,217,214,165, 75,240,188,187, -206, 66, 27,220,168,176,138,146,178,178,214,198,201,154, 31,228, 6,157, 71,126,160,148,159, 6, 58,222, 97,136,170,189, 53,191, - 55,207,248, 65, 69,255, 81,133,119,176,120,201,102,177,147, 61,206,214,246,231,127, 26, 86, 40,233, 19,236,111, 23, 42,240,255, -207,162,127,169,253,224, 31,137,175, 29,138,228, 32,156, 67,253,117,106,107,241,217, 23,212, 52, 82, 22, 53, 38,101,117, 72, 82, -220,201,115, 26,240, 24,179, 65,148,230, 32,127,102, 81, 74,210,143, 71,250,142, 25, 5, 49,126, 55,227, 1, 65,199,235, 27, 49, -173,186, 32, 1, 92,188, 87,217, 18, 4,205, 46,231, 28, 35,243,130, 62, 13, 84,118,110,123, 18, 97, 58, 30,200,121,114,243,253, -186,210,150,101, 51,196,143,126,112,137,211,189,198,194, 80, 6, 99,188,196,155, 87,235,102,122,219, 82,216,186,165, 67,182,227, -190,108,226, 56,137, 83,148, 14,129, 48, 18, 66, 55,105,145,187,206, 78, 31,186,200,207, 85,104,154,209,182,110, 97, 36,116,113, - 68, 43,174,218, 86,139, 8,203,222, 17,201, 54, 89,232,236,229, 5, 88,170,146,111,213, 49, 8,223, 17,236,237,255, 14,249,193, -223, 28, 32,154,239, 67, 30,255,173,128, 85, 93,178, 41, 77,125,207,220,106, 48,225,107,116, 32,217,104,201,124, 92,253, 29, 65, -166,228,119,217,227, 12,175, 39,120, 49, 35,165,185,111,124,109,200, 65,161, 42,170,141,244, 80,144,189,183, 12, 91, 81,111, 35, - 55,112,120, 0,166,234,163,185,151, 49, 98,189,185, 59,163, 95,123, 65, 62, 38, 56, 26,252,224, 53,252,212,171,240,110, 33,189, -231, 21,247,250,237, 91,210,226,147,232,206,121,111,125, 12,220, 15, 70,102,112,111,232,167, 50,242,102,134,251,213, 69,108,239, -173,240,108,197, 94, 20,234,123,247,180,119,110, 57, 61,175,188,192,155,248, 90,247,211,127,239, 96, 71, 94,245, 22, 5, 60, 43, -122,157,145, 39, 49,143,190,109,112, 50,218,185, 98,119,149,182, 84, 90,105,180,210,188,139,139,167,134, 22, 33, 29, 18,106, 9, -101, 34,253,236, 19,228,167,129, 79,125, 1,110,254, 41,184,250, 41, 79,222, 75, 97, 97,179,219,120, 1,247,216,121,133,187, 35, -237,174,210,238, 43, 69,246,232,210,222,221,173,163, 88, 77, 26, 71, 21,166,201, 11,156, 68, 18,108, 22,219,114,177, 51,123,199, - 36,195,200,119, 79,180,178,205,186,214, 39,104, 89,118,254,205,228,146, 17,166, 8, 20,233,157,185,198,153,186, 14,237,144,137, -109,215,159, 14,254,172,120,246, 92,104, 1,164,237,153,240, 50, 20,209,222,149,118,139,149,170,176,110,129, 49,251, 3,210,226, -243,104,195, 92, 52, 17,168,229, 46, 26, 77, 46,220,235, 35,102, 17,227,221, 72,204, 35,251,103, 35,173,131, 82,246, 70,160,155, -226,114,116,251, 15, 65, 58,189,251,190,183, 61,142,225, 44,126,125,245,177,249, 33, 10,215,213, 54, 94,222,119,179, 59,244,134, - 77, 23,116,148,189,211, 61, 5, 22, 56, 43,204,205, 29, 37, 13, 15,214,185,136, 92, 21,219,184, 1,237,129, 13,171, 14, 44,250, -210,237,117,157, 5,208, 44, 4, 90,126, 72,234,180,178, 46,158,244, 8,137, 78, 48,219,249, 29, 19,178,137,239, 92,160,232,211, -200, 87, 85,169,147,240,172, 26,169,213, 13,125,173, 92, 38, 2,110,126,123, 51,238,205, 11, 92,143,201,205,230,177, 10,175,170, -112,107, 54,232, 34, 46, 15,102, 15,197,108,124, 2,150,119,196,192,238,184,100,249,255, 5,173,185, 40,238,221, 49,241, 96,124, -255,241, 0,158,125,226, 85,135,189,143,134,199,123,211, 3,217,160, 12,176,248,118,154, 55,180,118, 33,110,145,139,156,248,174, -117, 32,116, 76, 94,136,117, 83,181, 39,129,156, 50, 69, 19,180,117,143,151, 29, 87,205, 92, 38, 59, 94, 88, 56,101,176,183,198, -184,199, 62, 86,172, 71, 55,201, 78, 46, 20,233, 41,111,251,100, 55,239,187,239,230,113,134,135,153,124,188, 34,231, 68, 59,159, -105,181, 92,188, 16,177, 75,190,110, 47,212,105,195, 70,201,198,235,238,170,248,144, 21,122, 40,252,118,234,105, 23, 56, 6, 98, -143,216, 57,242,253, 82, 81,188,107,115, 50, 80,195, 84, 54, 46, 61,244, 3,133, 51,120, 83,200,117, 37,130, 96,104, 1,212, 81, - 37,137, 71,178,118, 84,167,199,123,122,130,156, 13,240,189, 42,194,170,202,189,192,225,233, 9,125,166,112,117,196,254,254,223, - 65,190,248, 27, 32,111,130,188, 10, 87, 25,142,134,204,186,181, 82, 22,119,178,117,175, 82, 11, 90, 92,143,131, 43,134, 93, 11, -237,110, 33,189,167,112, 35,158,226,118,152, 28, 6,115,154,144,165,160,167,134, 29,156, 97, 46, 39,127, 95,170,251,133,121, 73, - 80,218, 31, 10,151,227,155,253, 33,223,173,240, 32, 72, 49,210,135,247,240,171, 66,190,137,133,223,247, 63,130,223,243, 24,249, -249, 70,154, 3, 10,242,173, 91,244, 92, 57,171, 68,142, 65, 15,249,136,194, 30, 64, 54,253,109, 87, 48, 37,120,247, 4,239, 23, -248,176, 98, 79, 23,234, 71, 39,202, 59,119,156,158, 87,158, 54,120, 81, 61, 63,186,180, 61,193,204,199, 97,187, 74,215,245,141, -222,137,104, 86,228, 70, 93,165, 46, 2,119,133,118,183, 14, 54,182,234,187,245, 98,155, 42, 61, 37,225,240,138, 34,166,232, 71, -202,244,123,158,192,239, 86,120,227, 51,112,243, 71,225,250,183, 67,122,205,203,133,253, 26, 76,143,156, 31, 64,117, 8,205,189, - 23, 40, 91, 10,182,182, 13,194, 65,108, 87, 84,108, 27,231,117,240,220, 85,246,215,188,244, 2, 43,206,197,239,132, 51, 77,254, - 17,155, 93,210,209,210, 0,183,238,153, 5,157, 1, 49,169,187,235,166, 96,170,107,222, 59, 44, 27, 70,244, 77,217,196, 62, 22, -124,239,162,157, 26,108,172,131, 72, 85,185,132,126,116,216, 76, 71, 63,183,225,129, 57,169,123,115,171,117, 47,249, 46,166,235, - 22,170,132, 68,199,214,194,110, 25,159, 73,243,137,142, 4, 70, 53,133,210,184, 63, 88,167,176, 71,166, 16, 76,246, 14, 63,133, -114, 59,162,145, 28,207,178,141, 93,119, 17, 37,114, 41,202,187,141, 67,120,239, 58,167,240,105, 47,195,196, 96, 18, 23,118,246, -248,212,145,145,158,250,225, 50, 10,246, 42, 67, 42,156,176,129, 99,232,124,252, 14,113,161, 99, 97, 47, 11,155, 92,252,251, 62, - 34,214,136, 92,213,176, 95,245,103, 99,194,152,172, 81,194, 93,178, 91,233,236, 99,214,174,106, 70,193, 56, 53, 97, 73,209, 85, - 55, 99,166,241, 24,223,217, 44, 42, 44, 45,128, 42, 67,183,105,155,109,215, 63, 47, 98, 10,213, 15, 79,136,235, 14, 94, 65,120, - 79,132,151,151,219,243,139,240,145,203, 49,187,241,113, 42,249, 88, 47, 2, 64,246, 9, 44,130, 11, 42,229, 39, 40,222,101,236, - 94, 47,244, 12,131,148, 99,176,226, 61, 44,244, 91,126,187,236,113,214,163,134,204, 34,196,203,137, 2,186,231, 55,116,146, 92, - 36, 22, 73,136, 29, 77,221,181,142,133, 91,203,246,231,109,202, 57, 26,206,117,211, 76,140,209,213,221,171, 79, 28, 6,250, 74, -120, 44,174, 54, 40,227, 62, 17,191, 59,172,102, 68, 46,167, 39,163,184, 47,239, 66, 55, 15, 96,153,175,174, 56,222, 60, 66, 13, -214, 82, 49, 89, 54, 30, 50, 54,224, 96,199,209,206,112, 44,219, 22,251,125,116, 46, 50,124,113, 93, 16, 23, 31,148, 10,153,206, -185, 13,220,234,166,126,207,155,100, 6,243,215,230, 22,161, 72,136,139, 14,187, 43,130, 84,117, 51,247,183,148,227, 20, 94, 7, - 64,155,143,239, 69,133, 89,125, 84,149, 69, 93,104, 21,187, 61, 83,165,102,199,100,158,109, 97, 61, 11,249, 37,216,103, 30,193, - 55,159, 97, 31,252, 37,228,181, 63, 14,114,240,167,114,210,253,248, 61, 68, 36,153,183, 75,126,114,138,163,188, 53,193,146,250, -136,183, 1,207,238, 73,239,167, 24,193, 11, 60,158,224,117, 67,238,162,168,227,105, 65, 84, 69,215,186,141, 41,229, 99, 8, 82, -219, 18,201,218, 5,220,146, 13,133,216,247,160,247,236,170,183,199,239,222, 33,191,148, 72,143,131,212,246,249, 43,248,241,138, -252,125,200,159,143, 86,229,131, 59,218,125,243,142, 43,126,198, 5, 73,234, 4,242,165,217, 91,164,119, 87,120,231, 76,187, 47, -212, 15, 78,212,247,238,185,127, 86,121, 86,133,167,213,184, 47,134, 85,185, 16,196,169,218,118, 0,236, 74,105,237,236,247, 89, -209, 87, 39,127, 10,159, 10, 60,107,216, 18, 97, 63,231,138,157, 42,165, 52,106,140,196,105, 62, 10,151, 44,200,251,144, 62,117, -133,252,222, 25,222,184,134,171, 63, 0, 55, 63, 13, 50,131, 62,130,122, 15,167, 95,129,116, 19,173,223, 45,172, 95,246, 15,232, - 84,225, 84,169,181, 5, 19,168,167,145,237,174,140,254,136,243, 61,185,109, 58,146, 37, 62,235,154,246,128,162, 67,238,122,221, - 93, 24,168, 92, 38,177,233,224, 62,201, 2,179, 26, 7,132, 89, 93,144,168,182,187, 53, 82,188, 38,213,157, 61,190, 67, 90,188, -160, 53, 31,161,237,116,190, 40,138, 73,135, 84,174, 7, 10,101, 29,198, 94,169,249,123,104,197,167, 52,105,219, 37,126,188,235, -235,157, 84, 27, 12, 59,221, 51,124,165, 78,194,234,118,157, 37, 14, 9,217,130,129,207,158,220,216,215, 14,125,228, 93, 59,107, -162, 55, 78,245,242, 64,178, 29, 12,163,219,236, 31,231,201,188, 51, 31, 5, 98, 41, 62,156, 49,109,210, 6,165,180, 70,150, 68, -199,176,118,238,144,176, 49,161,252,121, 40,193,178, 24,124,245, 50, 88, 12,235,224, 20,105, 3,176,166,110, 10,106,247, 72,247, -200,212,214, 53, 68,253, 61,119,101,181,217, 37,183,195,220,239,222,197,188, 69,140,181,117, 26,158, 95, 23,199,232,252, 23, 81, -214,156, 57,181,198, 82, 43, 45,136,151,122,129,184,253, 56, 91,125, 9,173, 78, 18,225,177, 24,207,251, 65,244, 1, 31,227,227, -133,134,125,138,123,241,252,145,193,138, 43,219,161,201, 46,214,225,114, 33,132,227, 19,121,242,118, 17,169, 59,162,130, 31,172, -214, 47,166,182,163, 83, 52,199,180,100,200,117,219,242,206,205,122,236,170,215,170,108,221, 85,149,176, 0,203,140, 2,242,237, -136, 35,234, 17,225, 49, 73,158, 82, 34,205, 19,165, 44,113, 61, 63,160, 42,110,127, 71, 28,114,205,134,116,188,161,155, 55,185, -108,205,226, 90,223,119, 15,163,221, 80,246, 67, 65,219,185, 34, 89, 6, 27,219,124, 60,114,245,248, 21,242,225,192,249,131,247, - 40,167,123, 31, 51,200,195, 14,209, 30,124,248, 59, 61,106,159, 96,200, 0,222, 31,113,173,251,254, 93,163, 43,239,161, 43,158, -165,221, 16,139,164,155, 36, 23, 9, 52, 26, 65, 49, 27, 86,182, 43, 50,107,137,240,145, 20, 10, 97,143,198,147,240,195,170,169, -147,207,180,109,235,130, 89, 93,156, 86, 55, 98,195,228, 96,142,174,140,159,175, 89, 21,230, 23, 2,247,130,220, 63,193,126,225, -231,145,159,253,253,160,175, 70,250, 78, 60, 77,102,245,153,221, 54, 19,143, 95, 43,182, 17,177,164, 25, 90, 26,173,234,230,151, -209, 15,207,200,147,104,229,110, 50,188, 38,240,114, 66, 78, 21,213, 70,171,174,136,215,185,146,150, 30, 77,250,144,216, 53,192, -106,236, 65, 0,134,109, 3,146,109,223,182,169, 66,139,241,248, 91, 47,145,127,144,208, 39, 17,105,250,155,174,225,100,200,215, - 32,127,111,131, 12,243,219,183,222, 13,203,112, 93,137, 63, 61,229,160,232, 15, 93,193,211, 5,222, 59, 83,223, 61, 83,159,157, -168, 79, 23,238,111, 43,207, 26, 60, 43,198,237,234, 15,229, 58,100,124,107,116, 68,132, 31,125,180, 81,106, 22,228, 38, 33,143, -226,105,185, 86,236, 28, 59,244,147,239,212,203,218, 28, 26, 18,226,161, 41,246, 38,246,162,162,118, 36,253,190,107,248,172,192, -213,143,195,227, 63, 18,237,193, 11,224,173, 40,224,207,224,250, 71,233,137,232,180,251,120,106,155,179,228, 67, 36,103, 38, 23, - 29, 79,191,137, 59, 73,174,131, 80, 38,221, 69,244,214,132,163, 42,143, 94,203,220,222, 22,238, 79, 49, 94,237,154,152, 1, 82, -211, 49,159, 83,116,234, 7,109, 28,146,112,200,198,193,134, 34,221, 25,240, 93,203,208,115,160, 85, 28,112, 19,123,129,181,237, -248,224,169,238, 59,238, 62,157,234, 32,156,180,209,235,252,201, 82, 91, 15,156, 9, 10, 93, 27,138, 94, 20, 12,135,203,216, 86, -252, 54, 46,184,236,140,241,237, 59, 84,245, 12,136,197, 56,100,119, 49,220, 53, 99,109,126, 8,107,181,243,187, 45, 16,175,187, - 53,172, 61,120,176, 79,230, 22,188, 49,253, 76,147,131,110,182,247, 38,123,102,121, 25,196,109, 26,157,105,223,163,223,196,247, -181, 12,200,229,126, 48, 40, 15, 15,196,241,123,231, 88, 33,230,152,108, 60, 84,201,111,106,247, 11, 38,254, 30,122,196,246,222, -124,196,111, 3, 6,116,140,123,232,222,248, 62, 66,110, 23,196,181, 29,155,112, 68,220,166, 55, 92,151, 77, 60,179,126,109,198, - 65,132, 43, 77, 44, 41,113, 42,133, 86,203,118,253,245,255,215, 39, 25, 45, 80, 26,121,179, 5, 10,111, 8,220,137,240, 65,172, - 61,234,128,223,181, 7, 48,154,109,170,208,131,187,100,111,252, 54,193,219, 39,140,222,117, 80,183,203, 3,240,144, 12,204,253, -139, 38,197,134, 12, 4,216, 84,250, 99,226,218,229, 78,122,239,126, 45,116, 27,253,154, 32, 56, 39, 93,159,165, 61,153, 16,113, -155, 90,132,176,116,228,107, 74,137, 98, 30,250,226, 35,123,191,198,179, 42, 73,149,148,148, 60,205,212,116,218,109,108,181,125, -204,137,223,177,234,150, 98, 12,212,227,202,217,195,159, 44,104,130, 66,231,226,219,197,228, 99,163,181,246,207,224, 1,109, 47, -111, 31,164, 8, 87,175, 60,225,240,232, 17,119,239,190,203,249,233, 71,126,114, 57,206,190,119,174,109, 43,232, 23,123,141, 22, - 30,242,180,199,220,165, 17, 26, 32,125,252,210, 87,253,178,117,253,180,126,243, 15, 75,255, 48,238, 75,210,125,236, 30,106,211, - 36,138, 78, 93, 26,235, 93,188,106,192,108,226, 68,154,114, 70,146, 4, 75,221, 89,213, 41, 37,180, 70,152, 97, 50, 82,242, 81, - 19,154,144, 57, 83, 83, 70, 34,124, 70, 85,209, 57, 33,182, 82,234, 74, 57, 41,250, 66,145,207,222, 96, 95,121, 15,251,241,191, -130, 92,255, 65,152, 31,131,125,228,130,172, 28,147,131,214, 47,246,186,157,194,182,116,159,184, 33, 82, 11,161, 87, 18,218, 82, -208,119,206,254, 69,125, 17,143, 22,253, 28,176, 22,228,157,134,166,134,205, 9, 43,149, 92, 42,107,227, 19,191, 3,121,168, 54, - 29,191,225,158,191, 45,193,139, 55,243, 60, 19,133,116, 46,200,215,111,153, 63, 61, 35,175,101, 47,236, 63,114, 5,181, 32, 7, - 23,231,180,251,194,244,238,125, 32, 47,135,179,243,169, 34,143,102,239,242,191,118, 79,123,127,165,190,127,166, 60, 63,113,186, -107, 60, 67,120,182, 56,166,125, 41, 59, 79,154, 65,255,240, 48,141, 84, 35,220, 67,115, 70, 31,101, 15,112, 49,188, 75,127,233, -222, 92,107,141,118,170,148, 98,172, 58, 28,109, 36,114, 5,238,148,252,133,107,248, 97,156,254,119,243, 47,248, 33,108,253, 57, -200, 63, 1,182,192,179, 63, 31,145, 91,223, 27,109, 85,129,250,190,119,233,173, 97,165,243,176, 47, 52,184,254, 80,172, 46,108, -209,208, 27,180,120,210,206,201, 5, 81,147,249,195,241,205, 63,242, 58,135,127,252,154,119,254,163,111,177,158,171,119, 97,109, - 87,185,247,142, 61,199, 67,112, 22, 99, 82,227,144, 60, 25,246,208,131, 94,218, 37, 58, 53,137, 96, 57,206,147, 53,214, 46, 45, -196,144,177,166, 41, 65,146, 43, 33,172,147, 0,140, 39, 49, 86,241,137, 86, 23,191,101,213, 96,102,216,214, 33, 62, 20, 55,141, - 15,194, 44,123,183, 39,109,119,143,244, 7,177,178,231,185,191,218, 18, 63,250,251,175,121,252, 86,230,151,255,226, 75,168,149, -151,129,140,197, 42, 41,251, 52,128, 56,108,168,143, 5,250,237,189,117, 44, 45,124,233,133,125,167,223, 6,192, 79, 29, 56, 20, - 58,168,221,115,220, 11,157,228,150,187,147,128,125, 35,216,133,141, 43,182,137,213,212, 46, 9,115, 58, 48, 5,186,127,127,212, -243,104,216,172,250,129, 98,215,136,236,133,162, 35,114,243, 54, 29,240, 61,137,217, 64,223, 28,145,189,177,107, 87,118, 16,209, -136, 14, 85,196, 85,234,236,233,207,253,190, 55, 51,180, 25, 7, 77, 72, 78,156, 85,184,175,149, 18, 66,231,142,165,173, 49,144, -219, 33, 74,254, 30,102,224,179, 98,220,197,116,207, 98,218, 32, 23,134, 43, 63,108, 62,124,175,250, 93, 68,108,198,101, 70,250, - 5,156,230,193,234, 34,141, 43, 12,217,247,206,227,248, 93, 47,208,203,253, 51,116,155, 47,210,182, 67,131,154, 11, 89,221,158, - 45,204,121, 98, 78,153,148, 53,108,133,198,221,186,114, 94,150, 40,236,141, 82, 93,232,168, 41,109, 7, 8,149,152, 42,167,180, -117,206,190, 89,210,168, 97,137, 41,103,214, 52, 97, 1,181, 25, 11,178,116,135, 86, 63,204, 4,241,172,239,195,183,137, 68,172, -140,233,124,130,152, 76,143,228,169, 77,159,208, 63,144, 90,183,160,165,102, 70,206,170,136, 53,166,121,230,250,149,215,169,203, -202,249,217, 71,187, 24,160,214, 77, 36, 48, 18, 9, 58, 36,134,192,178,118,159,142, 14,251, 14,137,238, 96, 19, 27,168, 70,135, - 32, 91, 40,132, 14,251,133,125,180,153, 3, 54,177,211,230,146,166, 0, 51, 40,170, 57, 10,167,111, 83,147,122,102,168, 89,133, -214, 85,240,182,229, 75,251,168, 36, 88, 96,234, 10,244, 60, 37,208,188,133,209, 88,155,252,131,233,106,131,249,136,233, 53,205, - 42,237, 30,100,173,112,186,194,222,254, 91,200, 15,253, 62,120,242, 57,184,249, 0,158, 38,223,171,231,184,251,171,245,133,233, - 86, 0, 91, 0, 16, 90,216, 82,178, 85, 90, 21,184, 95,247,143,245, 70,225,179,147,231,174,191,113, 64,150,134,182,138,181,236, - 40,217, 83, 35, 75,243,157,223, 56, 14, 26, 10, 4, 23, 65, 15,195,141,110,123,158,112, 75, 65,194, 74,110,105,202, 47, 78,164, - 47,191, 32,191, 49,195,147, 9,222,186,130, 31,186,129, 89,144, 73,200,167, 66,123, 94, 40, 47, 22,202,188,255, 32, 59, 27,250, -195, 19,162, 9,251,176,210, 94,172,212,211,194,122,106,188,140,100,212,251, 2,167, 98, 30, 91,218, 46, 79,243, 26, 0, 5,123, - 16,252,160, 13, 15,185,121, 53,121,146,201,185,193,139,117,207, 73, 95, 10,237,220, 92,224, 19, 95,149,171,151, 45,212,248, 25, -249,169, 4,159, 1,174,255, 0, 28,126, 4,150,255, 27,110,255, 2,188,242,187,225,252, 53,248,234,207,193,147,207,134,210,172, -184, 56, 96,253, 0,206, 96,119,254,148,148, 42,164,201, 79,237,162, 66, 43,254,218,214,236,135,157,164, 61,242,120,239,192, 83, -246,209,242, 49, 11,105, 53,206,127,249, 41,229,220,200, 17,105,219,185,235,157,212, 54, 73,223, 97,155,239,209,213,199,245,199, -208, 44,108,216,220, 58, 78,191,100, 19,150,238, 88,207,248,255, 25, 82,141,123,173,117, 27, 82,240,243,155, 23,211,221,222, 37, -177, 87,180,109, 55, 44,234, 66,198,109, 79,152,118,235, 97,211, 30, 80, 35,219,100,173,127,111,235,192,138, 63, 35, 28,129,207, -136,240,227, 63,113,228,213, 63,251, 22,207,255,139, 15,184, 93,140, 41, 11, 95,122, 34, 92, 63, 86,190,252,109,227,229,185, 49, -137,120,134,184,244,195,254,195, 88, 89,118,201, 86,127, 13, 3,167,189, 63,204,100, 24,185, 78, 33,142,139,212, 94,150,232, 94, -206,192,157,193,213,131, 29,120,177, 29,130,212,199,237,149, 49, 54,245, 1, 36, 37,186,197,142,142,237, 57, 64,109, 3,246,216, -133, 90,191,178,107,141, 82,128, 95, 68, 19,102,141,181,219,218,108,199,213,122,190,189,109,175,227, 48,192,136, 42,198,179,102, -172,102,220,136,112, 80,223,245,223,197,251,235,175,249,100, 70,181, 66,149,152,233,164,140,137, 58,106,182,218, 86,208,235, 48, - 46,239,253,244,106, 14,181,121, 75,224,237, 33,108,187, 12,123,155,135,246,181,110,137,188,212,180, 95, 98, 95,237, 1,135,221, - 30,144, 9,101,224,216,203,240,186,218,131, 70,230,227, 94,120, 25,208,170,241, 89,199,207,154, 68,152,231, 25, 81,229,160,202, - 33,254,189,198, 84, 35, 11, 60, 57, 30,184, 21,225,188, 44, 1,156,106,172,197,208, 86,201,154, 72, 57, 83,171, 11, 60, 53,128, -103, 42,194, 60, 77,204,121,242,102, 34,108,224,170,234,161, 47,146,144,109, 39, 31,112, 53,213,203,168,191, 56,208,111, 66,185, -168,185,200, 16, 23, 59, 0,115,250, 73, 92, 58,251,165,167, 46, 90,187,248,172,115, 47, 16,211,213, 53, 34,202,249,195,247,177, - 86, 73, 49,234,182,230, 1, 20,219,152,183,141,187, 45,187,136,147,235,129, 15, 50,228,225, 89,219,173, 58, 59, 80,120,143, 94, - 53,177, 75, 11, 69,196,112,138,166, 16, 4,197, 62, 49,101, 68,213,243,129,251, 95,106,178,143,101, 84,125, 92, 29,159,152,166, -228, 16, 22,171,219,233,162,219, 45,242,148, 73,243,140,106, 34,139,255,156, 86,154,103,229,138,208,242, 68, 17,104,234, 65,142, -182, 86,236,121, 65, 30, 77,216, 47, 60,133, 47,254, 26, 60,250, 61,240,195,255, 0,222, 87,164, 30,144,171,130,220, 23,135,208, -212,225, 65,180,141,193,219, 32,234, 48,244, 84,177,164,148, 21,210,210, 72, 61,180,228, 83,192, 27, 9,214,140,190,172,216,109, -197, 84,105, 42,228,192, 80,246, 24,198,214, 62, 94,212,251, 15,113, 79,187,109,206,195,174,158, 95,171, 63,128,170,193, 11,132, - 9, 99,122,247, 30,253,198, 75,244,205, 9, 30, 39,228,213, 35,246, 5, 71,215,166,231, 71,242,119,206, 76,183, 11,231, 26, 98, - 30,241, 39, 72,250,173, 71, 79, 73, 59, 87,108, 41,212,219,194, 73,125,197,126,110, 91, 58, 42,181,250,131, 43,119,110,252,176, - 23,221, 31,226, 94,236,179,129, 94, 37,164,199,172, 62, 55,236, 46,118,233,203, 74,123, 89, 57,135, 29, 30,237, 15, 84,191, 57, -245,165,146,127,246, 10,249, 25,131,199, 95,132,155,127, 30,218,115,120,250,231,160, 28,225,230,125,248,234,191,135,253,124, 67, -254,153, 21,202,119,160,188,112,107,226,122,139,156, 58,223,160,145,102,229, 40,153,169, 56,194, 94,196, 56,215,202, 20,136,226, -121,240,214,247,110, 37,197,237, 80, 90,229,163,255,229, 67,172, 64,206,198, 77, 51,206,145, 69,211, 98,164, 62, 77,151,178,140, - 94,208,181,119,101,113, 16,242,137,211, 80,180, 58,119,160,236, 11, 68, 17,217, 3,157,194,251,170,125,160, 21,254,121,146,175, - 42,188,232,105,164,159, 93,238,253,146,169,131,117,194,179,219, 6, 38,168, 12, 55,104, 31,101,143, 93,171, 13,251,232,163, 40, -143,111, 18,203, 2,191,242, 47,125,131, 95,255,230, 25,142, 62,193,120,114,149, 88,171,112,223,217,255,227,142, 48,152,237,231, - 17,244,210, 71,188,136, 71,101,110, 9,145,251,186,198, 6,176, 84, 30,186,245, 14,140, 89,227, 78, 60, 15,196,191,137, 97,234, -240, 32,103,162,171,215, 11,151,118,186,135, 10,237, 49,100, 68,113, 29,196,210, 99, 79,195,106,184, 69,208,198,250, 43,111,207, - 71,161,104,102,105,133, 37,210, 38,235, 64,181,235, 5, 61,110,181,120, 95, 18, 44, 13, 47,250, 39, 51,142,182, 79, 78, 12,184, - 55,225,212,191,187, 77,136, 90,157,133, 46, 66,211, 41,172, 9,118, 49,254, 39, 2,175,122,242, 92,197,157, 3,111, 0,223, 30, -150,214, 77,118, 17, 95,226,227, 80, 25,249, 46,126,245,241, 23,210, 72,103,124, 16,190,178,233,133,162,144,183,225,226,146,143, -129,110,236,162,248,251, 33,207,127, 80,238,135,224,128, 24,204,170, 78,126,179,176,154, 86,219,234, 11, 8,215,243,140,136,176, -156,207, 62,245,141,212,202,181, 57,248, 71,123, 81,166, 23,244,204, 52,249, 1, 33,135,114, 85,194,182,184, 29, 56,181,139, 73, -251,159, 29, 35, 89, 7,173,205, 40, 69, 84, 15,241,233,246,241,109, 58, 34, 26,153, 12,109,111,134,154,131,202,198,252,217,200, -108,240, 14,238,112, 56, 96,101,101,185,125,177,239, 55, 25, 58,146,202,150,235,189, 73, 13, 98,124,176,157, 73,173,133, 77,104, - 80,207,137, 12, 40,200, 22, 2,162,174, 53,220, 97, 15,253, 43, 75,236,130, 58,149,180,219,232,196, 51,220,181,245, 55, 57, 90, - 23, 64,152,104,211,238,239, 52, 81, 87,104, 71,106,154,166,196,156,148, 89, 3, 76,146,149,164, 25,116,242,177,208,212, 3, 89, - 10,181, 54, 86,171, 84,170,127,192,171, 97, 47,110,189,139,126, 87,176,111,253, 60,242,165,127, 21,249,210,247, 97, 31,126, 29, -249,135, 9, 93,103,236, 84,145,114,142,194,240,192,110, 55,140,157, 22,224, 80, 27,237, 92,208,212,124,207,249,222, 9,189, 81, - 56, 28,225, 58,160, 52, 47,162,248, 83,177, 50,161, 47, 27, 89, 93, 36, 19, 43,159, 13, 50,163,253, 59,130,216,199,199, 13,210, - 6, 97, 83,183,204,244,221, 82,133,231,147,112,188,175,164,175,220, 50,127,238, 8,111,100, 56, 36,228,181, 71,190,199,126, 94, - 73,111, 29,152,158,159,152, 63, 44,156,230,254,176, 85,228, 11, 51,118, 42,216,203, 70,123, 89,176,106, 59, 71,187, 26,107,101, - 75, 99, 75,195, 67,106, 76,127,178,237, 70, 15, 22,127, 18,244, 73,114,232, 12,158,116,215,238, 35,137,237,222, 71,239,139, 25, - 75,235,211,159,184,129,138,248, 65,244, 79,190, 1,159,250,157, 48,255, 49,152,222,128,167,127, 30,158,253, 58,188,242,187,224, -254, 47,194,127,242, 11,112,243, 4,251,104, 69,222,248, 8,202, 45,200, 17,150,123, 88, 61,156, 72, 87, 33,201,196,141, 78,164, -183,142, 44,182,242,193,251,103, 82,114, 30,180, 6,216,163,167, 74, 69,102, 7, 53, 84,214,102,198,169,143,188, 67, 89,125,115, -244,110,189, 87, 9,213,125,188,154,197,187,216,237,144,208, 15, 79,246,128,110,221,175,169, 18,197,221,100,115,121,244, 15, 56, -137,119,236,210,161, 50, 33, 0,235, 93,134,163,228,216,216,195, 45,130, 43,208,228, 15,175, 22,105,137,114,233,155,149,102,212, -136,218,181,145,229, 30, 34,186,202, 14, 46,153, 50,124, 88,225,221, 95, 57,113, 90, 43,105,246,142,250, 84,141,191,247,237,133, -115,219,229, 40,213, 46,109, 98,163,112,175, 7,232,200,199,210,186,100,139, 18,221,195,235,108, 75,173,235,136,217, 50,226,119, -101,136,106, 53, 47, 88,155, 56, 45,174,191,177, 19,111,118,121, 96,233,130,177, 54, 92,191, 57, 38, 22,123, 96,138,127,118,182, - 89, 80,213, 15, 14, 97, 31,107, 6,247,213,173,173, 41, 92, 57,146, 18, 82,108, 83,213,111, 49,209, 92, 54,117,155,252,164,147, -253,226,247, 85,235,148, 63,225,206,224, 30,219,112,191,102, 59, 68, 42,137, 33, 45,214,152,120,150, 71,193, 40,165,239,219,133, - 81,164,222, 51,233, 39,241, 80,201,219,176, 65, 54, 60, 59,160,223,184,163,120,242,187,121,204,211,102, 69,148, 77,227, 49,254, -190,244, 64,180, 55,198,139,242, 0, 79, 60,166, 26,118,123,180,245, 70, 9,221, 82, 14,251, 10,163,103, 53,168,250,180,130,208, - 55,229, 16, 91,247,224, 50, 21, 31,205,183, 90,169,107, 27, 54,224, 30,222,226,186, 1, 69,163, 27, 79,154,226, 30,236,209,227, -138, 53,219,130,135,182, 87,168,186,217,207,122, 82,219,229,218,177,141,121,115,113, 16,145,224, 54,196,113, 53,103,255,253,181, -110,212, 57, 19,243, 70,180,121,103, 48,240,107, 28, 41, 45, 2,109, 93, 56, 61,251, 0, 43, 5, 85,137,209, 96, 87,221,202,102, -146,183,118,233,127, 28, 61,130,221,226,214,195, 26,122,164,107, 31,207,247, 81,225, 22,231, 55, 96,253, 44,126,221, 85,237,213, -197,114,216, 46,204,107, 30,120,226,187,246,200,217,238,118,163, 96, 90, 39,149, 45,173,216, 68,156, 20,166, 57, 0, 19, 19,135, - 57,197, 14,113, 9, 42, 93,242, 49,137, 37,207,124, 43, 11, 22,178,228,138,112,110,194, 25, 35,151,123,148, 10,247, 7,228,201, - 12, 95,254, 50,124,113,133, 87,254, 36,252,214,255, 24,202, 61,250, 75, 51,118, 88,177,121,193,206, 50,140, 78,108,195,229,142, -118,156,130,145,207,197,217,245, 87,130,188, 80,228,189, 16,206, 29, 20, 30, 77,240, 61, 13, 89,103,244, 93,207,162,183, 86,153, -111, 87,150,136,195,237,157,146,251, 51,219, 38,212,234, 57,222,163,136,194,194, 74,214,113,175, 29, 17,128,192, 85, 54, 14, 31, -156,200,255,240, 5,250,169, 25,187, 81,100,158,145,215,174,177, 79,175,232,103,102,210,251, 71, 14,207,111, 61, 59,120, 49,166, - 89,145,207, 29,225, 89,241, 36,182,115,219,198,145, 37, 52, 34,173,123,148, 35,183,219, 70,229,170, 93,166, 56,117,149,178, 94, - 41,242, 56,195, 44,216,125,133,151, 5, 91,188,123,110,119,133,117, 53, 78,230, 83,128, 20, 15, 29, 5,228, 30,210,111,203,240, -250, 15,193,213,159,130,252, 38, 44, 95,133,167,255, 35, 76,103,120,235, 26,254,231,191, 12,255,143, 32,127, 80,177, 91,243, 42, - 91, 79,174, 40, 91, 94,192,115, 65,238,253, 53,206,249,136,254,137,183,224,247,126, 31,249,231,126,149, 23,255,237,219, 76, 89, -209,115,221, 73,120, 3,247,157, 1,188,210,177,174,125,132,234,144, 65,225,224, 27,159, 56, 4,244,220, 1,127,192, 75, 44,239, -172,140,236,244, 93, 81,188,249,247,211, 94,137,100, 82,180,122,213,238,124,233,150,118,149,188, 5, 27,190,197, 31,105,170,123, -209,139,184, 97,205,137,154,179,119, 46,141,141,165,173, 13,215,125,152, 7, 47,245,112, 26,217, 73,200,126, 24,141, 80,154, 20, - 29, 82, 1,150,210, 40,197,255, 93,147,113,182,240,171,211, 3, 51,188,163, 95, 30,200,169, 55, 88,201,246, 44,113, 62,121, 25, - 14,197, 91, 7, 46,186,177, 48, 54, 1,227,144, 52, 82, 7,245, 80,142,239,105,142, 29,193, 26,180,189,218, 97, 44,225,135,110, - 1, 25, 42,109, 31, 77,143, 68,180, 78,163, 76,182, 91,236, 26, 66,141,168, 77, 53,227, 96,141,151,205,239,111,217, 52, 69,193, -127,143,235, 33, 85, 95, 1,170,184,128,215, 90, 76,162,182,130,238, 33, 45, 54,132,109,141, 14,174, 26,123,250, 37, 38, 14,218, -140, 59,220,123,190, 6,222,181, 4,227,126,233, 62,104,219,227,173,175, 5, 30,137, 32, 41,145,179,178,182, 18, 78,137,221, 27, -159, 7,183,213,163,248,236,239,245,242,128,110,195, 52,164,141,106,182, 40,224, 50,136, 73, 63,201,186,246, 73, 88,217, 49,126, -102, 51,100, 14,146,246,190,251,135, 75,102, 65,138,233, 71, 26,232,124,125,159, 62,231,204,164,153,166,123,250,103,214, 20,159, -181,120, 97,196,255,183,148, 18,117, 29,243, 24, 36, 4,143, 14, 12,114, 30,195, 52,172, 29,188,232,175,165,112, 62,159,246,125, - 85, 47,214,162, 81,216, 99, 50, 50,178,225,187, 63,222,218,112,205,219,230,145, 23, 77,144,252,184,105, 53,186,234,176,202, 89, - 4,202,108,235,240, 97, 39,149,189,219, 19,150, 23,207, 99,148,199, 94,140, 67, 41,222, 51, 75,164,237, 84,254,109, 7,208,125, -176,155, 2, 54,132,115,106, 23, 35,117, 25,114,217,181, 95, 5, 18,103,238,142,146,181,253,103,123,235,211,144, 41,145,196,247, -254, 82,107,188,158,136,124, 29,148, 22,162,126,186,202,105,194, 52,251,216, 35, 79,126, 58,107,141, 84, 11,185,174,126, 27,204, -215, 30,202, 37, 13,105, 37, 50,217,129,150,168, 65,189,195,217, 42,104,105,204,210, 72, 77,105,119,134,188, 34,200,251, 43,220, -253, 29,120,245,159, 67, 62,253, 39,176, 31,251,243,240, 62,200,203, 9, 57, 77,200,121, 55,151,105,218, 71,167,125,159,170, 3, -232, 99, 90, 26,118,172,212, 86,144,143, 22,210, 87,194, 59,254,217, 25, 94,157,224,243,134,174,206, 59, 55,105,112, 94,209,123, -219, 44, 80,163,250,180,200,101,190, 51,219,110,210, 46, 58,157,190, 59, 92,155,239,161,159,171,112, 93,141,249,155,247,204, 95, -191,131, 79, 37,184,190,135,199,215,200,167, 39,236,245,153,252,217, 35,237, 69,225,234,195,123,202,210,200, 79, 38,228,149, 9, -222,190,195,110, 27,173,122, 44,100,107,194,186, 70, 65, 11,121,109,103,138,247, 19,170, 93,156, 84,101,219,181, 37,112,224,204, -167, 34,211,252,133, 97,119, 94,208,157, 34, 87,125,180, 95,221,186, 52, 53,227,216,161, 51,162,200, 19,131,114, 15,122,140, 27, -224, 8,239,124, 7,126,236, 7,224,244, 62,252,185,167,158,208,118, 29, 0,236, 52,197, 7,120, 11,235,135, 91, 59,167,139,194, -143, 92,195,111,255, 52,188,253, 33,203, 95,253,144, 90, 27, 89,140, 26, 64,149,238, 21, 31,133, 89, 58,236, 10,219, 39,196, 83, - 54,131, 41,137,199,174, 86,187, 12,158,216, 86, 41, 35, 53, 97,223, 25,106,216,245, 46,158,136, 37,148,180,178,175,195, 52, 78, -114, 54, 27,156,186,141, 75, 40, 37, 30,180,213, 88, 66,237, 62,205,217,173, 59,165,110,215, 77,149,232,127,196,187,153,146,161, -157,135,196, 52, 25, 14, 24, 23, 22, 57,219,216,244, 75, 8, 58, 20, 99,137,174,186,198,137, 39,165,192,108,118, 69,222,158, 31, -187,117,163,235,134,247,188, 28,195,187,168,183, 3,129,188,251,221, 35, 72,109, 19,234,245,168,212, 78,238,115,112,203, 30,109, -171,120,150,248,135, 13, 14,209,181, 31, 4,110, 68,184, 18,227,118, 16,198,173,157,138, 57,116,229,105, 56,110,173,131, 23,165, -231,157, 79,248, 65, 70,104, 84,243,226, 57,245,149, 99,196,177,182, 45, 53,206,187, 63,107,142,136,110, 56,236,167,109,233,116, -131, 15,124, 83,209,239,249,225,125,219,183,154, 31, 86,150, 88, 1,172,155, 32,206,226, 85,235, 6, 46,170, 13, 42, 53, 98,105, -133, 67,154,168,102, 44,173,114, 54,219,120,248, 50, 28,108,110,100,136, 30, 30, 58,244, 98,151,161, 56,123,167, 61,136, 0, 31, -104, 24, 46, 16,174, 99, 71,223,181, 41, 67, 34,226, 30,246,181, 23,253, 61,238,119,228,188, 15, 52,205,254,247,105, 98,202, 19, - 57, 79,126,152,214, 60,208,233,108, 43,252,253, 26, 81,140,115, 74,225,168,104, 33,232,213,193,162,183,199,170,246,105,192,106, -141,211,233,158,245,174, 81, 75,217,236, 20, 93, 8, 71, 76, 4, 58, 79,196,185, 18, 3,191,101,176, 1, 42,130,230, 20,161, 84, -234,148, 76,139, 3,159, 57,120,173, 9,180, 18,201,113, 99,131, 20,112, 39, 33,117,248,204,238,237, 16,217,115,162, 53, 4, 1, -163, 54, 81, 31, 36,202,136,250, 30, 67, 30,230, 59, 52, 11,172,171, 93, 38,191,117, 53,109,236, 6,205,218, 54, 42,212,129,190, -211, 3, 11,114,139,145, 7,169,115,122,182, 81,155,198, 29,111,146, 34,130, 53, 78, 63, 41,185, 48,196,124,207, 46, 20,178, 52, - 38, 51,180,174, 8,179,183, 76,156,125,239, 81, 28,142,223, 90,115,111,123, 92,158, 42,226, 44,248,166, 28,214,226, 9, 97,103, - 64, 50,246,141,191,130,124,250, 15,195,213, 63,129,188,249,247,176,239,255,235,232, 59, 19,237,148,144, 91,193,206, 27,135,242, -130,122,100,131,250,187,198,193, 43,175, 21,206, 66,109, 62,122,209,183,197,213, 60,175, 31,225,205,217, 47,162,197,125,198,118, - 87,152, 94,156, 72, 27,242,112, 87,188, 39,221,253,188, 29, 70, 48, 2, 50, 30,142,178, 44,150,135,103,133,231, 9,142,207, 22, -244,107,119,228,207,206,216,107, 25,153, 19,188,126, 3,159, 62, 33,119, 7,242, 93,113, 63,231,243, 19,250, 36,111,214, 54, 43, - 45, 28,124,110, 89, 90,205, 40,205, 73,118,173,231,139,219,254, 96,218, 78,171,186,143,231, 82,115,224, 74,122, 37, 33,143, 34, - 7,247,105,120,211,173,209,150, 70, 57, 25,103,224, 92,124, 63, 76, 26, 85,245, 2,223, 94,160, 78,238, 71,151, 5, 94,252, 60, - 60, 21, 56, 37,236,143,255,111,176, 20,228, 39,175,176,215, 20, 94, 83,208, 79, 7, 45,232,153,179,241,107,168,211, 14, 10,185, -210,254,203,175,176,252,157, 91,158, 47,103,150,107,176, 83, 40,214,181,143,184, 98, 74, 16, 32,163, 1, 70,181,237, 43, 85,118, - 97,153,246,144, 8,193,221, 34,179,250,205, 95,119, 22,170,204,138,148,134, 84,223,233,181, 16, 22,166,126, 3,173, 33,122, 20, -193,170, 57,164,103,245, 20, 22, 75, 46,197, 54,240,140,121,226,231,212,128,230,152,177, 6,149,108,186,154, 96, 62, 80,207,197, -247,129,214,227,131,157, 31, 42,109,191, 88, 53,117, 49,142,108,157,122,178, 93, 4, 11,161, 79,159, 0, 0, 32, 0, 73, 68, 65, - 84,218,119,254,181,107, 86,226, 33,185,118,190, 69,127, 24, 70, 65,219,125,207,187, 53,213,198,209,178,237, 22, 88, 27,188,185, -186,141,194,101, 19, 65,141,224,151,141,182, 21,146, 3, 29, 20,213,182, 29,190,132, 89,225,101,137, 0,167, 16,207,245,115,222, - 85,124, 4, 79,217,227, 90,123,166,250,238,248,191, 92, 7, 48,216,166, 68,140, 99,168,198,155,249, 88,157,234,197, 65, 3,195, -186, 39, 91,249,148,102, 78,217, 57,240,107,217, 26,164, 17, 62, 83,227,103,106, 76, 74,138,236,170,253, 14,254,177, 56, 20, 45, -113,160, 40,246, 48,153,173, 33,161,207, 40,192, 18, 14,130, 85, 96,150,198,181, 42,105,154, 41,235,194,210,124,234,214,115,225, -123,209, 62,196,189, 90, 6,145, 96,150, 62,129, 12, 48,143, 13,140,128,161,208,202, 39,224, 93,199,181,203,244,224,247, 43,151, -180, 68,100,183,113, 93, 10,233,252, 59, 77, 26,246,179,152, 20, 95,105,230,230,120,224,120, 56,122,224,138,106,236,184, 97, 41, - 37,226,191,247,134, 32,247,196,197,136, 22,111,117,136, 81, 29,174,196,205, 18, 88, 27,118, 62,179,134,101,176,139, 88, 69,117, - 56,148,135, 35, 76, 6, 72,140, 74, 88,221,118,207,177, 4, 66, 86, 83,222,190,251, 62, 29,176, 90,220,205,160,201,233,131,181, - 68, 65,127,160,242, 80, 54, 91,119,102,243,141,239,234,204, 78,153, 75,125,116,228,179, 27, 87,192,142,128,123,145,109, 44,181, -205,228, 6, 70, 49, 22, 96, 14, 46,253,133, 58,140,215, 82, 20,231, 62,218,218,176,136,219,127,183, 24,153,168,143,222,123,146, - 81,107, 27,222, 79,106,245, 17,191,102,127,120,148,213, 95,163, 18, 7, 17,223,129, 38,205, 62,156, 47, 11,102, 5,180, 4,121, -203, 93, 77, 37,212,138,104,194,154, 80,214, 91, 88,207,220, 82,184, 90, 23,174,164, 96, 79, 10,246,228, 6,249,229,223,128, 31, -250, 27,240,232,159,134,249,119,192,155,127, 19, 30,173,200, 71, 17, 95,214, 60,158,207, 58,115, 59,152,220,125, 18,223, 6,238, -171, 86, 67,239, 42,109,242,116, 53,126, 67,209,171,236,187,245, 39,179, 7,175,220, 6, 94,242,118, 98,154,207, 28,151,253, 20, - 45,131, 95,115,156, 83,118, 38, 54, 17, 6,115, 97, 3,209,126, 34,246,145,252,189,192, 93, 53,230,111,223,145,190,126,240, 14, -253, 42, 35, 79,110,144,239,123,140,157, 26,169,197,204,251,215, 43,233, 7,143, 94,205, 22,159,168,180,210, 35, 45, 29,186, 83, -154,251,136,229, 34, 69, 40, 30, 46, 50, 90, 81,188, 64, 77,106,228,172,232, 43,147,199,111, 85,131,219, 16, 41, 90,195,238,220, -210,231,255, 56,178,115,238,118,156,102,200,169, 32,127,248, 77,120,245,223,244, 61,121,249,171,240,115,255, 1,188,249, 58,245, -223,254, 85,202,219,207,209,159,188, 33, 29, 28, 8, 40,175, 92,185,165, 77,143,192,215,225,105,241, 39,188, 25, 77, 10,235, 87, -110, 41,119, 43,119, 90,185,191, 17, 87,175, 75,115, 48, 73,132,218,244,107, 61, 39,182,160,142,141, 3, 80,217,114, 5,246, 52, - 55,223,107, 70, 14,104,252,225,120, 82,174, 97,231, 82, 55, 17,123, 86,129,197,131, 60,190,176,138,199,243, 70,197,115, 55, 73, - 66, 14, 19,124, 54,211, 62, 58, 83,111, 87, 90,169,206,173,239, 37,167,249,131, 34,153,184, 82,247,234,138, 38, 19,117,219,209, -249,225, 33, 73,218, 50,163,201, 96,107, 37,181,134,170, 58, 9,144, 22,211,180, 80, 1, 87,217,166, 19,157,110,231, 69, 32, 94, -165, 92,174, 89,250, 8,191,239,172,107,140,150,183,220, 2, 51, 46,229, 80,182, 69,212, 78, 61,111, 60, 40, 94, 83,172, 57,122, -209, 47, 12, 76,242, 56,155,117, 2,224,180, 41,184,109,235, 78, 83, 20,164,147,121, 33,186, 13, 10, 93,223,177,107, 0,100,166, - 0,218,116,159,255,204, 62,222,183,129,251, 96, 3, 24,234,198,195, 11,185,239,244,185, 64, 92, 39,205, 91, 16, 72,128, 55, 16, -224, 32, 66, 77,153, 22, 99,248,174,110,182,209,150, 58, 20,232, 98, 22, 62,123,219,194, 98,170, 8,103,219,229, 18,123, 65,183, -139, 67, 61, 3,111,190,191,238, 53,124,218, 51,120, 80, 76, 82,106,109, 44, 49,225, 24,133,129, 83,232, 15,214, 97,218,168,155, - 94, 38, 14,182,182,163,143,219,131, 88, 54,249, 46,136,216,198,152, 6,103,152,126,188,128, 63, 60, 8,140,133,212,226,161,146, - 36,113,147, 18, 55,243,236, 58,177, 16, 84,211, 26, 21,165,212, 74, 45,101,215, 44, 52,115, 59,170, 78, 20,145,184, 79,213, 65, - 97,181,238, 19, 79,219,167,103, 77, 60,104,167, 69, 4,249, 38,250, 86, 63,104,123,131,154, 6, 75,119, 76, 83,205,127, 79,132, - 54, 68,234,232,222,209,183,230,225,101,173,131,216, 58, 5,175,119, 63,165, 68,248,145,108,107,157,126,212,208, 24,243,107,206, -100, 25,136,114,253,100, 65,236,201, 68,245,162, 16,168, 61, 32,247,200, 62,154,178,139,184, 68,217,184,184,210,197, 11,129,141, -237, 85, 77,104, 36,113,139,155, 36,221, 72,113,238, 49, 84, 87, 18,183, 26,233,109,186,193, 62, 82,206,254, 6, 54, 75, 79,247, -181, 68,146,145,102,191,149, 90, 69,242, 76,158, 31,147,165,160,231, 91,223,127,154, 33,231,151, 52, 10, 54, 79, 88,154,105,154, -105,214,147,223,192,202,194,114,186, 71,207,119, 52, 86,212, 10,119,245,196,177,173,216,115,131, 55,142, 80,143,240,171,255, 53, -252,150,159, 6,249, 28,204, 71, 56, 84,247,172,207,193, 9, 94,161,101, 48,181,205, 91,216,253,205, 99, 84,111,105,144, 82, 35, -173, 43,245, 62, 30,108,223, 16,228, 21,245, 68,143, 27,133, 47, 28,144, 83, 67,239, 87,242,107, 7,174, 62, 56, 81,240, 98,211, -207, 34,205,188,112,248,158,168,143,180,109, 27,249,111,135,165,100, 27,139, 58, 69,210, 21, 17,184,177,222,173,228,111,158,200, -223,211, 69,115, 10,143, 30,193,231,207,174, 10,111,192,113, 69,191, 24, 33, 46,107,236,251,235,206, 34,239,225, 51,136,219,109, - 50,184,165,176, 93, 10,127,186,208, 45,137,113, 48, 35, 29, 5,121, 45,121,149,252,168,210,206, 22,251, 70, 79, 98, 91, 49, 22, - 83,106, 28, 72,114, 18, 14,147,161,103, 67,222,173,200, 23,127, 4,236, 10,218,207,195, 95,255, 79,177,191, 1,235,250, 17,167, -255,235, 41,233,173, 76,174, 43,201, 14,158,241,158,143,120,127,150,252, 17,252,124,141,236,119,197,158,195,242,116,225, 20, 94, -221,186,218,150,158,149,115,212,188,208,221,244,207, 89, 99,175, 33, 9, 74, 17, 90,218,235,182,141,163,249,108, 72,100,197,155, - 52, 44,123,113, 14, 89, 52, 29, 26,191,241,218,133, 11,120,135, 54,221, 1, 47,147, 32, 83,134,127,229, 83,240,217, 3,250, 31, -126,155, 90,206,209, 33,250,248,142, 16, 75, 9, 74,158, 50,109, 58,210, 52, 99,203,234,121, 8,230, 10,221,174, 34,119, 34, 76, -220, 95, 73, 60,199, 64,149,140, 4, 86,179,186,194, 56, 64, 25, 93, 9,223,237,163, 27,246,181,119,120, 50,186,216,227, 97,148, -148,220,252,190,232, 59, 92,186, 14,166, 23,180,232,224,147, 5,146,182,107, 24,108, 23, 85,150,232, 30,189,122, 72,164,209,185, -224,203,109,142,251,216, 60, 61, 56, 0,116,133,119,138,193,106,142,115,213, 93,180,111,147,200,214,141,246,131,207,129,221, 5, -176,196,159,207,221,246, 54, 8,149,166,112,100,200, 24,211, 73, 35, 91,219, 58,185, 53,158,119, 41,190, 91, 47,166, 57, 24,240, - 53, 58, 94,217,180, 18,140, 89,239, 3,225,173, 4, 95,160,138,196,107,186,156, 37, 92,166,125,217, 22, 37,219,189,215,206, 45, - 40,220, 33,156,106, 29, 92, 58,145, 11, 63, 56, 10,122,241, 61,117,221,204, 96,161,179, 49,196, 75,228, 65,158,123, 80, 31,237, -227, 43, 41, 99,156,184, 94,234,108, 24,179, 46,198,157,251,198, 60,215,141,141, 34,102, 28, 82,226, 38,103, 14,243,129,150,148, -165,181, 93, 81, 30, 7, 38, 66, 24,106,102,155,202,125, 19, 99,143, 8, 86,213, 13, 45,251,177,180,181,139,148,180, 33,252,165, -219, 78,194,107, 43,131, 13, 45,245,218,106,230,254,254,222,221,105,119,174,236,194,195, 86,155,119,153,189,224, 3,181,182, 13, - 3,155, 84,145,148, 99, 50,177,187,170, 36, 80,222, 89, 31,208,124,210, 86, 0,132,172,222, 49,212, 56,161,203,192,187, 87,185, - 68,245,245,140, 88,221, 0, 51,177, 87,136,108,224, 52, 18,132,122,129, 27, 99, 25, 69, 34, 69, 77,162,115,151, 29, 43, 27, 69, - 90,215,197,127,125,158, 64, 83,172, 2,116,179, 26, 32, 62, 98, 17, 19,106,109,176,158,152,144, 24,173, 24,106,133,105, 58,160, -201,123,212,146, 19, 77, 60,197,205, 90,117, 98,217,249,142,118,127,199,178, 44,110,255,201,141,180, 20,238,109,101,181,194,225, -217,138,125,180, 32,159,187,194,126,225, 61,228, 11,255, 3, 60,250,189,254,180,111,241,137,206, 62, 70,103,245, 44,116,170, 92, - 38,235,244,200,189,182,231,138, 87,115,134,115, 58, 25, 53, 36,193,249,107, 33, 26,251,236, 1, 94,205,240,189, 7,210,237,138, -189, 92,201,167,202,241,197,202, 26,184,208, 62,230,222, 34,108, 59,113,108,244,135,198,200,184, 19,208,146,185, 23,121,246,151, -140,102,163, 90,163,189, 56, 99,223, 57, 33,159,155,176, 71,138,228,140,124,230, 53,236,124,134, 50,163,175, 77,200,103, 15,108, - 56, 53, 1,157,140, 52,240, 51, 83,191,184, 2,166,160,241,179,219, 40, 78,138,127, 38, 60, 69, 75, 94,155,224,117,215, 64,240, -188, 97, 47,156,245,110, 75,165, 46,141,181,121,130,149,138,211,205, 14,201,121,222,233,235,149,233, 95,255, 34,124,223,207,192, -242,239,211,254,143, 95,164,252,217,247, 40,175, 43, 79,223, 95,169,175, 43,143,154,145,238,171,183, 40, 93,236,208,112, 47, 66, -249, 22,156, 86,120,114,128,183, 23,206,207, 10,167,218, 56,103,161, 54,227, 92,155, 31, 62,205,109,102, 26,216,210, 22,130,208, -139, 67, 83, 88,201, 44,198,148, 26, 63,202, 74, 8, 23, 75,207, 65,119, 37,189,220, 25,121, 54,183, 52,166,228, 54,190,178, 35, - 35, 21,115, 71, 64,168, 98,233, 43, 42, 9,107,202,181,194,219, 39,248,171,183,180,231, 43, 45, 9,182, 70,215, 26,160,120, 83, - 33, 77, 9,201, 19,150, 39,214,197, 71,143, 85, 50, 83,134,156,101,179,175,105, 41, 20,109,216,234, 7,195, 22, 49,200, 22,113, -198, 34, 50,196,146,238,225, 43,227,126,148, 36,180,234, 83, 9, 85, 33, 37,161, 52,143,133,244, 7, 72,194,164,109, 90,147, 26, -220,130,145,142,168,177,219,223, 16,210, 67,129,157,162, 8,183,182,139,167, 82,138,243, 80,181, 11, 17,203,212,113,190, 67,151, - 55,133,108,133,225,191,143, 93, 91,100,123,179, 98,145, 83, 94,204,187,123, 17, 23, 16, 55,177,109, 95,205,192,228,144,200,152, - 72, 50, 52, 72,157,157, 47,194, 74,115, 61, 70, 74,174,254, 15,118, 68,127, 50, 76,154,104,201,182,233, 99,217,112,179,118,177, -179,174,131,118,102, 51, 50, 68,113,242,169,171,186,216,113,179,208,170,251,210, 99,111,223, 45,164, 85, 52,182, 62,254,190, 59, -224,166,181,182,163,110, 5, 22,179, 77,148, 86,135, 3,145,217,199,107, 94, 79, 48,235,135,137, 29, 56, 35,151,108,118,123,160, -104,223,101,113,251,245,100,151,201,124,219, 36, 64,252,154,106, 65, 42,154,128, 67,158,152,210,228,147, 7,129,108,131,191,123, -195, 17,251,169, 80,209, 13,180, 84, 99,105,211,237,191,147, 40, 45,103, 50,194, 89,148, 90, 86,135,161,141, 19,199, 49,224, 53, - 10,184,201, 16, 39,168,186,143,222,187, 58, 90, 34,123, 52,224, 53,214, 6,213, 77, 76,114,144, 20, 43,176, 26, 71, 47,191,203, - 90, 43,219,129, 88, 73,190, 70, 32, 72,170, 61, 41, 53,154,113,171,149,156,162,235,117, 1,155,108, 2,183,142,235,179, 45,224, -192,250,148, 0, 21,121,128, 83,220,232,234, 67,231,190, 71, 62,105,156,110,250, 27,149, 7,194,162,174,114,223, 79,226,123, 70, -187, 52, 23,179,137, 26, 82, 26,180, 21, 59,199,206,124,158,144, 52,185,135, 93, 4,210, 76,210, 41,252,183, 11,186, 44,100,169, -232,225, 49,114,120, 66,182,194,148, 82, 88,105, 86,150,218, 72,117, 37, 89,193,202,153,118,190,141,194, 85,200, 42,152, 40, 38, -141,214, 10, 43,141,251,214,152, 94,156,225,163,123,228,205, 25,185, 61, 98,191,246,151,145, 31,123, 29, 14,175,192,244,220, 47, -199,236,237,175, 46,126,145, 86,147, 45,219,220,189,199,131,191,179,251,143,155,209, 84,152,107, 35,175,171,239,226,191,149,200, -175, 6,233,237,149,201,211,220,190,112,133,190, 88, 73,231,194,241,180,178,172, 70,233, 93,200,168, 6,102,207,229,182,234, 15, -206, 45, 80,174, 7,188,196,119,187, 11,215,124,236,213,206, 70,123,111, 37,125,112,118,209,220,225, 57,204, 95,128, 79, 63,135, -151,207,145, 31,156,225,115,115, 60, 69,187, 23,180,187, 16,100,251,185, 7,219, 89,233,157,105,172,145,230,149, 98,122,147,122, -146,214, 81, 72,159,202, 14,225, 41,134,189,112, 52,172,105, 11,101,189,133,136,203,233,109,135,100, 92, 41,228,175, 22, 14,191, -249, 9,250,167,255, 48,180,175,194, 55,127,149,243,191,241,117,238,175, 26,207,158, 43,167, 43, 33, 39, 56, 84, 56,158,138,175, - 11,172, 47,250, 15, 96, 79,225,244, 45,120, 23,248,112,165,252,234,137,178, 86,202, 12, 53, 11,247, 47,161,172, 46,193,184,146, - 80, 82,235, 5,253, 56,210,155, 66, 56,180, 4,186,118, 0, 65, 72,140,226, 39,221,169,114,152, 79, 49, 76, 64, 86, 67,151,230, - 26, 6,113,211,186,158,131,152,152, 18,122, 76,129, 72,139,252, 85, 9,156,237,210,176,251, 5,249,159, 10,237,206,168,186,250, -212, 36, 46, 46,205,208, 44,199, 62, 46,147,166, 76, 42,161, 27, 17, 65, 38, 31, 77, 90,144,180,106, 35,198,142,141,166, 33, 30, - 13, 30,128,180,182,175, 55,119,251,202,238,100,217,144, 21, 97,141,154,148,137, 68,163, 97,166,148, 13,228, 62,144,187,123, 48, - 14, 26,116, 50,127,148,229,224,117, 71, 3, 78, 9, 22,108, 70, 73, 52, 50, 70,177,230,163,112,177, 16, 28,183, 45, 54,180,196, -129, 9, 60, 91,125,142,103,203, 93,140,241,175, 4,158,168,112,109,112, 10,246,195, 49, 58,236,243, 70,161,243,251,170,167,152, -117,113,218, 36, 66, 22,183,175,217,208, 53,215,216,199, 79, 2, 47,251,245,109,187,245, 20,122, 42,154, 59,117,178, 8,107,140, - 53,250,190,217,175, 17,165, 90,114,107,110,107,219,238,124, 3,226,244, 2,223,187, 97,187, 84,232, 35,158,223,110, 81,176,251, -110,126, 22,193,242, 52,240,224,123,112,137,108,164,185,190, 43,209,141,208,231, 95,106, 21, 7,207,108, 93,185, 13, 69,157,143, - 91,218,122, 83,214,223,243, 88, 4,229, 65, 72,184, 92, 68,109,126, 18,152,102,215,163,116,252,240,134, 46,111, 45,154, 79,223, -131,123,168,147, 50, 69,195,215, 84, 88, 90,193,106,219,159,137,150,182, 58, 54,133,102,204, 6,209,165, 69,125, 75, 57, 51, 29, -103,238,238,149,243,253,125,104, 67,100, 23, 46,198, 33,175,141, 17,225, 67, 78,137, 6,156,101,231, 39,117, 55,148,110, 78, 13, -209, 20,182,187, 18,127, 69, 36, 24, 70,184, 26,170,174,155,137, 21, 67, 39,212,149, 97, 45,208,231, 39,170, 1, 2,243, 64,151, -125, 95, 34, 3, 31, 62,233, 30, 63,183, 77,238,101,207, 72,239,191,177,251, 4,183, 40, 86,141,168,209, 17, 27,185, 65, 38, 98, -200, 31, 97,241, 27,242, 48, 50,211,117, 80,179, 74, 23,119,152, 43,180, 37,132, 14,130,159, 54,165, 84,172, 45, 52,156,248, 35, - 57, 35,185, 32, 92,193,116,100,150, 35,201, 26,233,248, 10,114, 56,162,173,162,166,225,217,172, 44,171,113, 62,159, 56,148,133, -163,174,200,122, 66,150, 83, 60,235, 51, 18, 74, 19,169,133,110,250, 94, 69, 56,175,149,227,187,103,236,205, 5,121,114, 5,191, -112, 7, 95,252, 75,200,117,198,222,152,145, 95, 59, 35, 77,221,110, 52,123, 24, 75,137, 56,197, 14,251, 96, 80,128, 91,140,207, - 20,217, 92, 1,102,198,116,191, 80, 95, 42,242, 53, 37, 61,202,222, 78, 31, 21, 62, 51,161, 31, 30, 73,207, 86,218,205,196,213, -243, 53,132, 49, 62,102, 29, 17,164, 91,162, 26,251, 73,187, 71,157,174,198, 22,182,209, 85,164,214,101, 17,147, 97,119,158,184, -198,109,133, 87, 23,247, 72, 62,250, 65,236, 83,191, 8,223,223, 60,136,166,196,245,177,198,202, 37,137, 39,202,201,174,221,216, -188,215,116,254,121,140, 89,213,152,213, 56, 38,113, 33,250,213,132,126,102,242, 23,248,180,209, 94, 44,180, 82,105, 75,195,238, - 43,181,238,190,227, 99, 96,126, 15,239, 84,142, 73,200,255,213, 63,235, 67,193,242,235,172,127,230, 55,184, 79,133,219, 55, 39, - 78,109,128,135,116,195,248,105,204,172, 45, 94,212, 95,188, 3,239, 24,237,246, 76, 89, 79, 44,217,184, 59, 9,119, 75,163, 86, -139,117,133, 79,124, 14,129, 25,222, 66, 94, 82, 0, 98,100,127,208,117,156,175,196,238,178,117,184, 76, 40,198,123, 75,219, 25, -205,210, 97, 32,173,185, 54, 36,118, 34, 58, 41,114, 29,106,192,106,187, 90, 60, 78,206,118,223,168, 90,209,121,162,229, 74, 91, -188,123,151, 52,163,150,162, 7,201, 17, 97,170, 78,148,107,177, 3, 76,130,213,234,133, 42, 9,199,199,137,229,108,220,190,104, -126,244,146, 26,221,183,161,213, 15,244,190,207, 86,215,165, 12,166, 98, 25, 14, 43, 18,213, 93,213, 61,191,107,243, 81,163, 63, -227,211, 54,195,109, 67,186, 84,138,110,178,137,143,122, 19,251,222,162,197,206,210,129, 63,141,220, 26,171, 53, 23,211,185, 88, - 36, 28, 29,230, 59,116, 97,219,251, 75,168,209,231, 7, 42,109, 17, 56,102,225, 81,172, 0,102, 92,245, 62,197,234,232,212, 59, -217, 22,118,181, 65, 92, 54, 13,141, 72,143,144,238,135,180, 24,210,109,187,126,217,226, 86,117, 43,106, 5,139,231, 73,242,236, -117,107, 36, 75,219,110,187,196,206,197,215,136, 21,107, 45,120,240,145,106,215,131, 98, 46,118,230,114, 49,206,150,176,114,105, -206,172, 49, 86,151, 86,185, 81, 37, 77,137,186,174,100, 85,102, 77,241,153, 8,117, 72, 49, 83, 27,211,230,108,171, 0, 93,127, - 83,237, 19, 40,123,246,176,235,230, 19, 98, 91, 47,169,114,194, 3, 58,230,229,241,100, 3, 5,117, 91,181, 38,231,172,247, 6, - 70,163, 19, 46,214,208, 90,120, 52, 31,152,231,153, 36,194, 9, 56, 45, 43,247,235,226,171,220,172,204, 6,115,118,194,129, 70, -231,155, 85, 31,184,112,196,153, 13,165,144, 74,229, 56,207,212, 90,105,203,178,249, 86,229, 65, 83,187,129,198,182,131, 81, 26, - 98, 87, 29, 99, 46,195,193,165,131,108,188,187,175,219, 24, 94,100,248,189,234,135,119, 77, 62,234,107,197, 17,217,182, 37,214, -201,230,164,144, 97,125, 64, 10,161, 92, 22,241, 34,187,169,145,247,124,116, 6,128, 67, 15,161,232,153,204, 61,178,112,200,146, -243,223,151,186, 96,192, 6,245,124,139,241,248, 14, 15,216, 24,190, 49,122, 79, 15,144,143,186, 61,191, 26,201, 90,144,233, 52, - 14, 13, 1,178, 49, 67,214,157, 5, 47,226,172,247,252,248, 13,180, 9,106, 5,106,217, 78,143,102,149, 82, 87,218,114,166,214, -133,181,173,174,138,111, 5, 53, 39,217,137, 42, 45,180,164, 82, 87, 18,174, 64, 92, 12,238, 17,242,237,138, 62, 93,177,199, 19, -242,109,195,126,249, 41,242, 91, 95,133, 47, 92, 33,255,240,228, 7,132, 99, 66,107, 65,138, 56, 75,124,176, 58, 49,142,150, 58, - 6, 63,188,193, 77,216,176,136,114,187, 80,179, 32, 95,141, 76,250,239, 61, 56, 31,254,123,103,244,249, 76,186, 47,228,251,202, - 85,171,180, 96,126, 91,172,116, 82,236,238, 37,254,219,162,136,212,193,118,210, 71, 79,253, 6,110,221,184, 43, 6, 7,195, 78, - 5,121,214,176,215, 22,100,126, 10,250,143, 33,175,127, 14,251,220,215,144,227, 17,206, 11, 76, 9,185, 6, 61, 10,243, 29,187, - 48,178,231,144, 91,143,163, 29,252,232,106, 27, 69,237, 42,195, 85,138, 46,253,181,236, 79,148, 23, 94,200,237,212,176, 82, 89, -207,141,115,236,146,115,130,131, 26,215,207,141,235,247, 27,135,191,240, 59,225,181,239,131,250,183,105,255,205,175,115,255,203, -207,185,251,129,196,125,136,245, 54, 81, 38, 3, 46,183,198,206,163,189, 15,229,171,216,183,111,225,214,168,207, 23,214, 83,229, - 14,225,188, 6,253, 45,118,179, 73, 96,158,247,245,212,164, 67, 38,250,228,154,130,108,226, 33, 35,137, 13,130, 68, 4, 68, 28, -212,161, 44, 86,119, 52,103,210, 56,133, 75,132,252, 20,131, 99,114,172,235,117,232, 25, 68,161,149,184,103,186, 90,222,224, 62, -188,197,139, 33,147, 97,211,236, 31,206,148,193, 20, 61,133,143,176, 21,106, 43, 36,102,144,138,152,211,197, 74, 13,161, 79, 60, -137,143,215, 74, 89, 45,242,220, 91, 20,141, 22, 22, 59, 11, 62,133, 23, 46,107, 59,155,194,146,132,227, 98, 39, 40, 90, 18,106, -171,155,109,104, 23,110,218, 6,157,234,249,237,210, 31, 32,205, 59,118,149,202, 18,226, 50, 34,184,166, 90,115,239,127, 51,154, -181,173,251,222,233,109,238, 65,151,104, 40, 52,200, 90, 41, 50,213, 43, 66, 49, 99,138,208,154, 42,158,147,254, 40, 68, 66, 55, - 24,143, 66, 76,123, 14,245,253,125,147,109, 59, 93,163, 43, 94,204,191, 99,141,226,118, 97,233,165,179,225, 29, 38,212,243,229, -109,244, 85,119,220,170, 25, 90, 11,154,178, 71,211, 70, 87,219, 66,112, 88, 91,159,138,250, 29, 91, 91,163,152, 79, 14, 90, 95, - 67, 12,225, 54,109, 40,132, 98, 70, 13, 79,188,150,178,117,181,103,132, 84, 11,211, 52,123, 23, 26, 64, 22,217,152,239, 35, 25, -225,178, 88,239, 98,187,189, 32,136,109, 81, 50,151,177,170, 23,249,114, 50, 28, 57,118, 70,133, 13,107,215, 20, 35,242, 50,116, -187, 35, 17, 80,251,103,170,238,169,239, 19,177,141,170, 22,211,201, 89,132, 73,149,220, 29, 75,235, 66, 41, 43,143, 83,246, 64, - 33, 77,155, 48, 17,221,179, 70, 69, 98,234, 17,171,146, 20,130,183,165, 53, 78,203, 25, 13,203, 97, 75,142, 76,255, 88,186,172, -202,142,243,147,135, 0, 30,217, 14, 9, 61, 21,110, 43,200, 41,111, 68, 77,215,175, 57, 79, 69,165, 33, 41, 15,127,198,175,121, - 11,143,188,196,122,101, 19, 30,251,206,218,127, 95, 88,190,115,146, 94,196, 7,191, 92, 87, 21,142, 24,190, 30,152, 16, 70,122, -177,221,155,238,169, 52,122,153,166,163,151,244, 48,185,176, 53, 92,142, 91,236, 65, 84, 94, 15,150,215,126,160, 48,115,163,125, - 50, 52, 77,152,212,232,110,186,186,216, 80,107,104, 91,209,150, 72,229, 68, 62,223,146,174, 95,113, 59, 79, 4,206, 52,204, 85, -218,205, 48, 10,218,140,165, 24, 42, 43, 55, 52,116,242,113, 72, 46,133, 66,245, 29,162, 85, 68,252,193,178,152,144, 84, 40, 84, -166,151, 11,118,154,125,156,248, 43, 11,246,249, 59,248,204, 4, 95, 58, 34,207, 3, 66,160,201, 17,141,186,147,179,236,129,208, -133, 14,153, 8,167, 67,233,227,204,228, 76,215,249,197, 61,124, 27,242, 98,232, 1,223,175,223,100,228,139, 87,164,143, 86,210, -237,202,213,234,194,154, 83, 20,102,139,170, 58, 69,231, 94,213, 17,231,171,236, 69,174,119, 24,107, 53,230, 0,162,228,201,255, - 33,187, 77,141,219,234, 2,178,115,134,250, 2,202,123, 48,127, 30,121,243, 27, 48,205,158,212,114,173,164,155,153, 41, 47,208, -224,145, 54, 78, 83,140, 10,207, 70, 75, 59,225,169,169,167,169,165,216, 97,206, 73,184, 50, 72,179,122,151,126, 61,249,232,253, -174, 96, 75, 88, 6,106,165,174,230,123, 61, 17,142,201,184,169,112,245, 27, 43,215,255,214,247, 34, 63,245,135,160,254, 93,248, -165,239,176,252,103,223,102,249,158,196,162,176,174,238,147, 79, 41, 20,173,253, 3, 63,168,135,208,144, 97,253,154,255,243, 94, -197, 14,126, 83,148,210, 40,230, 55,125,138,148, 45, 11,237,129,180, 16, 29, 70,173,213, 14, 0,103,183,118,164, 9,210,226,221, -122, 45,126, 17, 79, 73,252, 51,142,162, 30,231, 91,159,148, 76, 61, 20, 41,238,185,158, 66,146, 35,189,239,190, 33,209, 36,200, - 33, 78,104,247,133,214,247,230,243, 68,187,186, 70,152,253,128,107, 32,101,161, 74,133, 86, 60, 92, 34,207, 80,205,173, 55,161, - 83,217,227, 33,149,151,167,198,139,175,159, 41,171,145,115,127, 16,245,123,175,109,185, 1,169, 99, 69,101, 55,151, 98,227,248, - 56, 96, 53,109,223, 53,118, 85,187, 53,118,165,182,238, 34,192,109,108,169,196,129, 59,236,164,205, 11,167, 2, 55, 98,204, 41, -108,178, 81, 80,196, 60,141,108,238,252,252,120,170, 46,209,121, 37, 13, 81,108, 56, 64,102,220, 50,121, 37,198,141, 65,214, 70, - 50, 15, 28,138,109, 89, 60, 23,124,152,115, 14, 54,184, 19,121, 53,148,213,221,183,174, 91, 23, 75,216,169, 82,232,130,146, 40, -215,129, 45,182, 45,122, 90, 6, 94,157, 11,165, 22, 51,164,214, 16, 11,123, 33,209, 13,124,101,219,107,233, 98,186, 66,172,238, - 34,205,178, 62,200,133, 87,131, 41, 5, 25, 48,246,253,165,249,207,152,187,176,170, 85,178,121, 76,117, 63, 20, 16,116, 53,213, -208, 22, 89,123,144,189,185, 79, 5,182, 67,224, 69,124,237,174, 81,223,145,166, 18, 62,243,113, 29, 40,157,155, 18, 94,255,189, - 32, 84,187,204, 87,235, 5, 49,117,141, 85,242,155,171, 95, 82,125,197,210, 35,193, 15, 41,115, 61, 31,152,166,137, 69,132,181, - 84, 82, 51,174,231,153, 73,117, 32,245,133,117, 46,234,193,214,188,118, 33, 95,252,251,100, 80, 83, 98,137,157,186,104, 66,163, - 8,167,160,196,245, 28,143,113,207,190, 43,229,189,187, 74,219, 97, 45,242,220,219, 30,236,226, 3,183, 70,211,208,141,116,209, -185, 78,238,226,194,168, 45,212,199,107, 25,178,212,195,198,217,239, 75, 42, 86,195, 21, 54,101,242,116,240,162, 46,221, 99, 25, - 93,250, 88, 84,115,156, 3,251,169, 96,227,229,110,233, 51, 67,118,174, 61, 0,250,199,131,163,143,242,253,130,244, 11,127, 31, - 89,200,198,148, 47, 33,154,146,160,206, 73, 31,247, 7,227, 84,106, 65,114, 70,167,201, 71,167, 33, 96,240,177,125, 35,203,180, - 37, 89,229,186,144,150, 19, 58, 77, 33,250,240,130,190,134,247, 55, 77, 71, 82,169,148,213, 56, 47,149, 99,134,156, 39,214,101, -197, 20,180, 86, 39,204,217, 46, 5,170,166, 20,171,126, 48,123,185, 96,167,234, 47,248,195,130,188, 91,224,179, 71,248,129, 43, -244,155, 39,236,219,133,118,181,146,238, 61,220, 99, 29, 68, 37,109, 96, 70,111,105,193, 67,144, 70, 1,172, 68, 26,215,189,113, -144,123,184,111,228,217,208,171, 87,225, 21,133,215, 51,250,197, 35,233,101,161, 45,149,235,211, 26,116,171, 62,234,222, 39, 41, - 83,160, 93, 79, 65,249,202,189,195,244,160, 58,146,121, 50,216,156,118, 50,154,157, 27,246,172, 33,183, 6,207, 43, 60,186, 7, -249, 22,200, 91,240,228,245, 8, 66, 89,163,147, 20,178,206,232, 79, 28,121,242,141, 59,206, 31, 22, 22, 51, 7,158,196,107,104, -178,239,232,102, 53, 30,101,229, 38,195,181, 24,249,241,132,190, 53,123,165,127, 81,220,227, 31, 48,161, 13, 35, 43,238,150, 56, - 34,220,124, 99,229,234,159,252, 20,250,167,254, 69,168, 95,129,167,191,193,250,175,125,149,245,181,198,250, 88, 40, 75,140, 89, -213, 34,159, 28,242, 44,232, 49, 35,175, 39,143,185, 77, 25,234,219,216,203, 2,183,130, 61, 50,135,251,100,183,202,117,228,173, -245,135, 11, 46, 96,156,122,104, 81,236, 24, 58,201,184,143,157, 36, 41, 51, 70,142,208,140,102, 30,216,162,215, 26,137,107, 70, -214,240,143, 7,171, 65, 82,140,190, 38,233,150,129, 56,208,164, 93,169, 98, 65,144, 58,227, 91,229, 99,114, 61,246, 60,251, 53, - 88, 22,228,182,248,228,100, 58, 96,156,225,254, 76, 59, 36, 40, 46, 18,213,161, 19, 18,141, 71,238, 82,188,152,171,112,152, 92, -136,216, 12,114,147,144,234, 4, 9, 43, 86, 60,151, 15, 95,183,224,136, 64,233,194, 67,149,205,122,227,173,243, 8, 81,209, 45, -106,150, 80,206,203, 64, 50,171,190,163,218, 82,186,174, 98, 61,116, 29, 98,189,206,166, 80,243, 85,207, 78,147,219,131, 89, 52, -108,115, 41, 32, 87,130,241, 72,140,163,134,157, 13,120, 36,198, 85,242,209,252, 83,217, 61,237,247, 1,156,186, 53, 47,236,247, -225, 99,239,212,198, 98, 18, 49,165, 18, 65, 41,225,194,136,231, 91,147, 68, 82,229, 17,112, 85,205, 25,236,209,173,237,132,224, - 40,120, 98, 44,120,104,136, 84, 65,226, 73,219, 6,149,187,197,201,167, 99,181,183, 92,141, 78, 66, 27, 60,222,143, 82,226,234, -112,160, 73,226,108,141,218, 92,135, 82,204,208,214,200,234,150,224, 28, 66,197,132,175, 19,155,213,173, 67, 77,193, 23,175,173, -109,220,117, 25,236,102, 15, 49,176,250,192,189,173, 97,173,234,148, 61, 25,208,182, 91,212,234, 32,163,223,119,242,151, 60,127, - 17,225,144,156,213,222, 15, 7,205,204, 41,125,182,103, 6,136,193,181, 40,143,230, 3,215,199,153, 98,110, 11, 43,117,197,172, -113, 94,171,167,204,137, 79,129,114, 82, 74,206,254, 51,154, 81,117,159, 73,244,235,184,198,122, 55,139,135,191,156,154, 91,203, -146, 42,150,220,121, 69, 78, 46,196,142, 52,209,206, 16,222,210,215,182, 32, 50,221, 14,161, 61,144,193,194,217,225,159, 19, 33, -248,219,237,141, 93, 4, 87,171,255, 76,119, 65, 52,184, 8,180, 29,184, 39,157,114,152,103,242, 97,118, 74,160, 88, 88, 87,122, -250,146, 74,248, 95,141, 36,251,120, 96,191,184, 2,201, 23, 71, 53, 13,244,100,139,236,114,122,135, 30,194,168,141,248,164, 67, - 18,141,236,169, 64,187, 27,113, 23,120, 73, 87,253,234,238, 99, 86, 12, 41, 11, 36, 69, 15, 71, 36,103, 39,206,181,182,137,175, - 84,253, 20, 53,165,196,148, 5,105,103,100,173, 52,157, 41,129,237,236, 76,102, 13, 63, 87,170, 43,181, 44,156, 16,174,167, 22, -239,185,251, 4,125,132,216,237, 62,221, 67, 89, 68,169,119, 13,121, 94, 92,149,254,116, 69,190,181,192, 77, 48,203,191,255, 26, -121,122,130, 37, 35,199, 66, 90, 27, 97,123,220,160, 16, 18,113,134,102,251,158,189,217, 16, 9, 41,134, 85,113,255,239,217,200, - 47, 78,208, 26,249, 58,161, 63,250,200,237, 87,111, 29,200, 31,172,216,217, 35, 67,231,165, 58, 73,106,208, 70, 72, 4,136, 28, - 38, 31, 91,175,129,146, 76,120,129,186, 74,177, 3,236, 93,123, 63,168, 95,137, 63,245,238, 11,188,200,216,203,132, 76,207,189, - 21,205,175,130,156, 65,110,247,157,204,191,252, 26,250,227,143, 56,252, 59,223, 68,191,245,130, 44, 70,202,205, 87, 32, 98, 17, -239, 27,254,226, 4,215,185,241, 24, 99, 62, 78,164,207,207,240,218,236, 77,221, 51,224,189,234,106,163,190, 14,154,225,170,130, -170, 49,127,171, 49,191,117,133,254,231,127, 20,236, 67, 40, 95,165,254,153, 95,163,220,159, 56,125,175,112, 90, 59, 10,221, 59, -144,131,250,168, 54, 29, 18,250, 74, 70,222,200, 94,212,173,193,253, 61, 60, 51,120,182,208,158, 47,212,151,197, 21,237,177,255, -206,225, 97,238,158,230,156,136,247,165,200, 33,102,165,159,196,186,188,241, 56,225,180, 24,118, 10,171,207,148,134,104,225,160, -100,217,126, 51,115,136, 49,252, 41,204,248,115, 66, 87,131,165, 33, 57,193,245,140,149,105,131,247, 52,245, 17, 29,107,129,219, - 6,215,205, 11,181,202,255, 75,215,187,198,218,150,101,247, 93,191, 49,230, 92,107,239,125,206,185,239,186,245,174,174,174,114, - 87,187, 95,238,216,198,118, 28, 36, 68, 94, 8, 41, 33, 65, 68, 40, 49, 8,137, 15, 17,144, 8,129,136,248, 18, 66, 4,124, 32, - 10,124,228, 67,132, 0, 5, 41, 34, 18,137, 18, 18, 57, 74, 8, 81,162, 32,199,177, 99, 76,251, 17,219,221,233,118, 63,171,186, -222,117,235,190,206, 99,239,189,214,154,115,240, 97,140,185,214, 58,213,198, 82,169,219,213,247,158,199,222,123,205, 57, 30,255, -255,239,143,217,132, 92, 29, 66,104,174,238,161, 47, 70, 74,134, 78, 26,100,171,224, 11, 4,154,204, 45,116,186, 36,194,133,237, -180,145,227, 28,227,108, 51, 19, 93,215, 99,223, 48, 36,123, 70, 68, 93, 44, 98, 81, 16,215, 54, 41,105,207,127,112,251,179,250, -207,165,113, 96,167,168,228, 45, 70,224,187, 16,176, 53, 36,114, 31, 45,253, 28,247,218, 20,228,213, 24,196,187,251,109, 53, 54, - 24,155,152,225,102, 51,127, 47,155, 67,193, 55, 28,108,146,143,201,235,136,175,106, 90,202, 92,187,200, 87,148,179, 41, 38, 19, - 37,136,110, 53,110, 39, 93,197,225, 74,179,147, 69,150,249,221, 84,216, 35, 12,243, 9,167,179,127,123, 46, 98, 48,174,106, 97, - 50,119,113,136, 38,191,116,155,128,173,117,210,234, 40,235, 36, 53, 16,178,161,188,143,247,225, 68,133, 27,253, 22, 82,102, 31, - 10,247,100, 70,175, 9, 83,165,212, 8,171,210, 37, 58,203,163, 3, 92, 40,214, 4,120, 77,185,174,162,113, 54,213, 89, 39,114, -141, 24,247,137,139,220, 86, 24,216, 18,107, 27,189, 6,230, 89,121,188,171,204,208, 33, 93,197,250,182,198,177, 71, 56, 73,137, - 77,191,225, 40,194, 52, 77,115,119, 95,205,102, 17,117, 1, 78, 68,184,185,221,176,219,245, 20,131,171, 50,113,113, 56, 80,198, - 66,210,134, 28,110, 59,231, 74, 53,245, 53, 13,194,104, 21, 43, 50,147, 78, 97,137, 52,157, 67, 90, 36, 99,253,134, 50,142, 62, - 49,233, 58, 76,149,161, 20,108, 58,206,238,134,182, 14,152, 87,198, 49,189,105, 59,255,164,134,106,142,149,156,107,138,106,153, -144, 41,244, 69,184,189,206,112,215, 86,109,191,115, 78,212,113,188,238,156, 90, 79,211, 53,185, 29,188,235,125,239,110,134, 78, - 35,185,209,110,146, 88,252, 48, 13,251,186,188, 41,105, 22,207,173, 2, 88,108, 81,175, 54,118,132, 10,171,172,216, 54,198, 95, -109, 90,196,171,108, 23, 4,233,108, 99, 19,107,187,188, 37, 36, 97,238, 98,194,139,167, 81,226,217,112,240,175,189, 57,129,148, - 17, 70,143,112, 77, 41,236, 41, 70,103, 5,173, 6, 82,220,246, 33, 27,175, 74,169,241,245, 12,246, 7,216, 95,160, 86, 48, 77, - 28, 20,100,156, 56,209, 26,118, 17, 39, 48,165,198,171,196,211,142, 42, 49,206, 54, 72, 79,134, 24,147, 42,245, 27, 71,244,165, -141, 43,213, 63,181, 65,223,222, 98, 99,161,142, 19,249, 48,146, 71, 99,140,162,168,169,207,215,226,145, 89,197, 26, 7, 76,198, -119,144,213,252, 98,207, 90,217, 61, 60,194,215, 47,232,118,130,124,118, 7, 39, 9,121,109, 67, 26, 38,236, 56,209, 31, 11, 35, - 49,102, 15, 98,157,197,195,211,169,199, 52, 86, 60, 16,166,226,108,155, 77,110, 41,110,174, 36,146,236,163,127,233,241,194, 33, -197, 50,113, 12,227,116,154, 32,221,129,238, 4,248,216, 47,127,128, 95, 61,192, 47, 92,113,124,115,160,244,126, 66,246,147,143, -242,187,184,212, 53,116, 19,189,192, 89,129, 93,175,164,155, 29,122,167, 71, 78, 51,100,144, 27, 9,249,209, 45,250, 0,236,109, -239, 76, 21, 79, 53,211,143, 42,221,101,162,251,235, 63, 1,105, 15,229,155,212,255,249,251, 28,126,233, 49, 23,175, 43, 23, 71, - 31,167,150, 54,161,104,187,251, 4,218,169, 83,240,158,237,252, 84,183, 61,118, 81,224,195, 3,245,205, 3,211, 59,123,142, 79, - 39,246,189, 95, 66,225, 6, 35,169,197, 78, 47,190,102,167,232,205,206, 33, 49,182, 36,136, 72, 9, 91,209,228,221,187, 24, 88, -175,115, 39, 47,185,241,130, 99, 15,110,235,232, 92, 9, 79,120,109,202, 32,215,139,140,130,222,190, 9, 63,114, 11, 6,165,126, -235, 10, 27, 14, 78, 80,196,224,120, 5,135, 1,203,201,139,220,228, 11,111,187, 26, 40, 67,133,109,239,232,200, 18, 62, 58,131, -100, 19,211,116,221,127,155,128,105,138, 52,198,134,100,166, 6, 79,123, 57,112,167,249, 32, 95,248,218, 9, 15,238,105,235, 54, - 31, 41,250,225, 45, 17, 67,170,248, 33,183, 22,221,106,251,194,169, 93,226,204, 77, 67, 75, 60,219, 38,143,178, 77, 10,155,176, -137,165, 86, 8,151, 74,103,117,158, 62, 72,117,161,220,214, 99, 3,226,185,181,217,249,215,244, 13, 38, 53,104,150,139,157,237, - 18,175,165, 26,188,133, 85, 62, 56,234,249, 16,230,179, 15,199,235,134,160,175, 29,178, 85,220,254,155, 76, 24,129, 93, 82,238, - 3, 15, 98,234,209, 37, 15,185, 26,163,123,254,100,146,217,100,149, 99,153,232, 85, 81, 73,116, 98,177,178, 75, 76,181,206,235, -201,169,250,153, 80, 26,247, 82,124, 34,209, 73, 98, 82,229,106, 26, 25,166,137,222,224,164,235,208,156, 29, 37,145, 36,194,184, -116,241,130,199, 51,178,209, 68, 73,142, 10, 46,120, 1,208, 70,176,134,206,226,214,235, 29, 98,109, 50,102,111,220, 86,184,227, - 58, 47,102,214,177,202,205, 41, 16,103,122,156, 73,149,235,107,215,132,115,218,181,239,184, 52,152,166, 17,177, 58,143,248, 83, - 43,136,128, 83, 21,238,108, 54,156,156,156,112,196,216, 15, 19,231,227,145, 50,142, 97,135, 91,241, 87, 26, 15,164,184,214, 67, - 83,132,126,155,145, 34, 12, 5, 19,114, 78, 46,198,171,222,201,214,184,179,186,156,200, 57,163, 57,177,159, 38,234,126,152,195, -142, 70, 98, 12, 82, 0, 0, 32, 0, 73, 68, 65, 84,100, 61,177,142,238, 60,229, 20,223, 35, 68,109,154,130, 0, 89,252, 66, 87, -161,142, 81,148,118,201, 87, 33, 17, 6,227, 90, 52,241,206, 39,172,214, 51,223, 97, 94,109, 11,218,117,104,234,144,228, 36, 61, -139, 17,143,249, 61, 26,129, 12,113,161,187,197,173,141, 82,108,222,165,251, 47,111,115, 50,206,236,213, 8,218, 92, 90,177,198, -175,133, 74,173,197,117,171,218,205,137, 89, 30,163,144, 84,220,163, 45,159, 64,206,174,162, 25,197, 19, 38,252,191,143, 7,191, -156,251, 29, 41,119,179,192, 45,165, 52, 71,238,121, 84, 93, 98, 40, 19,133, 35,208, 35,177,208,116, 64,254, 68, 46,197, 83,209, -106, 97,154, 38, 46,199,209,173, 75, 86,232,196, 40,105,237,173,176, 25, 5, 89, 13,166, 82,232,175, 10,182, 29,253, 34,255,184, - 98,223, 72,200, 23,207,252, 20,121,227, 12,189, 24,168,135, 14,221, 78, 1, 62,241,241,102,147, 20,213,232,210,235, 10, 29,219, -130, 23,166,128, 79,148,160, 17, 13,225,191,188,245,209, 21,124, 85,232, 78, 4,249,212, 9, 60,211,161,251, 13,250,100,162,187, - 42,236,246, 19, 99,136,230,202,234, 61, 81,241,105, 65, 19,109,137,192, 73,246,142,170,101,147,159,116,208, 63,151, 73,187, 4, -123,195,158, 76, 88, 82,100,175,112, 72, 80, 50,108,134, 88,153,220, 3,253, 62,236, 70,143,140,253,213,115,234,229,196,208, 85, -232, 96,115,244, 2, 33,137,103,133,111,213, 65, 33, 93,251,172,117, 74,186,223,147, 94,219, 33, 63,116,226,254,244,139, 10,187, -138,222,239, 96, 55, 81,190,191, 28,190,250,212,208,183, 10,253, 95,124, 13, 94,126, 17,134,223,134,175,124,204,241, 47,189,199, -229, 11,194, 83,131, 97, 50,134, 41, 54,124,137,217,146,101,120,112,137,220,202,112,214, 33,155,228,183,255,177,194,199, 3,245, -225,192,244,112,100,175,206, 21, 47,171, 24,211, 28,192,152, 90,133,205, 70, 72, 55,178,239,223, 6,107, 33,210,126,116,180,185, -105,245, 86,207,250,152, 67,237,146, 87,104,166,158,112,150, 13,180, 32, 99,228,131,155, 3,101,100, 20,164, 38,140, 66,213, 4, -121,139,228, 45,242,133,219,240,233, 29,124,237, 17,114, 12,242,119, 49, 24,143,179, 87, 78,108, 5, 81,221, 79,110,253,236, 58, -167, 87,237, 27,133,202,144,105,154, 45,140,204,211, 52,127,230, 58, 13, 57,148, 22,116,114,177, 85,242,164, 24,223, 97,202, 90, -229, 28,227,230, 16,177, 57,110, 88, 22, 16, 77,219,237,199, 65,221, 5,230, 54,205,200,100,175,152, 70,241,237,180, 0, 82,204, - 99,109, 81,122, 42,167,169,210,155,119, 57, 89,133,190,198,184, 51,198,201,106,190, 71,239,108, 97, 34, 52,199, 9, 26,137,120, -106, 43, 86,108, 3, 37, 41, 83,177, 25,161, 60, 69,177, 50,196, 20,111,190,104, 37,113, 72,137,130,172,228,164, 50, 59,128,150, -151,161,169,194, 23, 38,185,161,220,204,194,157, 82,157,172, 40,145,135,209, 32, 56,226,239,117,155,110,182,250,106, 50,159, 86, -172, 87,154, 35, 30,229,123, 52,207, 80, 47, 33, 22,172, 43,127,122, 1,134, 90,217, 79, 19,157, 21, 54,185, 39,165,124,221, 78, - 53,131,197, 90,231, 93, 99, 21, 36,228,148,221,243, 95, 67, 46, 87, 22,176, 87, 35,141, 54, 16,139,217,114, 46,175, 19,211,248, - 4,179,192, 86, 75,121,227, 19, 57,186,171,228,187,101,223,238,121,231,169,203,238,131, 95,173, 87, 45,206,221,214,160,108, 85, -185,209,247,244,253,142,139,105,226,106,154,152,202,228,116,183,150,146,214,242,215, 87,191,179,198, 24,159, 82,189,240, 22, 13, -202,160,206,113,164, 54, 67,149,108,229, 76,114, 96,205, 4,179,230, 67, 86, 48, 47,211,180,248,243,163,186, 45,181,132, 30, 34, - 45,235,138, 0,218,248, 42, 73,208,212,161, 93,231,133,218, 52,185, 69, 47,231,248,125,149, 58,121, 46, 59,215, 0, 84,113,161, -119,157,107, 13, 34,166,181, 80,103,222, 74,150,192, 87, 58,136, 36,199, 51, 16,192,144,160, 57,181,156, 88, 89, 91, 22,164,117, -210,139,162,213,154, 78, 82,100,137,212, 91,147,122,140, 25,153,233, 85,185, 95,228,206, 24,110,227,169, 37,115,220, 43,240, 69, -149,223, 10, 16, 49, 96, 60,186,122,180,219, 32,217,129, 50, 93, 74, 33,126, 80, 38,212,195, 7, 74,129,114, 9,226, 57,185,146, -178,123,177, 49, 87,130, 6,129,173,214,137, 90, 43,135,201, 15,146, 19,117,161, 84,153,194, 75, 58,115,152,226,124, 16,168,211, -132,158, 39,108,116, 89,182,253, 11, 69, 62,123,234,106,181,187, 9,121,225, 4,189, 26,169,251,145,124, 53,145,165, 48,182,137, - 67,120,114,219,254,219,194,233,178,142, 34,156, 9, 82, 85,226,242, 53,108,130, 59,239, 94,162, 95, 85,242, 89,130,231, 54,200, -243, 27,210,147,138, 93, 76,228,177,176, 25, 11, 99, 8, 52, 90, 70,114,139,222,148,128,151,109, 49,118, 59, 65,122, 33, 63,246, -110,160, 59, 83,244, 70, 66, 78, 19, 92,196,110,247,178,192, 69,129,167, 19,118, 43, 33,155, 61,228,167,192, 13,255, 66,201, 96, -107,112, 35,118, 67,131,119, 76, 57,138,177, 28,126,245, 19, 96,115,166,200,221,140,156, 40, 88, 38,223,233,209, 31, 62,129,231, - 59,159,109, 94, 84,236,219, 71,234,135, 71,170, 76, 62,134,142, 0, 21,222, 44,244,191,247, 30,250,199,222,128,195,155,240,232, -192,240,103,222, 97,184, 47,140,119, 18,245,202, 69,143,174, 19,104,192,155, 80,218, 91, 66,183, 29,242, 92, 7, 55, 60, 97,201, - 46, 39, 24, 10,118, 94,195, 15,236,227, 17, 53, 15,186,105, 62,254, 17, 97,168,222, 1,230,248, 25, 37,132, 17, 94,176, 46,237, -174,133,220, 94,178, 46, 97, 14,130,143, 67,170, 11, 39, 92,121,175, 81,164, 86, 82,205,232,233, 22,254,216, 11,254, 26,252,181, - 39, 72, 45,216,118, 3,247, 51,182,221,195,215,174,176, 55, 71,108,179, 65,108, 32, 93, 14, 62,109, 32,251,154,104,147,225, 94, -239, 54, 68, 5,170,162, 71, 79, 94,180,134,163,148, 58, 91, 28,115,245, 75,168,117, 76, 62,154,140, 67,170,113,133, 67,189,222, -114,213,211, 42, 6, 85, 34,202, 19,107, 44, 31,187,198,165,104,149,112,167,174,153,192, 92,132, 54,177, 32,217,124, 12, 95, 60, - 57,204,140, 94,161,163,178,203,198,137, 25,189, 88,232,100, 42,105,178, 57, 18,182,171,204,154, 4, 77,126,137,203,182,141,249, -252, 61, 52,109, 56,218,216, 21, 92, 78,112, 48,198,193, 24,173, 54, 66, 39, 67,248,212, 75, 60,103, 87, 6, 7, 83,174, 52, 81, - 77,200,237, 54, 88, 97, 79,155,248,169,185,127,170,197, 68, 35,132,114,168,114,196,232, 49,238,102,227,114,132, 75, 81,178, 86, -166,178,116, 90,110,255,108, 81,164,110, 87,115, 81, 86, 9,237,146,206,112,152,169,165,167,205,177,157, 45,242,211, 47,222, 81, -148, 82, 38,183,239,229,206, 99, 65,215,128, 48, 91, 58,234, 34, 11,156,162, 70,115,213,139, 96, 17,100, 66, 89,244, 85,173, 67, - 87,105,132,137, 5, 94, 51,195,195, 68, 87,138,246,197,143,110, 43,118,189,179, 11,236,218,212,246,147,220,246,134, 85,157,170, -133,240,122,217,119,183,180,201, 12,108, 83,162,203,153,162,153,115, 43,236,199, 1,105,226,202,217, 42,108,139, 18,223, 22, 4, -250,218,251,222, 52, 26,196, 5, 43,171,253,125,219,217,183, 66,189,121,196,169, 49,117,233,250, 85,120,139,251,230,153, 3, 86, -154,138, 95,230,132, 57, 23,171,118, 94, 96,148,202, 38, 37, 58,221,206,130,200,105, 28, 40,165,248,179, 92, 11,168,250,125, 84, -166,216,213,199, 94, 62,185, 18,223,125,227,205, 38, 61, 49,141, 35,101,114, 81,172,133,181,114,166, 33,229, 80, 69,206, 56,213, -230,121, 14,165,110, 83,232,206,113,111, 49, 64,153,247, 42, 81,249,172, 7, 76,178,234,216,219,161,226, 74,209, 22,137, 56,167, -179,207,204,248,197,202,182, 88, 30, 48,255, 59,218, 2,235,235,228,221,138,129,110,149,156, 55,164,228, 7,246, 84, 43,227, 56, - 96,157, 7,223,215,241,136,217, 49,126,164, 62, 58, 27,255, 32,187, 98,126, 36, 89, 13, 5,100, 88, 96,170,209,213, 66,166, 50, -181,204,160,216,145,212, 16,205,236,199,194,166,236, 73, 99,134, 83,168,211, 17,249,246, 21,242,229, 19,120,111,132,151, 54,232, -199, 61,118,121, 68,247,137,124,152, 72,161,130,100, 78,253, 89,108, 42,165, 46,108,225,107, 49, 58,141,126, 36,158, 46,149, 71, - 35,189,123,133,124, 51,147, 78, 4, 78, 59,244, 83, 27,242,121,161,150,194,201, 71,133,146,124, 95,105,173, 0, 97, 41,168, 54, -163,113,114, 91, 73, 47,119,176,201,232,217, 72,125, 80,208, 93,242, 67, 82, 4,185, 25,149,107, 50,120, 92,145,179, 2,119,138, - 19, 54, 78, 30, 67,221,185,120,107, 10,185,240,165,161, 7, 71, 24, 38,169,140, 42, 36, 42, 39, 25, 78,179,120,177,112,183, 39, - 61,223, 33,197,105, 7,114,175,131, 27, 25,134,248, 4, 13, 30,179,106, 67,161,166,226,118,207, 78,168,111, 87,186,215,110,208, -253,165,207,195,241, 28, 46, 6,234,127,248, 38,165, 76,112,187, 35, 87, 69, 58, 63,168,164, 84,180,214,153,148,183,153,140,116, - 75,209, 23, 58,120,182,119, 66, 95,173,126,154, 31, 10,236,253,123, 73, 31, 58, 53,112,236,108, 13,113,147,152,211,208,162, 72, -234, 70,159, 44,117, 40,253,105,162, 30, 42,146,234,117, 74, 86,246,238, 55, 50, 61,253, 54,220,184,216, 65,102,242, 12, 72,238, -161,219,193,139,183,224,245, 23,224,159, 63, 66,166,228, 10,248,103, 43,246,170, 97, 39,138,188,237,251, 53, 59, 76,144,139,175, - 60,162,210, 21, 83,172, 83, 56, 53,184,161,112,186,243, 61,252,211, 3,105, 16,236, 32, 14,223, 48,168,154, 72,181,132, 47,220, -174, 81, 31,101,197, 19,104, 71,159,202,146,106,214,148,224, 22,241,157,115, 50,151, 44, 97, 46,237, 83,157,212, 45, 99,205,250, -213,148,218,199,226, 57, 7, 41, 45, 7,110,159, 96, 23,174,134,173,193,137, 86,250, 90,232,173,178,105,221,109, 76, 20,146,170, - 11, 14,183,201,157, 0,219, 16, 27,206, 4, 35,159, 81,203,177, 98, 79, 39,120, 50, 49, 94, 85,142, 67,229, 88,224, 74, 96,180, - 37,139,189, 21,211,163,193, 30,229, 42,176,169, 73,213, 83, 45,219,142,117,150,123, 89,136,192,154, 45,207, 60,101, 77,117, 53, -176, 55,143, 16, 16,225,166, 8,119,181, 50, 33, 84, 81, 58,113,212,113,138,253,249, 36, 30, 34,229,144,150,130, 21,167,185,169, - 36, 84,109, 41, 78, 85,209, 90,231,233,145,138,239,132,107, 49,122, 21,186,228, 23,107,142,152, 81, 85,117,133,124,248,224,137, - 51, 83, 26,146,148, 21,136,170, 17,228,204, 47,253,172,194, 72,195, 34, 54, 94,191,175, 63, 77,212,145,215, 86,127, 64, 74,194, -117,211,219,181, 0,151,181,224,100, 33,136, 6,124, 74,163, 96,152, 39,150,203,184,191,157,133,105, 30,205, 43,170,221,236,245, - 31,135, 8, 55,177, 69,127,211,172,105,242,131,230,179,101,119,222,194,127, 44,144,171, 45,241,115,149,133, 94,106,101, 42,197, - 31,225, 6,146,105, 59,253,190, 99, 76,202,116, 28,194,206,162, 75, 60, 50, 66,210, 24,191,207,150,209, 64,218,154, 83, 30,114, -151, 57,212,202,120,181,103, 26, 71,191, 7,106,197,198, 33,166,193, 29,101, 26, 34, 90, 85, 80,241,221,185, 38,127,111,253, 18, - 77,212, 50, 57,199,190, 70,151, 94,252,147,153, 9,155, 73, 10,149,184,136, 43,127,173,145,191, 84, 2,189, 26,151,130,206,193, -216,177,167,105,241,172,109, 76, 35,243, 88,121,237, 57, 71,150, 74,183,141,161,116,133, 14,154,185,207, 51,140, 98,153,240,203, -106,151,183,142, 90,148, 50,130, 36,180, 78,174,168,239,182, 76,213,152, 38,183, 2,204,222,222, 90, 60, 98, 85, 20,155, 92,241, - 36,145,189,158, 39,131, 50, 33, 86, 73, 41,194, 1,202,196, 97,172, 94,120, 40,228, 18,225,133, 77, 19,148, 18,135, 82, 41,166, -212,108,236, 14,131,167, 21,221, 76,212,175, 94,145,222,216,121,107,122, 41,200, 43, 59,228, 98, 64, 46, 71,186, 99,242, 7, 91, -130,240, 22,192,142,186, 60, 67,115, 23, 33, 1, 25,145,186,160, 37, 90, 19,116,149,133,221,213,132,126,231, 10, 57, 83,244,135, - 21,110,103,228,141, 45,121, 63, 98,151,133,211,203, 17,203, 45,213, 43,124,234,201, 19,164, 54, 9,244,153, 14,189,215,185,215, -103,183, 65,243,136, 13,206,112,145,157, 34,219,132, 29, 98,199,123,172,240,164,132,167,100, 3,117,128,242,158,127,160,115,246, -101,228,105, 70,255,232, 13,182,191,126,201,254, 55, 39, 14, 81,180,157,221, 16,210,203, 61,122,163, 35,221,238,144,187, 91,111, -137, 30, 84,164,207, 1,106,136,209,223,227, 56,140,183,113,201,236, 5,222,129, 60,109,232,255,242,103,137,136, 37,234,127,249, - 38,211,119,174,232, 62,123, 66,255,217,158,124, 20,158,126,247, 10,100,244, 11, 55,246,158, 59,131,126,147, 72,119, 55,232,203, - 61,220,237, 97, 11,118, 89,124, 63,241,120,164, 62, 25,176, 99,133,228,233, 98, 0,150,161,143,145,171, 69, 17, 46, 57,176,161, - 8,118, 5,247,222,232,217,124, 97,199,254,231,159, 80,167, 64,228,138, 63, 43,154, 19,100,245,142, 61,133,176,235,170,169,177, -212,211,224,250,140,229, 30,235, 51,246,209,132,252,247,223,130,243, 17,187,161,216,231,123,184,215,193,243, 59,120,167, 82, 47, - 46,224,252,232,109,180,134,242,177,165,170, 5, 85,197,206,179,155,254,115,245, 64,163,222,176,152, 6,200, 20,203, 98,117,165, -151,172, 58, 45,141,164, 53,109, 34,190, 40,100,218,122, 72, 89, 58,217, 18, 49,158, 35,194,168,161,208,229,122, 28,172, 70,151, -172,226, 23,250,184, 2, 91,101, 93,254, 96, 39,198, 38, 9,155,208, 62,156, 88,229, 84, 10, 39,165,210, 71, 66,216, 76,224,234, - 19,178, 75, 62,225,185,145,144, 27,177,210,216, 5,252,189, 55,108, 50,120,107,194,222, 29,168, 79, 38,134, 67,225,105, 49, 46, -204, 47,243,171,234,255, 84, 96, 23,215,180,138,112, 18, 15,245, 52, 45,250,161,106, 50,243, 52, 52,110, 11,155, 67,170, 36,138, -238,184,238,213,173, 81,173, 64,119, 21,188,139,207,182, 34,220, 87,184, 50, 99,164,250,235, 28, 13,129, 91,148,108,190,100, 85, -132, 73,112, 76,179,249,233,155,227,210, 81, 81,191,228,235,146,227,222,137, 3,107, 54, 97, 71,107,194, 38, 51,119, 36, 76,248, -160,107, 95, 10,105, 26,233,187, 46, 84,248,118, 77,212,217, 4,104,196,165,110,113,224, 78, 97,205,146,153,201, 31,246, 61,145, -134,110,153,187,241,202, 15, 78, 99,249,129,156,116,215, 95, 88,216,185, 18,171,188, 1, 91,220, 24, 51, 78,103, 21, 22,211,183, -194, 73, 96,180,137,132, 50, 74,165,150, 50,143,217,181,202,170, 63,151,235, 13,101,184,186,108, 21,243, 75, 8,149, 83,245, 34, -162,125, 30,108,165,254,207, 81, 80,185,112,145, 69,204, 29,147,156, 34, 19, 86,167, 57,132,172,169,215, 83,140,197, 91,164,146, -198,228, 36,171,159, 7, 19,194,112, 28, 92,128,215, 30,154,176,155,146,242,226,227,207,157,127,254,115, 10,248, 90, 66,179,199, -131, 79,199, 1,155, 70,127,207, 91, 80, 68,220,179,158,114, 24,135,145, 69, 58,140, 71, 58, 58,105, 74, 98, 12,175, 43,171,219, - 92,193, 53, 81, 93,243,237,198, 11, 53, 67,246, 35, 86,206,116, 5,176, 97,149, 4,183, 6,246,155,255, 12, 57,118,100,109, 60, -178,192, 8,108,222,193,164, 32, 90,165,248,185, 5,163,150, 49, 2, 69, 90, 32,125, 69,166,227, 76, 88,210, 90,150,111,222, 76, -217, 5, 7,203,120, 2, 68, 76,218,108,222,221,141, 82,103, 21, 62, 1, 32, 27,195, 83, 97,146,232,204,144, 58,209,245,160, 99, - 65,143, 19,232,145,250,115, 79,208, 63,116, 23,158, 94,193, 89,135, 62,183,193,158,140,164, 99,161,191, 58, 50,168,112,108,187, -205,182,227,250,132,143,125,102, 82,196,135,176,173, 8,179,186,170,248, 28,208, 15,247,240, 53,200, 55, 21,253,244, 9,114,191, - 35,253,240, 14,187, 42,216, 59,149,147,171, 9, 73,194, 73, 32,162,114,245, 67, 32,223, 75,190,183, 22,133,167,174,182,150,109, -116,136, 17,106, 36, 2,210,139,251,122,106,129,190,243,150,166, 4, 98,178, 14,222,161,159, 36,152, 20,126, 87, 15, 63,117, 74, -250,202,185, 71,135, 70,151, 55, 94, 26,185,130, 62,147,145,179,141,163, 73,159, 3, 78, 59, 55,127,111,212, 47,219,247, 15,158, - 15,222,131,157,155, 7, 56, 95, 26,242, 64,216,252,229,215,224,246, 22,142, 21,251,251,239, 51,252,210, 83,242,167,119,228,127, -231, 89,248, 55, 63,207,238,255,250, 22,219,111,126,207, 39, 18, 82,233, 58,255,157,183, 34,116, 55, 18,233,165, 13,188,184, 69, -110, 6,159,255,220,253,239, 60, 41,216,197,132,237,189,186, 50, 53,196,148, 62, 53, 97,186, 95,244,150,108, 86,246, 14,230, 25, -227,251,247, 6,134,119,221,144,222,249, 0, 8,233,196, 81,175,125,246,223, 83, 98, 60, 60, 40,212, 30, 54,209, 41,245, 57,212, -226,142,166,179,113,240, 23,252,133,140,125,241, 20, 94,238,225,214, 41, 60, 29,224,205, 71,240,120,239, 0,154,182,147, 55,139, -156,231,234,221,251,113,114,150,192,137,139, 41,204, 12,142,145,112, 87, 66, 45, 63, 57, 39,160, 61,116,205,102,152,231, 85, 87, -179,246, 48, 91,217, 36, 69,112, 73,105, 25,218, 50, 71,107,106,203,176, 15,241,171,204,193, 28, 1, 80, 10, 65,237,166,105,112, - 48,138, 46, 0,155, 77,130,157, 85,122, 42, 39,165,112,130,171,221, 19,226, 36,189,118,153,223,202,200,115, 25,158, 81,228, 86, -176, 88,123,223,254, 48, 26,246,208,224,205, 1,190, 53, 80, 62, 24,184, 58, 20, 30, 2, 79,170, 3, 87, 46,205, 56,196, 20,126, -108,207, 89, 82,182, 34, 76,193,165, 79,209, 29, 78,215,206,167,166, 16,111,231,154,204, 59,230, 54, 50, 47, 1, 58, 73, 22,218, - 11,149, 25, 12, 83,112,209,220,137,192, 93, 17,246, 38,179,232,109,161, 44, 74,232,150,150,166,129,152, 18,106,173,212, 44, 36, -171,228,232,146, 81, 91, 49,213,101,209, 14,181, 38,167, 77, 18, 67,200, 38,225, 24,200, 41,209,137, 50, 97,241,191,217,181, 0, - 46, 2, 62, 67,235, 68,213,139,207,162,182,226,187, 47, 9,154,105,165, 22,175,181, 46, 17, 50,171, 81,177,201,239, 20,204,210, -104,106,139,162,254, 90,216, 78,243,115,179,172, 33,179, 38, 36,137,163,130,131,148, 39, 34,140,165, 46, 23,250, 39,114,217,215, -223, 91, 90,134,192,234,207, 53, 71,189, 6,136, 72,107,197,212,139,154,186, 74,224,211,176,158,205,162,184,249,103, 12, 17,109, -151,168, 99, 13,101,241,114,169,207,150,182, 6,163,176,133, 89,128,122, 46,130, 85,135,164,213,185,120, 82,180,235,145,174,167, -212, 66,210, 76, 74, 46,128,149,118, 17,168,227,131,203,225,128, 77, 83, 36,254, 69,113,223,118,238, 34,100,139,209, 80,169, 1, -123, 41, 94, 37,117,234, 30,186,214,105,119, 73,219, 86,197,243,150,227,135,112, 16,240,212,244,114, 94, 17,181,238, 91, 29, 9, -219,120,186,106, 62,146,101,221,109,135,247,212,253,196,238,159,108,255,158, 21, 85, 46,107, 27,217,217, 50,234,176, 16, 64, 37, -165, 76, 19,101,216, 35,221, 54,118,105,163,239,213, 52,207, 98, 0,207,151, 14, 73,159,116, 80, 70,176,137, 46, 57, 40,191,148, - 33, 0, 12, 54,231, 82, 79,213,149,174,197,188, 97, 45, 53,188,221,201, 75,210, 99,245, 81, 99, 46, 21, 61,140,176,203,216,135, -123,248,104,128,151,119,240,141, 61,114,239, 4,125,118, 4, 70,186,177,208, 29, 10,189, 44, 34,157, 57,189, 96,101, 29, 97,242, -110,103,253,137,173, 97,169, 27, 90, 65, 96,194,157,119,246,200,111,248, 30, 92,158,221, 32,207,246,228,207,237, 96, 52,228,163, - 61, 93,173,206, 11, 6,236, 10,100, 43,164,103, 59,127,253,223, 45,243, 2, 95,182,138,188,164,158, 66,119,238,193, 0,114, 51, - 33,183,179, 99,182, 0,246, 96,147,249,133,165,119, 96,247,216, 97,231,207,103,248,205, 11,120,255, 67,202, 55,247, 88, 54,202, - 16, 98,164, 17,234,247, 39, 84, 38,236,108, 64,110,119,200,235, 59,248,236,206, 47,160,168,224,108,244,184, 79, 94,234,144,239, - 87,228,201, 4, 95, 55,242,127,246, 2,124,241, 25, 56, 31,176,255,247,125, 14,127,225, 29,236,126, 70,191,176,133, 63,248, 18, - 92, 12,140,255,231, 3,135,148,244, 48,142,142,144, 61, 21,232, 79, 18,122,127,135,126,106, 7,119, 59, 56,203,161, 10,244,177, -187, 61, 29,177,125, 13, 48,132, 5,170,209, 72, 49, 47, 86,133,148,205, 21,170,157, 98,147,177,153,194,223,186,119, 21,117,218, - 40,218,139, 23, 69,189,248,244,161,207, 72,151, 80, 50,169,116,158,180,119, 67, 60,119, 62,197,129, 90, 28, 17, 41,150,144,103, -182,240,194, 6,123,101, 11,247, 54,200, 78,252,178,254,214, 83,120,116,128,174, 66,111,212, 41,194,129,178, 32, 83,197,246,174, -106, 55, 4,174, 6,159,202, 84,111,209,172, 84, 10,149,105,117,101, 91,169,254, 92,233,178, 63,151, 25,146,210, 84,110, 97, 95, -139,145,186, 7,100,248,243,137,185,247,190, 68,102, 58,218,226, 87,151,231,181, 29,120,173,123,203,210,164,169, 65,229, 83, 99, -107,213, 49,191,165,114,106,198, 46, 59, 96, 68, 52,185,149,111,151,144,251, 29,242, 74,134, 79,101,184,105,193,123,141, 31,234, - 80,225,253,130,253,214,128,125,123,160, 60, 30,185,220, 23, 30,152,241,200,101, 15,222,149,135, 61,173, 90,195, 89,235,162, 82, - 14,193,207, 80,195, 42, 23,254, 97, 11,220,177,152,143,176,107, 16,189, 90, 22,252,250,154, 26,173,101,168, 11, 59,243, 61,186, - 69,248, 77,193,139,111, 5, 54, 42,156, 90, 98, 84, 95, 3, 24, 45,252, 69, 81,173,140,101, 90, 40,154, 40, 69,234,188,211,157, - 68,230,102,166, 9,227, 82, 28,140,170, 50,251,157,139,234,188,251,183, 88,137,102,220, 14,151, 2, 57, 58, 89,120,223,109,105, -167, 91,138, 96, 13, 40, 75,155, 26,116,113,177,215,182,150,156,247,226,178,140,185,227, 18,171,149,165,163,255, 68, 94,186,173, - 98, 91, 85,210, 2, 35, 90, 69, 66,219,130,123,156, 47,233, 36,206,112,183,184,192, 75,208, 1, 69, 18,147,249, 51,107,115,144, -205,226,180, 90, 3, 90,180, 17,215,104,201,127,139,219,164, 89,183, 85, 21,117, 91, 87, 56, 11,162,128,137,104,111,230,100,205, - 40,120, 99,223,239,171,204, 20, 32, 52,115,125,215,204,221,158,131, 16,102, 65,120,139,220, 85, 73,241,247,253, 65,209,200,155, -149,216,151, 23,195,207, 94, 85, 82,246,188, 6, 11,253, 67,173,149, 50,140,254, 53,115,166, 78, 83, 76, 75,234, 42, 44,206,200, - 37, 46,117, 68, 80,243,110, 54,169, 99, 23,243, 60, 54,243, 11,221,218, 14,124,101, 79,149, 85,133,104, 44, 17,138, 18, 35,245, -198,166,109,221,118, 35, 25,249, 7,210, 47,174,142,240,255, 6,251, 90,114,176,125,103, 40,194, 53,164, 77, 64,108, 28, 2,144, -146, 98,184,117,195,198,176,187,229,157,255, 18,101,136, 49,142,181,156, 69,183,190,168, 91, 21,132, 9, 43,230,223, 59, 65,169, - 66, 77,254,230, 54,226,218,241, 8, 23, 19,212, 28,168, 73,129, 13, 5,180,167,152,143,210, 71,107, 49,140, 2,163,239, 60,235, -207, 63, 70,255,232,125,120, 33,195,247, 38,228,217, 13, 92,140,232,105, 97, 51, 78,140,147, 19,182,138,254, 78,214, 54, 79, 13, - 74,182,140, 68,155, 99, 96,148,101, 28,106, 49,210,186,245,214, 21,178, 17,210, 79, 10,114,179,131,151,183,228,131,191,150, 42, - 19,245, 48,145,206,139,191,127,247, 50,122, 47,183, 40, 35,183,145,245,130,220, 76,110, 97,219, 23,175,254, 46,194,163,156,197, -133, 88, 27, 89, 90, 54, 49,176, 27, 94,249,109,222,133, 47,108,225,231,207,169,239,236, 49,171,116,251,194,174, 86,183,180,103, -153, 81, 78,114, 55, 68, 37, 99,208,134,212,145,168, 54, 24, 92, 21,167,167,221, 21,120,166, 67,126,126, 32,253,225, 59,232,191, -253, 18,156, 31,224,131,115,246,127,238,109,134,155, 5,238,119,116,119, 13,249,197,119, 25,254,214, 19, 46, 63,184, 32,109, 11, -194, 68,234,220,171,156, 59, 37,221,234, 72, 47,237,224,197, 30,185,157, 32,157,225, 6,166, 10, 15, 39,236,131,129,122,238,241, -105, 18, 99,123,201,130,156,168,163,151, 53, 98,116,147,179,252, 91,214,164,181, 92, 0,109,234,246, 60, 79,128,164, 79, 72,159, -145, 41,163,251, 30, 94, 61,133, 63,246, 34,188,187, 71,254,206,199,112, 3, 76,139,219, 92,110,119,200,167,122,120,105, 3,253, - 14,145,201,129, 67, 71,224,235, 23,240,230, 1, 58, 67,212, 99,104,209, 58,167,251, 89, 68,131, 89, 54, 56, 19,108, 76, 48, 77, -126, 48, 23, 11, 91,153,215, 47, 85,108, 6, 19, 73, 89, 2,132,214, 86, 47, 13, 17,150, 7, 82, 44,161, 29, 50, 45, 98,170,150, -161, 93,139,135,228,156,152,115,251,109,171, 60, 25, 61, 0,166,206, 17,155, 66, 63,119, 97,174, 84,223,137,145,205,232,171,179, - 3, 54, 93,116,227, 57, 33, 93, 70,111, 37,127, 61,190,160,240, 98,242,105,205,104,208, 69,139,189, 7,222,169,216,175, 12,216, - 55, 14,148, 71, 3, 87, 67,225, 67,131,119,128, 39,109, 63, 85,151,226,184,160, 51, 57,172,161,146, 83, 76, 26,146,194,161,250, -101,222,197, 78,250, 72,140, 22,211, 10,230, 47,173,107,111,140,109,157,247,182, 38,194, 33, 10, 6,204,216, 97,215,252,236, 41, -254,220, 86, 92, 59,128,250, 62,127,170, 54,251,151, 83, 8,122, 45, 4,113,109,171,146,107, 33, 39, 79,252,234,197,129, 53, 14, -147,177,136,183, 14,122,158,180,203,221,226,156, 93, 64, 21,235,168,227, 74, 93,159,210, 43, 38, 72,200,186, 66, 48, 89, 98,202, -210,194, 78,174, 57,155,214,209,168,179,170,126,161,211,124,210,174,167, 43, 40, 77,155,114,204, 65, 72,107,117,252,108,199, 18, -122, 77,104, 86,166,226, 42,114,157,131,116, 52,222,146, 37, 76, 71, 87,169,159,203, 42,168,217,209,100,165,196, 95, 46,255,164, - 66, 78, 77,156, 39, 51, 32,166,173,152,234, 42, 31, 65, 85,231,157,185, 89, 89,105,171,124,215,158,115,246, 53, 76, 78, 46,112, - 4,186,156, 33,103,198,105,140, 70,215, 39, 45,174, 78,111,154, 4,185,246, 90,182, 76,248, 50, 28, 61,199, 93,148,113,156, 24, -142,199, 57, 82,188,148,137, 58, 77,115,218,165, 77,211, 53, 4,241,172,141,227, 90, 12,170, 63,208, 27,117, 95,179,243,129,151, -168, 71, 89,237, 97, 18,130, 78,227, 42,169, 42,198, 42, 43,187, 86, 90,193,253,155,114,147,153,145, 28,197,195, 60,138, 55, 71, -178, 18, 59,164,248,160,165,213,135, 69,172, 85,212, 45,102, 85, 65,210, 66, 60, 42, 5,134, 3,104, 70,180,199,202, 56,239,210, -125,102,228,227,114,145,142,206, 38,170,133,130, 49, 9, 41, 11,221, 84, 93, 4,167, 78, 64, 61, 31,220, 34,117, 12, 28,212,105, - 32, 79, 83,112,187,173,122, 14,251,100,133, 50, 85, 63,172, 81,172,102,100, 28,177,175, 60, 65,126,223, 61,120, 90,145,143, 38, -244,185, 45, 28, 70,186,195, 64,127, 89, 24, 5, 6,177,136,226, 92,176,139,141,192, 85,108,141,218,181,107,174, 16,137,240,140, -243, 44,164,253,196,205,111, 95,193,153,146,126,228,204,197, 96,111,156,144,206, 18,242,222,145,250, 80,169, 54, 33,157,160,207, -119,232, 46,218,243,187,218,192, 0,200, 29,193,158, 26, 54, 86,232,139,199,119, 62, 42,216, 78,209, 19,129, 59,217,125,105,147, - 57,243,125,243, 49,112, 6, 39, 27,248,148,193,239, 59,129, 95,157,144, 42,236,222,133, 77, 41, 62,182,238,133,244,122, 66,118, -134,108, 99, 15,170, 5, 30, 76, 46,238,186,211,195,126,116, 37,250, 69,241, 66,227, 59, 35,250,165, 83,244,207,188, 22,240,155, -129,225, 79,125,151, 3, 19,251,103, 51,106,198,241, 55, 47,201,191,116, 69, 46, 35,249,212, 11,210, 82,220, 55,218,137,144,182, -153,244,236, 6,121,165,135,103,179, 11,200,234, 9,240,216,223,243,125,133, 98,200, 86,208,211,212,160,176, 62,177, 72, 26, 59, -113,153,217,186,218, 39,183,250,152,239,220, 37,105,116,253,241,217, 74,206,120,214,146,225,216, 35,187,130,188, 54,194,143,157, -195,115,223,133,116,132,159, 25,131,207, 16,211,142,231,182,112,231, 5,247,122, 93, 61,134,203, 91,238, 52,248,245,167,240,207, -158, 98,251, 35,232,136, 93, 14,212, 67,137, 46,186,186, 54, 39, 69,199, 99,134,102, 79, 17,145,179,228, 35,105, 41,200,224,221, -118,138,176,115,139, 92,251,166, 82, 78,234, 97, 38,109, 45,169,107,113, 83, 84,151, 57, 78,101, 7, 24, 5, 80, 38,102,239, 61, -194,253, 62,113,251,191,120, 1,123,103,224,251,255,227,135, 92,198,100,201, 98,237,223,114,197,251,208, 55,228,166,137,233,179, - 79, 55,250, 30,217,101,244, 94, 15, 95,204,240,133, 4,207, 69,202,161,212,224,135, 86,159, 20,125,187, 96,255,244,136,125,109, -207,244,240,200,213, 88,120, 32,240,145, 9, 31, 1, 23, 53, 34,139,195,173,179, 19,137, 61,180,255, 74, 35, 11, 11, 62,205,222, -123, 97, 34,197,142,186,178, 9, 5,124, 11,159,146, 85, 67,226,137,141,203, 69,213,180, 72,109,236,123,136, 21,229, 54, 0, 75, - 67,216, 82,197,218, 42,194,245, 3,110, 91, 21,246, 8, 99,117, 27, 83, 82,165, 79, 57, 40,130, 53,136,143,144,172, 9,223,210, -194, 59,111,209,169,159, 24, 57,167,182,155,101,161,119,206, 58, 8, 51,142,102, 28,235,132, 20,167,203,169,164,121,181,103,171, -150, 76,126, 32,198,117,233,112,203, 44,238,189,238, 53,215, 8,173, 17,179,107, 87,122, 3,149,201, 44, 36,180, 31,184,208, 63, -121, 39,100, 81,247,113, 87,155,119,246,142, 1,150,101,154, 18,255, 62,175,130,115,218,123, 97, 13, 5,187, 66,220,182,213, 68, - 19, 29,118,177,159,174,226,154,153,180,122, 77,231, 46, 93, 3,115, 19,159,247,246,171,173,247,245,170, 74,146,206, 99,189, 53, -251,164, 47,116, 38, 41,231,160, 37, 70,212,238, 10,197, 46,230, 63,199, 84, 74, 4,184,120, 16,203, 20, 83, 20, 19,160, 76,140, -227, 24, 25,240,190,139,182,208,180,216, 60,145, 89,154, 62,105,200, 91, 21,178, 56, 46, 42,118, 72,254,224,122, 85, 36,116,129, - 1,107,223, 56,233,122, 81,226,187, 52,139, 93, 55,186, 84, 91,179, 9, 49,142,202, 82, 87,190, 62,245,175, 19,134,156, 85,252, -234,178,151,107,187,140,217, 98,186, 66, 8,154, 53,177, 74,162,180, 89, 98,163,182, 80,145,209,117,185,218,157, 69,252, 96,137, -241, 96, 19,165, 20,146, 9, 88, 70, 74,241, 3, 81,179, 79, 9,178, 3,186, 46, 38,184, 60,194, 16,120, 87, 34, 55,187,148, 74, -205, 62,166, 76,211,132,100, 65, 45,251, 79,168, 17,124, 79,124, 8, 78, 18,242,120,132,183, 14,240,198, 41,236, 7,228,208, 35, -183, 55,164,171,194,118,184,100, 28, 35,121, 41, 86, 12,195, 39,196,162,182,210,117, 92, 11,193, 41, 94,120,136,194,161, 24, 23, - 42,116,151, 19,187,111, 92,162,183, 19,242,185, 27,112, 43, 47, 36,190,206, 17,169,220, 84,116,167,126, 2, 25,126, 73, 39,247, -255,114, 20,236,162, 80,175,138,135,169,236,131,154,181, 55,120, 65,225,182,194,141,222,253,235,143, 65,110, 63,129,211,201,119, - 17, 93,129,159, 56, 67,198,129,244,124,239,135,224,113,164,252,220, 30,123,234, 35,254,250,107, 3,233,142,192,191,183,131, 91, - 27,151,241,183, 10,169,138, 91,231, 30, 86,248,229, 9,121,189, 71,255,252, 15,121,145,182, 63, 50,253,119,223,167,158, 15,232, -179, 14, 34, 58, 28, 11,114, 89, 56, 21, 33,159,248,129, 89,139,239,238,169,130, 72, 66,251,140,222,222,192,253, 62,148,252,119, -160, 30,177, 97,242, 11, 29, 67,238, 37,100,215,147,164, 58,154,182, 4,152, 72,213,209,173, 57, 4, 90,157,193, 86,231,100, 36, -114,236, 78, 34,115,211, 16,100, 76,112,165,240, 76, 65,126,252, 17,188,190,131,103,159,135,221,179,144, 94,131, 87,110,194, 75, -226, 43, 31, 20,210,109,232,182,192,235,192, 57,116,191, 0,242,219,240,181, 75,236, 23, 31, 98, 79, 15, 14,154,153, 70, 31,167, - 31, 29, 79, 60, 8, 30, 26, 83,150,241, 56, 21, 78,122,216,245,161,141,184,153,224, 10,244, 98,241, 13,231,100,243, 7,202,204, -199,240,141, 30,183,160, 58, 27,167,223,230, 56,213, 28,155,130,174, 50,143,170, 37, 40,182,218, 65,253,198,145,253, 47, 94, 32, - 98,108,179, 69, 30,144, 79,153, 54,209,145,247,169,229, 96,119,190,150, 56,235,144, 91, 61, 60, 47,240,147, 25, 94, 79,240,140, - 11,131,168,145, 59, 80,213, 89, 2,239, 21,248,133, 9,251,197, 11,166,247,143, 92,150,145,135, 10, 31, 36,225,178,192, 57,112, - 48,135, 52,109,114, 98,241,228, 64,103, 70,149, 58,139,180, 90,163,160,225, 5, 79, 49,145,155, 16,182, 73,185, 97,198,121,129, - 99,156,109,218, 46,238,192,128, 74,220, 96, 75, 40,211, 50, 46, 54, 17,174,226, 24,220, 90,116,221, 24,135,213,110, 55,137,178, -177, 58,167,107, 77, 85, 40,181,210, 25,244,169, 35,145, 16,117,239,191, 52, 43,214, 60, 74,110,103,175,206,158,118, 93, 34,133, - 98, 77,233, 14, 13,247,205,123, 87,111,230,103,216,222, 42,135,113,164,175,149,148, 59,191,104,155, 66,190,214,200,247, 94,243, - 69,150,139,176,196,101,154,227, 83, 82,100,249,243,218, 32, 52,178,104, 50,218,103, 41, 53,129,218, 15,156,225, 92,211,112,180, - 75, 57,171, 99,145,215,145,174, 26, 49,188,104,186,126,161,207,220,249, 69,155,213, 46,245,209,150, 48,157, 6, 65, 75,226, 2, -214,164,201, 95, 75,241,187,166,214,128, 77, 69,154,226,188,158,136,117, 64,109,130,230, 90,103, 98, 65,109, 43, 4, 3, 77, 77, -189, 31, 64,169,107, 97, 43, 14, 60, 86,105,160, 30,157,253,242, 57,103, 95,103, 69,242, 98,181,234, 15,118,131, 36,197,207, 48, -103,167,183,132,182, 85,174,187,243,175,116,145, 7, 70, 68,107,214,121,100, 83,231, 11,189, 23,101,163,158,122, 83,130,152, 51, - 43,220,237, 19,113,115, 49, 70,159, 13,242,178,140, 71, 90,153,223,242,179,197,156,147,156, 98,245,208,198, 5, 18, 33, 5,109, - 7, 65, 41,136, 26, 41,118, 42,106,139, 26,114, 78,251, 74, 14,151,241,113,186,147,165, 44,128,194, 58, 1, 92, 65,248,214,117, - 93,177,213, 58, 51, 35, 85,253, 82,150, 90, 24, 74, 97, 42,198, 85, 17, 46,139, 50,212, 26,249,238, 54,103, 24, 23,188,130,172, - 5, 76, 43,185, 22, 82,246,194,101, 38,200,180, 56,205,155,201,105, 89,191,113,142, 60,211,193,231,110, 34,191,252, 8, 57,235, -144,155, 29,221,126,195,174, 28, 40, 89, 60,252,195, 66,184,220,198, 99,178, 90, 51,217, 50,106, 42,109,236,212, 64, 16, 49,149, -212, 4,250,232,136,254,198, 37,249, 76,209, 23, 78,188,114,188,179,245,255,236,131, 83,127, 47,185, 56, 78,162,109,153, 12,158, -184, 40,205,198,138,125, 20,194,177, 27, 17, 32,241,116,130,115,139,181, 66,124,240,158, 52,139,230,165,171, 53, 15, 6, 83,165, -190, 85,177,243, 2,159,205, 78,178,217, 28,224,188, 96,239, 87,100,111,212,103, 50,105,112,224, 11,131,192,125,239,130,165, 86, -172, 40,156, 11,242, 76,143,254,231,175,248, 7,230, 98,162,254,215,239, 97, 95,185, 32,255, 27,167,200, 55,143,216,187, 3,185, - 51,250, 36,244,183, 28, 96, 99,183, 4,125, 28, 32,150, 62,161,154, 72, 93,143,188,188,113, 81,222,230, 6,200, 45,168,223,241, -125,236,211, 40, 92, 38,127, 16,109, 12,133,122, 23, 98, 80,151, 21, 35,103,217,167, 11,237, 56,186, 12, 43,154,198, 85,217, 59, - 71, 94, 70,129, 50,192,231, 31,192, 31,184, 13, 47,252,105,232,254, 45,224,121,207,108,151, 46, 88,232, 65,228,171, 71,144, 3, -212,115,159,111,151,103,225,240,119,177,175,125,140,253,147,131,179,211,111,185, 19,129,171, 52, 23,118, 58, 86,210, 80, 29,130, - 17,248,210,166, 93,188,186, 18, 54,135,202,217,101,229,244, 78,135,158,184, 66, 87,198,176,128,154,204,147, 6, 49,135, 96, 88, -117,139, 25,230,132, 71,196,150,223,127, 21,201, 75,195, 22, 71,167, 94, 42,140,201,184,184, 26,185,250, 43, 31,120, 80,207,198, -216, 82,201,117,233,210,211, 54, 35, 39, 49, 5, 49, 69, 78, 50,242,106, 7, 95, 20,248,172,192,203,138,156,158, 65,218,250, 37, - 94, 47,161,142,238, 14,120, 48,193, 47,143,216, 63,186,160,188,189,231,184, 31,120,164,240,113, 39, 60,173,254, 18,141,209,193, -245, 41, 99,125,239,170,226,232, 70, 59,170, 79, 26,155,247, 56,246,235, 45,206,115, 11,140,234,191,191,171, 93,156, 5,113, 43, - 25,143, 45,128, 49, 22,135,102,195,123,198,218, 79, 67, 16,103,230, 22, 91, 68,231,177,243,227,226, 86,216, 83,140, 46, 41,163, -233, 34,100,138,127,250, 56,124,173, 10,135,201, 41,233, 83,224, 98, 27,125,111, 18, 97, 50,119,156, 44,216,209,153,160, 30,124, -124,185, 70,101,211,101,250, 76, 49,153,181, 34,237, 76,174, 86,153,226,159, 84,151,203,166, 52,113,240, 58, 88,132,101,154,193, - 58,109, 79,150,181,131,205,222,121,167,233, 89,114,166, 6, 53, 76,127,162,215,246,236,242,131, 46,179,153,125,146,219,159,181, - 31,156,225,155,224,175,197,234,252,159, 0,147, 70,213,134,169,213, 0, 0, 32, 0, 73, 68, 65, 84,219,243,216, 94,230,232,156, -229,117, 81, 34,189, 45, 37, 71,169,182,163,186,169,145, 87, 29, 58,161,189,160,121,193,215,197,155,217,181, 21,115,173,205, 29, -226,186,136, 38,244,158,181, 91,179, 15, 62,220, 9,145,116,216, 88, 46, 42,194, 38,103,106,238, 56, 76, 19,101,127, 21, 94,247, -186,160, 17, 26, 44,103, 70,168,235, 98, 9,211,104, 64, 98, 37, 33,171,220,149,156,212, 33, 48,126, 57,250,222,162,235, 28,126, -239, 31, 88, 91,184,239,114,253, 47, 55,193, 1,107, 5,109,187,212, 91,118,114, 68,166,170,168,219,227,176, 89, 37, 43,241, 48, -172,195,219,136,110, 61,215,226,187, 48,117,170,211,252, 1, 66,230,136,171, 42,110, 87,107,244,187,166,184,165, 86,106, 25, 16, -237,253,227,159, 82, 68,109, 78, 48, 77,232,102,231,220,209, 38,224,195, 56, 86,115, 6,116,129, 94, 42, 53,169, 11, 22, 98,196, -227, 85,177,131, 98,199,234,232, 83,195,133, 15,218,210,214,170,127,218,228, 52,193,105,194,246,193,227,254,229,167,200,191,122, - 7, 62,127,130,124,101, 66,238, 22,228, 80,216, 49, 81, 47, 29,242, 81,164, 37,131,213,107, 84, 62, 20,234,180, 8, 75, 52, 38, -224, 98,254,193, 98, 21, 0, 1,130,188,179,103,251,255, 64,254,145,138,222,223, 64,206,200,105, 12,244, 6,115, 92,233,189, 4, - 27, 23, 78,241,113,136,128,202,228, 2,200, 27,234,218,131, 59,138, 22,151,194,219,183, 71,228, 94,204,181,178,250,133,124,225, -151, 34,125,137,156,242, 9,180, 80,127,241, 10,121,148,144,151, 51,114, 38,212,201, 24, 62,172,164,141, 32, 54,192,207, 61, 65, -106,135,220,223,248,248, 59, 11,156, 40,242,108,143,252,161, 14,249,201, 59,112,214,123, 58,220,111, 60, 69,191, 62,160,255,238, - 61,236,203, 25,185,115,197,201,223, 59,199,198,130,126,170, 67, 94,223,192,171, 9,123,175, 80, 59,245, 58,110,147,157, 82,119, -127, 7, 47,103,184,221, 65,126, 45,218,218,163,119,233, 79,221,162,103,143,152,215, 47,162, 32, 39,177,227,109,227,244, 11,131, -239, 71, 20,236, 16, 64,147,123, 61,220,203,112,191,131,103, 50, 60,179,129,179, 11,184, 11,188,242, 71,224,230,159, 3,121, 41, - 14, 35, 69, 2, 40,106,172, 96,216,186,195,108,239,119,230,240, 45,184,250,111,224, 43,223,130,191,123, 3,121,207,224, 86, 20, -158,210,193,198, 47, 92,219, 86,247,224, 95, 78,116, 67,101, 26, 3, 90, 34,194,216, 30, 53, 19,198,201,168, 79, 99,196,218,132, -129,173, 74, 28,205, 63,224, 18, 2, 86,107,201, 26,159, 56, 72, 87, 49,202,243,129, 30, 0,163,126,170,148, 99,245,120,119, 51, -172,103,129, 13,149,184,244,118, 29,122,218, 33,157, 11, 6,229,134,194, 27, 10, 63, 90,225,211,138,220, 62,133,254, 14,216, 45, - 40, 91,183, 23,118, 31,131,156, 99, 15, 43,252,194,128,253,131, 75,234,119,174, 24, 14, 3,231, 98,124,156,133, 39,184,244,162, - 70, 55,147, 82, 34,145, 24,147,131,166,106,241,255, 49, 5,204, 42,169, 81,138, 70, 81, 94, 87, 23,137,132,146, 60,176,201, 6, - 99, 21, 87,234,139,113, 10, 92,218,178, 59,157,130,209,191,140,225,101,161,101, 70,130,155, 2, 67,169, 12,101,138,125,185,175, - 47, 83,114, 16, 22, 34,228, 16, 3,154,248,104,189, 72,165,168,139,245, 26, 60,101,136, 8,205,150,206,134, 46, 23,185,172,246, -199,204, 96,153, 6,178, 90,198,204,178, 18,167, 21, 26, 94,215, 71,225, 89,252,220,172,113,190, 90,112,171,173, 69, 89,207,231, - 78,203,244, 88,160, 50, 33, 77, 91,130, 71, 90,228,174, 45,194, 48,239, 30,211, 53,122,220,245,224, 89, 89,208,200, 43,104,143, -173, 26,198,182,178,224,154, 59,106, 65,202,216, 74,104, 87,131, 23, 48,179, 81,218, 20, 64,150, 11, 93,147,219,192, 26,114,213, - 77, 3, 41,138,159,152,254, 94, 83,175,199,253,210, 22,247,171, 95,100,206, 82,151,181,189,122,121,110, 26,174, 28,187, 94,185, - 52, 16,205,172,197,104,147, 24, 77,216, 56, 56,132,172,148,120, 31, 63, 25,128,187, 48,219,219,152,189, 70, 6,132,181, 98, 39, -214, 1,104, 34,167, 80, 26, 54, 79,122,206,201, 89,183, 86,188,203,142, 28,227, 6,167,111, 54, 54,154,146,180, 77,156,117, 5, - 21,142, 56, 57,135, 22, 52,128,194,194,149, 95,239,240,172,182,177,150,205, 74,195, 20, 44,232,218, 80,123, 44, 94,238, 22,205, -218,144,126,181, 86, 23,195,232,226,221, 53, 83,204, 70,175,108,251, 46,194,232,189,197, 80,138, 31,218,147, 43, 35,154, 69, 35, -169,144, 10, 76, 84,127,248,114,199,200, 68,157,196,163, 91,101, 17, 15,149,234, 85,254,134,234, 36,188, 36,238, 5,158,189, 24, -201, 91, 26,137, 95,228,195, 43,236, 31, 22,228, 95,123, 6,249,124, 69,127,163,192,179,133, 42,198, 73,189, 66,174,202,156,226, -116, 40, 62, 13,152,234,242,192,174,247, 67, 83, 89,141,252,108, 53,162, 7,158, 4, 30,243,254,247, 92, 48,216,253, 46,224,150, -231,243,202,253,236, 63,188, 6, 5,110,140, 11,253,227,137,250,212,187, 72,233, 4,189,149, 32, 11,178, 83,244, 52, 56,233,147, -186,244,255,129,193,157,120, 17, 46,195, 51,125,244,139,222,142, 21,158, 23,236,215, 39,236,235, 35,122,123,139, 60,231,201, 40, -195,165, 79, 59, 78,223, 26,217, 94, 8,246,156, 33, 87, 6,255,124, 66,222, 29,208, 55, 78,144,207,236,224,133,157,139,239,206, - 71,120,114,240,116,184, 63,255, 60,156, 10, 98,133,252,147, 91,244,133, 51,236,241,136,156, 41,220, 21,236,124, 96,250,222, 17, -206,139,207,137,239,246, 72,233,225,197, 14, 94, 76, 72,247, 50,112, 31,236, 55,176,195,209,131, 98,246,147, 95,108, 55, 64,246, - 41,172, 13,130,140,234,209, 96, 59,117,144,203, 11, 9, 94, 2,121,190, 67,238,168, 71,217,157, 37,231, 50,119, 29,108, 59, 36, -159,123, 64,204,201,223,132,252, 67, 96, 7,252,155,156,198,144,112,189, 59, 92,119, 60, 27,255,185,116, 15,246, 25,236, 70, 15, -191,255, 33,236,207,145,247, 11,242,254, 1,222, 29,176,144,114,219, 20,123,201, 65,177, 81,200, 17,220,225, 68, 59,239,226, 40, -201, 57, 12, 71,247,111,201,109,215, 66, 72, 17, 56,138,171,199,219, 65, 81, 2, 19, 55,185,223,203,142,129, 2,157,220,179, 63, - 35, 86,187,198,202,117,103, 12, 83, 37,111, 42,233,106,162, 55, 9, 33,159,139, 8,165,203,200, 89,143,222,200,200,221, 14, 94, -168,240, 70, 69, 62, 83, 93, 63,176,187, 7,250, 50,216, 11,174,199,168,151,160, 79, 97,251,109,216,127,136,253,218, 8,255,251, -129,250, 91, 79, 25, 46,143, 60, 81,120,148,224, 41,202,165,197,206, 92,124,245,102,125,162,144, 24,131, 6, 88,235, 98, 11,173, -225,199,238, 90,160, 71,235,192,102, 11,149,119,229, 86, 23, 36, 74,141,189,120,138, 67, 63, 71,215,213,198,224,211, 42,199,187, - 1,119, 8,251,108,173,149,169, 86, 74, 83,177,171, 50,168,114,133, 43,220,219, 4, 51,209,130, 95,252, 60, 57, 11, 86,198, 85, -236,171, 75,228, 82, 28,195,177,210,226, 74, 91, 90,187,239, 83,151,152,207, 54,181,107,151, 89, 35,200,217, 28, 44,162,115,126, -117, 70,217,197,200,119,140,179,217, 21,252, 49,250,173, 17,101,208,162,117, 87,163,110,107,251,234, 21, 77,206, 47, 70,153,109, -192,173,246,107, 54, 64, 51, 89,165,170,203,130, 9,151,117,244,248, 66,140, 55, 18, 41,186,254,250,137, 26, 83, 35,164,234, 90, -108,227,156, 75, 34,171, 8, 95,153, 47,230, 44, 74,151,148, 28,107,218, 98,117,190,115,154,160,173,113,248, 87,154,181,184,124, -101,101, 17,188, 62, 89,208, 54, 94,215, 8,253,194,174, 79,176,195,182,214,146,229,148,235,174, 16,107,247,104,236,162,199, 82, -152,198, 1,155,202,220,184, 54,123,159, 3,215, 22,225,223,124,130,212, 58,175,162,175,197,165,167, 72,226,203,186,228, 9,103, -241,127,145,196, 51,151,211,156, 90, 35,159, 24,191,200,146,161, 28,168, 88,105,114,248,168, 74, 93,108,192,188,155,202, 45,155, -121,189, 7,170,126,216,183,230,123, 86,165, 54,250, 25,209, 93, 7, 66,176,174, 94, 12, 52, 33,165, 98, 26,138,219, 98, 75,254, - 37, 62,147, 76, 12,152, 36, 76,195,122, 87,195, 2,100, 78,164,107,193, 49,105,138,208,135, 24,111, 53, 59, 72,171, 82,221,169, -224,113,130,181,217,122, 66, 76,100, 54,162, 83,136,240, 84,252, 66,200,213, 41,105, 10,182,137, 41,193,175, 63,129,187, 32, 63, -253, 44,114, 57, 34,223, 50,228,190,223,255, 39, 15,174,176,125,153,157, 1,173,198,169, 43, 38,192,114,193, 7, 56, 33, 14,150, -186,202,103,239, 12,158, 36, 72, 86,185,247,206, 21,114, 75,201,159,109, 28,222,236,106,226,171,234, 62,237,161,192, 59, 19,246, -177,143,248,228, 52,222,183,187, 29,114, 43,102, 92,247,123, 7,125, 28, 35, 21,227,213,173, 47, 86, 63,246, 17, 54, 59,247,228, -217,195, 1,182, 21,238,184, 80,171,124, 52,192,183, 5,253,169, 45,233, 86,162,255,120,226, 88, 52,154,229,130,156,184, 69, 73, - 48,236,171, 71,234, 87, 38,244,207,158,249, 7,241,209,232, 85,214, 51, 27,248,153, 31, 3,158,194,111,127,215,147,200, 78, 39, -244,139, 91,224, 20,123,162,240,193, 17,251,213, 3,188,239, 2, 59,189,211,145,158,239,224,229,206,119,180,155,231,192,222,136, -177,238, 3, 56,132,223,233, 2,120,108,200,211, 16,152, 61,215,195,171,217,157, 10,207,116,176,235,130, 5, 29, 50,234,193,124, - 18, 49, 21,255,221,199, 2,169, 64,189,194,110,191,139,124,225,207, 2,207,192,248,115,241,193,253,162, 91, 41, 63,153,147,136, - 93,199,206, 49,184,114,176,255, 79,144, 47, 30,224, 71, 0,221,196, 31, 63,135,242, 17, 82,222,134,171,127, 1, 79, 63,134,143, -223,135, 15, 62,194,158, 94,194,135, 35,246,142, 33, 79, 42,156,251,186,138,223, 43,240,211, 55,224,191,189,192,222, 44, 88,144, -241,216,182,168,173,234,130,140, 62,140,219,146,252,193, 63, 77, 46, 97,235,182,110, 49,212,248, 20,214,240,113,182,104, 54, 19, -191,244,179, 91, 30, 73,113,161,107, 8, 11, 95,234,144, 47, 41,188,106,240, 66, 65,110, 3, 55,110, 67,255, 58,232,143, 1, 47, -248,243, 57,137,175,199, 54,191, 9,245,171,240,214,199,216, 95, 27,176,255,251,130,233,225,129, 39, 76, 60,232,132,199, 8,251, -234,186,145, 42,226,199,126,206, 78,167,171, 44,155,218, 18,211,123, 91, 68,165,251,144,217,108, 88,118,211, 54, 71,207,198,152, - 27,239,134, 55,205,162, 21,193, 39, 21,241, 12,114, 81,247, 19,199,122,171,145,228,166,150, 32, 97, 48,213, 41, 18, 29,189, 88, -232, 82,162,170, 35, 71, 47,195, 37,152,163,113,232,162, 70, 42, 65,121, 20,132,211,152, 0, 28, 35,209,205,226, 28, 25,165,197, - 39,219, 34,101, 51, 16,169,215, 46, 29, 89,141,143,107,236,227,230,169,158, 56,146,184,134,251, 32,167,224,170,151, 50, 55, 86, -172,144,172,149, 5, 22,182, 14,209, 54,187,174,110, 23,214,105, 44,114,237,251,137, 74, 32,135,109,190, 64,215, 95,207,184, 62, -150,149,185, 75,142, 56,217, 38, 20, 91, 53,140,245,255,199, 40, 39,235, 78, 89,184,246,253,100,134, 38,249,138, 36,205,190,126, -153,199,243,105,245,107,148, 64,233, 74, 48, 22, 26, 66,215,102, 77,153,223, 45,147,212, 89,135, 50, 77, 5, 49,111, 2,105, 4, -185, 90,175,249,247, 85, 82,120,221,203, 60, 97,105,130,231,169, 26,195,112,164, 14, 67,228, 51,172,108,119,117, 73, 73,186,206, -240, 95, 23, 25, 50,223, 25, 77,151,160,170,228, 20, 21,109, 78,121,190,208, 83,140,143,242,250,235,124, 2, 93,170, 18,152,201, -150,139,220,162,234, 0,173, 83,112,221,151, 61,131, 4,100,161, 37, 55, 49, 91,178,196,141,255, 45,123,221,150,168,214,212, 0, -251,177,255,209, 24,125,153,102,175,174,109,106,132, 93,175, 44,219,104,205,138,243,179, 11,212, 58, 33, 37,249,215, 8,238,165, -213, 35, 73,179, 71, 75,214, 37, 80, 48,135,221, 36, 69,151,162,171,143, 81, 99,209,143,204, 25, 54,222,236,104,117,130, 86, 96, -114, 57,137, 8,183, 41, 72, 49, 49,190,177, 51,193,126,238, 9,250,220, 22,249,242, 61,116, 4,190,103,216, 29,255,218,167, 31, - 95, 81,169,243, 95,173, 6, 71, 91, 72, 8,117,165, 26, 45,174,247,155, 43,225,118,230,246,234,213,231,195, 14,242,193,184,243, -157, 75,228, 76, 73,175,135,134, 55,103,207, 90,109, 85,193, 14, 23,139, 73,134,251,234, 93,232,211, 58, 47,231,164,198,222,248, -134,122, 65,240,194,214,255,238,253,226,127,110, 35, 62, 38,255,230,232,251,241, 91, 61,250,233, 13,245, 43, 3,246,173, 9, 94, - 49,228,249,158,221,135,149,109,137, 4,184, 27, 14,102, 17,245, 5,173,124,191, 32, 63,115, 11,238,237,224,209,224, 47,228, 78, -225,254, 77,191,112, 14,111,195,221,143,225, 62,208,191, 8,249,167, 64, 7,100,247,107,216,163,131, 35,108, 79,157, 89,159, 62, -117,130,124,238, 4, 62,147,144,155, 55,193, 94, 3,185, 15,246, 43, 46,190,186, 48,120, 88, 96, 20,228, 51, 91,120,181,247, 2, -224,102, 92,226, 67,117,113,214,249,224, 58,130,171, 10, 23, 99, 24,159,109,102,237, 26, 9,217, 11,156, 61, 66,254,196,151,160, -255, 9,168, 63, 11,233, 11,144,190, 12,114,242, 59, 34, 50,103, 57, 79,189,128,242, 16,198,223,134,195,223,131,171,127, 14,199, -209,197,115,253,103, 97,247,123,225,236, 71, 97,247,101,191,120,111, 43,188,216, 76, 90, 83,132,114,142, 72,189, 4,123, 4,245, - 41,232, 99, 72, 39,192,247,225,175,254, 77,228,195,115,228,234, 42,242,110, 55,144,183,254,143,246,208,159, 46,237, 86, 29,192, - 46,144,178,135,195, 17,251,184,194, 91,192,219, 21, 62, 44, 62, 1, 25,218, 92, 53,136,116,187,166,234, 44,112, 91,224,229, 10, -159, 6, 94, 50,184, 9,108, 79,160,127, 30,242,151, 32,255, 75,144,158,245, 3,170, 28, 96, 58, 64,247, 4,228, 31,195,197,215, -176,127,120,133,253,111, 71,234,187, 87,236,199,129, 7, 73,248, 72,213, 35, 80, 43, 92, 85,191, 40, 69,124,207,108,205, 63,111, -174, 63, 73, 11, 31,116, 57, 20,227,130, 24, 34,213,173,111,209,152,178, 64,176, 8, 81, 83, 22,245, 51, 72, 22,232,158,219,139, - 82,116,114,161,201,145,121,152,232,234,246, 72, 87,163, 46,212,183, 44,206, 16,159, 86, 97, 77,197, 96, 66,231,232,217, 13,149, -141,250,247, 26, 2, 41,187, 77,126,214,106, 93,198,219,134, 56, 27, 28, 23,135,174, 47, 66,189,182,111,150,217, 10,219, 34,117, - 77,100, 86,180,139,174, 24,255, 77,241,175,138,153,135,141,232,202,119,110, 51, 8, 37, 56,246,232,204, 50, 95, 39,167,219, 39, -138,213, 70, 98, 99,181,151, 22, 89, 26,191, 38,140,187, 14,139, 93,161,101,101, 9,225, 86, 22, 21,251,156,238, 38,215, 87, 65, -178, 90, 69, 40, 77,200,184, 32,237,106, 60, 33,217,152,117, 3,105,206,118, 95,170,139,102,243, 43,198,108, 53,107, 99,255,164, -193, 77, 88,133,206,172,147,210,220,250,173, 43, 55, 82, 3,245, 84, 74,248, 73,125, 61, 29, 94,126,147,153,217,223,190,196,100, -238, 59,111,169,165, 86, 27,159,192, 63, 87, 42, 21, 82,154,153,249,213, 86, 32,231,185, 88, 10,215,152, 36, 84, 59, 82,238,200, - 77,114,191,217,116, 51,198, 85,165,144,195, 24,191,238,173, 53,164,234,201,236, 26,237, 77,108, 5,143,152, 6,239,244,105,227, - 31, 89,249, 4, 67,121,186, 94,213,173,108, 34,178,178,112, 37, 93,254,255,118,105,163,130,229,140,165,236, 47,112, 90,152,187, - 85,193,138, 82,169, 81, 93,199,200,172, 20,180, 20,114, 25,155,219,208,253,188,125,118,241, 95,169,136, 84,103, 98, 87,247,239, - 26,197, 61,164,210,242,205,109,245,102,187, 38,170, 82, 41, 90,177, 24, 36, 36, 85,116,171, 72,191,202, 80,149, 4, 79, 35,246, -242,134,131, 91,234, 95,255,128,244,167, 55,240,163,119,208, 82,169,111,181, 7,195,184,241,193,149, 19,138,146,240, 52,128,253, -199,218, 42, 73,155, 31,222,107,235,150,102, 27,143,232,207, 18,202,232,143, 54,160, 15, 43,183,127,235, 10,233,149,244, 25, 7, -123,112,171,135, 33, 67, 55,120, 44,232, 24, 48,143, 83,117, 64,203, 11,241,130,190, 95,225,142,194,153,250, 30,250,253, 10, 87, -151,158,166,118, 43,193,115,157, 75,174,159,139,247,243,209,209, 11,141, 47,111, 73,223, 60,192,169,162, 47,111,225, 83, 91,228, - 75, 3,250, 96,130,183, 39,159,146,220, 72,216,133, 98,239, 86,244, 79,222, 67,126,207,125,248,248, 16,193, 27, 46,160,226,248, - 1, 12, 95,117,255,216,157, 87, 64,254, 21,168, 63,237,225, 60,245,171,254, 75, 63, 28,224, 82,208, 91,189, 19,242,126,104, 7, -175,109,145,123, 10,242, 58,232, 75, 80, 63,242,203,115,127,132,205, 9,242,211, 59,184,165,176, 81, 31,191, 30, 10,156, 79,177, -103, 31,253,253,122, 28,246,186, 67,157,105,115,140,192,133, 33, 31, 2,151, 21,235, 14,200, 95,248, 44, 60,247, 23,221,179,159, -255, 4,232, 41,252, 14,204,233, 69,109,246, 1,140,127, 23,246,255, 0,198, 39, 48,156, 71,215, 93,225, 34,123, 80,206,243,223, - 71,238,252, 54,240, 71,224,236,247, 67,122,198, 71,245, 54, 45,125,133,244, 46,245,210, 91,192, 43,145, 51,202, 34, 3, 59,253, -227,240,218, 99, 15,167, 47, 87, 32,167, 32,103,113, 27,111, 99, 74, 16, 26, 3,187,128,241,187,112,245, 79,192,126, 5,185,253, - 33,232, 30,187, 1,188, 26,168,222, 42, 78,204,219,154, 35,210,110, 87,184, 49,132,158, 98,227, 63, 79,222,130, 62, 11,221,231, - 33,255, 36,228, 79,129,222, 92,174,128,186, 7,219,131,126, 13,166,191, 15,223,120,143,250, 63, 13,216,175,236, 25,247, 7,158, - 36,227, 65, 47, 60, 9,242,155, 43,251,149,174,239,226,130,115,124,117, 13, 33, 81,105,112, 72, 42, 57,185, 87,120,196, 60, 19, - 30,155,213,238,132, 0, 46,199,136, 59, 1, 91, 49, 54, 89, 49,201, 8,137,177,194,113,154,188,171,195,249,252, 85, 28, 0, 34, -171, 11, 67,227,119,153, 98,154,151,196,133,116, 26,170,237, 38,188,202, 77, 88, 43,115,204, 3, 5, 97, 31,159,135,147, 0,210, -244, 38, 12, 6, 23, 49, 2, 63,137, 61,237,133,153,239,214,155,165,107,181,127, 94,152,237,204, 29,246, 58,137,172, 89,162,106, -227,124,132,205,184,138,255, 35, 86,233,196, 39,119,226,109,233,210,237,175,244, 19,237, 27,213,149, 51, 98,181,225, 93, 21, 14, -173,249,209,217,253, 35,200, 53, 1,154,172,110,210,165, 52,168,215, 60,109, 77,112, 55, 95,160,216, 15, 20, 0,242,137, 11, 86, -227,194,111, 34,226,220, 20,244,234,197,154,139,184,151, 75, 93, 34,160,169,214, 74,169,133, 49, 84,255, 98,139,255, 35,169,144, - 82, 14,225, 40,139,142, 34,252,235,165,150, 80,200,175,130,107, 12, 82, 78,244,125, 79,206,137,220,229,121,229, 43,179, 71, 63, - 18,240,172,204, 83, 93,141,232,230,165,131, 15,100,111,245, 59,183,189, 95, 13, 85, 44,154, 22,188,112,107,188,204,167, 49, 41, - 39,210,166, 67, 82, 34,119, 73,217,110, 55,164, 44,104,141,144, 2, 77,193, 62, 46,238,243,156,133,109,204, 41,105, 26,242,177, -132,146,146, 6, 78,182,196,108,191, 71,202, 20, 99,148,136, 97, 76, 33,112,168,203,104,217, 52,154,194, 57,175, 60,186,119,149, - 57,242,117, 22,125, 88,165,162, 88, 74, 30, 7, 90, 42,166, 1,125,152, 21,131,193, 39,142,159,173,138,161,117,242,157,240, 84, -124, 23,170, 2,195,209, 63,132,147, 87,103,201, 10,181, 76, 14,206, 39, 4, 73, 76, 51,206, 17, 98, 77, 16,227,255,212,185,210, -190,134, 40,252, 84,253, 16,113,144,117, 14,127,173,192, 73,113,218,222,100, 46, 6,163, 96,111, 23,202, 95,125,139,244, 31,125, - 26,126,252,182,215,165,239,184, 30, 64,171,113,147, 3,245,178, 56, 38, 60,158,140,163, 57,244,100, 8, 94, 12,182,140,227, 89, - 9, 70,172, 5, 27, 84, 79,135,122,144, 32,127, 60,114,243,235, 87,200, 46,161,157, 58,158,245,102,130,220, 59, 36, 96, 95,151, -123,231,194,124, 87,252, 98,246,221,185,138,119,170, 35,126,233,215,138,189,125, 68,190, 93, 96,151,176,231, 21,121,238, 12, 94, - 59, 69, 94,216, 33, 31, 94, 82,119,134,254,112,128,180,207,122, 36,101,244,217, 4, 47, 11, 60, 59, 34, 79, 38,108, 35,112,150, -208,223,183, 67, 94, 63,131, 15, 47,189, 27,124, 55,148,246, 55, 30,194,243,103,208,253, 97,144,223, 13,124, 17,236,204, 47, 33, -121, 31,236, 39,160,252, 83,236,106,132,219, 29,122, 59,195,203, 27,244,213, 13, 60, 43,208,191, 12,188, 28, 47,222,175,129,222, - 68,238,124, 10,158,185, 2,121, 2,199, 11,236,145, 7,126,240,120,132,199,145, 68,247,168, 96,231, 5, 27, 70,191,239,142, 14, -225,225,129, 33, 15, 42,178, 73,200,231, 78,144, 63,117, 23,249,242,151,224,238,127, 12,233,243, 33,115,109,186,234,244,137, 75, -125, 0,123, 27, 14,255, 11,246,224,103,145,183, 46,176,243, 14,116, 7, 99, 7, 79, 51, 60, 10, 54,124,238,224, 92,177,215,223, - 70,244,103,125, 68,189,251, 61,208,189, 24, 23,115, 23, 66,138, 97, 37,112,107,160, 17, 93, 57,150, 51,240, 44,200,243,110, 89, - 92, 59,155,109,117,160,178,241,175,219, 63, 3,233, 21,232,222,128,252,243,176,123, 31,185,255, 16,198, 67, 44,158, 99,234,180, - 81,159,244,156,108,160,251, 12,240, 98,168,213, 95,134,242, 10,200,203,160,119,125, 36, 51,127,191,201, 39, 19,211,155, 96, 63, - 11,143,190,130,253, 31, 23,216,223,152, 40, 15,247, 92,216,196,195, 14, 30,198,168,125, 40, 62,178,164,235, 24, 45, 5,203,220, -102, 72, 14, 56,154,182,159,247,137,158,185, 46,201,123,188, 17,193,202, 34, 78, 34,216, 27,189, 72, 64,165, 92, 96, 39,157, 82, -138, 48, 77,222,169,149, 22,153,105,203, 94,121,238, 32,163,211,213,224,209,180, 81,115, 86, 31,181,175, 59,191,166, 25, 90, 70, -217,203,158,212, 48,246,209,185,159, 86,225, 44,106,102,173,198,211,234,112,171,141,192, 72,101, 95, 38, 95,157, 70, 97,161,145, -220,134,234,236, 61,111,180,178, 58,239,210, 35, 33, 44, 84,244, 22,194,230, 28, 76,247, 49, 2, 38,100,222, 93,203,156,188, 6, -215,115,222,235,138, 84,246, 59,148,167,222,169, 26,115, 26, 89,224,219,174, 21, 27, 63,168,119,151, 31,184,218,215, 93,119,138, -174, 91, 44,118,212, 65, 17, 77,235,192, 47,145, 85, 42,104,176,225,213,129, 53,224,107,160,100,174,253, 42, 2, 67, 41,243, 26, -163, 90,101,170,230,233,103, 13,218, 19,129, 46,235, 88,221, 38,134,115,213,187,119,239, 99, 45,158,132, 86,150, 53,105,179,144, - 9, 66, 29, 38,255, 89,250,126, 22,139,207,138, 1, 51,166, 90, 3,209,235, 36, 58, 82,192,162, 98,100,127,125,125, 93,231,160, -165,106,174,242,119,242, 93, 76,195, 67,227, 85,103, 65, 96,135,118, 27,239,246,173,146,187,205,134,254,244,148,178,223, 71, 46, -121,144,114,146, 5, 38,176,128,133,241, 93, 90,101,225,123,105, 69,209, 46,121,188,101,236,149, 60,141,166,206,170,120,153, 63, - 13,178,132,146,204,232,189,182,149,247,175, 55,103,236,202, 2, 87,153,213,134,104, 88, 39,194, 35,217,186,104,153, 69,246, 49, -222,119,155,193,236, 25, 47, 21,177,209, 45, 0,154,124, 12, 59,140,200,166,247, 85,253,228,157,122, 91,213,251, 7,172,186,146, -151, 69, 89, 58, 91, 51, 42,115,158,252,228,161, 80,254,160,116,145,165, 91, 88, 80,129, 13,234, 62,198,133,127,154, 97,119,196, - 30, 12,148,191,242,125,210,159,124, 21,249,242,109,127,131,222,241, 7, 33, 77,198, 45,142,110,185, 10, 53, 76, 73,144,171, 43, -201, 11,203, 36,116,109,121,107,123,174, 41, 42, 90, 45,190, 58,126,154, 97,251,224,136,124,219,119,153, 42, 2,175,158,192,173, -236, 0,238,227,232,139,190,193,224, 81,248, 36,139,186, 17,121, 8,206,251, 78,225, 86,196,124, 62,184,164,126,247,128,189, 83, -176,193,208, 47, 63, 65,126,215, 25, 60,187, 69, 94,217, 34,210, 35, 39, 9,123,127,132, 62, 33,231, 81,157, 28, 60,130,212,196, -176, 11,144,159, 56, 67,158,219,192,219, 71, 31,251,107,130, 77,129,231, 30,194,107, 2,249,223, 7,253, 67,113, 73,156, 70,226, -205, 30,228, 6,148,247, 97, 56,247, 46,227,115,157, 19,232, 94,232, 29, 92,114,186,133,250,252,210, 53,111,126, 36, 12,168,223, -133,241,125,184, 24,177, 71, 5, 30,140,240,104,194, 30,150,185, 91,175, 87,158, 71,108, 79, 11,246,110,133,135, 46, 50,212,151, -183,232,159,185,131,254,158,123,240,236, 43,208,189,228, 29,175,253, 44,156,255, 53,236,209,119,224,193, 19,120,174, 67,238,220, -133,252, 47,131,117,254, 61,247,191,130,189,243, 93,248,202, 21,252,218,142,122, 56,117,225,223,109, 3, 29,176,209,176,115, 63, -108,117,167,112,209,193,101,194,222,120, 23,121,254,111,192,254,159,193,230,115,190,151,238,223,128,252, 42,200,205, 21,181, 67, - 86,216,207,166,174, 28,227, 63,235,234, 2,255,228,241,188, 62,120, 51,164,231,225,228, 95,135,237,143, 67,121, 23,166, 15,192, - 46,221,126, 71,129,116, 3,250,155,144,111,129,190, 30,109, 60,160, 23,110, 88,239,108,245, 61,197,255, 94,189,132,250, 8,134, -127, 12,195,223,134,223,122, 23,251, 31, 10,245,171, 7, 46,167,129,135, 25, 62,238,148,167,213,152, 38, 95, 44,164,212, 65,191, -137,156,104, 67, 73,145, 65,109,115,112,133,103, 96,183,209, 54, 84,153, 72,116, 75,102,130, 45, 29,223,132,123,193,253, 92,203, - 88,206, 76, 98,140,165, 64,241,115,167,152,139, 93,205,165,212,243,206,213, 59, 50,157,169,159,197,100,241, 91, 95, 19,166, 53, -255,155,205, 35,210,165,131,149,107, 29,107,109, 10,247, 8, 92, 57,195,216, 70, 20,235,185, 9,131, 85, 54,110, 8, 9,136,158, -231,127,155,120,113, 50, 75,254, 86,137, 99,115,119,221,190,191,249,122,212,240, 66,129,153, 53,183,232,232,155, 64,120,134,150, -204,187,217,213,213,109,215, 69,100,215, 18,207, 2,168, 51, 39,191,253, 78, 68, 57, 91,186,235, 31,252, 63,157, 99,188,117,102, -194,235, 66,128,139,247,177,217,249,186, 70, 45, 85, 13, 81,100,241, 34, 45, 2, 88,142,213, 47,190,110,140,194,103,170, 46,162, -140, 66,166,129,208, 84,160, 15,122, 27,179, 7,220,155, 59, 13,150,190, 52,143,122,116,244,165, 86,191, 7,139, 93,195,225, 46, - 58, 21,159, 25,149, 90,152,166, 9, 82,231,151,171,248, 4,123,178, 74, 45,109,164,238, 77,240, 8, 28,143, 7,108,104,201,108, - 54, 23,157,182,210,172,181,119,172,154,161,165,248, 68,188,115,224,154, 76,174,230,215,148,253,125, 8, 1, 93,238, 54, 27, 44, - 5,253, 70, 12, 73,222,202, 99,101,246, 45, 90,178,101, 31,216, 36,215,226, 41, 84, 57, 41, 93, 45,241,176, 69,151,172, 75,162, - 13, 51,153, 41, 70, 54,213, 13,251,213, 42,165,122,199, 43,193,137,111,185,191, 13,229,170,115,122, 20,148,172, 94,225, 76,213, - 19,197,114, 63,143,113,102,128, 65,168,243,173, 44,161, 36,169, 20,218, 64,174, 69, 12, 82, 6, 24, 58,196,170, 11,250, 40,241, -168,232,252,115,107, 27,225,229, 32,137,133,245,133, 85, 53,222, 62,189,131,193,201,100,110,153,168, 5,114,242, 39,250,104,238, -225,110,138,197,211, 4,167,138, 29, 6,236, 27,231,240,191,190, 69,250, 15, 94,133, 47,223, 65, 53, 83,223,242,215, 39, 99,220, - 26, 15,243,244, 66,134,120,102, 90,246,115, 89, 18,172,109,245, 51,213,120, 16,199, 58, 3,254, 56, 23, 56, 25, 13,253,254, 1, -106, 66, 78, 5,185,147,224,238, 14, 78,178, 43,137,174,226, 50,191, 29,202,110, 12,246,129, 26,203, 9,187, 28,124,215,220, 9, -246,193,145,250,205, 3,118, 82,160,135,250,235, 71,248,165, 11,120,117,131,124,170, 71, 94, 76, 46, 54,123, 53, 35, 99, 14, 48, -139,193,183, 6,255,248, 92, 84,228,139, 59,228, 78,143,189,115,112,213,249, 85, 0,244,127,248, 9,188,120, 3,186,255, 10,244, - 15,196,229,213, 55,229, 72,140,161, 5,234, 55,225,248, 0,166, 12,187,206, 35, 92,159,243,177, 62,242, 67, 32, 47, 68, 33,240, - 0,244, 28,236, 91,112,120, 12, 31, 11,124, 84,144,183, 7,236,193,232,124,117, 49,234,177, 96, 15, 11,246,222,136,125, 80,144, -154,208,251, 27,210,127,122, 11,249,221,183,144, 23,206, 96,211, 65,237,224,240, 33,188,247, 13,234,191,120, 76,253,123,143,225, -235, 7,236,194,227, 31,229,134, 34,247, 19,188,252,143,252,198,233, 5,222, 83,236, 42, 83,199, 12,249,128,157, 30, 97,175, 46, -210,155,119,236,161,112,189,236,208,203,130, 78, 29, 92,244,216,167, 15,240,252, 55,145,179, 55, 97,123, 6,221,125,216,126, 22, -250, 31,135,252,162,119,251,146, 22, 3,147, 18, 35,246, 28,169, 39,233,250,168,243, 19, 6,163,235,189, 87, 1,217,122,209,144, - 94, 9, 32,122,157,243,207, 67,232, 50,227, 64,150, 80,130,109, 40, 77, 74,196, 80,118,241, 30, 29,160,188, 5,227, 95,198, 62, -252, 37,248,219, 7,236,111, 21,134, 15,175,120, 40,149,247, 54,194, 5,190, 55, 79,197, 87,128, 57,119,254,137,175,149, 74,245, - 67, 78,149, 12, 76,146,168, 9, 36,249,250,172,214,226,218, 61, 96, 44, 70,169,147,159, 33,101, 57,152, 27, 68,101, 68,153,178, -146, 52, 81,106, 97, 63, 20,178,154, 83,202, 88,180, 58, 37,197,247,142, 67, 88,100,189, 31,118,213,123,173,182, 34,139,249, 37, -209,246,231,134,163, 92, 91,145,221,118,193,237,252,171, 43,155, 96,169,198, 85, 32,101,219,197,126,150,224,188, 58,163,253, 68, -132,162,198, 80, 74, 48,230,109, 57,161, 86, 2,185, 53,239,189,174,222,235,201,184,166,188,110,231,236, 18,111, 18,201,141, 97, -251, 42,164,217,143,125, 93, 15,178,254, 94,204, 28,122,137, 11,253,218,118,221,214,187,112, 91,177,165,116, 14,198,177,133,112, -194,122,190,180, 14,252,106, 59,232,182,183, 78, 73,188,128,171, 54,171,196, 91,240,203,156, 64, 41,202, 70,124, 21, 82, 98,231, -172,234,175,121, 10,167, 66,109, 34,233,153, 96,186, 56, 17,210,252, 57,119,200, 88,177,226,220,251, 32,184,105,117,138,100, 69, -174,241,243,125, 58, 82,188,161, 11,171,113, 78,186,228, 13,168, 80, 75,241,152,232, 40,102, 38, 51,142,227,192, 52, 28,195, 54, - 29, 13,225, 28,147, 27, 39,255, 39, 8,125,213, 28,104,162, 34,142, 86,206,105,150,213,207,179, 32, 19,114,234,187,200, 19,169, -164,156,200,187, 29, 89,171, 39,142,197, 40,220,125,141,214,138, 81, 87,170, 39,175,158,196,204,125,153, 45, 47, 61, 40, 51,201, -150, 48, 24,109, 96, 26,243,164,205,106, 94,133,205, 9, 64,178,108, 97,196, 22,122,146, 52, 17, 70, 82,239,190,109,194,180,247, -170,170, 76, 88,118,248, 76,173, 37, 42,191, 28, 63, 92,248, 85, 17,196, 38,116,170,164,188,161,150,228,219,185, 58, 33,195, 33, -126,166, 18, 74, 75, 91, 60,245,197,189,242,189, 24, 35, 30,191,170, 1,115,104,108,235,130, 6,204, 33,128, 28,147, 57,210, 54, -235,210, 53,197, 7,147,205, 18, 12, 44,119, 50,246,209, 1,186, 66,253,234, 83,228,175,191,131,254,204,203,240,165, 51,164, 55, -210,119,124,172,223, 85,184,245,241, 62,188,220, 54,251, 98,143,133,120,205,155, 55,125,113, 37,180,236, 97, 86, 89,209, 37,214, -181,253, 97, 66,222,219, 35, 91, 37,223, 8, 97,216,189,141,175, 11,186, 50,123, 51,103,101,222,105,130,171,201, 67, 67, 30, 77, -240, 65,133, 23, 5,158, 73, 62, 69,120, 58, 96,155, 8, 54,153,128,223,218, 99,223,240, 16,115, 41,226, 17,174,127,248, 22,250, - 83, 55,177,179, 30,126, 8,120,119, 68, 63,123,138,221,234,176,119,246,254,195,137,250,222,246,228,145,219,158,182,127,213,199, -237,178,249,132,218,181,149,239,125, 92,234, 7,144, 91, 72,151,224,134, 32,103, 29,228, 31,243, 17,112, 25,192,190,231,151,249, -244,158, 71,118,189, 43,240,193, 4, 31,141,240,209, 64,189, 56, 82,135, 9,158, 26,246,176, 32,143,196, 73,103,127,252, 14,250, - 7,239,192, 43,103, 17, 13,171,176, 63, 96,111, 62,161,254,220, 35,166,127,112,206,240,189, 43, 31,205,111,160,222, 16,210,173, -140,116,160,147,160, 31,128,188, 55,198,231, 80,188, 88,233,253,194,177,106,240, 36, 56,248,125, 94, 70, 46, 18, 62,249,174, 96, -214, 97,181,146,174, 12,206,123,248,190, 96,119, 39,184,255, 8,185,253, 24, 78,222,130,237,255, 71,215,187,198,106,150,165,119, -125,191,103,173,181,247,251,158,107, 85, 87, 85,223,123, 60, 61,211,227, 25, 27, 15, 54, 54, 54, 25,108, 19, 18, 8, 96, 72, 72, - 36,164, 68, 10,136, 64, 72, 66, 4, 81, 34,132, 20, 69,185, 8, 72, 20, 62, 68,202, 7, 4, 9, 81, 66, 20, 43, 16, 66, 32, 22, -118,226, 27, 96, 99, 25, 12,182, 99,123,152,177,103, 60,198,115,233,238,153,158,190, 85,117,215,237,156,243, 94,246, 94,107, 61, -249,240, 60,107,239,253,158,106,143,212, 83,125,169, 58,239,109,191,123, 61,151,255,255,247,255,167,198,177,143, 71,254,217, 39, -187,200,194, 17,116,223, 0,171,143, 67,255, 50,200, 51,254, 62,118, 79,190,143,135,136,145, 73,132, 55,237,112, 14,212,182, 58, - 83, 63, 36, 47, 96,156,145, 37, 37,193, 14,244, 0,229, 17,228,127, 4, 87,255, 3,250,185,183,224,251,133,250,217, 29, 87,187, - 61,111, 39,184, 27,133, 93,101,186, 89,210,245,118,176, 86,181,239,184,107, 72,178, 66, 40,194,190,157, 53, 49,152,255, 62,118, - 12, 49, 81,115, 65, 60, 53,176, 58,241, 45, 37,247, 87,187,216, 72, 5,134,152,216, 81,185,145, 71, 11, 73,241,123, 78,144, 64, -212, 72,145, 72, 13,230, 99,206,181,113,115,195,180,175, 69,196, 89, 25, 62, 49,208, 22,254,195,148, 92,214,102, 34,205,219,220, - 68,196,180,113,177,204, 59, 80, 21,161,136,129,143,182,110,213,203,190,103, 63, 10, 80,106,160, 70, 56,166, 80, 84,184, 82,235, -238,135,146, 73,181, 90, 40, 85,179,202, 45,242,193, 85,235,181,132,243, 25,119, 59,128,117,139,112, 96,227, 10,158,237, 33, 64, -174,101,242,187, 79,179,133, 73, 11, 53,215,128,211, 21, 83, 23, 2,188, 57, 32,122, 78,145, 91,136,217,104,215,255,181, 57, 81, -219,133, 91,148, 77, 99,220, 91,214,188,197,208, 86,106,153, 31,184,221,161,218,121,146, 4, 82, 72,102,167, 84,139,180,174, 30, - 29, 94,125,223, 45, 11,101,252,196,196,247,207,177, 86, 27,203,207, 72,218,121,252, 78, 99,178,187,109, 17,130,219,254, 22,200, -238,182, 82, 14, 30,214,228,164, 63,137,209,138, 24, 85,198,156, 41,206, 60, 9,193,222,183,113, 24,166,206, 90, 26,120, 71,220, -103,169,243,185, 87,235, 92, 2, 77,218, 10,159,136, 55,212,104, 75,162, 19,183,153,167, 20,162,251,201,133,110,125, 76, 58,127, - 10,125,252,158, 37,132, 77, 21,154, 93, 60, 69,213, 32,247,206, 49, 22,172,170,201, 30, 48,144, 68, 38, 25, 78, 20, 27, 41, 77, - 52,184, 22, 54,239, 29,250, 20, 67, 55,117,189, 45, 36, 99,190,232, 68,162, 39,189,225,162, 3,235,216,170, 68,163, 22,101,143, -203, 43,217,246,141,169,237, 70, 34,168,101,221,106,181,200,173, 82, 11, 50, 14, 19, 30, 48,120,240,223,228,131, 81,243,176,167, -166,184,196,200,119,169,216, 7,152, 61, 91, 89,167, 11,192, 84,150,163,170, 5, 15, 56,204, 67, 58,177, 55,160, 89,128,206, 60, -160,251,162, 88,172,232,237,104,163,248,113,132,115,165,126,246, 33,114, 43, 33,127,224,121,228,155, 3,122, 20, 9,175, 61,166, - 70,161,139,112,243,254,142,180, 41,246,146, 4,210,104,249,208, 82, 32,143, 30, 13,233, 23, 89, 55, 97,120,125,189, 81,108,146, -158,139,146,163,165,132,213,109, 70, 95,219, 25, 39,252, 36,153,189, 41, 70,179,108, 61, 54,245,185,118,174,224,127,223,148,153, - 12, 35,250, 86, 49, 53,250, 43, 61,242,114,100,252,185,145,253,202,154,215,110,173,196, 34, 68, 41,176, 55, 77, 20,119, 43,221, -223, 28,173,113,252,228, 77,187, 48,111,218,161,207,221, 45,250,230, 8,199,150, 44, 71,205,240,209, 12, 71,255, 29,200,183, 58, -250,119,176,207,244, 16, 94,105, 59,218,242, 89,180, 70,228, 41, 87,243,223, 9, 54,158,150, 15,217,243,149, 43,208, 79,195,238, - 17,220, 15,240,134,192,251, 5, 86,142, 34,123, 48,194, 87,246,232,123,133,240, 76, 79,248,246,155,132, 63,120, 3,190,225, 24, - 78, 58,227, 38,108, 50,250,234,125,202, 79, 61,102,251, 19, 23,108,223,216, 49,230, 74, 57,129,122, 35, 80,142,226,212, 94,180, - 36,193,216, 43,253,202,109,153,110,125,145,216, 12,197,109,125, 35, 22,170,178,203,182, 7,246, 60,111, 55,247,130,100,235,252, - 70, 37,142, 5,185,136,112, 47,193, 59, 9,189, 17,224,198, 8,231, 91, 75,200,235,189, 24,238,177, 9, 75, 60,182,128,157,237, -171,176,126, 1,142,126, 51,164,151,125,133,225, 59,116,130,137,227, 24,141,104, 87,223,135,242,190,141,218,117, 99, 7,115, 88, -249,190,253, 24,194,218,121,178, 30, 15,155,206,205,107,206,173, 5,152, 83,236, 73,168,152, 48,113, 74, 85,137,214, 0, 0, 32, - 0, 73, 68, 65, 84,255, 87,224,238, 15,162, 63, 94,224,239, 66,126,251,138,251,101,228,173, 20,184, 47, 86,203, 37,223, 99,203, - 58, 81,107,245,137,154,211, 18, 3, 19, 78,115,234, 68, 69,201,165, 80,139, 97,128, 99,234, 88,117, 29,165, 51,226,158,142,197, -239, 45, 75,232, 71, 35,110, 85,114,182, 14,232, 40, 9,151,213,240,168,125,138,116, 4,114,181,100, 44,114,177,251,158, 52,111, -182, 44, 60, 83,122,144,113,113,120,128,169,219,152,102,107,152, 58, 42,183, 97,101,157, 11,104, 16, 20,236, 64, 47,254,218, 10, -138, 22,163,222,117,162, 28,185, 55,189,212,202,137, 59, 43, 55, 24,190,182,104,177,166, 35,122, 55, 39,184, 56,184, 30, 98, 16, -166,243,120,182, 16, 79,180, 79,153,253,252,209, 3, 71,144,121,172,172, 79, 56,201,213,139, 7,153,136,104, 77,207,163,194, 36, - 72,148,197,129, 57,163,191,229, 96,148, 47,173, 3,151,131,176, 56, 86,190,255,180, 18,209,116, 14,162, 70,229,211, 16,208,106, -199,249, 88,125,130, 35, 54,105, 73,193,198,209,197,155, 59, 69,167, 91,122,112, 87,150, 65,118,132, 82,148,170,217,227, 74,109, -157, 83, 23, 30,251, 24,230,233,195,236, 81,183,247,182,162,158,170,120, 61, 44,126, 30,197, 55,143,251, 80,172,216, 92,117,189, -189, 39, 46,156,110, 51,146,146,139, 33,199,181, 78,227,123,185,174, 89,240,107, 36,132, 89, 77, 62,137, 38, 39,218,221, 44,206, -108, 92, 2,149, 64, 18, 2,165, 22, 82,234, 73, 71, 39, 86, 97, 20,219, 7, 52, 75,198, 36, 16, 75,238,131,243, 71, 31,106, 37, -151,106, 95,206, 0,189,170, 69,183,166, 72,138,129, 72, 37, 77, 81,117,118,200, 83, 26,186,199,199, 31, 85, 80,169, 7,246, 6, - 22, 99,251, 16,131,141,181,101, 65, 83,242,192, 2,243,157,207,240, 3,145, 4,201, 14,175, 32,214,205,139, 58, 75, 89,138, 69, -236,169,229,231, 74, 35, 37,249,222, 81,171,113, 90,197,171,254,214,238, 6, 26,186, 85,102,107,129,255,251, 34,144,213,170,238, - 92,171, 97, 71,219,217, 83,176, 36,152,149,192, 90,109,167, 92,197,169,161, 9, 61, 90,155, 82, 62, 6,234,231,175, 8,183,223, - 67,126,251,179,200, 55, 10,172,133,208, 39,106, 23,136, 41,112,254,222,134,112, 89, 8, 98, 58, 50,196,148,190,120,218, 19,190, -163, 11,139,207,187, 49, 67, 86, 73, 89, 91,104,144, 77,164, 99,165,190,157, 9,221,222, 14,156, 19, 23, 95, 93,101,120, 35, 83, - 31,100,184,169,246,156, 95,207,104, 15,242, 82, 7, 55, 61,164,250,162, 32,223,210,193, 63,177,178,134,181, 48, 22, 24, 81,116, -132, 97,180, 26,166,127, 70, 56,189,200,132, 97,132,215, 55,222,198, 4,184,187,131,207,239,209,207,108,145,151, 87,200, 31,234, -224,198, 5,220,252, 70, 8,191,207,133,101, 23, 30,152,221, 63, 97,160,161, 60,128,242,203,166,224,191,221, 35, 47,172,224,104, - 15,229,194, 70,237,225, 4,198, 95,134,203, 7,112,127, 13, 15,170,105, 2,190,239,134,165,189,253,133,119,224,125, 37,124,252, -140,240,199,215,240,219,111,194,233,202,238,156,187,130,188,254,144,242, 11,143, 25,126,248, 49, 23,191,190,225,241, 88,184, 60, - 18,120, 42, 26,115, 96,122, 30,158, 17, 36, 86, 75, 38, 79,233, 43,105, 17, 23,172, 86,124, 33,115,210, 96, 8,205, 54,165, 7, - 52, 59, 79,191,176,235, 48,248, 1,181, 85, 66,169,200,182, 32,219, 12, 15, 83, 75, 91,178,241,248, 26,243,149, 31,251, 53,118, -126,137,220,186,128,211,135,144, 31,195,254, 49,172,191, 12,253, 43,144,110, 59,216,224,161, 29,188,245,109,216,191, 14,195,149, - 21, 80,165, 90, 17, 21,125,164, 31,130, 29,252,169,154, 5, 46,125, 7,196,223, 14,188,232, 93,122,235, 77,131, 21, 0, 53,155, - 91, 97,251,231,208, 47,255, 26,252, 47,137,250,207, 6,118,155, 29,119, 69,121, 43, 5,182, 14,110, 10,222, 1, 73,144,137,119, -221, 20,237, 97,233, 97,246, 27,107, 84,166,213,158,162,228, 98,223,200,174, 91,147, 98,178, 14,186,139,140,197,110,216,115, 55, -198,140,244,172,160,157,176, 74,129,203, 12, 67, 16,207, 22, 42,104, 41,118,159, 11, 62,221,155,212,226, 30,117,231,145,210,165, -161, 57,107, 59,216,120, 98,140, 76,163, 90,186,104,104, 82,166, 47, 50, 38,101,193, 59,173, 14, 25,217,250, 72,254, 72,140,151, -191, 14, 66,142,129,162,133,163, 86,247, 85, 27,221,182, 26,176,121,210,203,116,208,201, 19,163,240,209,133,126, 77,133, 95,151, -178, 7,108,109, 17,167,164,206,234,246, 57, 57,184, 31,107,187, 39, 30, 80,222,174, 67, 89,230, 61,120,153, 10, 3,109,137,198, - 51,244,101,209,109, 90,113,209, 80,187, 38, 96, 28,171, 33,191, 87, 33,206, 60,246,162, 20,205,182,223,246,142,186,199, 8,125, -218, 37,114, 81, 74,105,170,242, 38,101,170, 19,191, 99,116, 22,190, 44,232,112,243,218, 82,166,102, 50,132,198,100,145,137, 9, - 82,139,250,132,134,195,132,185,197, 27, 49,233,190,252,156,171, 77,251, 17,170,139, 38, 93,192,232,212,211,234,170,120,209, 37, -172,134,131,194, 76, 61,210,220,180, 96,179,181,112, 38,177,232,129,252, 80,196,192,113,164,142, 84, 74, 53,177, 91, 58,178, 23, - 50,152,226, 85,101, 6,243,182,157, 19,110, 21, 72,162,236, 75, 97,168, 58,171, 69,181, 13,108, 44,135, 56, 33,116,174, 84,149, -160, 68,204,207, 93, 99, 68,181,152, 48, 78,116,254,248,165,153,233,195,252, 3, 29, 97, 40,117, 54,237, 91,122,145,250,248,202, - 51,112,213, 58,184, 32,160,161, 35,116,130,196, 4,219,209, 46,198, 82, 76,252, 86,153, 47,220,106,129,217,177,165,165,120, 5, -179,220, 76, 77,158, 88, 89, 38,243,224,254,119,183,222, 86,200, 85, 24, 58,229,120, 83,224,225, 96,202,241,170,176,117,224,244, - 38,152, 61,234,212, 99,154,206,162, 77, 69,215,193, 82,193, 66,128, 47, 95,161,199,247,144,239,184, 13,175,156, 88,252,231,113, - 64, 58,187,193,156,197, 13,242, 56, 19, 86, 74, 26,109, 98,157, 60, 77,110, 26,251,133,153,177,191, 10,112,220, 41, 55,215,202, - 81,132,116,105,231,165,244,126, 34, 93,101,120,144, 12,163,229,222,122,189, 40,212,207, 95,152,232,233,165, 96,122,171, 71, 66, - 88, 87,219,147,191, 89,224,173, 17,190,183,163,255,151,142, 24,254,241, 21,229, 68,173,176,241,102,180, 4, 19,233,140,254,133, - 36, 96, 9, 57, 95,119,170,208,195, 10,247, 50,225, 60, 34, 87,152,234,252,197, 29,172,254,109, 59,213,202, 23, 77, 12, 23,158, -126,242,206,161, 3,148,207,192,238,158,237,127, 95, 88,217, 11,213, 8, 97, 15,241, 10,242,231,224,254, 59,240,110,178,105,200, -163, 0, 31,235,224,108, 5, 63,251, 0,126,239, 25,252,214, 99,228,153,181,137,162,134, 17,222,126,140,126,105, 67,249,193, 7, -236,126,101,195,230,114,100,119, 36, 92,222, 20,182,125,100, 91,124,127,154,231, 27, 84, 18,166,152,226,137,236,167,138, 22,153, - 50,170,139,123,138, 37, 96, 59,209, 22, 58,238,142, 15,233,197, 60,251,218,162,255,100,214,187, 69,108,210,164,106,218,129,157, - 65,111,100, 31,204,205,177,242,234,160, 11, 38,120,116, 71,129,222, 23,184,115,129,220,217,194,241, 21,228, 75, 67,176,246,183, - 77,224, 23, 86,110,146,117, 5,102, 13, 86,133, 21, 19,196, 50,110,237, 48,151,199,208, 93, 65,255,109,208,255, 81, 72,223,228, -163,252,236,217,176,109, 68,176, 54,117,251,246,111,193,213,255,140,254,202, 5,250,191,246,228, 47, 92,113, 57,236,120,167, 19, -238,138,161, 80,131, 19,219,136, 66, 9, 54,109, 91, 78,189, 90, 79,104,105, 85,243,184,177, 70,163,217,185,127,196,187, 60, 37, -103,115,162, 83,125,101, 23,163,133,201,184, 56,137,226, 55,201, 40, 12, 17,118,158, 75, 20, 5,246,165,146, 61,212, 37,250,148, -209, 10,119, 3, 91,101,135, 67,136,139,242,170,159, 22, 65,155, 19,230, 80, 86,118, 16, 12, 93, 77,149, 62,161,181, 91,239,171, - 79, 26,189,213, 79,223,236, 43,135, 73, 92,230, 81,173, 33, 38,118, 82, 9,197, 82, 29,119, 49,204, 96,148,133,194,125,210,249, - 44,159,153,204,121,240,178,160,235,181,195,182, 0, 99,173, 6,215,241,108,113,173,213,195, 89,194,194,230,182, 56,208,101,238, - 84,151, 56,107,117, 17,113, 59,100, 2,115, 86, 19,141, 90, 26,194, 92, 32,248,123,213,137, 16, 67, 7, 98, 41,101,117,114, 50, -217,189,219,168,109, 50, 29,230, 77,209, 17, 67, 36, 36,139,220, 46,101, 36,123,220, 96, 97,206,197,152,217, 42,115, 17,177, 76, -116, 91, 12, 16,102,222,160,206, 58,173,234,202,116, 14, 96, 56, 75,246,237,181,207,223,213,244,234,128,159,125, 25, 97, 15, 37, -231,197,246,171,253, 76,153,200,112,184,141,186,217,235,218,148, 69,155,208, 27, 19,220,233,129, 95,126, 94,219,197,224,147,171, -126,141,166,142,164, 81, 8,235, 35,200, 35,227, 48, 16,171, 93,140,237, 34,175,137, 57,227, 72,132, 40, 86, 81,218, 95, 21,245, - 69,110,179,156, 24,147,194,126, 95, 23,102, 36, 99,154,198, 79, 17, 77,130, 76, 86, 3, 27, 35, 53,219,129, 52,177,137,127, 25, -164,206, 22, 10, 7,220,122, 0,140,237, 30, 76, 85,232,240,131, 97, 11,169, 35,134, 8,171, 19,180,236,208,113,239, 39,141,137, -216,196, 43, 91, 25, 71,155, 48,250, 14,172,224, 55, 53, 15, 42, 40,234, 57,242, 90, 33, 55,251,136,241,173, 91,193,209, 38,236, - 99, 85,219,177,239, 43,225,190, 9,202,164,183, 19, 95, 7,117,143,113, 65, 30,244,126,242, 97,255,253, 78,135,164, 0,217, 88, -236,188,182, 69,211, 67,228,219,206,225, 27, 78, 44,171,251, 36, 16,142, 34,117, 21, 56,150, 13,225,241,224, 56, 69,187,120,227, -202,198,240,227,130, 60,215, 46,186, 20,149,152,160,223, 64,119,212,209,255,235, 55, 8, 47,244,118,243, 59,139,118, 24, 94,218, - 88, 93,111, 39, 27, 79,127, 45, 82,191,188,131, 13,134,121, 61, 14,232,133,227, 72,215,130,190, 54, 32,191, 10,225,251,206, 88, -127,110,224,242,225,136,158, 47,214,178,193,242,182, 79, 43,172,190,115,101,213,241, 47,109,225,249,158,240,189, 39, 70,127, 59, - 57, 50,159, 94,142,240,209, 4, 31,138, 16,191, 27,234, 93,168, 95,128,248,123, 22,160,244,197,222,183,188, 11,229, 47, 89, 55, -123,243,204,184,244,187,140,116,157, 29, 64,229,211,112,111, 15, 95, 19,120,119,240,215,182,182, 47,207,166,192,119,220, 48, 15, -145,102,184,220, 81,191,116, 65,249,233, 11,234, 47, 94,146,223,221,145, 99,229,209,177,176,187, 25, 24, 68,184,242,201,195, 80, -204, 23, 26,213,166,220, 41, 64,109, 43,241, 57, 57, 98, 50, 59, 20,153,101,100,141,179, 48,223,213,125, 2,213, 5, 66, 10, 83, -178,147,116,174, 45, 73, 62,229,161,117, 98, 21,173, 35,146,221,198,153, 61,124, 70,220, 75,219,196, 19,163,152,234,108,140, 48, - 88,200,142, 60,243, 46,156,108, 32,191, 8,101, 15,249, 2,186,231,236,175,244, 52,196, 79,192,234, 33,212, 71,246,222, 14, 95, - 51,135, 64,200,112,252,109,112,252,199,160,255,164,143,227,247,254, 87, 27,108,250,162,109,124, 13,182,255, 13,188,247,243,232, - 63, 9,232,143,118,148,215, 46,184, 40,123,222, 88, 5, 30,170,189,245,125,152,245,122,134,134, 46, 19,205,172,248,158,145,197, -120,183,101,190,183,155,103,136, 66, 41,198,116, 87,135, 52,170, 91,130, 36, 89,100,161, 20, 83, 40, 87,169,132, 24,109,160, 0, -164, 24,169, 57,179,203, 5, 77,214,249,151, 42,140, 81,233,146, 16, 75,160, 83,179, 83, 21,204,250,213, 40,113, 38,176, 2,117, - 86,122,110,222,101,157,221, 60,237,239, 99,179,133,133,198,135,119,174,249, 53,117,184, 89,231,116,154, 36,204,191, 26,140,166, -115,175,123,115,201, 70,255,121,235,162,142, 76,144,169,104,172, 94, 24, 45, 0,163,115,113,225, 75,198, 41,174, 85,219, 64, 89, - 60,205,172, 82,106,165, 80, 73, 26,233, 66, 36,164,206,114,187,151, 34, 45,213,107,135,215,225,252, 76,125,226,217, 94,179,133, -104,133,131, 88, 85, 59,152,151,172,120, 91,103,166, 96,247,220, 65,149, 82,203,100,251,154, 44,130,238,163,143,194, 98,223,111, -151,253,144, 51,185,152, 14, 66,155,142, 97,217, 68, 59, 14,182, 86,253, 64,137,232, 18,207,222,220, 90,234, 69,217,100,169,114, -241,153, 4, 62,200, 6,176,240,217, 7,155, 4, 59, 58, 56, 52, 70,123,153, 19,237,138,206, 63, 91,181,186, 61,110,241,100,106, -225, 9,173, 98, 59,252, 91,209,218, 8,142,106,194,108,243,133, 71, 86,125,207,106,125,196,160,149, 36, 33, 17,251, 35, 40,197, - 98,248,114, 54, 24, 75,106, 21,135, 78, 72, 84, 99, 92, 84,178, 4, 50, 62, 54,147, 73,103,106,157,179,139, 75,134,170,236, 67, -160, 23,103,238,186,113, 51,136,139,206, 38,168,131,206,201,107,237,255,155,130,180, 46,144,133,218,152,242,234, 54,181,234,123, - 20,245, 16, 7,161, 14, 35,116,123, 88, 37, 40,163,249,218, 67, 7,169,186, 7, 93, 9,193,199,103,121, 36,116,238,128, 12, 30, -203, 68,157, 5, 20,170, 84, 9,147, 82, 20,148, 80,149,197,196,196,118, 30,213, 88,202, 89,109,204, 19, 47, 71, 11,113,121,170, -243,145,110,181,187,116, 20,116, 55, 90, 73,142, 98, 51,113,151,132, 6,231,150,135, 2, 95,186,180,113,207,111,190, 1,207,244, - 72, 58, 71, 86, 1, 89, 9,146,132,163,183,149,244, 96, 36,105,229,162, 51,208,153,168, 29,236,197, 89, 50,102, 43,174,108, 71, -187, 95, 31, 21, 88,253,137,155,132,223,122, 3,222,202,232,107, 91,234,107,174, 50,201,198,110,151,151, 87,112,179, 35,254,171, -103,240, 51, 80,191,180,131,175,102,116,173,240,114,111,202,238,231, 18,114, 21,169,159,222,193, 42,209,255,190, 35, 86, 63, 80, -216,239, 21, 93, 51,141, 74,143, 3,156,127, 44, 34, 79, 7,248,197,193,172,110,191,255, 12,118, 22,201, 74, 16,228,102,178,209, -255,109,133,243,155, 16, 62,100, 93,120,184, 9,225,169, 39,187,244,122, 1,187, 63, 13, 15,190,108,190,232, 22, 26, 81,253, 96, - 31,130, 57, 10,190,224, 5, 73, 4, 62,126, 4,223,116, 2, 55, 79, 92,184, 56,194,171, 87,212,127,252,144,252, 19, 23,148,247, -246, 20, 10,122, 44, 12,207, 89, 23,180, 27,224,170, 8, 67, 54, 81, 98, 46, 77, 79,161,211,152, 76,174,145,226, 68,231,239,221, -193,223,135, 89, 43,201, 98, 52, 27,212, 86, 81,210, 71,226, 81, 34,220,233,168,247,178, 21,168,209, 44,161,166, 65, 83,116,112, -193,165,135,233, 72,115,123,104,157,226, 81, 29,131,232, 24, 66, 87,217,150,132,230,136, 60,243, 24, 78, 71,123,237,106, 28, 51, - 83, 71, 61,111, 35,249,240,146, 11,220,178,145,233, 16,251, 44,186,151,252,240,222, 64,189, 15,225,212, 14,113,241, 3,189,238, - 97,255,147,112,249, 23,209, 87,239,194,223,233,208, 95,175,148, 71, 27,246,101,207, 59,125,224,113, 49, 81, 90, 87,175,225,114, -181,137,184, 28,208, 82, 57,200,179,182,173,196, 98,188,216, 68,117,141, 75, 46,193, 18,186,130,143, 73,115,165, 76,119,199, 98, -252, 12, 17, 74, 8, 83, 20,166,196,142, 81,173, 64, 75,177,253,206, 74, 47,144,162, 48,146,168, 90, 25,198,226,147,130,106,102, -219, 73,143, 36,104,148,137,120,214,196, 82,234, 2, 91, 59,204,108,175,153,105,163,247, 67,251,211,212, 37,234,236, 5,111,112, -175,176,112, 39,142, 13,156, 35, 70,136, 11,170,142,180,181,217,136,184,112,175,168,146,107,246,149,103, 90,246,155,214, 43,235, -204,254, 40,205,119,221, 60,245,142, 63,181, 32, 23, 83, 2,152,191, 59, 80, 67,128,146,231, 0,173, 32, 7, 81,179,211, 89,182, -152,248, 79, 13,133,180,199,156,191, 43,213,133,216, 77,119, 21, 38, 40, 76,164,138,237,207,171,251,193, 39,128, 14,115, 74,153, - 46,166, 16, 19,112,198, 47,154,170,117, 18, 43,206,135,185, 28, 60, 47,185, 22, 19, 87, 93,144,221,180, 3,246,124,226, 12, 25, -107, 98, 72,173,211,107, 21,157, 3, 89, 38,157,153,179,118, 67, 48,103, 69,234,122, 98, 50,129,156,113,209,195,204,207,247, 21, -128,230,106,159, 69,206, 72,201,147,126, 99,186, 40, 22,232,220,131, 59, 77,173,132, 24, 38, 66,107,173, 94,120,186,142, 64,244, -152,152, 18,117,216,147, 82, 3,184,172, 86,200,214, 56,198,213,241,129,181, 56,131, 41, 4,106,173, 36, 42, 42,129, 18, 18,140, -197,184,234,178,172, 13,235,116,200, 23,183,122, 13, 26, 72,216,126,221,186,203, 74, 10,209, 88,187, 62, 22,210,108, 35,159,118, -129,183, 40,195, 57,185,196,165, 26,165,221, 49, 77,113,152,125, 60, 46,126,217,170,102, 24,118,232,234, 24, 66, 79, 25,242,132, - 45, 52,171,157, 3,105,220,207, 30,125, 7, 84,149,201,167,217, 10, 13, 27,171, 23,215,222, 69,255,146,251,151, 99,106,206,108, - 95,167,193,178,145,199, 4, 93,173,132,199,158, 6, 20, 65,119,131,141,184,143, 76,157,104, 82,122,236,228,243, 73,166, 4, 80, - 87,236, 75,172,240,203,143,208,199, 35,242,157,231, 70,112,147, 35,100, 5, 97,149, 44, 73,236,141, 13, 79,221,223,147,174, 70, - 86, 21,182,193,190,240,187, 98,194,190, 16,117, 2,101,108, 54, 74, 60, 75,132, 23,123,248,218,158,242,115, 27,234,171, 91,234, -222,118, 80,225,220,158, 83,120,184, 34,252,166, 99, 56, 10,132,223,113,138,124,234, 4,253,245, 45,250, 83, 87,232,175, 15,240, -116,178, 3,231, 27, 87,132,123, 10, 63,159,145,127,173,231,248,183,174, 24,126, 97,203,110, 29,136, 1,214, 43,225,164,171,232, -166,194, 47,110,145,231,142,144,239, 89,193,195, 66,109,201,110, 27, 69,198,140, 60, 4,121, 74, 29,170,178,247, 89,245,167,230, - 15,125,146,219,142,144,255, 11,244,205,159, 65,127,254, 41,216, 95,193, 75, 9,249,200,218, 90,192,161, 82, 63,243, 24,253,145, - 75,228,155, 59,228,119,156,193, 51,189, 21, 13,162,240,254, 99,120,235,138,250,163, 15, 25,254,209, 35,198,253,200,120,164,212, - 27,198,197, 47, 62, 97,106, 19, 15,116,206,176,143,190, 82,104, 73, 84, 50,225,141,231, 52,168, 70,172,122, 18, 11, 59, 31,232, - 77, 15, 39, 56,211, 32, 89,101,159,190,235,196, 24, 0, 63,125,105, 75,248,149,218, 3,150,122,200,239,144, 15,192,128,204,200, -197, 89,208, 94, 22, 23,233, 94,209,171,132,172, 55,144,238, 67, 93,249, 29,246,129, 29,210,113,109, 22,184,240, 28,112,195, 85, -244,209,160, 2,229,211, 80,223,128,240,113, 8, 31,118,209, 98,111, 7,123,125, 7,182,127, 17,222,255, 41,248,172,194,223,238, - 41,239, 12, 84,221, 83,135,145,247, 84,120, 80, 12,204, 20, 38,244,154, 78, 55,218,162, 51,155,187,202,161,227,174, 69,151, 4, - 87, 92,151, 3,221,190,225, 84,107,181,158,180,180,213, 71,227, 40,199, 64,223,117,212,216,145,165, 30,120,248, 99, 16, 84,122, -118, 73,145,154,161, 20, 6,133, 53, 66,167,176,209,226, 26,154,138,113, 41, 27, 62,180,250,152,211,198,199,227,242, 0,209,150, -222,216,196,124,206,218,104,236,240, 41,172,190,241, 54, 60, 75,162, 69,167, 10, 7, 8,214, 54,114,173, 30,117, 59,205, 45,170, - 31,136,106, 26,158, 70, 36,203,126, 31, 99,234,148,195,100,223,106,241,172, 58, 1,117,234,244, 24,149,153, 86,215, 16,185, 85, -109, 20, 47,238,215,174, 33, 24,154, 82, 14,125,246,211, 52, 64,229,112,188,189,236,128,213, 58,178,160, 97, 66,133, 79,238, 40, -153, 81,174,109, 74, 81,180, 26, 55, 96,194,204,206,241,163,117,242,207,207,128,247,150,174,215,212,231,162, 79, 82, 24,194, 18, -157, 35,215, 88,246,117,246,228, 91,164,184, 77, 52, 74, 91, 85,120,192,205, 65, 17, 26, 22,253,125, 43,102,166,244,210, 72,234, -123,186,174,119, 49,184, 18, 98, 71, 70,168,227,222, 14, 95,127, 14, 99,173,228, 60, 82,134,189,185,184, 66,242,247,184,248, 22, -120,214,115, 89,140, 74,123,205, 97,242,185,183,198,146, 20,209,156, 41,165,178,221, 94,145, 67, 96, 63, 12,164, 20, 59,111,241, -213,186,219,106,177,163,141,117,156,146, 1, 28, 98,176, 14, 66, 99, 68,170,197,217,213, 54,162,152, 30, 37,216, 27, 28,231, 10, -174,138,121, 32,155, 80,200,130, 94, 44,231,188,186,221, 65,163, 3,245, 75,157, 50,117, 39,133,102,157,191, 64,211, 93,209,237, - 46, 89,231,184,213,218, 72, 45,227,136,110, 47,225,252, 54,116, 61,100,131,229,215, 92,201, 49,146,212,137, 83, 65, 39,157,187, -150, 58,101,210,106,177,113, 75,117,197,163, 42,196, 46,162,163,117, 51, 86, 95,206,233,110,197, 59,175,236, 35,251,146,188,170, -186, 28,124,122,227,126,255, 65,141,202,214, 88,179,155,106,255,174,130, 30, 69,219,191,203, 96, 35,172, 46, 33, 95,188, 68,223, - 31,144,239,189, 1,183,122,171,218,215,230, 51,231, 40, 17,222,220,112,254,254,150,245, 85,102,179,169, 36,179,148, 51,250, 55, -180, 97, 52,143, 69,233, 95, 76, 48, 8,250,238, 72,189, 59, 80,182,153,242,104,160,236, 43,188, 5, 41, 6,210, 88,208,167, 42, - 18, 58,164,235,144,103, 34,225,251,158, 34,124,104,133,254,245, 7,232,207,239,145, 99, 75,253,138,223,217, 67,237,209, 87, 71, -194, 55,175,184,241, 78,134,119, 10,199, 47,219,106,100,247, 0,106, 81,228,161,114,186, 26,205, 74,182,142, 86,133,237, 44,204, - 69, 87,126,210,237, 18, 50,220,133,245,175, 64,252,148, 29, 46, 7, 55,138, 45,228,255, 26,238,253,159,240,206, 29, 8, 17,253, -226, 6,126, 13,228,247, 43,188,176, 66,223, 25,224, 65, 65,254,189,115,228,165, 35,187,216,135, 17,253,220, 35,244, 11, 27,244, -231,183,232,227,129,124, 57,176, 61, 86,118,119,132, 18, 13, 35, 28, 93,184,217,186,197, 36,126, 67, 13, 66,245, 21, 75,194,166, -219,105,113,107, 8,213,133,155, 81,231,200,202,131, 96,137,197, 89,219, 20,242, 78, 86,164, 11, 72,242, 17,234,231,183, 6, 24, -106, 15, 62,122,135,144,117, 78, 71,235, 13,156, 68,100,202, 61,111, 48, 37,250, 86, 40, 70, 88,123,194,220, 58,192, 13,129,155, -138,156, 84, 72,199,190, 15, 31, 93,252,182,130,248, 60,196,143,184,138, 29,251,247,186,247,101,254,235,160,239, 64,248, 46, 8, - 47,248,201,220,217, 62,189,252,125,120,240, 23,224,213,247,224, 31, 28,161, 63, 87, 40,247, 47,201, 12, 16,225, 74, 42, 27, 17, -122,175,100, 10,106,156,139, 50,231, 23,132,133,204,110,178,194,251,141, 50, 46,118,181,130,121,131,181,250,132,162,141,140, 29, -253, 42,205, 99,238,225, 43, 72, 36, 83,205,226, 26, 93,240, 80,237,251,152,213, 52, 29,251, 34, 28, 33,244, 65, 24, 71, 43,202, - 59,143,131, 78, 10,217,105,150,118,178,130,134,234,158,103,123,156,224, 66, 39, 60,189, 18, 9,212, 58, 31, 32, 19,208,117,154, -234,232,188,187,157,176,172, 58,105,121,116, 17,200, 52, 1,165, 60,123,155,150,139,238,247,196,222,239,153,123,135,158, 36,148, - 85, 8, 38, 82, 93, 36,142,225, 65, 38,202, 50, 3,124, 81, 28, 9, 7, 33, 46,147, 31,218,237,149,145, 22,121,141,211,206,230, - 63, 39, 58,239,150,155,186,125, 74, 86,211,217, 15, 97,112, 26, 83,124,183, 69, 90,157, 86, 17, 76, 35,166,230,181,111,106,248, -166, 15,154, 18,206,196, 83, 60, 23, 95, 48,245,184,213,170,242,129, 96, 27, 89,144,255,166,195,119, 9,196,241,209,188, 44, 2, -105, 74, 45,102, 9,212,185,234,156,106, 50,239,236, 9,130,106, 88, 92,180,243,234, 97,154, 34, 85, 53, 42,107, 12,204,177, 34, - 58,177,218,171, 86,234, 56,160,197, 10,181,144,226, 20, 26,163,186,180,142,250,160,192,195,196, 66,180,230,187,122,113, 28, 36, - 26,136,199, 63,151,113,204,236, 31, 61,162,106, 37,133,245, 17, 73, 34, 82, 50,101, 40, 86, 37,165, 96,254,237,104, 4, 31,138, -120, 60,106, 68, 37, 34, 82, 92,153,222,217, 94,203, 69, 64, 97,162,192, 57,213, 73,109,247, 93, 5,118, 85, 8, 42,244,209, 76, - 28, 34,145,168,193, 4, 2,190,139, 41,193, 71,253, 50,239,154,236, 12,143, 19,127, 94, 91, 23,189,192, 57,106,219,211,212,130, -146,209, 97,131, 12, 71,196,245,154,186,223, 88,112, 72,187,216,171, 17,228,168,205, 63, 25, 27, 56,221,110, 28,174, 19, 8, 14, -147,146,166,156, 12, 2, 53, 17, 53, 19,220,151, 27,131,117,233, 19, 39,190,141,140, 4,106,118,191,161,231,212,139,131,119, 44, - 30, 15, 24, 10,186,115, 11,156, 67,189,216,153,168, 79,131,143, 97,223, 82,244,199,222, 71,190,247, 28, 62,180,182,223,179, 62, - 37,156,119,200,121, 71,120,167, 35,222,221,177,186,187,101,253,190,169,100,183, 29,228, 44,148,193,178,175,207,179, 18,146,193, - 31,180,250,234, 98, 13,108,148, 77,134,161,135,117,174,156,189,177,183,130,225,134, 34,231,106,153,231,177, 67, 62,245, 52,116, -145,252,191,221, 71, 63, 55, 32, 47, 20,248,214, 53, 60,219, 35,143, 20,121, 92, 8,223,220,115,246,238,142,205,219,202, 24,141, - 91, 0,214, 8,174,223, 43,196, 95,218,192, 55,120,138,155,122,235,219,251,183,248,235,247,225,165, 45,220,124,121,113,160,183, -255,189, 11,143,126, 47,250,107,175,195,163, 59,104,238,225,217,130,252,174, 53, 60, 2,189, 28,225, 45,247,125,127,247, 49,218, - 43,245,253, 45,124,246,146,250, 75, 87,212,207, 95, 81,114, 65,215,166,252,223, 63, 5, 67,177,195,188, 22, 79, 5,140,246,249, - 44,181,220,173, 99, 10,206, 16,138,101,246,212, 78,117,165,216,181, 30,220,130,213,156, 78, 97,177, 71,159,226, 62,197,214,212, -161, 11,200, 73, 64, 86,173,184, 83,202,206, 15,160,233, 64,159,184,200,118,129, 37,207,183, 79,214,221,131, 32,235,232,225, 8, - 1,142,146, 77,125, 78, 35, 28, 3, 55, 4, 57, 83, 56, 21, 88, 29,217, 11, 79,183,236,195,232,111,154,205,173,255,152,113,218, - 57,245, 7,219, 45,138,168,106,214,192,248,145,197,171,233, 64,239,195,240, 87,224,241,223,129, 71, 61,124,246, 57,248,177,251, -148,225,130,139, 50,146, 83,165, 11,194, 85,181, 55,232,200,183, 79,251,114, 56, 60, 96,138, 71,101,130,184,168, 23,230,178, 56, - 56,166,184, 73, 13,196, 24, 45,118,213, 3, 84,130, 31,246, 34,129, 46, 68,136,137,189,239, 50,181,206, 4, 58,123, 45,205,141, - 34,148, 97,100, 19,224,184, 15,172,251,142, 34,133,172,133,149, 42,125,234,216,102, 83,194,219, 87,221,233,147,174,249,105, 54, -174, 66, 99,168,227,205, 4, 51,231,162,221,228, 61,134, 90,117, 30, 5,215, 41, 52,196, 44,104, 85,213, 59, 67, 31, 84, 47, 98, - 83,179,119,167,145,246, 62, 68,178, 39, 97,118, 46, 18, 30,171, 34,165,208,123,183, 57,122,217,179,220,173, 87, 14, 19,185,194, -193,129,207, 4,227, 82, 14, 61,218,226,186, 77,117, 59,224,148,131,206,161,248, 76, 88,118,146,203,213,138, 29,215,185, 90,166, - 69, 84, 87,170, 95,147, 23,182,169,193,116,152, 45, 60,255, 45,144, 85,150,113,109,141,132,215, 20,234, 11, 1, 31, 83, 97, 40, -147,198,225,218,208,108,154,194, 46, 48,250, 11,144,216, 34,179, 67, 23,133,166, 78,193,163,243,195,180,157,182,200,140, 43,111, -239,163,235, 27,198, 90, 25,114, 70,179,175, 49, 66, 56, 76,152,243,224, 32, 98, 68,115, 49,161,234,193,194, 64,124, 13,189,120, -237,237,222, 83,235, 36,142,211,206,184, 22,101,204, 30, 61,174,164,213,241, 9,186,189, 66,179, 7, 10, 6,191,168,170,219, 78, -166, 91,147,221,217, 74,173,232, 88, 38,104, 12, 33, 32,181, 26,115, 69,131,193, 94,124, 76,144,164, 41, 59,133, 93, 49, 59,217, -105, 80, 86,238,225, 84,196,246, 15, 98, 34,138,152,140, 24,167, 11,196,160, 86,183, 72,136, 39,224, 76, 41,102,117, 38, 55,233, -194,154, 80,179, 65,102, 54, 87,132,227, 99,143, 83,181, 74,168, 22,179, 60,164,201, 59, 99,193, 6, 85,198,137,241,107,182, 59, -199,220, 98, 17,136, 97,204, 62, 94, 51,156,100, 40, 77,188, 3, 71, 94,117, 71,247,139, 51,248, 23,187,200,196,218, 22, 92, 97, - 37, 9, 57, 78,230, 55,219,169,101,176, 55, 37,180, 10,172, 34,122,229,169, 88,158,217,203,152,209, 31,122, 96, 35,229, 79, 30, - 91,152, 74,232,224,230, 41,225, 78,143,124,245, 10,237, 18,221,217,192,201,253,145,171,135, 35,195, 94, 73, 43,161,127,161, 35, - 92, 65, 60,239, 77,160,246,110,153,124, 67,233,169,192,106, 95,216, 1, 67,103,112,139,248,245, 61, 50,122, 91,121,222, 89, 2, -218, 94,224, 83,183, 9,111, 12,232, 63,124,136, 94,140,212, 55, 6,194, 55,245,240,114, 7, 87, 2,151,145,213, 11, 9,121,144, - 25, 70,216,111,236, 61,232,147,216,254,114,155, 33, 20,180, 75,150,226,117,100,221,147,254,210,125,228,119,141,112,231, 71, 64, - 62,230, 95,231, 2, 92, 65,253, 73,120,244,159, 81,255,222, 61,244, 87,206,224,163, 32, 71, 14,188, 81,191,229, 5,177,160,132, -168,232,151,175,208,127,190, 67, 63,125, 69,253,250,158,172,149,253, 49,228, 83,161,246,126, 30,148, 25, 96, 17,188,190,136, 1, -186, 84,173, 35, 84,123,235,139,206,169,171,147,216,181, 66, 8, 11,210,161,219, 7,251,100,162, 80,170,219,214,220,131, 27,162, -185, 52,162,143,140,195, 81, 64,250, 72, 88,205,211, 44, 13, 62,150,109,126, 46, 89, 94,151,157,237,221, 99, 64, 66,180,239, 97, -114,241,215, 73,103,234,247,211, 8,103,201,186,242, 27,138,156, 0,235, 35, 72,103,166, 77,144, 51,243,153,167, 59,144,158,131, -245,135, 76, 5, 79, 0,125,108,246, 54, 81, 59,248, 57, 95, 20, 83, 14,162,105, 98,184,225,215, 96,243,231,224,237, 47,192,120, - 11, 62,249, 73,120,248, 14,250, 63,189,205,101, 44,188,151, 44,161,172, 43,202,174,161,226,125,147,144, 69,200, 69, 15,184, 55, -115, 7,211, 50, 31,116,194,216,212, 41, 0, 67,124, 59, 14, 65,170, 89,191, 8,196,100, 83,195,210,226,152,221,121,209, 2, 87, -138,183, 87,181,180, 67, 66,167, 81,116,136,145, 81,148, 44,182,211,237, 98,162,184, 37, 53,185, 79, 61, 54,215, 2, 66,141,201, - 83,207,124, 52, 91,171,169,224,253,167,230,101, 60,137, 28,118,235, 65,130,143,185,231, 40,147, 38, 62,171,126, 48,239,171,122, - 6,187,122, 34,152, 28,168,218,167,219,131,107,101,178, 90,119,110, 93, 95,157,126, 22, 46, 98,230,218, 39,200, 98,245,211,108, -175,109, 47,222, 92, 7, 34, 76, 74,247, 54, 54,168, 54, 82, 93,104,159,154,208, 78,184,182,158,158, 15,201,133,146,159,105, 74, -128, 35,198, 93,189,238,135,110, 8,243, 61, 92, 39,106,155,167,116,186,247,218,104,110,243,251, 49, 5,186,136,240, 27,129,103, -101,202, 65,208, 3,235,153,180,201,192,162,112,106,235, 52,245, 85, 7, 77, 27,225,110,149,133,202,117, 46,104,244, 80, 92,215, -188,255, 33, 70, 27,187,187,123,160,164, 72, 25, 51,227, 56, 82,115,182,255, 86, 50, 99,206,118,128, 79, 79,172,165,144,150,249, -249, 74,120, 34,158,182, 58, 69, 44,196,100, 76, 17,181,213,120,208,138, 44,180, 0, 37,103,219,169,215, 16, 32,143, 84, 7,181, -104, 72,211,158,202,200, 69, 62,250, 86,235, 94,165, 24, 11, 87, 9, 14,173,113,177,128,122,118,172,218,191,139, 2,201,131, 5, -134, 10,151,106, 30,203, 49, 11,103,181,114,220, 85, 58, 23,178,168, 86, 98, 52,251, 66,116,158,123, 45,150,201,158, 21, 36,216, - 7, 92,171,179,158,235, 60,158, 16,175,226,202, 34,115, 92, 90, 84,217,110,103,245,158, 68, 6,132, 84, 44,220, 64,156,158, 38, - 30,213, 18,180,237,173,156,192, 68, 0, 49,117,126,168,115,110,124,213, 66,209, 98,227,247,160,116, 10,171,160,164,150,149, 92, - 43,177,120,142,118,182,238, 42,164, 0,103, 9, 89,247,200, 89, 79,184,213,219, 73,242,200, 15,216,206,191,182, 33, 66, 18,164, -207, 86, 16, 36,133, 99,144,236,111,200, 23,247,246,154,190,249,196,232,105,157,125,192,210, 41,242,237,103,240,172, 16,254,242, -187,156,111,182,212,111,239,144,111,137,112, 30,208,183, 33,156,247,200,211, 43, 27,251,190, 57, 34,111, 14,240,116,199,209, 83, - 80,238,154, 85,102, 92, 65,218, 42,221,151,118,132, 43,129,103, 87, 30,107, 84,225,228,148,240, 61,167,148, 31,127,159,225, 94, -102, 4,250,183, 6, 86,159,236,145,111, 95,193,135, 35,220, 57,162,191,165,244,247, 10, 71,239,142, 48, 40,225, 56, 33, 47,184, - 5, 43, 86,194,169,199, 27,254,244, 30,254,233, 37,225, 63,137,200,239,249, 25,139,232,212,183,160,252,143,112,241,195,176,191, -132, 55, 31, 81, 95, 59, 66,223,191,141,202, 0, 95,221,216,238, 57, 26, 61,150,155, 25,221, 43,250,245,130,126,102,143,190,177, - 7, 45,232, 80, 24,110, 91,248,205, 85, 17, 6,231,166,148,169,203, 54, 81, 37,165,241,188,253, 35,192, 10,186, 58, 90, 45,213, - 71, 87,189, 86,216, 50, 31,214, 49,120,135,239, 81,183, 93,139,237,141, 11,158, 67,243,173, 7, 63,216,215, 17, 57,142, 72, 10, -150,111, 30,197,161, 29, 77, 5, 38, 83, 28,174, 4,239,196,171,255,254, 46,152, 83,226,168,141,215,163,225,112,111, 36, 11,230, -185, 89,145,227,206,186,112,185,227,201,109,167, 86,248,201,202,118,231, 97,109, 95,152,253,219,144,191,104,246,191,238,196,120, -239,241,195, 24,132, 64,175,233, 1,142,237, 34,222,254, 67,184,252,139,112,247, 61,248,251,103,240,106,129,151,127, 21,126,242, - 33,251,163,145,141, 10,161,216,186,103,159, 29, 81,188,192,133, 73,157, 53, 64,149, 3,151, 25,193, 15,152, 16, 26, 81,140,105, -181,213, 66,149,113, 59,109,139, 16,213, 24,168, 14,165,114,123,243,116,191,202, 42,140,213,116, 52,105, 33,178,147, 48,231,190, -103,132, 1,101,237,196,185,145, 96,156, 1,129,148, 28, 93, 45, 70,147,179, 78, 35,206,168,212,169,251,151,233,218, 97, 81,140, -232,162,167, 93, 56,162,167,169, 99, 11,129,106, 74,119, 93,140,127,171,205,250, 29, 84,237, 13, 99, 75,100, 19, 35,206, 53, 38, -134, 53, 40,149,229, 64, 90,150,121, 26, 11,205, 66, 83,113,215,101, 51,218, 16,178,110, 49,107,216, 85,213, 37, 36,102,142, 85, - 21,117,209,180,204, 14,165, 89,229,160,211, 6,246, 58,102,118, 58, 99,219,136, 58,196, 41, 30,183,141,155,117, 10,192,209, 73, -151, 34,110, 13,107,153,241,217,223, 12,113,168,153,203, 0,103, 24, 16, 51,235,126,122,253,122,189,250,144, 39,116, 27,211,140, -125,249,201,181,169,192,245,156,214,169,188, 10,215, 52, 4, 78,114, 11,134, 33,111,159, 75, 46,133, 60,142,144, 51, 37, 6,242, - 80,125,170, 45,211, 25, 37, 49,249,103,173, 31,152,204,176, 84,232,171,182, 41,114,227,196, 87,234,110,231,127,222,194,102,106, -206,214, 96,151,171, 43, 34, 80,134,189, 85,167,109, 23, 24, 45,103,120,168,130, 72, 66,130, 82, 69,209,209,222,224, 16,150, 11, -177, 64,168, 38,143, 75, 33,210, 7,165,147, 74,114, 17,218, 14, 97, 32, 80, 37,240,184,140,140,217,110,106,103,189,154,162, 47, - 87,131, 86, 77,193, 8,139, 16,248, 86, 14, 21,157, 2, 21,108,121,163,147, 14,198,200, 64, 50,121, 12,147,102,235,216, 71, 69, - 71, 47, 86,154,154,180,120,209,182,234, 8, 65, 72, 37,179,119, 37, 97,237, 92, 27,226, 31,125,169,133, 36, 74, 23,231,125, 79, - 42,150, 96,154, 4, 86,162, 28, 85,123,157, 93, 7,233,104,109,157,184, 84, 24,253,210,139, 17,233, 59,194,113,135,220, 94,193, -211, 61,220,116, 96,198, 17,112,190,114, 82,140,211, 74,210, 76,194,146,222,239,130, 21, 83, 39,143,126,154,172, 86,112,162,112, - 30,108, 79,159, 43,124,105, 15,223,120, 78,248,195,183, 8, 73,169,191,112, 65,249,185, 29,114, 59, 33,191,169,135, 59, 61,236, - 32,172,123,232, 71,116, 45,196, 79, 68,206,227, 72,125, 63, 83, 51,232,168,112,165,132,103, 10, 60,151,204,219, 93, 48,218, 92, - 16,234,174, 50,174, 97, 60,134,237, 80,233,126,105,207,234, 11, 35,171, 23, 35,225,153, 72, 40, 86, 69,134,103, 18,108, 10,114, - 81,208, 87, 43,250,213, 10,239, 85,194, 43, 91,120,170,135, 31,187, 36,252, 91, 71,200, 31,251, 69, 8, 47, 3,159,135,171, 63, - 3,175,125, 22,174,214,112,117,130,126,253,182, 17,212, 62, 86,224,215,246,102,200, 47,198,170,215, 17,244,211, 25,125, 59, 79, - 86, 16,206, 93,224, 56, 42, 57, 43, 67,129,161, 10,251,106, 10,246,216,108,103,136,173,161,219,247,182, 65, 95, 80,198, 97,206, -166,206,121, 70, 34,247,190,102,235,130,155, 59,163, 76,171,236,118,208, 55, 2, 99,240,206, 60, 85,136, 71,226,233,120,177, 45, -235,231, 4,176,150, 12,213,130, 45,130,229,204,227, 35,122,186, 56, 31,230,199,190, 39, 63,241,148,189,227, 0,103, 1, 57, 77, - 54, 90, 15, 47, 66,184,227, 29,119, 48,235,153, 14,160, 15, 77, 20,167, 91,211, 38,232, 8,113,231,123,248,223, 6,225,121,195, -234, 82,175, 29,232,103, 70,151,219,252, 8, 92,254, 85,120,253, 33,252,196, 26,253,149, 29,188,183,163,252,220, 72, 62, 42,108, -162, 82,139, 77, 48,182,197, 14,244,206,117, 90,131,241,115, 60, 35,188,137,102, 27, 22,148, 73,196, 5,134,156, 22,119, 17,132, - 96,123,100,170,131,155,238,211,161, 0, 0, 32, 0, 73, 68, 65, 84, 64,162,141, 83, 99, 20, 74, 13,211, 1, 32,110,239, 82, 31, - 25,183, 3, 52,250, 77, 62,133,214, 65, 51,219,145,252, 16, 41, 85, 61,167, 69,201,181, 48,168,208, 5, 33,117, 29,195, 62,219, -222, 59,248,190,179,206, 24,214,134,146, 86,149,169,145, 99,146,191,233, 34,203,125,217,214,233,148, 92, 86, 23, 89,218, 58, 69, -212,203, 19, 19,226,218,124,251,202,193,161,215,242,219,155,128,108, 57, 25, 72,162,140, 42, 19,244,165, 49,224,218,204,165, 89, -196,240,206,183,137,249,106,117, 13,194,188, 61,246,131, 59, 76, 66,191,233, 39, 42,215,152,103, 76,107,137,235,147,238,230, 4, -104,192,176,105,182,208,136,156,122,216,250,198,107,195,231, 40, 1,124, 29, 43, 83,244,173, 16,157, 35,175,147,150, 74, 38,106, - 30,215,222,247, 67,233,187, 30, 88,197,130, 44,156, 17,238, 94,208, 3,164,203, 82,137, 62,199,243,204,187,125, 47,112, 66, 32, -197, 8, 41,146,139,149,162, 20, 15,134,114, 7, 65, 85,165, 14,123, 7, 75, 89, 19, 27, 16, 72,105, 70,251,202,147,150,185, 58, -137,242,100,222,253, 23, 75, 20,109,137,164, 90,236,139,214,108,115,150,149, 48,108, 8, 88, 43,175, 97, 49,191,143,193,176,162, - 68,232, 19,253, 88, 24,181, 46,170, 47,231, 39, 43, 22,192, 42,133, 24,132, 30,101,133,135, 37, 68,171, 94, 70, 21,207, 50,182, - 96,149, 29,133, 71, 85,144, 26, 56,150, 66,172,206,203,245,177,199, 18,141, 23,189, 34,158,173,158,179, 88, 78,252,102, 91,180, -117, 0, 58, 5,179,212,113, 68, 58, 87,212,215, 98, 69,135,180,189,164, 95,196,238,151,213,226,226,151,209,146,233,218, 27, 29, -155,213,164, 42, 41, 84,122, 79,216, 89,229,194,170, 22,142,214,145,208,175,144, 62, 34, 39,157, 47, 18,131,135,198, 8,114, 35, - 34, 31,238,145,143,218, 14,154,147, 14, 57,238, 97, 45, 77,160,234,207, 35, 88,132,101,219, 1, 54, 16, 72, 12,254,247,213,246, -154,102,206,132,205,222,198,175,201,199,252,247, 7,120, 54,193,119, 61, 11, 99,134, 47,220, 71, 63,159, 77,124,119,183,160,191, -186, 71,190,123,109, 29,224, 71,143,136,157, 93, 12,102, 87,235,136, 31,170,200,251, 25,222,203,132,167, 35,242, 45,107,116, 23, -224, 67,182, 38,208, 55, 46,237,231, 70,227, 55, 23, 49,152,199,246,168, 18,179, 34, 95,206,244, 95,177,241,115,106, 14, 89,129, - 85,179,125,136,216, 77,246, 11, 35,250,222, 64,248,115, 79, 33,127,252,103,129,167,129, 31,128, 87,255, 43,248,220, 37,244, 47, - 66,159, 44,251,124,191, 71,190,190, 71,191,184,135,127,190, 67,206, 61,254,187,171,232,215,246,148, 77, 38,244, 98,182,185,211, - 96,231,216,227, 98,167,117,117,173,217,168,236,139,117,116, 37,205,234,172,208, 34, 2,188, 30, 24,124,250,211,196,114, 45, 94, -184,237,197, 59,177,115, 80,130,144,130,176,118,125, 90,195, 93, 6,207,155, 9,170,196,206, 22, 86,210, 7,130,195,133, 32,248, - 90, 71, 17, 49,163,123, 8, 29,114,228,122,149,147,104,127,127, 28,237, 16, 95,118,230,235,100,191,246,254, 36, 82,132, 35,207, -109,145,115,144,167, 45, 43,157, 0,122,215, 44,104,229, 93, 35,236,141,123,179,158, 9, 70, 29,234,206, 29, 88,243, 10,116,159, -130,240,177,165,100,205,111, 92, 39,230,131,188,252,126,184,250,187,232,219, 27,248,241, 21,245, 51,151,212,171, 29,101, 28, 25, -206, 96, 95,117,234,204, 7,204,194,154,125,234,209,182,180, 3,230,187,214,121, 51, 63,127,125,151, 93, 73, 85, 71,116, 54,157, -210,116,131,177, 34, 92, 22,126,104,177, 79,133,224, 98, 50, 79,121,100, 49, 30,174, 46, 20,109,123,226,168,129, 18,116,138, 11, -221,187,106,189, 96,130,224, 65,173,169, 72, 65,144,148,108, 69, 71,240,192, 24,235,142,100, 33,222, 42, 7,254,109,249, 13,204, -207,135, 29,151, 52,250, 91, 59,168,219,222,240, 3,216,233, 19,203,125,250,213, 10,145,166, 4, 87, 79,245,106,247, 67, 93,184, -113,116,214,185, 79, 63,190,177, 63,196,225, 44,142,120,153, 49,165, 28,250,184,229,122,152, 75, 19,184, 29, 72,238,158, 92, 87, -135,246,126,136,175,168,130,184,206,170,229,189,215,137,229,160, 7, 73,237,135, 23, 68, 59,135,163, 55,117, 65,227, 68, 26,204, - 45, 65,109, 49,234,111, 34, 23, 93, 76, 10,130, 3, 44, 89, 20, 36, 83, 16, 77, 43, 54,124, 69, 98,133,210,252,103,117, 17, 46, -131, 28, 34,129,151,239, 82, 16,211, 10,196,190,183,207, 40, 23,186, 46, 77,175,173,113,254,107,201, 76, 80, 22, 92,135,147,108, -106, 81,115, 93, 88,216,150, 27,141,230,168,104,246, 88,243,168, 87, 85,231, 51,148,195, 93,192,226,127,169,147, 64,221,109, 64, -173, 43, 13, 25, 74,159,108, 20, 93, 70,250,213, 26, 77, 9,169,153, 16,162,209,217, 16,247,202,154,242,155,104, 57,234, 17,179, -137,105,157, 43,194,170,129, 82,125,119, 62, 85,169,194, 88, 3, 23,163,237,195,142,129, 35,153, 25,241, 56, 74, 82, 83,176,189, -243,193, 84,199, 15, 99, 17, 23,154, 96,143, 97,206, 77,243, 62, 86, 8, 20,116, 8, 83,158,123,208,106, 86, 22, 77,118, 65,228, -108,157,145,152,167,187,226,226, 19, 45, 19, 23, 56,106,229, 40, 20, 86, 10,235, 82, 89, 69,219,159,166, 8,225,244, 24,185,177, -134,216, 25,187,247,118,130, 91, 43,228, 27, 18,242, 98,111,232,170,179,118,247,247, 86,193, 99, 35,101,111,109,160,142, 62,163, - 44,121,142,241,139, 97,170,215, 37,233, 34,218, 40, 79,156, 95,146,251,145,239,123, 23,255, 77,231, 70, 21,123,123, 3,111,109, -225,205,108,135,202, 55,174,224,202,231,199,167, 9,158, 62, 65, 62, 60,192, 93,179,152, 73, 86,244, 42, 19,200, 6,250,120,144, -237,241, 54, 88, 90,217,203,138,110, 7,216,102,120, 46, 18,110, 37,194,189,236,196, 44, 33, 38,140,227,223,195, 46, 40, 65,133, -152,161, 31,132, 94,160,123, 54, 18,110,122, 96,203,187,138,190, 85,144,191,252, 2,242, 7,126,220, 78,232,242,167,208,191,253, - 15,224,255,222, 35,127,248, 25,243,233, 63, 30,224,113, 65, 94, 29, 96,159,145, 80, 96, 45,240,187,142,209,143, 71,234, 95,123, -200,120, 53, 50,220, 48, 50,213,209,101, 33,186, 60, 93,179, 82,163,227,234,221,250, 63,125, 41, 42,132,100,116,178,236,133, 99, -241,183,122,159,231, 47,241,164,187,137,134,120, 21,119, 32, 70, 21,250, 40, 28,175,236,233,180, 80,165,246,179, 37, 6,130, 31, -188, 33, 69, 36,137,117,219, 94,156,137,128, 28, 91, 55, 46, 55,146, 21,151,167, 6, 23, 98, 21,225,212, 59,240,174,253, 21,109, -197,210,166, 55,147, 95,205,219,207,173, 64,122, 12,241,210, 57,237, 21,202, 6,198, 1, 46, 10,186, 43, 48,216, 40, 65,206,139, -105,226, 66,129,227,151,224,228,143, 64,252,168,247,112,121,113, 99, 56, 50, 46,252,229,247,195,197, 15,160, 95,223,195, 47,246, -232,215, 55,148,205,150,188, 29,216,139,133,177,236,178,125,246, 89,241,112, 33, 59, 72,246, 62,161,204, 24,191,161,168,255, 55, -209, 39, 18,185,166,219,165, 26,164, 35, 53,160,138, 50,167,162,249,216,181, 28,160, 85,156,161, 63,221,106,101, 78,134,244,174, - 94,170, 78,129, 32, 18, 70, 68, 83, 91,128, 50, 38,181,131, 34,152,226,187, 58,164,101,138, 34, 85,223,161, 59, 66,118,138, 95, -246,155,108,156,116,219, 50,251,167,221,115,190, 28,115,139, 28, 18,161,102,240,204,108, 93,178,135, 91,236,170, 23, 10,242,210, -188,205,181, 58, 55, 67,158,136, 56,106,244, 66,157,212,232, 44, 14, 54,239,240, 68,166,209,122,235,206,181,221,111,166,177,183, - 28,216,191,116,138,138, 17, 22,121,130,139,254,188, 77,170,101, 33, 5,145, 73, 48, 58,133,221, 72,176,176,156,101, 62, 56,122, -173, 45, 93,140,205, 49,113,157,106, 91,193,120,129,224, 13,133, 77,108,245,144,238,230,159,203,162,138, 57, 40, 20,230,195, 92, - 28, 85,235,100, 59, 42, 37,143,211, 7,166, 7, 66,192,112,232,115,215,229, 13,194, 95,103, 8,164,174, 7,223,161, 7, 47,168, - 74,173,148,113,116,189,128, 80,243, 56, 75,241, 91,113,209,220, 99, 13, 25,187,136,232, 93, 86, 19,203,231,222, 86, 41,234,186, -138, 22, 44, 52, 27, 24,212, 53,215,170,212,253, 30,138,146, 66, 64, 83, 48, 14,139, 42,132, 72, 8, 43, 56,185, 67,208,187,148, - 97, 55, 17,126,218,147,193,169,111, 33,136, 21, 5,142,127,173, 46,182,219, 18,201,152,133, 77, 69,193, 51, 96,107, 8, 12, 88, - 20, 98, 27,254,172,181,177,151,153, 42,203,118,187, 13,139,100, 28,255, 4, 91,160,141, 61,213,106,119,226,226,234,210,128, 16, -194, 72, 80, 3,200,180,162, 67, 74, 38,104,165, 75,133,168,149,160,149, 30,165,196,202,152,149,162,129,132,178, 14,149,163, 92, -184, 81, 43,171,163, 72, 56, 90, 33,171,222,158, 93,151,144,167, 79,145,231, 86,240,145,136, 60,223,153,159,252, 52,218, 77,184, - 6, 59, 41, 46, 10, 20,219, 47, 51,142,222,145, 59,250,176,168,117,151,142, 18,108, 74, 33,233,252, 74,236, 20,237,189, 67,139, - 98, 45,144, 20, 7,214,248, 88,190, 84,228,169,149,253,243, 59, 87,240,206,222,126,239,135, 87,182,211,127,127,128,247, 28, 9, -250,176,194, 29, 65,110,223,132,103, 51, 60,222,193, 38, 35,123, 69,182,197,114,213, 95, 24,225,178,160, 27,144, 91,105, 98, 2, -176,182,195, 33,124,228,152,254,245, 29,117,173, 28,221, 14,236, 71,243,193,135,106,231,146, 65, 67,149,254,165,142,240,241,206, -146,222,110,116,240,154,194, 29, 69,254,210, 43,240, 45,255, 57,232,143,194,246,111, 80,255,252,235,232,255,181,129,111, 91, 17, -175, 54,176,141,112,175,216, 57,115,166, 22,179,121,187,131,239,232,225,118, 15,175,218,245,151, 49,166, 79,241,208,176,147, 17, - 75,106,219, 11,236,117,194,184, 30,119,106, 43, 81, 13,104,181, 3, 61, 70,157, 10,204,232,137,128, 34,243,232, 52, 6, 19,109, -166, 22, 95,235,149,230,186,192,185, 40,199,119, 58,195,156, 62,214,217, 99, 29,133,176,142,200, 42, 90, 23,208,251,232,220,173, - 86,178,142,214,177,159, 5,179,246,157, 68, 43,178,250, 8,235,222,244,104, 93,178, 41,131, 0,213,145,105,237,203, 61,248,139, -205, 62, 77,106,157, 83,103,215, 9, 97, 99,187,250,171, 10, 15, 76,204, 46,131,133, 59,112, 11,184, 37,176, 90,195,233,199,224, -236, 79,248, 30,125, 92, 28,232, 13,249, 90, 96,247,163,112,245, 35,232,215,118,240,211, 61,188,177,163,198, 17, 58,235,242,118, - 98, 5, 83,187, 65, 55,193,126,112,223,145,122,209, 81, 23, 55, 74, 93, 8,182,162, 46, 51,162,231,214, 68,157,160,156, 75, 75, -205, 50,252,175,136,154,112,183,221,216,196,108,162, 45, 61, 45, 80, 41,132,201,113, 33,109,108, 93,161,235, 44,172, 74, 67, 52, -139,153,119,139,121,180,123, 88, 23,152, 20,214,131,206, 1,166,170, 24,178, 84,237,177,169,213,247,236, 54, 14,142,186, 84, 96, -205, 42,106, 89,208,219,100, 1,213,154,125, 92, 58, 17,213,230,103, 59,171,210,235, 98,124,111, 41,117,117, 26, 87, 47, 69,155, -186, 80, 67,183, 20,184,122, 45,204,101,182, 5, 55,220, 45,147,186,187,237,208, 91,228,168, 54, 36,236, 2, 12,212,120,231, 13, - 62, 19,100,217, 88,201,148,228, 46, 44,214, 0, 45, 42,155, 5, 77, 79,196,155, 52,109,154, 96,158,192,166,201,226, 39,202,100, -116, 59,140,133,115, 54, 65,144,249,196,174,203,179, 91,159,156, 30, 28,132, 18, 78, 5,100,157,130,116,170,187,158,224, 16,121, -123,192,232,127, 98,172, 63,251,243, 83, 8,132,174, 51,110, 66,173,134, 38,111,171, 17,143, 90, 53,135,129, 57, 9, 38, 5,125, - 8,166, 87, 27,243, 34, 58, 87, 63,176,235, 22, 79,113, 19,241,235,183, 44,102, 37, 97,177, 0,210,185, 34, 75,101,183, 53, 37, - 93,176,202, 72, 17,142, 17,164, 10, 49, 38,234,249, 29, 88,223, 66, 30,223,179,145,168,195, 9,230, 74,211,252,157,161, 88,104, - 72, 12, 66, 45,202, 88,237,195, 25, 67, 48,223,115,181,185,127,104, 87, 92, 8,212, 40,176, 11, 92,234,124,137,172,211, 92,245, - 81,236,201, 70, 53, 76,167, 20,187, 33, 87, 22, 42,197,210,206,121,177, 17, 85, 81, 74,178,157, 81, 95, 42, 81,140,200,148, 68, - 45,155,151,202, 42, 64,143,141,222, 67,201,160,153, 85, 54, 59,217,145, 22, 11, 84,168, 74,191, 74,132, 91, 29,114,163, 71, 82, - 15, 39, 17,121,182, 67, 94, 57,134,151,143,204,129,181, 42, 54,219,221, 87,120,188,135,203,106, 92,245,109,129,139,108, 54,181, -156,189, 43, 87,216, 87,116, 91,231, 32,153, 93, 99, 84,187, 2,218, 85, 88,178,138,102,119, 91,187, 80,106,237,203,221,163,100, - 11,195,155, 9,110,119, 22,141,250,181, 43, 27,193,159, 4,184,217,193,170, 71, 86, 1,125,216,193,173,193,238,196,185,218,172, - 52,121,238,117,178,139, 66,212,161,220, 69, 32, 71,116, 95,236,181,108,178,165,184,157,118,246,252, 70,144,223,125,131,244,197, - 29,199,239,239,204,191,175,176,206,208,157, 11,221,179,129, 48, 6,228, 78,130,127,249,200,112,165, 95,169,240, 83, 25,126,199, - 57,252,201,239, 50,228,104,249,235,112,239, 11,212,127,255, 77,244,215,182,240, 50, 68, 6,248,210, 6,237,162, 93,156,125, 64, -143, 3,178, 86,244,178, 32, 95, 85, 88,101,228, 41, 69,190,169,163,191, 28,185, 26,149,156,218,238, 91,145,143,175,144,231, 43, -241, 51, 91,130,216,217,153,196,182, 20,217, 45, 98,181,218,205, 47, 10,238, 88, 16, 63,244,103,146,161, 49, 7,230, 6,171,238, -148,190,194,250, 36,210, 63,211, 17,158,237,168, 91, 8,217, 87, 51,209,132,109,114,154, 76, 12,231,159,149, 28,119,118,232, 30, -123, 8,203, 81,176,131,187,247, 78,188,217,213,130,216,225, 94, 60, 82,175, 41,206, 6,181,195, 60, 55, 72,183,211,255,170,139, - 58,214, 30,109, 53,184,152,242,145,194, 99, 95,252,223,173,246,223,110, 40,156,101, 56, 57,133,227, 79,192,249, 31,181,212, 54, -221, 93,215, 71,219,120,126,124, 29,174,254, 95,120,255, 1,252,114, 7, 95,217, 81,134, 1, 93, 87,116, 45,112, 97, 69, 78,240, - 46, 90,101,166,189, 37, 21,130,216,193, 63,137,249,195,242, 97,230,206,218,172,164, 11,131,182, 51,172,115,209, 9, 97,170,158, - 15, 95,107,157,178,194, 67,240,124, 6,223, 47, 74,245,238, 85,172, 25,168,254,178, 63,242,220,138,155,159, 92,241,198,103,246, -188,127, 81,124,124, 94, 45, 79,187, 40,187, 90,217,150,204,154,202,202,173,113, 85,210,180,188,157, 4,103,190,174,211, 18,230, -116,178,234, 25,220,254,138,150,203, 11, 75, 74, 20, 70,173,243, 14, 30,174,165,148, 57, 37,206,111,238, 85,231, 48, 16,220,206, - 86, 23,157,189,253,252, 25, 56,210,196, 98,211,143, 13,139,181,228,181, 49,246,172, 70,247,240, 22, 85,191,127, 51, 1,190, 84, -100, 10, 25, 65,231,144,154, 73,211,196,161,157,140, 15, 96, 32, 5, 93, 28,172,142, 5,151,224, 42,246,197,107,251,128, 13,197, -204,117,208,182,226, 14,211,163,197,246,222, 46, 55, 28, 65, 8,213,223,121,109, 2,105,157,131,104,132, 5,253, 78, 38,139,234, -245,157,143,106,153,247,208,215,153, 81,139, 85, 67,235,138,175, 63,251,136, 16, 83,111,231, 88,206,166,217,137,174,218, 47,254, -179,131, 57,169, 90,246,188,101,164, 87, 23, 11, 54,204,235,172, 73, 16, 62,112,181,110,254,248,166,220,215,107, 80,170,195,122, - 6, 69, 73,101,220, 59, 30, 85, 38,123,129,136,197,126,118, 93, 79, 89,157, 0, 3, 50, 92, 17,114,153,222,184,192,124, 17, 88, - 32,130,195, 26, 84, 60,179,216, 20,242, 69,172, 51,149, 24,145,148,208,253,206,170,174, 90, 93,228, 96, 4,151,189,127,217, 85, -108, 20, 31,124, 44,215,234,152,160,173,153, 85, 31, 66,250, 56,175, 6, 68, 44,114,177,182, 84, 31,111, 78, 35,133,236, 48,145, -136, 16,170, 29,242,157, 84, 2,137,144, 51,253,104,214,141, 85,115,237,118,145,176,138, 70,111, 59, 75,240, 82,143, 60,219,219, - 65,254, 97,239,176,130,139,211,246, 5, 30, 20,184,220, 91, 39,124,127, 64, 31,143,240, 40,163,155,193, 14,111,247, 71,105,167, - 70,225,219,120,183,229,162, 29,180,162, 67, 70, 51, 19,164, 67,146,141, 9, 37,185,128,185,239,144, 51, 59, 4, 36, 5,228,212, -199,253,247,147,253,172,205, 8,131, 88,112,204,152, 77,140,118,106,138,107,238,172,236,141, 73,192,123, 25, 61,222,120,124,152, -115,199, 31, 87, 19, 63, 14, 94,132, 60,168,232, 87, 6,155,196,124, 34,195,183,158,218, 52, 64, 45,247, 35,252,233,167, 9,119, -119,144, 11,233, 34, 35, 59,243,129, 51, 2, 23,216,110,127,155, 44, 72,229,103, 51,172, 87,240,239,124,204, 38, 14,227, 79,195, -151,222,166,254,145,175,145, 47,183,140, 31, 9,232,169,176, 74, 74,247,246, 30,142, 34, 37, 6,203,108,223,248,205,110, 47,200, -168,132,167, 34,218, 7,116, 29, 73,207, 70,214,111,101,198, 98, 89, 39,245, 82,137,239, 90,148,107,240, 14,156,208,232, 85, 83, -138,131,237,205,247, 54,110,236,188, 99, 8,213,173,152,174,242,149, 98,213,112, 21,144,226,129, 9, 79,247,132,143,174, 9,119, - 86, 48,184, 32,250,134, 21, 31,156, 70,228, 36,218,161,125,106,212, 61,214,193, 42,220,206,219, 65,137, 11,127,204,194, 0, 91, - 21,246, 2,143, 71,247, 45,101,251,231,173,211,104,246, 83,204,148,147,113, 34,122, 22,108,218,190,242,169,208,101,133,187,217, - 96, 70,191,239,150,237,226,127,240,158,221,237,142, 11,114,187,194,241,211,112,246,125,144, 62,234,168,216,114,237,174,177,182, -117,200,246, 39, 96,243, 58,250,149, 14,190, 92,168,251,129,186,217,163,151,197, 44, 53,189, 16,139,103,160, 79, 70,173, 69, 42, -152,207, 97, 61,120,109,178,159, 54, 66,156,223,211,236,209,235, 44, 52, 86,171,212, 61, 60,201,186,154, 32,209, 59, 42,166,177, -178,137,113,173,101, 44,141,196,166, 50,229, 81,139,194,153, 4, 94,248,109, 43,226, 55,119,232, 47,108,169, 46, 86,106,229, 68, -187,125,238,213, 92, 46,189,219, 19,107, 40, 38,236,155,218,225,105, 14,237, 29,126, 59,216,235, 2, 58,194,129, 72,172,163,237, -234,231, 68,180, 57,192,211,254, 62,105,153,192,176, 7,242, 46,209,153,142,183,232,136,131,101,172, 30,218,168,218,125,238,186, -183, 95, 15,201,124,237, 94, 89,166,108,113,157,189,206,174, 69,170, 75,222,122,235,254,245, 73, 96,203, 12, 99,145,107,112,242, -107,105,103,115, 30,209,244,249, 76, 96, 63,230, 64,149,214,113, 87,153, 1, 54,210, 68, 84,117, 97, 61, 91, 38,238,137, 89,161, -171, 51,152, 13,161, 59,139,196,102, 8,217, 60, 46,175, 11, 7,128,180, 66,209,181, 4,242,100,190,206, 44, 76,107, 54, 73,105, -161, 57,126, 22,121,210, 92, 76, 29,161, 75, 94, 12, 85, 66,234, 38, 91, 95,235,210, 45,140,102,142,169,211,170, 72,169,208,165, - 73,201,190,124,252, 15, 68,203, 79,168, 99,215,140,232,194, 74, 34, 79,212,140,150, 49, 79,169,179,136,204,195, 15,146, 8,146, - 51,244,107, 98,201,144,214, 54, 50,240, 10,211,198,200,214,117, 55,178,154,165,176,153, 63,189,168,101,215,142, 84, 74, 53, 22, - 58, 37, 32,235, 21, 49,196,105, 52, 31, 22,251,188,172,129,193, 22, 41, 20, 81,207,107,159, 63,160, 56,141,232,132,218, 62,244, - 92,168,152, 53, 76, 39,133,169,221,148,109, 66,109, 55,207,147,104,142,177,158, 74, 71, 97, 85, 42,235,146,233, 99, 34,158,175, -144, 35, 11,253,178,120, 98,223,195, 63,171,200,119,174,225,195, 39,200,173, 35, 59,112,107,133,109,133,171, 61, 60, 84,120,111, -128, 7, 3,250,238,136,222,219,163,155,209, 14,243,161, 88,190,115,219, 93,165,134,215, 86,234, 88, 93,128,232, 23,187, 24,164, - 97,142,185,117,251, 20, 3, 49, 57, 77,168, 31, 8, 15, 77,124, 37,235, 64,216, 36,194,174,131, 55, 92, 46,140,237, 79,229, 44, - 34,251, 8,143, 21,185, 25,204,107,126,171,179,195,231, 81,134, 55,119,112,158,224, 70, 68, 78,131,117,225, 87, 25,222,202,112, - 97,156,113,233, 42,242,162,160, 23,138,222, 43,200, 91, 35,220, 62,130, 27, 29,242,160,162,253, 10,158,143,208, 41,242,104,132, - 7,131,141,250, 69,145, 91,197,172, 86, 23,192,223,218,194,247,158,194,127,249,113, 56,238, 97,115, 23,254,201,219,212,255,248, - 53,134, 52,178,125, 37, 48, 6,161,238, 97,119,161, 60, 69,241,179, 79,169, 95,119,245,218,157,136,222,138,132,211,128,174,133, -186, 41,232, 69, 57,232, 38,170,147, 5,211,253,138,110,108,215,223,149,198,233, 23, 66,178,200, 96,201,134, 61,175, 98,201,119, - 33,137,229,198, 71,103, 49, 4, 69,114, 32,156,118,200,211,137,250,110, 65, 99, 48,161,227, 75,107,228,233,206, 30,244,210,119, -220, 61,232,177,143, 3,130, 75,224,167,229, 98,103,191, 14, 98, 73,104,185,204,244,149,236,183,153,226,135,198,142,217,144,156, - 77,241,169, 69,172, 83,223, 57,223, 64, 43,114,218, 27,163,224, 76,140,236,151, 58,120,184,133,175,239,109,101,209, 9,188,185, -135,247,178, 5, 2,220, 8,246,121,156, 29,193,241,119,194,234,183,248,215,126,184,118,219, 88, 89,209,177,255, 60,236,126, 24, -189,183,135, 47,247,232,227, 29,249,222,150,178, 25, 28,126, 99, 45, 89,170, 48,202,194,251,221, 82, 11, 91,184,201, 2,202,165, - 11,130,220,146,197,221,178,210, 61,203,102, 49,142,158,168, 62, 62, 22,159,187,219,232,247, 26, 79, 8, 37,121,234, 99,113, 84, -165,136,109, 45, 54, 65,249,220,143, 95,176,251, 97,101, 47,141,141,109,227,236,136, 80,156, 64,215, 55,221,105, 16,142,164,161, - 67, 27,169,114,150,172,181,196,177, 6,108,105,217,202,193, 59,223, 50,185,188,197, 34,158,157, 35,149,181,129, 58,101, 49,250, - 85,146, 67, 69, 6,223, 11,183,177,118,110,141,138,204, 80,155,165, 27,235,176, 27, 91,132,253, 77, 52,186,121,188, 20, 16,167, -109, 46,138,132,198,253,152,148,224,117, 10,194, 20, 39,149, 29,100,177, 47,133,126,186, 32,104,126, 0,146, 85, 69,174, 53,239, -166,149,146,197,206,160, 97,113,163,139,218,170,151, 1, 9,139,145,150,134, 79, 43,115,241,193, 34,213,112,210,112,205,212,148, - 39, 78,194, 57,132, 38,120, 12, 44, 79, 8,251, 84,117, 1, 10,250,141,242, 89,218, 53,117,125, 57,223, 86, 17, 66,236,187,137, - 4, 23,155, 71, 93,157, 76,151,179,221,163, 92,143,129,204,133,141,189,223,209, 14,254,246,124, 15, 88, 57, 11,106,229,114,151, -222,214, 84, 58,123,250,209, 15, 24,216, 7, 33,229,106,136, 81, 45, 74,215, 7, 82, 76, 4, 81, 36,117,196,184, 66,227, 26, 73, -167,212,106, 67,176, 78, 93,109,170, 25,145,206,144,120,248,151,172, 24, 41,174,198,196,128, 65, 39, 2,197,224, 32, 68,194,144, -160,139,118, 64, 59,109,173, 46, 88,202,170,106, 80, 53,236,198,209,252,223,193,239, 14, 73, 60,159,183, 26,174, 47, 16,209, 80, -217,143,197, 94,100,246,225, 94, 47,136, 22,118, 57,179, 18, 56, 78,194, 73,138,172,168, 28,111, 11,125, 8,196, 27, 61,242,244, - 9,242, 66,111, 2,226,126, 68,184,132,167,247,200, 43, 43,184,243, 50,156,220, 52, 37,240,110,111,251,241,135,213,242,192,223, - 26,208,119,246,232,251, 25,221,236,169,155, 17,174, 70,234,174, 80,107, 33,123, 61, 95, 69,169, 81,144,193,191, 40,193,242,207, - 75,145, 86, 23, 77,228,172,226, 49,182, 13,157,153, 4,194, 8, 49, 40,105, 83,232,163, 18,163,146, 58, 33, 62, 20, 66,181,238, - 36, 28, 91,150,189,238,132,112, 20, 9, 47,174,144,211,106,104,185,149, 32,187, 8,131,162,143, 70,216, 23,164, 56,121,250,162, -192, 90,209, 62,194,105, 64, 7, 65, 71,179, 44,134,181,117,152, 82,176, 63,247,222,206,166, 22,231,107,232, 7,248,106,133, 51, -144,149,131,116,246, 3,218, 85,228,158,194, 15,111,224,215, 51,252,201,231,224,207,124,163, 93,113,239, 95,192,223,120,157,242, - 87,223,102,123, 86,216, 61, 39,236,131, 82,243,172, 31,169, 10, 49, 87, 52,249,170,119, 91,225, 45, 11,196,209,231, 19,117,175, -104, 22,100, 87, 25,223,203,108, 42,142, 23,182,115, 83,179, 39,149,157, 68,194, 0, 97,167, 48,186, 53,243,164, 67,142, 18, 58, - 66,237, 5, 61,241, 74,223,149,232,146, 32,196,222,246,222, 47,246,240,220,138,240,176,192,205,104, 83,143,243,100,171,139, 77, -134,219,106,207, 81,152, 91,129, 81,237,191,143,222, 31,141,217, 66,101,176,184, 84, 70,172, 3,223,249, 33,159,220,215,165,213, -146,234, 66,227, 75, 87,215, 99,248,216,105,133,209,231,238,244, 6,153, 89, 97, 34,187,130, 21, 98,175, 22,227, 29, 72,129, 13, -240,247, 30,216,168,255, 70,132,155, 5,238, 20, 88,191, 0,235,239, 54,255,250, 20,153,186, 16,198, 73,130,241, 85,184,250,239, -209,247,222,132,207,173,168, 95,186, 34,127,233,130,113,200,140,209, 1, 49,101,182,232,118,209,110,160,163,251,169, 7,153, 91, -211,202, 33,242,244,131,136, 40,181,109,224,220,139, 29, 43,139,108,182, 54,182,159,163, 50,147, 52,142,185,186,154,218,111,184, -157,117,199, 77, 17, 95,220,158,245,184,100,187, 79,232, 60, 5,168, 40, 35,202,190, 40,161,113, 47, 48,186, 32, 49,248,110, 94, -167,149,158,248,159,159, 32, 40,211,227,232,204,255,215,249,144,111, 62,237,226, 19,196,212,148,232,139,110, 81,197, 64, 44,201, -195, 88, 28, 9, 62, 29,226, 97, 41, 34,116,229,116, 89, 88,225,174,183,117,203,230, 92,171, 78,157,112, 27,179,183, 69,177, 30, -236,241,117,145,186,118,168,112, 23,102, 11,222, 97,116,209,172,111,138,174,164,215,133, 72,238, 48,241, 76, 14, 70,216, 19, 64, -133, 58,101,120,180, 71,175,174,113,152, 64, 79,190, 86,109,227,109, 9,205,214, 53,139,246,170, 43,166,150,225, 46, 70,146,170, -211,115, 84, 89, 18,224, 90,142,192,108,169, 19,253,128,116, 6,209, 67,181,192, 53, 82,157, 46, 44,110, 41,153, 56,186, 17,249, - 66, 76,102,171, 22,168,227,136, 22,215, 65,212,178,152, 50,184,222,160,235, 92, 18, 86, 93,171,113,232,226,230,137,207,101, 46, - 52,108,244, 94, 15,162,111, 15, 28, 11,126, 1,165, 90, 43, 59,131,252,210, 75, 79, 82,165,171, 35, 93,215, 19,211,218,190,171, -187,135,176,223,210, 21, 83,152, 27, 39,221,198,239, 41, 26,116,165,115,161,204, 94,139,147,210, 58,243,211, 73,165,247,175,122, -148,129,152, 86,212, 16,209, 82,166,106, 75,252,159,115,197,253,168,179, 32, 69,131,144,130,135,176,160, 88,238,201,108,107, 16, -194,172, 84, 22,151, 79,104,177,253, 92,133, 16, 42,235, 16,184, 81, 51,235, 42,164,243, 21,242,194, 25,242,202, 41,242,225, 0, -207,111,145, 27, 27,100,157,225,244, 14, 60,245,135, 32,126,151,205,117,203, 15,161,151, 95,133,215, 42,188,150,209,175,110,225, -253,129,122, 49, 82,119,131,249, 17,135, 66, 29, 70,114,174,100, 17, 70, 85, 70,103, 94,215, 98, 35,223,214,200,105,181,213,233, -232,107,244, 54, 85,240,168,102,178,152,158, 78,147,107,226, 26, 45, 84, 44,153, 53, 22,136, 89,137, 87, 74, 79,161,235,160,219, -184,216, 37, 4,180,239,224, 1,132, 75,181,113,253,168,232,101,134,119, 70, 83,182,223, 72,118, 51,236, 93, 3,240,254, 0,167, - 61,188,208,217,225,241, 32,160, 95, 46,232,221, 1,217,251,158,255,182,160,249,210,202,238,151, 78, 44, 87, 61, 87,203,247, 88, - 5, 56,173,200,235, 5,126,122, 15,255,223, 22,206,122,248,177,239,129, 79, 60, 13,219,119,225,157,135,240,231, 95, 99,248,199, -247,217, 62, 15,155, 51, 75, 64,171,213,181, 3,206, 60,144,216, 70,123,158, 80,118,132,141,148,239, 86,116,175,240,116,231,232, -211, 66,206,238, 63,246,223, 94, 70,195,222, 18, 2,114,158,108, 20,174, 1,185, 2, 25, 20,110,246,240,145, 53,114, 18, 9, 93, -107, 67,220, 54,214,153,151,156,211,222,185,233,213, 86, 5, 31, 63,118, 5,122,180, 67,249,129,143,173,163, 34, 67,245,192, 51, -117,237,132,162,123,191,137, 94, 96, 69,208,191, 48, 88,164,108,135, 31,248,106, 93,254,214,171, 16,162,117,219,219,206, 84,234, - 53, 33,197,219,139,216,153, 31,253,142,147,227,250, 96,202,189, 62, 34, 87, 5, 94, 31,225, 81,181,247,232, 65, 99,131, 87,251, - 61,157, 88,193,245,210, 0, 55,111,194,201,239,134,254,227,126,103, 41,179,185, 76, 86,246,103,246,191, 12,155,255, 22,238,189, - 10,191,208, 81,126,228, 49,227,155, 23,140,146, 25,250, 48,121,156,227, 33, 97,133, 62, 78, 43,195,233, 95, 47,119,232,203,236, -107, 28,158,210,254, 23, 15, 90,205,235,120, 81,143, 92,117, 6,123, 4,122,105,192,151, 89,108, 84, 93, 96, 22,220,165, 82, 68, -167,169, 65, 20, 83,223,151,228,221,147,119,168, 90, 33, 68, 63,132,253,126,178, 87, 8,165,176, 90,220,219, 83,180, 90,204,183, - 97,126,168, 86,115, 50, 48,243, 14,116, 49, 73, 92,246,170, 77,168, 89,188,121, 17,213, 5,144,198, 68,127, 9,241,235, 95, 23, - 99,105,251,190, 79,197,145,206, 86,171,249,140, 20,174,199,122, 31,168,225, 85,167, 67, 34,120, 19,164, 85, 39, 49,149, 48, 79, - 5, 88, 4,180,132, 5, 56, 39,200,108, 15, 92, 6,185,206,217,107, 79,214, 24,237,185,196,133,214, 96,145,240,242, 1, 61,177, -206, 37,129, 44,130, 96,154,102, 56,204,222,255, 6, 9,159, 34, 95,117, 54,238, 5,105,118,189,176, 88, 35, 60,177,246,159, 67, -109,244,240, 61,147,131,229,129, 78,123,235,105, 2,225,142,165, 22,170,210, 73, 32,244,189, 79,134,235,148,154,214, 68,113,154, -203, 4,138,145,133, 28, 82, 29,190, 19, 66,116, 33,168, 78, 83,168, 67, 73,158, 28,136, 13, 38,226,100,176,231,178, 32,230,114, - 61, 13,182,189,158, 20,125,238, 63,168,144,115, 33,239,246,116,235, 68,212, 64, 24,246,112, 60, 32,247,223, 36,212,140,132, 58, - 89,188,149, 74,162,176, 86, 33,105,153,112,138,150,164,102, 28,204, 20,196,141,241,150,126, 36, 8, 26, 19,132, 68, 13, 13,198, - 81,208, 96, 92,120, 10, 84, 15,187, 15, 94,225,110, 75,165,171, 74,239,222, 71, 81, 27,243,131,141,241,115, 41, 86, 45, 17, 12, -227, 89,139,165,203,185, 10,127, 45,112,179, 84,206, 82, 15,207,172,145, 79,156, 34,159,236,145,143, 14,200,237, 45,172,143, 97, -253, 59,161,251, 30,232,127, 27,132,103,161,108, 97,248,155,232, 59,255, 16,126,174,194,167, 51,245, 98, 75,221,143, 6,179,201, - 35,117,167,104,168,148, 82,173, 81, 11, 66,198,179,142,139,255,234,254,249, 36,190,135,108,122, 52,191,246,134, 10,181,202,228, - 40,104,118,158, 60,216,205,101,240,155,131,136,105,167, 58,177,149,104,136,112, 20,133,149, 42, 43,133,163,160, 68, 41, 72, 53, -197,179,158, 20,244,204, 10, 3, 94,223,161,247, 71, 99,221,223, 74,112,220, 77,221, 5, 67,133,221, 96,144,153,231, 59, 27,223, -247, 5,238, 68,228,237, 1,189,168,112, 92,209,251, 21,253,244, 99,100,183,183,131, 47, 10,250,214,158, 48, 84, 59, 48, 69,144, -109,132,255,232, 89,248, 15,255, 77, 88,127, 28,234,143,194,107,239,195,127,240, 37,118,239, 94,177,125, 89, 24, 79,204,113, 85, - 23,128,138, 62, 90, 82, 46,216,181, 99, 69,142,141,159, 21,172,123,206,106,218,133,125, 37,191, 58,178, 27,205, 15,142,219,139, -210, 70, 45,158,246,230, 10,238,244,246,235,145, 69,219,202,168,230,233,126,190,131, 91,106,246,174,228,115,227, 32, 51, 13,101, - 53,218,254, 63, 62, 99, 97,233,187, 75,123,162, 23, 21, 94,191,178, 2,104, 83, 97,168,232,174,160,219, 98,255,156, 21,221,121, - 39, 55, 8,220,221, 33,127,106,141,124,235,191, 11,235, 63, 52, 7,169,232, 61,224, 43, 80,190, 0,229, 61,208, 43,168, 27,243, -147,215,141, 85, 38, 57,216, 56, 60, 90,102,171,210, 65,233,124,108,175,200,155, 91,248,213,157, 49, 15,126,247, 45,248,226, 3, -120, 99,107,223,171, 36,246, 70,222, 22,248,196, 22, 94, 88,195,201,247,192,250,123,124,183, 52,206,135, 57, 21,202, 61,216,253, - 24,108,255,119,244,205, 7,232,255, 35,148,127,244,128,252, 96,203,238, 8,118, 41, 48, 44, 52, 57,141, 63, 16,253, 0,232,252, - 62, 51, 78, 22,214,153, 22,215,249,239, 25,125,239, 91, 29, 27,123,144,204, 22,150,221,251,162,111,108,128, 23,204, 46,155,130, -229, 69,104,139,171,245,181,156,184,141, 78,131, 77,185,130, 90,132,106,243,118,143, 10,251, 50,135, 50,129,216, 58,133,176, 80, -221,155,112, 50, 3,235, 96,163,241, 82,237, 16, 25,125,159, 27,131, 21,222,197,195, 56,100, 98,110,133, 5,252,253,154, 57,253, - 32,215,124,145,212,230, 97, 46,237, 30,221, 47,198,200, 73, 22, 30,246,230,197,174, 58,143,215, 15,211,203, 15,142,197,101,235, -214,186,253,220, 20,241,234,169,115, 50, 75, 21,101,241,185,134,131,194, 96,113, 8, 45,215, 37,139,193,112,253,141,230,214,204, - 84,185, 72, 53, 76,110,235,196,157, 12,215, 44,111,185, 33,106,213,227, 94,130,120,238,185, 23, 72, 65, 38,248, 78, 27,181, 7, - 76,196, 90,189, 18,140, 62,201,136, 11, 86,190, 4, 99,132,148,122,200,132, 87,157,139, 26,189,166,116, 95,190,155,141,250,231, -172,226,201, 41,208, 20,232, 1, 72, 93,239,104, 86, 59,180, 99, 76,190,110, 80,202,176,119,216,197, 98,247, 68, 43,186, 23, 25, - 32,238, 60, 88, 36,198, 60, 9,189,145, 57,215,100,161,244,152, 16,138,242, 65, 48, 4, 47,120, 82, 41,149, 40,202, 81, 17,143, -223,195,130, 60,134,129,176,238, 96,191, 37, 94,220,155,200, 67, 73, 76, 29,220, 41, 28,147, 73, 19, 53, 74,141,241, 92,133, 81, -161,200, 72, 12,105, 26, 11,165, 10,149,140, 14, 3, 28, 37, 59,124, 68,145,236, 59,228, 34,179, 2, 83, 32,212, 58,125, 0, 89, - 45,215, 56,149, 58, 67, 31, 52, 19, 67,180, 70,106,172, 68,242, 84, 37, 15, 62, 79, 56, 11,240, 66, 45,156,173,123,248,232, 41, -225,149, 53,242, 91, 64, 94,217,192,217, 57,116,255, 10,172,254, 32,164,143,248, 30, 52, 66,185, 11,251,191,134,190,254, 67,240, - 35, 17,253, 98,166,236,246,134,209,221, 13,212,161, 76,192,155,138,218, 33, 29,230,220,237,234,135,181, 78, 98, 20,133, 69,192, - 92,109,187,161,214,157,235,225, 40,173,197,248, 14,238,145,110, 97, 2, 69, 13,230,209,196, 16, 67,133, 85,134,163,106,137,154, -199, 40,221,163,193, 46,220,167, 2,172, 50,245,205, 75,184,178,116,183,112, 35, 33, 47,174, 12, 45,106,112,108,123,240,187,163, - 61,169, 23,214,112,123,109, 10,250, 59, 3,188,176, 69,182, 5,237, 11,220,219,193, 63,219, 82,127,230,190,237,128,111, 37,179, -225, 17, 8,191,121,109,177,156,127,246, 89,248,238,223,105, 63,123,252, 65,248,217,215,225, 63,253, 42,101,183, 97,248,136,144, -147, 50,248, 67, 5,177,142,169,247, 72,121,170,157,107, 65, 43,146,155, 13, 7,100,109,209,168,147,129,229,189,202,240,168,162, - 29, 30, 12,100,124,241,245, 51, 29,242,145, 99,228,229, 19,228,217, 53,242,204, 10,158, 2, 78,119,230, 78,232, 5,122,133,238, - 41, 72,207, 24,180, 69,143,156, 82, 19, 33,158, 66,119, 11,228, 55, 1, 47, 0,127, 7,134, 95,178, 9,199,167,175, 96, 63,192, -219, 35,188, 61,152, 23,121,168,168,157, 42,104, 39, 22,165,122, 63, 34,175,109, 8,127, 54, 34,159,250, 1,224, 21, 7, 10,173, - 32,172, 64, 62, 14,252,139,243, 11,214,193, 72,111,186,113,133,225, 99,144,199,246,247,245, 17,148, 47, 35,250,171,176, 11,232, -189, 17,253,252, 35,228,115, 27,187, 70, 63,220,193,151, 31,193,175,236, 32, 6,244, 52,152,150,225, 86,133, 15,239,144, 91, 79, -193,233,167,224,244,223,128,244,226,162,103, 22, 40, 15, 97,248, 89,216,253, 31,240,232,255,167,235, 93,131,109,203,174,251,174, -223,152,115,174,181,247,121,221,103,119,223,238, 86,235,237,150,228,182,172,216,178, 99, 89,118, 98, 59,113, 98,226, 56,113, 66, -133, 24, 19, 82, 36, 69, 2, 5, 36, 80, 20, 85, 64, 97, 10,202, 64,133, 47, 64, 65, 21, 36, 85,144,144,132, 36, 80, 9,224,138, -147, 24,236, 56,196,137,223,145, 45, 63,164, 88, 45,181, 30, 45,169, 91,253,186,239,199, 57,103,239,189,214,156,115,240, 97,140, -185,214,218,231,182, 63,180,125,213,125,239, 57,231,238,189,246, 28,115,140,241,255,255,254, 47,161,159,174,212,191, 93,109,220, - 46,133,237,229,192,166, 24,151,188,137,218,162, 90,231,219,162, 80, 87,113, 46,192, 93,180,188,244, 77,245, 14,205,211, 10,117, - 70, 60, 77,241, 28,121, 49,122, 37,136,173,223, 90,231,219,160, 1, 77, 71, 88,108,200,154,170,249,206,163, 71,144, 70,102,221, - 97,174, 70, 81,107,157,100,205,190,247,247,201, 69,198,200,130,101, 54,151, 91,132,102, 93,236,159, 5, 6, 21,182, 62,110, 15, -226,145,164,193, 32, 53,181,234,148, 30, 23, 69, 38,209,153,161, 87, 93,240, 37,139, 84,177,139,225,187, 50,235, 0,194, 98, 50, - 61,179,206,231,223, 29, 91,167,190, 76, 19,107,197, 91,116,143,233, 23, 91, 21, 98, 0, 0, 32, 0, 73, 68, 65, 84,190,196,195, -182, 60,131,122,129,136,166,203,142,118, 65,167,211, 54,106,214,165, 57,109,169,187,210, 69,239,186, 47,190,171,250,152,248,122, -175,227,213,169, 43,222,247,232,135,197, 42,162, 57, 7,194,197,191, 79,144,125,207,252,133,184,227,226,127,151, 37,217,174,168, - 62,230,126, 3,125, 12, 28, 35,139,164,188,139,194,184, 9, 56,113,113,234,162, 30, 76, 38,102,217,238, 83, 34,244, 43,203,134, - 87, 37, 46,128, 48,181,100,223,165,235,212,133,207,193, 44, 76, 40,217,101,118,250,194,133,246,182, 23, 37,109, 95,195, 3, 99, -168,245,241, 49,196, 66,111,208,236,135,137,146,233,162,129, 68, 14, 99, 79, 9,129, 97, 55, 80,210,142,116,114, 29, 57,191, 75, - 28, 55,150, 39, 60, 20, 83,101, 75, 32,105,225,160,190, 29, 61,201,104,114,165, 84, 6,231,170,183, 14, 53,146,169, 99,128, 52, - 66,114,239,104, 48,251, 28,238, 15,157, 2,239, 27,160,193,189,150,141, 24,215,169, 34,193,197, 2,213,148,235,113,113,112, 0, -116,162,156, 8, 60, 83, 50, 55, 18,196, 27, 7,200,251, 58,228, 91, 10,242, 65, 96,253, 65,232,254, 37, 56,248, 78,136,151, 13, -161, 57,126, 14,182, 63, 5,143,254, 17,250,153, 91,240, 83, 61,229,141,145, 58,238,168,187, 1,221,101,178, 26,139,190,248,144, -161,104,139,237,243,125,184,131, 56, 20,223,247, 90,108, 51, 33, 76,205,151,233,167,176,241, 94,219, 45, 54,108,101, 45,251,118, -200,106,182,126,107, 42,219,135,195, 79,142, 33, 67, 78,166, 91,208, 29, 12, 17, 14,138,114, 92, 6,226, 77,168,159, 24,225, 53, -181, 92,241, 15, 28,154, 5,174, 98, 10,247, 36, 45, 81, 1,185,181, 65, 95,181,220,119,121,246,208,105,120,246,131,232,249, 0, -255,228, 33,229,179, 91,134,123,153, 92, 13,179,123,184,141,132,143,172,209, 91,138,254,250,136,252,240, 9,188,255, 18, 60,122, -209,252,239,127,247, 77,248, 95,111,194,149, 29,229,105, 35,124, 85,103, 60,196,101,182,177,143,222, 87, 71,129,238,122, 52,152, - 78,176, 14,133, 65,205,210,135,160, 81,172, 48,103,241,113,172, 83,254,182,176, 74, 17,121,223, 17,242,190, 99,228,125,135,200, -179, 7,112,253, 12, 57,201,208,191, 7,194,135, 65, 62, 12,188, 27,228,138,207,245,197,230,180,205,171, 29,139, 23,214, 10,124, - 26,118,191, 97, 54,193, 31,127, 8, 95,222,194, 7,162, 81,236,238,143,212,228,118,152, 13,200, 70,144,115,236,226, 68, 38,252, - 87, 87,145,223,251,163,192, 19, 80, 63, 15,245, 31,128, 60, 3,250,141, 16,158, 3,185,106, 33, 43,178, 54, 11, 25,199,246,115, -200,214, 72,112, 13, 88, 16,111, 1, 95,129,123, 27,244,197, 17,253,212, 41,124,121,103,135,201, 73,130, 79, 84,123,208, 14, 4, -158,234,224,201, 12,207, 13,198,247, 63,124, 15,172,191, 7, 14,190, 7,186,119,187,255, 92, 65, 31,217,238,124,247,183,224,244, - 23,208,151, 7,248,105,161,124, 98, 36,223, 63,103, 88, 43,103, 49,176, 41, 86,228,218, 4,169,157, 53, 69,188, 59,119, 87,221, -232,207, 98,244,206,124, 43, 76, 99,226,226,191,191,214,185, 75,106, 26,246,169,168,142, 83,182,144, 77,232, 90,240,138, 39,230, - 5,148, 88,253,247, 47,246,173,117,218,117, 47,247,185,222,161,183, 17, 64, 16,170, 36,250,232,246,200,226,231,135, 40,181, 56, -223,162, 61,133,238, 1,223,170, 19, 17, 3,172,170,146, 92,218,208,192, 54,161, 46,213,209,179,216, 47,180,127,225, 44,250,134, - 47,157,124,217, 62,126, 15, 11, 62,123,245, 51, 68, 22,180, 23,161, 5, 0, 49, 9,250,130,171,189, 77, 4, 38,123, 19, 0,157, - 66, 89, 22,197,118, 9,167,209,102,134,147,233,156,105,187,249,160,251, 72,218,134,113,189, 56, 88,175, 23,108, 86,243,152,126, -191,207, 13, 11,200,186,250,109, 33, 92, 48, 77, 46,227,201,219,152,190,178, 39, 32,152, 11,174,200,111, 19,217, 50, 55,192,181, - 49,225,223,142,108,215, 58,166,197, 94, 95,228,241,145,251,108, 89,147,233,245,108,118,235, 37,204, 69, 98, 48, 59,116,191,114, -151,140,131,182,186,206,129, 67,234,176,153,165,192,110,201,149, 55, 45, 66,104, 81,169,191,221,168,131, 69,138,249,146,208,164, - 50,185,165,116, 41,242,211,249, 66,215,114, 4,140, 77,150, 11, 42,145, 85, 8,172,164, 50,212,145, 48, 22,186,206,226, 29,227, -253,123,132, 98, 10,238,164, 74,172,133,181, 64, 39,117, 98, 98, 91, 28, 29,148,234,177,119,181,206, 64, 24, 12,187, 90,105,182, -128, 2,187, 45, 34, 43,247, 74,218, 7,183,214, 72,168,131,139,137,171, 79,230,189, 27, 10, 45, 34, 47, 24,170,214,199, 88, 65, -237,103, 82, 15,189,140, 56,219,131,194,181,237,142, 75, 73,137, 79, 29, 35,239, 89,195,183,123, 16, 88,247,173, 16,127, 8, 86, - 31, 50,145, 80,254, 28,108,255, 50,220,254, 57,244,229, 13,252, 90, 68, 95,138,148, 71, 91,106, 25,208, 49, 83,182,153, 34,134, -188,108,190,212,218,232, 76, 52,170, 29,251,170,236,210, 62,104, 23,198, 86,109,183, 62,237, 34,237, 80, 40, 89,167,215,114,185, -159,242,201,171, 37,149,250,175, 59,139,228,118,175,163, 11,149,212, 50, 60, 34, 74,248,242,142,113, 7,241, 84, 57,122,125, 71, -220, 40, 74, 66,174, 41,196,100,222,189,147, 14,206, 6,120,121,139,126,173,194,173, 1,190, 97, 68,179,192, 39,207,209,223,122, - 4,111,109, 25, 67,102,123, 41, 80,174, 26, 48, 93, 70, 69, 15,125, 31,126, 41,194, 15, 93,129, 23,142,225,214, 41,220,189, 7, -175,141,240, 19,247,224,201,140, 30,214,153, 66,185, 80,245,234, 34, 75, 33,136,208, 63,159,144, 99,129,251, 62, 38,172, 13, 16, -238,135,250,177,195,218, 79, 18,221, 93, 69, 94, 29,140,152,119, 57, 66, 72,200,213, 53,242,145, 19,228,106, 7, 79,222, 70,142, - 46, 65,252,211, 16,255, 32,196,119,128, 28, 46,108,101,186, 56,102,182,214, 21,203, 93, 7,237,108, 32,255, 56,124,254, 45,248, - 63,182,148, 23, 79,169, 97,132, 95, 80, 27,185,111,173,128,235,185,105, 57,194,229, 68,120, 97,141,252,190, 43,200,199, 62,132, -188,247, 47,122, 56, 74,129,244, 46, 40, 87, 29, 77,247,140,113, 93, 37, 61,158, 48, 37,173, 44, 30,248,255,255, 44,236,126, 20, - 94,188,137,254,114,164,254,243,141, 1,155,142,237, 57,169, 67,181,232,226, 85, 68,159,142,240,174,140,188,171,192,229,231,160, -255, 56, 28,124, 28,210,243,126, 89,141, 80, 55, 54,125,218,254, 18,236,126, 12,189,245, 10,252, 42,232,255,171,228, 91,231,212, - 58,176, 61, 80, 30, 97,242,128, 93,101, 82,216,198, 6, 81,145,137,141,100,201,235,237, 96,246, 11,103,146,121, 39, 27, 29, 13, - 91,242,190,250, 71,226,140,239,149, 11,157,108, 83,167,155,199, 87,246, 98, 38, 39, 37,245,212, 37,202,156,112,229,197,116,130, -160,120,174,249, 56, 81,191,204,213,208, 43,156, 47,236, 96, 34, 1,209,185,175, 13,213,109, 78, 46,124,212, 54, 98,111, 2, 51, -157, 47, 1,193,187,238,185, 24,153, 40, 46, 54,179,195,124,125, 33,182, 68,182,229, 16,251, 66, 71, 47,147,168,176, 78, 10,243, -206, 19,234,170,202,133,210,184,152,234,121, 1, 42, 94,124,157,158,239,103, 83,157, 18,199,150, 99,241,165,214,161, 94,228,178, -188,205, 36,119,249,221,101, 31,163,126,161, 67,159, 27,221, 37, 61, 79,246, 44, 15,115, 65,111, 23,131, 40,226, 92, 2,153,255, -124,203, 3,240,236,120, 93, 88,241,166, 39, 66,218, 4, 73,166,221,114,101,145, 95, 47,238, 98,242,103,106,185, 10,145, 6,156, - 10, 50,171,235,125,188,174, 11, 76,175,182,149,129, 79, 20, 82,138,132,152,236,189, 84, 69, 82,178, 66, 91, 43,185, 20, 75, 95, -163,238,241,230,247,200,121, 33, 80, 67,160,148,108,161, 47, 19, 23,192, 52, 22, 42, 51,251,128, 69,158,193,164,198,208,178,135, -136, 23,185,128, 21, 92, 68,224, 38, 36, 52, 14, 10,161, 84,214,100, 86,154, 81, 57,129,221,134,114,250, 8,137, 38,213,142, 8, -157, 40, 93, 44,244,197, 30,223, 34, 66, 8, 38, 56, 41, 85,208, 26,201,213, 68,106,181,152, 77, 41,104,157,124,126,218,104, 49, - 91, 65,250,222, 14, 71,140,252, 37,163,119,164,181,129,115,117,142,189, 68, 40,154,247, 62, 72, 45,172, 33,214, 74,162,114, 88, - 11, 87, 74,225, 40, 64, 58,234,145, 43,107,228, 15,172,224,119,101,228,137, 75,208,125, 63,196,239,134,110,132,221,223,129,237, - 47,192,253,151,208,207,111,224,147, 9,125,185,167,158,141,212, 60,160,117,152, 72, 65, 53,217, 77,191,150,166,216,100,102, 24, -203,227,162,140, 61,239, 14,139,192,130,197,248,105,250,196, 92,136, 4, 94, 94, 71,155,186,177,113,140,165,206, 47, 75,251, 80, - 4,119, 9,172,215,118,184,158, 15,240, 96,103, 93,213,245,104,183, 76,182,160,103,138, 94, 18,228, 60,195, 67,108,102,250,176, -192, 65, 52,141,194,203, 5,121, 54,163,215, 59,248, 72,135, 92, 91,195,111, 41,241, 13, 88, 7, 33,171,192,202, 82,136,234,231, -171,169,142,255,253,235,200,147, 7,112,115, 99, 41,114,193,242,188,249,222,158,242,226,128,190, 57, 34, 81, 89,128,114,231,196, - 46,103,169, 4,224,252,165, 76, 95,252,113,182, 58,141, 30, 7, 83,187, 99,241,187,168, 88,113,255,112,164,187,218,193,135,123, -163,205,189, 41,200,251, 15,144, 67,224,224, 85,228,232, 67,208,253, 37,232, 62, 48,167,147,253,182,215,226,100, 72,186, 18,108, -215,156,255, 2,124,238, 37,248,107, 35,229,139,103,148,211,108, 81,184,143, 42, 82,132,112,220, 35, 31, 58, 38,252, 11,151,144, -111,190,140,188,243,253,112,244, 97, 72,223, 9,114,205, 11,248, 8, 53, 67,121,217,119, 39, 79,248,252, 53,188,253,207,162, 25, -228, 30,232, 79,194,238,111,194, 27,175,192,207,117,240,203, 1,221,157,195, 42, 27,227, 32, 6, 36,118,118,187, 91, 5,244, 70, -130,247,239,144,247, 6, 56,254, 14, 56,248,227,208,127, 3,132,195,197,237,241, 12,242, 87,224,252,255,134,243,159, 69,191,250, - 16,126,178,163,190,184,163, 12,231,148,152, 25, 68, 57, 43,182,238, 25, 90, 68,230, 66,223,212,208,205, 77, 76, 93, 44,112,207, - 30, 93,119,167, 36,148, 94,132, 97,121, 25, 93,136,154,132,101,178,214, 92,224,202, 66,225, 27, 38,234,153, 46,210, 18,141,174, -146, 11,148, 32, 70,236,242,206, 10,215,228,168, 23,232,246, 76, 21, 85, 52, 43, 69,139,243, 54,132, 21, 66,205,202, 80,235, 4, -231,147, 11, 99, 78,241, 11, 67,213,249, 66, 17,188,235, 44, 58,255, 90,177,207, 91,179, 35,137, 24,221, 55, 8,220, 45,243,120, - 58,136,208, 97,208,171,176,176,173,114, 65,212,214, 76,230,170, 50,141,211,219,247, 14,139,130,222, 14,241,186,136, 29,217,191, - 28,201,228,162,215, 61, 21,157, 46,211, 81,253,125,219,167,239,201,194,192,215,158,210, 42,179,149,109, 89,136,117, 49, 29,145, -199, 85,130,254,188,204,153,236,149,101, 22,138, 78, 32,161, 25,198, 42, 83,246, 89,149,253,142, 63, 46, 4,145,186,140, 87, 69, -167, 92,245, 54, 53,105, 77, 99, 27,225, 7,177, 73,176,248,229, 46, 68,235,148, 69,162,173, 76,130,236,121,224,165,121,231,221, - 19, 30, 93, 85,175,110,119, 20,135,244,140, 30,214, 18, 83,242,177,123, 65,199,209, 34,127,107,181, 41,227,130,224,143,175,109, -164,235,205,202, 93,234,196,154, 87,239,242,219, 67, 35, 81, 30,163,236, 77,160,154,162, 51,161,175, 77, 40,218, 11, 35,251, 50, -248,164,197,126,176, 65, 18, 53, 23,250, 80,233, 36, 32,169, 39,156, 62, 98,172,149, 34,145, 64,101,229,194,179,180, 8,125, 79, -193, 60,143,187,106, 34, 19, 3,203,204,190,235, 80,203, 20,191, 23, 53,184, 88,166, 16,242, 56,101, 68,119,238,223,212,152,168, -227,232,188,118,127,108,106,157,185, 29,117,113,227, 13, 16,171,221, 84,187, 90,185, 92, 50, 87, 68,232,143,215,200,165, 21,242, - 97,133,239, 79,200, 7,158,128,248, 93, 16,126, 31,240, 0,118,255, 19,188,246, 34,250,250, 25,124, 13,120, 41,162,175,245,212, -243, 76,213,173,169, 23,107,153, 33, 19, 50, 71, 11,234,226, 1,154,212,186,139,235,108, 27,211,237,125,136, 10,110,153,154, 3, -197,216, 67, 62,202,219,166,244,168, 94,184,132, 45,254, 99,235,148, 86, 81,233, 59, 39,200, 10,156,111,109,186,222,101,120, 74, -225,248,133, 3,248,214, 35,194,234, 0,174, 29,216,174,121,147, 93,142, 47,150,189,221, 85,228,219,119,112, 71,225,134,203,161, -142, 42,242,206, 35,248,214,142,244,185, 45,233,179, 35,171,175, 95, 81,127,229,156,241,203, 3,233,195,135,200,191,251,132,133, -141,124,225, 1,124,126, 11,175, 43,124,104, 5,215,122,244,201, 14,125,119,111,236,246,251,195,188, 55,146, 25,122, 33, 69, 41, -209,124,198, 53, 43,185,179,184,211, 85,198,210,231,214, 1,118,126,196,100, 39,183,109,130,217,204,158, 92, 25,237,238,174, 34, -151, 59,131,177,231,183,144, 39,191, 9,214,127, 11,210,117, 27,171,235,153,183,136,235,183,217, 2,250, 13, 66, 15, 64, 30,192, -240, 31,193, 47,255, 58,245,191,129,250,234,150, 58, 22,184,220, 19,223,125, 68,248,174, 35,228,187,174, 32,207, 29,195,225, 26, -186, 99,251,115,163,192,163, 79,160, 55,255, 30,250,217,219,232, 43, 3,225,247, 95, 67,158,255, 51,176,250, 30, 39,227,108,108, -132,194,193,133,154,126, 6,250, 5,216,253,117,184,255, 51,240,210,125,187, 88,254, 86,143,106, 70,201,212,206,189,141,213, 93, -225, 93, 48,160,208, 51, 17, 62,176, 67,222, 25,225,232,123,224,232, 79, 65,255,254, 57,161,205,114, 23, 97,252, 26,156,253,117, -120,248, 75,232,103, 51,250,143,123,244,230, 72,233,183,212,243,204, 80, 42,103,152, 32, 63,123, 62,120,104,123,215, 38, 46, 11, - 30,173, 60, 59,105,102,138,151,103, 15, 73,128,174,170, 91,219,108,224, 47,161, 49,225,103,222,187,138,238, 57,157,130,234,162, - 27,217,183,116,165,230,237, 13, 80, 26,160,164, 84,235,148,177,241,125, 13, 22,136, 81,151,118,173, 90,173,243,118,161,211, 80, -237,188, 90,251,104, 91, 20,206,202,156,115,158, 23, 99,255, 6,250, 16, 92,221,175,115,136, 72,155, 7,182,103, 39, 47,125,199, -218,252,237,226,150, 54, 59, 20,218,190,183, 42,123, 69, 78, 23,175, 95, 93, 4,175, 84,199,255, 46,127,239, 52, 90,175,139,221, -244, 36,121,171,123,103,200,236, 75,223,135, 2,161, 60,150, 63, 22,216, 23,141,181, 64, 24, 97, 57,109,120,188,147, 23,246,173, - 84,203,189,241,148, 64,216,150,161,178,223,157,207,246,182,139, 73,100,138,134,102, 44,191, 72,133,123,108,233,224,147, 15,217, -215, 45, 41,116, 49, 16, 83,164, 15,137, 24, 19, 33, 70,243,144,203, 68,206,113,226,161, 78,255, 84,173,190,218,173, 19, 43,191, -169,234, 83,215,209,197,142,212,119,196, 16, 38, 33, 94, 74,157, 79, 11,132,243, 97,199,176, 90, 51,148, 66,206, 35,165, 20, 74, - 85,198, 50, 82,198,129,154, 71, 68, 13,139,174,165,236, 65,111,150,186, 9, 9, 50,191,234, 77,192,235,211,134, 41,201,237,237, -116,253,178, 39,201, 68,204, 89,161, 84, 9, 12, 33,178, 11,129, 94, 34, 93,239, 55,233, 97, 75, 8,129, 24, 18, 41, 70,122,170, -225, 86,147,249, 58, 27,222,180, 86, 33,103,101, 91, 96,168, 25,213, 56,177,161,139, 42,181, 75, 70,254, 41,101,242,148,138,102, -187, 28,168, 5,204,135, 46,145, 83, 66,106,153, 70, 19, 97, 82,130,122, 8,135,191,201, 61, 66,168,153, 64,101,157, 43, 87, 75, -229,136, 68,184,118,128,124, 52, 16,126, 0,248,134, 15,192,193, 15,130,126, 39,212, 35, 24,127, 2,125,253,175,193, 47,158,193, - 75, 29, 60, 90,161,231,153,186,115,129, 67, 53,119,185, 58,111,185,169, 33,107, 35,213,213,253,220,228,233, 17, 43,115,236,227, - 18,210,208, 58, 25, 60,158,179,237,215,162, 52,177, 78,179,177,232, 20, 69,168, 11,161, 76,149, 9, 68, 52,141,169,219, 39,196, -223,255,233,235, 14, 21, 78,207,224,108, 52,149,241,115, 1,142,159, 95, 33,223,127,213,138,208, 46, 26,188,100,157,204,239,220, - 24,170,138, 21,196,163,222,198,229,219,130,190,248, 8,253,201,251, 4, 45,200,147, 98, 20,189, 63,127,221,114, 0,126,106,199, -234,251,143,224, 7, 47, 25,124,253,215,239,194, 63, 60,133,251, 5,190,227, 0, 46,245,182, 31, 88, 11,114,163, 55,143,251,205, -209,118,153, 46, 38, 44,101, 74, 32, 53,203, 80, 81,182,126,217,137, 10,114, 37, 32, 43,161, 12,190,115, 56,138, 70,165,234,163, - 41,218,123,215, 6,124,169, 90,168,201,251,128,243,219,200, 7,190, 17, 46,253, 24,232, 3,208,191,231, 84,151,111, 4,158,127, -251,130,222,110, 24,245, 77,184,247,175,162,127,251,139,212,191,210, 91,134,253,247, 95, 35,253,192, 37,194, 7, 46,193,165, 67, - 91,180,138, 39,228, 61, 56, 69, 95,121,131,250, 43, 15,169, 63,123, 74,125,109,139,222, 43, 6,175, 73, 80,255,230, 45,194,135, -126, 4,249,143, 63, 66,120,225, 47, 64,247,188,127,191, 7, 46,130,251, 77,216,254, 19,120,248,179,232,171,111,161,159,170,240, - 27,107,244,245, 14, 98,166,166,115,232, 21,237,188, 53,206,201, 58,140,131,136, 92,234,224,217, 21,242,117, 91,120,199,122, 46, -232,221,123, 93, 31,176,155,180,234,228, 91, 48,252, 61,120,244,139,232,175, 84,244,147, 9,221,141, 20,217,160,247,182,236,182, -112,234, 17,169,109,125, 20,151, 49,162,190,227, 93,238, 68,219,180,178, 4,115, 86, 68,204,157, 23,247,104, 97,179,184,142,104, -248,232,182,136,174,194,222,165, 92,203,133, 69, 41,182, 62,178,253,180, 81, 46, 41,173,147,174, 22,187,233, 23,133, 16,125, 87, -238,116, 57,251, 18,117, 6,212,104,219,237,234, 36, 66,139,106,160,191,222,141, 31, 59,223, 95,123, 42,182,239, 37,117,218, 47, - 71, 95, 5,166,226, 89, 22, 30,241, 89,246,118,195, 86,208,207,213,132,123, 54,222,173,123,148,175,101,231,220, 4,107,114,161, - 73,104, 83,172,246, 26, 38,167,198, 5,229,226,198,122,138,173, 21,239,229,151, 17,168,123,211,238, 58,219,196,248,109, 24,112, -178, 40,242,203, 79, 73, 81,221,179,123,233,126, 9, 95, 76,153,229, 49, 42,218, 98, 8,137, 59, 87,169, 75, 11,123, 99, 83, 52, -107,180,159,109, 77, 9,175, 11,191,127,184,168,190, 95,236,186,155,250,109, 21, 34,253,170,167, 79,189, 77, 38,101, 86,139,103, -247,139, 55,193,246,228,252,241,155,102,148,232,150,226, 64,173,126, 17,107,209,187, 37,163,209,242, 3, 36, 70,183,112,167, 41, -108,104,204,133, 92,202, 76, 11, 76,137, 46, 38, 42, 74, 87,123,198,213, 26,205,227,164,142,207, 11,161,247,180,142, 16, 22,163, -243,233,176,159,169, 63,211, 62,136,189, 36, 57, 31, 29,237,121,218,155,195, 32,165,100, 30,113,201,202, 86, 11,171,160, 22, 4, - 49,236, 40,187,115, 98, 54, 86,112, 18,251,144, 75, 4, 73, 29, 33, 85, 59,228, 20, 80, 27, 85,103,215,239, 84, 45, 83, 96,131, -229,164,103, 98,138,136, 99, 3, 82, 3, 17, 20,179,186,105, 13,140,181, 24, 35, 94,162,129,109, 88,176,139, 77,209,231, 99,124, - 37, 81,233,107,229, 68, 11,199,187, 64,234,214,132,247,118,200,159, 0,249,248,187,225,202,191, 6,225,247, 64,184,102,150,161, -179,191,128,126,225,167,225,199, 59,120, 45, 81,115, 54, 48, 64, 41,104,205,118,192, 4, 75, 77,211,176,175,236,208,197,195,180, - 55, 62,126, 27,143,160, 46, 88,198,161, 50,133,216,180, 67, 44,121,151,170,222, 44,215, 11,176, 34,163,183, 90,210, 93,187, 68, -168,103,186,136,168,177, 77, 60,200, 45,186,205,109,244, 67, 96,200,246,231,159, 70,185,244,142, 30,190,249,192,178,220, 31,130, -156,103,219, 1, 5, 87,191, 71, 93, 40,128,189, 19,222,217, 7, 76,207,171,161, 71,213, 41,104, 47, 13,240, 98,182,246,235, 15, -172,225, 27,162,113,218,255,241,134,242,202,104,241,173, 69,233, 62,179,133, 39, 2,188,223,101,233, 59,224, 41,231,161,223,207, -148,245, 62,199, 89, 27, 9,206,195,128,114, 86,202, 65, 64, 46, 1,119,213,186,232,203,193, 72,110, 87,123, 51,234,171,229, 22, - 79, 57,158,183, 10,242,234, 93,228,187, 34, 92,249,159,173,251,149, 53,240, 61,192,203,192, 7,125, 87,253, 54,142, 90,205, 48, -252, 99,120,240,231,208, 79, 63,128,235,207, 16,254,198, 49,188,243, 18,172,220, 15,189, 27,224,193, 67,244,107,231,212, 95,124, - 64,254,249,115,202,171, 27,242,131,209, 48,200, 43,208,163,136, 62, 3,161, 19, 58, 17,186, 26,136, 95, 1,249,215,127, 3,253, -221, 63,136,252,145,107,200,213,222,214, 29,247, 6,120,237, 12,125, 69,224,206, 1,122,247, 16, 54,138,134,140, 94,221, 77,221, -152,133,183, 40,172, 44, 8, 70,106, 68,142, 59,228,157, 9,190,225, 28,158,186, 12,135, 63, 0, 7,127, 12,210,115,166,164,183, -113,134,245,201,186,131,252, 51,112,231,239,163,191,148,209,127,190, 70,183, 91,202,253,115,202, 27, 27,206,179,114, 38, 98,153, -231, 42,115, 54,119,219, 31,239,229, 99,207, 71,186, 22,235, 80, 69,103,145, 21,227,140, 40, 77, 14,207, 11,139, 2, 86,131, 23, - 38,173, 38,158,243,162, 91,124, 15,149,252, 89,239,253, 86, 43,110, 81,203, 77,205,173,179,245,172,226,220,236,246, 51,121, 72, - 75, 93,164, 55, 6,143, 9,147,170,150,237,238,227, 93, 31,246, 76,135,121,138, 50, 55, 30, 4,106, 10,116, 77, 47, 83,161,102, - 27,116, 31, 68, 37,138,173, 19,243, 20,184, 34,123,126,251, 81,149, 17, 49, 79,126, 19,244, 77, 34,172, 38,172,155, 63,232,177, -101,128,235, 50,249,108,150,198,139, 66,148,234,129, 67, 77, 7,208,188,227,117,178,131, 70,183,208, 22,213,125, 4,220, 82,198, -182,224,179,215, 11,133,120, 41,154,187,168,100,159,123, 8, 93,128,105,228, 49,192,218,227, 10,248,133, 50,223, 45,118,211, 14, -152,118,249,114,174,251, 34, 14, 53, 74, 36,122,114,217, 88,171,101, 9,132, 54, 22,183, 12,245,177, 20,155,160,185,107, 33, 74, -160, 75, 29,169,235, 9, 41, 78,176, 30, 45,121, 47,223, 94, 38,207,119,152, 50,222, 67,176,175,107, 35,121,219,223,103,119,120, -149,106, 23,187, 20,125, 9, 36, 98,235, 28, 21, 6,169, 72, 45,140,170,108,135, 29, 99, 46, 20,167,195, 45,133,138,168, 61,127, -177, 95, 17,186,158, 93, 30,145, 16, 41,195, 72, 45, 6,168,153,128, 57, 23,111, 68, 58,135,181, 40, 51,183, 96,207,202,118,193, -235, 63, 9, 1,171,146,242, 80, 44,236, 32, 12,236, 42,156, 82,169, 49, 81,119,149,176,217, 17,164, 78,232, 84,170,239, 22,197, -195, 41,142,123, 24, 10,186,117,116,107,105,162, 49,117,209, 76,180, 34,165,149,190, 40,169, 55,254,186, 37, 48,153, 37, 68, 85, -169,238, 47, 55,250, 92,103,187,206, 90,136,213,110,223,154, 71,208, 74,196,194, 86, 86, 89,185, 50, 42,171,176, 34, 60,181, 34, -252,145,138,252,192,101,120,250,207, 66,247,135,129,107, 62,255,251, 10, 60,250, 81,244, 51,191, 9,255,160, 71, 95, 55,108,173, - 82,156,244,229, 4,179,184, 8, 83, 17,157,176,179,109,103, 94,203,252,122,199,199,200,217,186, 76,213,155, 62,148,102,127, 94, -140,213,235, 28, 92, 16,124,156, 25, 23, 23,129,230, 16, 16,223,147,247,189, 71,136,186,202,120,229,128,157, 92,140, 69,146,157, -123,146, 92, 28,184, 78,194, 81, 81,174,157, 4,228,235,122, 56, 11,240,178,229,163,211,139, 41,203,215,217,150,237, 71,222,174, -164, 96,150,177, 85,178, 47,184, 29,145, 15,154,255, 90,223,218, 34,247, 71,144, 1, 94, 29,224,155, 86,182, 43,254,177, 45,249, -179, 59, 54,219,204,112,100, 83,154,213,137, 32,247, 11,233,231,206,205, 7,255, 76, 15,135, 22, 16, 35,223,216,211,253, 82, 65, -182, 22,209,186, 87, 90,117,246,145,170, 8,227, 80, 25,190, 4,105, 29,225,122,176,164,184, 75, 78,125, 83,144, 65,224,190,213, -118,182,231, 72,127,142,124,223, 21,120,225,199, 49, 91, 67, 92,124,117,119, 53,224,222,239,229,199,161,110, 96,252, 77, 24,254, - 50,244,151,145,111,123, 7,196, 3,187,205,111,118,232,171,143, 40,191,250,128,242, 51,143,216,125,246,156,241,225,200, 80, 43, -185, 19,198, 99, 65,159, 17, 74,151, 88,202, 63, 66,177,184,217,117,172,172,175, 10,171, 49,194,175, 1,191,118,215, 46, 9,135, - 46, 22, 8,107,155, 58, 60, 33,112,185,160, 93, 65,183,217, 81,109,205,180, 12, 72, 66, 46, 37,194, 81, 71,168,157,141,220, 63, - 50,192,179,239,134,195, 63, 6,253,239, 51,149, 61,163,167,170, 36,187,208,232, 22, 54,127, 7,253,234, 95,132,159, 29,208,155, -135,212, 7,103,148, 55,207, 24,239, 13, 54,110, 23, 97,172,236,199, 97,182,255,221,198,204,139, 73, 80,172, 83, 48,226, 36, 26, - 83,109,177,165,115,164,106, 90, 36,131,181, 32,141,184, 88,253, 37,255,156,100,221,135,173, 20,153, 85,230,109, 93, 88, 23,163, -222,226,251,199,204, 92, 36,140,157, 45,143,133,119, 68, 22,185,234, 64,231,208,142, 34,182,182, 42, 42,148, 96,157, 86, 41,118, - 96,135,208,236,188,179,176, 73,189,226, 14, 84,122, 49, 61, 17,226,198, 89,245, 64, 40,255,187,108,105, 10,119,231, 74, 0,131, -234, 98,251,189,124,230,213, 35, 89,101, 66,207, 46, 3, 61,130, 95,122,218,142,125, 18,215, 79,141,132, 76,231,203, 76,135,243, -124,246,197, 94,126,207,211,188,112, 88,201,219,164,128, 45,235, 73,148, 89, 4,172,178,180,202,201, 50, 47,101,138, 62,213,133, - 61, 45,184,235, 97,210,134,225,129, 59, 58, 19,239,218, 42,184,177,223, 45,125,204, 60,237,181,214,133,216,205,117, 24,205,102, - 40, 17,237,172, 3,143,197,128,101,171,148, 8, 93, 15, 18,200,254,103,155,134, 35,180,191,140,119,105,109,188,173,126, 45,211, -150, 36, 40,197, 38,197, 33,152,102, 44, 38,194, 42, 18,137,211,100, 73, 28, 24, 19, 68,168,181, 48,162,108,119, 59, 74,206,211, -168,158, 16, 93,147,225,147, 94,199, 18,167,212,161, 33,208,197,104,206,142,110, 69,209, 66, 41,133, 90,178, 93,168,115,165,120, -161,159, 58,238, 16,125,151,206, 30,197,144, 32,147,166, 33, 44, 40, 52,138, 76,226,201, 68, 49, 2,206,224,235,187,141, 84,164, - 10, 33, 27, 10, 54, 52,177, 69,117,144,129, 8, 34,217, 89,215,214, 50, 86, 2, 37, 4, 98,200,172,198,106, 33, 42,192,202,183, - 31,198,136,175,200,232, 31, 10, 41,147,194,143, 26,220,152,143, 37,153,213, 64,151,162,141,195,199, 1,212,242,187, 87, 94,127, -142,134,202,241, 86,232, 47, 29, 34,223, 25, 8,127, 50,194,251,191, 23, 14,255, 67,144,119,216,155, 88,111,193,238,239,194,157, -191,129,254,198, 67,248,153, 21,245, 86,246, 27,146,119,232,158,184, 68, 85,164, 10,218,114, 19,202,156,198,212,110,237,203, 29, -121,184,144,142,163,236,135, 45, 44,133,113,234, 31,242,118,104,182,209,121, 10,179,216, 46,182, 81,188,119, 52, 77, 19,214, 69, - 56,232,108, 60, 58,250,215, 57, 58,180,236, 22,173, 48,238,102,110, 74,136,230, 20,184,210, 41,253, 19,189, 21,141, 51, 69, 98, -133,119,121, 46, 55, 61,220, 88, 27,228,100,187, 80, 63,117,142,171,235,128,212, 33,207, 95,182,221,251,237,173,177,196,239,110, -224,214,104, 56,210,223,170,112, 69,144, 94,201, 89, 25,130, 61,112,171, 67,168, 61,232,205,140,124,226, 12,126,175, 88, 49, 46, -192, 90,233,158,207, 28,189, 56, 24,116, 71, 22,169, 73,126, 44,212, 98, 44,237, 20, 33,174, 34, 60,149,224,106, 66,142, 2,156, - 11,122,223, 46,150, 6, 54,218, 32,223,164,240,245, 79,192, 59,127, 4,142,254, 48,112,228,163,129,193, 59,243,222,186,118, 10, -112,105,255, 2, 86,238, 67,249,103,192,255, 5,241, 14,148, 3, 11,177,249,226,215,168, 63,255,128,252,243,143,216,125,109,199, -102, 24,217,246,129,124, 24, 40, 55,160,244,145,170, 22,209,105,171,169, 89, 77, 29,130,144,212,120, 5, 69, 97, 68,201,177,208, - 95, 18, 18,129,208,249, 62,185,203, 72,231, 91,230, 18,141, 36,215, 18, 80,155,223,175,243, 78,179,139,132,117, 36, 28,216,202, - 68, 62, 88,224,153,103,225,210,159,131,240,113,143, 31,202,126,212,247, 86,208,235, 91,112,255, 63, 69,127,227,167,209, 79,159, -192,157, 3,234,171,143,200,175,159,115,186,203, 60, 20,177, 32,184, 58,219, 76,169,179,103, 90,155,142,197,171, 70, 83,129, 19, - 76, 68, 91, 36, 76,151,221, 41,251,154, 11, 4,185, 69,140,104,150, 5,240, 99, 49,197,234, 74,155, 43,168,101,109, 87,101, 25, -135,141,175,165,162,119,217,226, 29,105,235,216, 91, 33,105,187,116,243,146,219,119, 25,140, 45,138, 4, 83,144,219,175,211, 12, -180,114,235, 89,245, 27,122, 85, 65,181, 80,135,106,127,231, 69,251, 89, 34,108,137, 32,193,158, 77,183,175,138, 51, 93, 27,103, - 66, 84,167,184,231, 56, 81,217,116, 47, 55,125,222,161,234,100,169, 43, 83,131,224,182, 50,159, 75, 23,140,245, 81,117,129,133, -209,185, 36, 5,143, 91, 45,203,216,211,133,104,109, 46,184,179,200,172,157,195,203,166, 94,222, 38, 57,109,201,211,152,146,218, -150, 65, 11, 75,113,225,158,147,158, 61, 79,249,146, 31, 63, 71, 27, 47,244, 21,139, 75, 70, 20,153, 28, 69,139,235,220,100,235, - 85,239,156,251, 24, 72,171, 21, 99, 46,172, 17,250,126,133, 6,115, 68,209, 44,142,139,231,175, 46,198,221, 90,152, 46,225,203, - 85, 66, 16, 38, 12,112, 12, 66,138,137,149,246,196, 78,136, 18,168, 18, 76,221, 14, 20, 50, 21, 97, 44,153, 50,142,243, 36,203, -187,126,131,168, 25,217,174, 74,182, 29,189,197, 64, 18, 37, 16,131,173, 61,149,206,214,210,165, 80,171, 82,180,146, 75,166, 44, - 20,244, 85, 21, 29,199,169, 80, 52,128, 79, 99, 22, 72, 11,158,241, 55, 88, 23,102,247, 84,203,104, 35, 0,177, 15,206,161,152, - 0,173, 25,221, 27,106, 85,170, 16,131, 18,163,237, 60,109,214, 84, 97,151,237, 3, 65, 96,157,162,229, 18, 47,136, 62, 59, 23, -118,153,138,221,225,247, 45,161, 76,236,107, 35,193,114,216,181, 82,243,134,113, 51, 18,138,133,204,119, 33, 88, 24, 86, 80, 14, - 55,149,131,146,136,239, 57, 36,252,153,138,252,174,167,225,234,143, 64,252,221,216, 44,244, 28,134, 95,129, 71,255, 29,124,249, - 43,232, 63,235,225, 83, 7,212,179, 29,165,238, 12,155, 58, 65,246, 27, 1,102,225, 89,109, 81,174, 77,225,209, 48,143, 45,136, -128, 69,103, 22,108, 95,152,219,110,204, 79,181,198, 49,174, 11,192, 76,155,168,182, 93,159, 52,253,147, 43,137, 71,247,189,167, -133, 26, 37, 2, 71, 7,150,156,121, 54,216, 23, 57,232,172, 89, 62,117,131,111, 10,182, 38,239, 20, 46,103, 56,186,222, 89,238, -248,198, 69, 63, 87,147,125,147, 46,192,183, 94,131, 43,199,240,202, 29,187, 61,244, 2,125, 54,122, 75,116,108,108,131, 81, 95, - 90,219,254,250,114, 7,183, 18, 60,177, 67,223,218,193,121, 65,174, 42,241, 61,129,227,255,231,140,250, 96,164,174,172,209,143, -107,195,147,242, 32,195,231,183,132,119,173,108,157, 49, 40,250,129,158,131,219,153,237,173,202, 89,191, 63, 10, 20,236,185,143, -206,153, 9,215, 44,137, 77, 82, 64,118, 1,198, 64,184, 19,224, 16,248, 24,240, 29, 31,132,167,254, 51,144,223,225, 87,167, 87, - 97,247, 15,224, 19,127, 5, 62,247, 38,124,236,221,240,142, 63, 12, 39,223, 4,171,239, 53,168, 11, 5,244, 33,148, 95,135,252, -191,193,246, 11,232,131, 13,250, 98, 64,127,106,195,248,243, 15, 25,238,237,216, 69,101, 56, 20,118,215,133,177, 75, 12, 34,174, - 11,241,100, 84, 15, 79,107, 63,255, 44,236,178, 15, 92,244,223,155, 11,108,131,125, 48,147, 40,105,204, 46,168, 10, 72,177, 7, - 37,244, 78, 56,233, 60,237,173, 90, 90,161, 68,131, 84, 72, 31, 9, 99,176,142,253,134,194, 13,129,163, 63,228, 5,253, 10,243, - 83,117,226,192,159, 95, 67,191,244, 39,225, 87, 79,225,245, 39,208, 91,149,242,133,123,108,239,110,121, 20,148,211, 96,132,184, - 80, 61,217, 76,205, 18,170, 50,135,141,236, 73, 55,235, 60, 70,204,158, 73, 52,169,214,253,247,166, 69,119,231,122,251,137, 56, - 87, 2, 72,149,105,132,222, 10,203,116,206,138,135,207, 85,157, 71,249, 14,230,208,133,136, 42, 6,136,181,169,148, 43,227,172, -180,153,172, 90,211,168, 85, 26, 29, 28, 79, 7,243,160,146,226,121,214, 49, 46,186,233,202,206, 5, 51, 90,150,183,117,153, 80, -172, 21,211,130,156, 41,164, 81, 89, 75,157, 88,226,203, 0,166,224, 93,178,250,152, 46,136, 93,242, 26, 25,207,118,196, 46,109, -107,217, 22, 23, 35, 78, 23,211,190,234, 65, 49,117, 26,174,154,130,126, 18,221, 53,237, 64,235,116,167,232, 96,153,243,205,247, -242,213,231,225,121,185, 80,208,151,232,243,165, 30,232, 49,239,186, 46,236,119,111,115, 33,104, 25, 30,123, 49,167,178, 15, 78, -159,158,149,230, 4,241,213,155, 44, 64, 53,210, 28,242,238,150,106,148,247,166,198, 63, 73, 61, 97,157, 16, 2,185, 22,134, 90, - 38, 37, 57, 90,167, 75,128, 46, 0,183, 75,146,253,242,181,144,197, 37,132,134,107,245,207,118, 41,133, 56,137, 38, 35,136, 48, -214,202,152, 51,121, 28,231, 63, 31, 2, 81,194, 4, 16,209, 96,126,174, 64, 71,140,102,187,204,165, 64, 80, 15,126,137,182,106, -206, 6, 79, 91,247, 9, 73,145, 49, 23,198, 82, 24,134,157, 53,157, 2,163,215,167,170,185,233,228,155, 1, 16, 87,140, 78, 60, -151,229,223, 51,137,223, 22,186, 20, 72, 98, 56,214,136, 49,205,197,193,229,198, 85,175,182,127, 9,126, 8,197, 54,139,174,118, -163,144, 72,144, 72, 31,109,100, 98, 67,238,234,160,136, 6,139,176,244,182, 16,133, 80, 33, 68,143, 87,205, 35, 99, 19,210, 53, -202, 82,176,155,217, 90,148,147, 12,199, 69,233,226, 1,225,219, 86,132, 63, 39,240,254, 31,132,245,127, 0,242,164, 47,251,190, - 10,155,255, 1,222,250, 89,244,211, 25, 62,121,136,190, 81,168,155,115,223,159, 87,106,174,179,191,116, 17,125,164,137,249,218, -173,123, 27,242, 89,160,230,173,119,235,166,171,206, 69,122,138,140, 92, 20,171,184,192, 65,206,171,210,197,247,244, 59,132,191, -111,243, 77, 57, 48,141,178,250, 0,235, 35,123, 61, 74,113,140,120, 50,146,220,218, 79,212, 67,224,210, 78, 57,188,158,144, 27, -107, 88,117, 22,237,167, 66, 56, 15,134, 87, 93,117,240,214, 6,238,109,173,152, 95,139, 54, 30,239,122, 8, 79,128, 94,133,248, -121,200, 91,139,251,108,137, 98,193,178,192,245, 48, 82,159,235,145,179, 98,162,176, 35,161,251,174, 67,174,254,211,115,106, 41, -164,147, 54, 94, 16, 56, 16,228, 97,133,215, 70,228,190,137,139,234, 13, 33,188,167,231,202,102,135, 14,202,249,194, 31, 35,126, -152, 30, 6,232, 14,131,161, 60, 75, 64,206, 5,222,244,232,210,111, 63,128,223,127, 3,158,253, 62,144, 63,226,127,248,239,194, -253,255, 29,126,227, 37,248,171,103,240,115, 25,214, 61,172,191, 6, 31,251,139,240,111,119,240,194, 85,208, 39, 13, 87,183,219, -192,221, 51,120, 69,168,255, 60, 82,127,102,160,190,114, 78,201, 3, 15, 66,229,193, 59, 2,181, 11,214,105, 23, 19, 64, 86,103, -212,140,139,160,157,234,177,231,173,164, 38,241,226, 37,179,192,177, 86,203,121,151,232, 59, 95,177,125,115,200,214, 45, 74, 0, -221, 41,178,170,150,197,126,152,144, 28,145,222, 4,129, 82,130,253,129, 62,194,141, 10,239,221,194,209,215, 67,250, 54,239,208, - 23, 9,107,188, 1,183,255, 29,120,241, 19,240,171, 7,232,163, 27,212,219, 91,234,151, 79,217, 62,216,113,191, 19,118, 68,131, - 32, 45, 46,140,193,185,211,206,129,153,149,208,178,192,117, 98,197,223, 36, 50, 66, 23,236,215,203,238, 92, 22, 32, 56, 9, 74, -167,208, 5,101, 20,119,247, 85,123,189,180,204,119, 70,125, 27,241,147, 46,163,183,150,194, 94,181,110,115,237, 44,110, 93, 60, -158,178,176,137, 52,118,154,103,238, 89, 71,174,226, 54, 41, 11,161, 42,163, 53, 48,113,234, 98, 61, 17, 46,137,255, 61,100, 82, -196, 55,145,153,250,185,145, 17,106,132,181, 71,113, 54,162,164,250, 40,221, 86, 9,182,130, 9,173, 59,109,241,167, 50,143,245, -138,143,236,203,210, 98,172,115,215,186,180,247, 7, 47,230, 81,247, 98,233,109, 21, 48,249,206,245,130,162, 93,246, 34, 90,245, -194,170,182, 29,103,225, 2, 51,126, 63,135,116,182,138, 61,150,209,242,219,140,238,213,187,109, 89,196,172,182, 61,179,232,172, - 79, 91, 50,229,219,191,171,186, 79,152,175, 62,253, 8, 8, 41, 69,186,148, 72, 33,178,142,137,163,131, 3, 82,234,184, 95, 10, -219, 51, 27,129,215,150, 29,208, 38, 62,139,215, 69,101,150, 42,234,196,252,247, 61,254,130,250, 30,146,117,233, 49,118,123,183, -158,160, 74,234,146,231,206, 7,116, 28,253, 89, 45,134,169, 85,165,198,197, 7, 72,148, 16, 3,171, 16, 72,253,202,206,136, 80, - 40,181,184,246,161,210,135,136,174, 18,104,165,139, 9,237, 58, 42, 59, 74, 45,134,215, 85, 91,199,245, 93, 79, 77,206, 54, 16, -198, 0, 0, 32, 0, 73, 68, 65, 84, 29,121, 28, 40,195, 48, 17, 87,223, 86,247, 59, 73, 24, 43, 73,125,199,211,169,178, 70, 56, - 10, 16,171,221, 44, 2,115,192,253, 4, 0,104,172,140, 86, 8,147,189, 44, 53, 23,178,103, 9, 38, 7,209,107, 85, 6,212, 16, -167,158,234, 20, 68, 9,197, 68, 16, 49, 59,141,162, 40,154,236,192, 91,185, 40,111, 37,202, 97, 86,142, 11,172, 74, 36, 94, 57, - 32,252, 81, 65,126,232, 50, 60,253, 35, 16,191,207,126, 24,125, 0,219,159,134,135,127, 25,125,249, 13,248,100, 15, 47, 29,162, -219,145,146, 71, 84,109, 17, 93, 27,237, 37,212, 11,128,221,201,231, 96, 66,165, 9,123,102, 35,143, 24,230, 32, 1,149,249, 1, - 23,153,120,136,118, 3,150, 61,198,130,143, 44,231, 47, 23, 88, 48,165, 23,187, 43,113,144,204, 84,232, 23,142, 6,201,144, 78, - 2, 71,201,138, 64, 12,246, 62, 29,172,129,157,210,141,202, 74,132,116,117,133,124,203, 17, 28,186,250,243,106, 50, 31, 93, 39, -166, 72,127,114,101, 66,173, 85,180,157,247,170,194,106, 13,188, 7,248, 93, 32,191,229,239,107,178,255, 22,139,189, 47,181,122, - 14,112, 64, 66,135, 30, 5,216, 6,100, 20,184, 46,132,239, 14,132,135,174,208,219, 85,120,171,218,173,164,157,108,217, 46,132, -225, 77,168,125, 36, 62, 17, 57,188, 93, 24,243,226,254,228, 69,166, 79, 32, 7,222,169,222, 7,110, 3,223,122, 8,127,234, 89, -120,223,101, 72,239,180,181, 74,249,207, 97,247, 26,188,120, 19, 62,149,225,142,239,168,255,141, 30, 62,118, 12,239, 62,178,226, -206, 8, 95, 62,131, 7,119,224,213, 17,190, 34,112,119,109,240,152,113,160,202, 14,189,156, 57,143,112,175, 6, 30,141, 50,167, -146,234,140,181, 44, 45,255,219,253,170, 5,177,176,161,133,191,185, 11,211,144,103,154,232, 88,241,145,169, 3,170,213,138,158, -102, 87, 68, 38,139,210, 13, 41, 17, 14,220,153,112, 20,225,138,192,129,218,251,112, 56, 90, 30,250,181,119,155, 15, 61,220,240, -217, 87, 48, 2,221,248, 99,240,202,127, 13,191,242,144,250,202,147,232, 78,208,219, 27,202,203,167,108,206, 70, 30,174, 2, 91, -181,159,151,216, 58,107, 33, 6,123, 95,203,232, 89,219, 11,223,115,173,112, 33,146,122, 38,144,233,204, 91, 40,173,184,214,249, - 18, 90,171,109, 20, 90, 7,223,123, 67,182,115,119, 67, 90, 98, 66,167,184, 81,220,194, 42,147,127, 26,157,133, 63,182, 79,182, -162,107,176, 43,247, 53,123,145, 84,113, 53,122,176,228, 70,141, 97,206,234,198,184, 10,170,150, 25,190,155, 80,176, 22, 49, 29, - 68,232,163,208, 41,236, 90, 96, 72,211,211,212, 58,185,190, 9, 86, 34, 6, 31,139,118,190,131,159, 39, 27, 86, 52, 82, 16,122, - 95, 73, 13,101,145, 88,119, 65, 81, 43, 45, 6, 86,247,181, 58, 77, 0,183,212, 38, 72,109,107, 14,157,188,219,226, 10,124, 93, - 20, 66, 46,248,199, 3,198,173,175,174,123,216, 3,191,200, 99,246,242,125,182,251,194,163,190, 52, 39,232,219,216,219,150,202, -121,149,253, 92,111,120, 92, 80,215, 8,161,178, 72,190,155, 57, 62,246, 85, 83,128,195,144,136, 93, 71, 8,209,168,163, 34,100, -132, 77, 46, 83,180,172, 77,208,202,130, 90,184,164,234, 53, 87,124,251, 94, 97,159,196, 38,251, 34,197,189, 85, 66,245, 64,153, - 90, 33, 69,114,181,124,143, 97,216,161, 37, 19, 68, 40, 49,162, 57,147,107,133, 60, 58,232, 40, 16, 66, 36,106, 96, 72, 66,201, -163, 93, 50, 67, 32,164,206,197,129,117, 62,248, 67, 34, 11, 12,187, 29,195,176,163,148,108,245, 37,165,201,254, 22, 99, 32,172, -215,148,174,243, 41,115,245, 61,188,101,156, 32,198,128, 89, 86,248, 20,177,236,242, 75, 65, 57, 8,112, 37, 64,231,180,182,233, - 54, 40, 86,144, 68, 22,254, 44, 49,159,153,186,132, 81,213,118, 3,177, 6, 52, 65, 31, 13,138, 94,170,221, 52,211,146,216, 34, - 74,240,204,243,160, 74,151,108,148,124,160,202,186,192, 65,169,172,178,176, 42,129,120,184, 34,188,144,144, 63, 29,145,223,249, -117,112,252, 95, 66,248,128,237, 70,199, 79,193,249, 95, 69,111,125, 6, 62, 23,224,215, 14,225,150, 26,163,189,100, 83,150,213, -249,103,244,128,223,185, 42,199,253,228,169,105, 39,213, 12, 22,113,126, 80,100,162,255,204, 15,112, 88,136, 65,227,226, 80, 87, -157,199,241,141, 47, 66,116,129,141,204, 15, 84,239, 19,128, 84,109, 47,222,110,183, 73,236,223,165, 12,117, 35,196,171,201, 86, -195,143, 42,171, 92,233, 59, 67,229,134,152,144,247, 31, 34, 47,184, 15,253,176,183, 3,241,114,156,130, 87, 88, 39, 43,230,177, -206,109,228, 14, 72,231,208,191,110, 33, 35,250, 34,156,122,242, 87, 91,189,236, 42,228, 98,171,136,195, 54, 47, 13,240,132,162, - 15, 19,104, 68,222,233,121,236,247,138, 49,214,215,213,105,167,193,248,228,207, 39,248,212, 6,185, 7,210,249,216,119,227,163, -250,182,147,173,118, 71,140, 91,144,187, 1,217, 9, 60,119, 0, 63,250, 52,124,211,211,176,234, 45, 96,231,214,167,224,183,238, -194,235, 91,232, 59, 56,237,160, 91,193,135, 4, 62,186, 54,209, 38, 61,188, 54, 88, 34,206, 70,225, 81,128, 39,175,194,199,158, -133,119,221,134,127,244,150,241,209, 79, 21,118, 88,129,221,250,161, 84,103, 4,116, 85, 40, 65, 39,187,162, 52, 66, 32,243,238, - 79,253,240, 69, 46,228, 79, 87, 23, 60,122, 1,200, 75,120,134,216,100,194, 70,236,129,208,173, 8,151, 87,240, 68,180, 15,222, - 51,138, 60, 81,225,104, 13,209,255,233,190, 14,214,191, 23,186, 23, 76,184, 16, 6,168, 95,132,219,127, 22, 94,122, 21, 62,123, - 21,189,115, 3,125,144,169,119,118,228,215, 55,108, 54,133,211, 46,184,226,219,217,213, 58,219, 54,106,133,162,230,106, 9, 65, -137,121,127,215, 24, 22,182,166,101, 38, 1,133, 69, 39,180,176, 97, 57,251,124, 84,251, 62,237,210, 19,221,207, 77,158, 11, 87, -179, 40, 73,115,120,248,202, 74, 23, 59, 84,130,141,101,163,226,249,227, 54,245, 72, 2,169, 88, 49, 44, 65,125,183, 40, 11, 38, -121, 37,151,106, 1, 31, 69,167,156,113, 69, 24, 49,119, 66,136, 54,134, 23,153, 3, 59,130,127, 22,179,170,253,188,117, 46, 60, - 83, 76,168,143, 28,139,218, 14,223, 46,233,230,230,105,231, 64,223,246,250,106,178,149,140,238, 37,130,237, 45, 56, 26,148,103, -223, 43,102, 41,113, 50, 91,202,218,254,116, 54,146,249,120, 93,116,186,112,133, 61,106,165,206, 53, 3,153, 48,174, 75, 17,100, -185, 16,102,178,159, 0, 39,123, 5,253,109,140,160,139,209,251, 98,180,125,161,123,156,196, 92,141,131,180, 92, 53,248,207, 19, -131, 77, 66,131, 43,211,145, 64, 10,129, 36, 1, 77,137, 90, 43, 35,118,110,137, 42, 49, 70,134, 90,232,179,178,234, 87,108, 98, -152, 18,231,116, 47, 79, 46, 60,134,189,155,167, 14, 98,246, 83,153,125,238, 34,139, 14,163,148,233,123, 75, 20,106,169,148, 90, -217,141, 3, 37,231,105, 26, 16, 66, 64, 99,164,150,226,170,121, 99, 40,132, 16, 72, 53,161,170, 12, 46,164,107,187,250,148, 58, -186,104,226,140, 25,152,163,116, 34, 72,191, 34,151, 72, 41,133, 33,143,166, 31, 41, 54, 9,111, 96, 28,141, 9,173, 22, 96, 38, - 93,240,226,159,173,216,151,249, 54,158,174,138,114, 18,133, 46, 41,235, 8, 39, 46, 8, 9,117,126,203,165, 46,246,193,107,191, -242,143, 5,189,107, 25,154, 34, 86,168,179,143,233, 83, 21,186, 20, 73, 43, 99,126,111,115, 53,175,159,199, 42,118,190, 15,238, - 5,214,170, 28,231,202,122,132,131, 26,232, 37, 16, 82,143, 92, 23,228, 27, 2,242, 7, 35,242,209,103,224,218,159,128,240, 3, -182, 35,222,252,127,176,251, 63,225,193,231,208, 87,182,240,210, 26,190, 18,224,254, 72,221, 20,187,153,227,243,190,160,115,241, -110, 50,210, 86,185,235, 66,125,158, 4, 41,113,126,247,187,246,201,240,150,162,180,194,236, 99,245,186,255,228,215, 89, 56, 63, -143,222,252, 97, 78,209,126,236, 62,186,168,173,206,208, 47,201,222,165,122, 71, 79,163, 34, 37, 11, 10, 9, 93, 48,161,207, 81, -176, 14,206,211,138,100,140, 86,208,127,231,101,228, 82,111,127,137, 85,244, 46,208,179, 76,197,196, 22,242, 32,219, 15, 54,120, - 27,114,210, 89, 40,203,213, 71, 16,126,218, 68,226, 15,131,209,107, 54,174, 55,216,121, 83,120, 90,224, 97,177, 46, 42, 84,216, - 96,182,183,195,232,241,171, 98, 94,247,195, 8,231,254,154,175, 34,124,244,216, 78,167, 87, 11,156,237, 8, 7, 2,199,149, 85, -168, 12, 3, 72, 82,250, 32,164, 67,136,103, 32, 55, 5,186, 14,126,228, 25,248,222,119,194,149, 39, 96, 56,133, 55,239,192, 75, - 15,208,159,188, 71,189, 89,144, 39, 35,225,253, 10,215,253, 85, 63, 3,238,136,197,191,173, 51, 60, 29, 97,221,153,247,254, 93, - 21, 62,244, 78, 88,191, 31, 54,183,224, 36,192,189,140,222, 83,179,218, 61,145, 88,191, 81, 57, 42,202, 46,193,214,223,103,149, -121,160,211,194, 56,150,194, 72,145,153,188, 37,111,131,219,156,173, 40, 50, 29,248,161, 5, 46,244,193, 4,112,235, 72,184,214, -195,123,123,120, 78,145, 39, 43, 28,158,192,193, 11,208,127,135,165,197,133, 4, 28, 66,247, 36,200, 17,108,191, 2,103,255, 45, -188,246, 73,248,226, 10,253,210, 13,244, 65, 65,135, 29,245,246,142,242,198,150,237,160,156, 39, 60, 81, 45,184,178, 91,124,252, -183, 24,225, 78,228, 56,155,144,141,126,200,137,182,216, 79,155, 52, 4,157, 57,224,131,238, 39,123,197,198,205, 14,179,224,110, -172,179, 10, 90,196,185, 4, 75,218, 73,181,189, 39, 85, 38,222,185, 15,117, 76,175,224,175, 87, 82,245, 61,190,191,206, 69, 73, - 81, 88, 43, 12, 45,183, 96, 74, 64,210,249,148, 12,243, 56,120, 9,117,232,130, 32, 18, 73, 98,162, 54, 45,213,133,108, 86,156, -181,218,254, 94,125, 26, 48,248,152,123, 17, 75,190, 7, 78,137,173,115,246,170,157,100, 22,197,142,126,174,164, 22,106,179, 16, -135,202,130, 93,174,139,184,209,198,110,151,118, 17,241,135,109,154,130,200, 82, 59, 48,187, 11,154, 20,168,125,175,221, 66, 62, -201,222,158,219,214, 18,210,152,252,162,251, 68, 57,153,145,189,242, 54,204,119,189,160,168,147,133, 80,238, 34, 94,182,157,177, - 23,237,114,181, 9, 9,221,166, 22, 83, 98, 21, 19, 33, 90,134,103,241,142,123,212, 74, 29,243,100,228, 86,170,217, 19, 67, 71, - 46,133,206, 87, 40, 65,228,130, 13, 79, 46, 44, 36,246,163, 90, 13, 44,228, 83,161,133,114, 63,138, 93,180,181, 86, 52,206, 14, -154,234, 2,200,237,144, 25,119,219,233,245, 12,205,187, 30,130,191, 63, 70, 30,181, 21, 83,182, 77,174, 79, 57, 81, 53,242,103, -140,164,152,233,186, 68, 74,137, 24, 35, 41, 70,143,250,141, 38,142, 44,182,111,239, 82,154,160, 58,185, 20, 70,135,216,104, 67, -203, 54, 76,186, 8, 53, 38, 67,220, 6, 91, 95,215, 90, 73, 79,118,214,153,131, 5, 89,181,136,196,138, 78,196, 39, 17,143, 7, -237, 39,207, 8,250,198, 14, 61,205,200,165, 72, 76, 74, 26,117,250, 48, 73,173,196, 92, 57,192, 2, 20, 30,102,101,231,123,167, - 20,224, 48, 42,199, 69,185,146,149,163, 18,233,250, 21,225, 70, 36,188, 67,225,163, 32, 31, 89,193,251,142,224,218,215,193,193, - 15, 64,248, 54,168,199, 70,200, 58,255, 49,216,254, 18,122,235, 20,190,216,193, 87, 78,224, 86,134, 71,163,129,100,234,136, 90, - 48,251,158,164,115,202,199, 85,157, 37,189,109,165, 32,179,135,167,197, 24,180,225, 13,213, 80,183, 68,255,119, 90,237,146, 83, -152, 70, 98,101,202, 36,152,139,249,164,242,144, 57,117, 44,137, 53,204,211,135,194, 11,183,244, 16, 86,201, 14,124,196,210, 49, -143, 18,114,220,217,165,234, 56, 34, 81, 45, 87,252, 78,177, 91,194,183, 31, 19,190,254, 4,158, 58,180,219,209,232, 97,237,197, -105, 52, 99,134,156,209,187, 3,122,223,119,229, 77,104,113, 28, 97,179,130, 77,239, 9, 51, 10,167, 25,182,163,123,232,252,214, - 94, 21,238,143,150, 86,166,254, 23,192, 10,190,108, 60, 11,118,231,151,159, 85,176, 19,229,216,151,198,159,222,217,107,253, 84, -103, 39,206,195, 12, 55,160, 63,173, 92,121, 45, 83,171,144, 18,200, 46,160, 33,194,191,114, 5,249,163, 55,224,169, 19,107,139, -111,223,129, 79,191, 5,191,249,200,186,239, 71,217, 60,240, 7, 6,129,209,151, 3,108, 21,185,158,224,125, 43,120,102, 5,207, - 94,130,171, 55, 96,243, 0,238,158, 27, 32,231,139,111, 66,249, 42,220, 42,118,145, 57,207,200, 58, 65, 81,228,178, 16,179,114, -242,198,192, 78,149, 44, 98,186, 66,239, 88, 90,120,136,122, 39, 95, 23,251,191,165,159, 55, 44,243, 27, 26, 52, 40,216,243, 30, - 81,186, 2, 49, 10, 97, 21,237,159,190, 35,172,122,184, 17,225,131, 35,242,244, 19,134,181,237,191, 17,214, 31,183, 85,131, 68, -159, 5, 87, 40, 3,122,250,223,195,221,191, 15,111, 10,188,114, 21,190, 12,245,230, 14,221,141,212,243,145,114,115,100, 87,148, - 97,229,221,158,206,151,204,230,177, 22,223, 91, 75, 50,171,143, 97,121, 61, 18,116, 82, 77,203, 98, 15,204, 84, 88, 27,241,172, -237,225,219,122, 66,208, 9, 27,187,164, 31,139,143,178,167, 76, 4,167,118, 93,180, 84,103,239,116,163, 71,173, 78, 23, 0, 49, -238, 69, 66,167,240, 22, 29,173, 0, 31, 40,156, 45, 50, 33, 22,227, 68, 19, 88,201, 62,105, 43, 6,131,207, 72, 45,174, 82,103, - 10,143,106,130, 60,173, 70,156, 91,251, 69,163, 20,139, 83, 94,246,167, 45, 53, 75, 85, 41, 11, 69,119,139, 71,142, 11,245,120, -184, 64, 94,147,230,253, 95, 50,232,117, 63,169,188, 17,207,178, 95, 86, 38,143,250, 66,133, 80,153,125,235,178,184, 80,244, 23, - 80,224,117, 65,190, 92,150, 58,245,115,184,121,237,117,154,198,202, 62,199, 93, 23,248,220,197, 20,129, 11, 56,119, 46, 92,106, - 91,162,228,172,146,183,131, 48,138,176, 10,198, 79,183,145,122, 32,186, 85,122,172,202,160,133, 96, 59, 42, 63,167,179,117,239, -126,233,138, 93,111,147,163, 90,140,149, 80,205,138, 70, 8,179,250,114,159,209,249,182,113,102, 42, 51,196, 69,104,197, 54,122, - 7, 47,132,148,246,124,254,187, 97,100,216,237,208,156,125,210, 22,140, 18,234, 59, 87, 21, 72, 33, 16, 82,240,159,175,101,114, -148,105,169,213,106,105, 46,149,161,100, 82,140,116,169,163,235, 58, 43,242, 49,209,133,200, 65,223, 35,190, 78,218,229, 76, 46, -217,156, 78,181,112,190, 57,183,241,127, 54, 5, 76,169,197, 58,244,102, 3,116,197,113,136,145, 68,176,145, 82,187, 21,166,133, -218,116,218,195,184, 88, 67,220, 66,206,253,129,205,157, 29,131, 8, 39, 91,123, 17,123,143, 62,220, 72,129, 80, 57,146, 22,143, - 41,156,169,176,243,204,220,203, 90,185, 49, 84, 46,145, 72,215,214,132,143, 4,228,123, 10,124,211, 17, 60,249, 33, 56,248, 54, -232,126, 39,200,123, 77,229, 91, 43,212,155,176,249, 57, 56,255,135,176,249, 60,250,250, 8, 95, 57,132, 55, 42,220, 25,225,180, - 80,115,158,110, 75,230, 25,115,187,214,162, 64, 91,151, 45,237, 52,152,176,109,210,205,159, 70,209,184, 31, 62, 88,227,158, 2, -180,133, 71, 75,110,170,225,106,129, 55,237, 81,170, 70,135, 17,153,205,185,234, 17,126,225, 32,248,161,111, 99, 10,233, 2,178, -138,200,229,128, 28, 37,228, 48, 88, 7,124, 24,152, 60,124,125,176,127, 78, 43,188,178,179,177,248,123,122,228,119, 92,129,167, - 14,102, 19,189,170,177,220, 31,142,232,121,134, 71,150, 44,199,221, 29,250,208, 59,244, 3,219, 45,201,221,132,108, 42,114,154, -225,216, 47, 63, 15, 43, 58,229, 79,122, 20,154,211, 67,204, 74,102,251,242,240,116,176,238,120, 0,206,133,122,154,209,123,133, -112, 46,200,161,204,185,156,111,100,235,224,175, 38,120,223, 33,220,207,240,230, 22,158,128,248,206, 74,124, 54,194,175, 91,244, -169,252, 91, 79,193,251,175,217,101,228,141, 71,240,218, 22, 62,183,129,219,131,189,222,151, 10,114, 89, 9, 15, 10,250, 85,165, - 62, 97,165, 67,158, 95,193,187, 86,240,196, 26,222,117, 4,215,158,182,240,150,221, 93,139,200,187,189,131,135,213, 30,196, 36, -134,159,125,111, 71,120,103, 64,239, 6,184, 63,160,215, 43,235,161,114,245,110, 49, 74,148,111, 32,202,130, 38, 72,181, 86, 40, -102,243,221,182,238, 41,122,250, 94, 59, 91,146,107, 5,251, 96, 98,177,228, 35,250, 24, 35,241, 48, 18,214,129, 16, 58, 98, 88, - 33, 79,172,224,249, 1,121,250, 89, 56,250, 55,173, 67, 15,151, 32, 28, 65,184,108,223,161, 60,130,205, 63, 68, 31,253,143,112, -231, 54,220,185, 2,183, 34,122,115, 68, 31,110,169, 12,232,249, 64,189, 59, 48,170, 80, 86,182,143,148,234,244, 62,194,228,189, - 14, 18, 45, 37, 49,202, 36, 18, 8, 75,236,113,176, 85, 72, 89,236,120,165,169,185,151,140, 6, 23,136,181,244, 47,169,243, 65, -186, 36,137, 73, 89, 70,140,218,184,127,137, 46, 45,158, 83,222, 20,241,163, 31,127,193, 45,105,154,196,121,219, 13,231, 58,111, - 63, 87,201,198,228,131, 66,149, 48, 33,165,117,193,112,105,251,246, 78,103,188, 52, 50,119,180,109, 12,155,139,175,213,194,156, - 69,176,138, 86,200,238,251, 1, 45, 11, 49,158, 76,252,237,150, 60,201, 20, 55, 90,177, 44,241, 4,108,116, 86,228, 79,212,184, -198,151, 95, 12,190,195,162,195,180,100, 59,159, 36,176,100, 93,232, 94,108,123,123, 93,155,254, 38, 46,196,108,157, 31, 67, 89, -247,169,110,203,108,244,198, 28,176, 49,178,236, 69,127,234,226, 82, 22,189,160, 23, 30,239,202,121,187,252,239, 11,191, 39,197, -104, 5, 47, 68,159, 28,138, 71,149, 54,133,191, 21, 45,245, 15, 89,157,198,167, 30, 78, 35,106,131,199,148,208, 24,168,217, 26, -170, 28, 64, 71,195,121, 7,145, 9,143, 59,229,192, 47, 0, 73,179,185, 79,247, 35, 78,171, 78,202,117, 9,166,175,144, 69,151, -174,170,140,217,212,232, 53,103,150, 15,175,249,220, 61, 43,222, 39, 64, 13,104, 99,211, 53,220,175,238, 60, 5,132,170, 78,157, -244, 53,245,168,149, 84, 70,226,104,157,123,159, 58,250,190,103,213,117,244,169, 35,166,196,110, 28,201,121, 52,183,212,241, 9, - 67, 57,100, 55,236,236,223,229,209, 70,254, 45,149, 78,194,116, 65, 75,237,234, 23, 69, 56,112,245,251, 52,214, 90,160,250, 66, -244,236,232, 90,209,123, 35,111,102, 91,157,214, 77,229,168, 55,177,144,160,236,138,141,200, 82,128,117, 23, 56,140, 29,135, 39, -145,235,231,153,124, 54,112, 37,195,250,228,128,240,194, 33,242,167, 10,124,248, 26,156,252, 48,244,255, 34,132,103, 45,146,178, - 69, 57,149, 83,208,155,176,251, 36,156,253, 12, 12,175,160,183, 10,188,210, 91,231,245, 48, 27, 40,133,130,250, 41,210, 0, 39, -226,170, 13,117, 35,120,227,224,139,170, 47,250,124,116,188, 18,199,144,202,158,170, 69,116,161,153, 92, 46,203, 9, 11,150,121, -107,133, 22,114, 82, 89, 64, 30,130, 76, 93,126,232, 5, 14, 34,116, 66, 88, 71,147,123, 31, 4,228,146,167,166,173, 34, 28, 38, - 59,117,218,213,191,217, 22, 2,112, 82,225, 56, 34, 71, 9,110,172,145,203,107,211,233,158,102, 99, 84,142, 25,125,115, 64,239, -156,193,131, 1,189,183, 67,111,102, 67,252, 13, 10, 71, 32,151, 34,218, 69, 84, 11, 50, 84, 36, 41,194,202, 94,179,131, 41,255, -113,206,212,212, 96,133,112, 19, 9, 59, 63, 17, 91,129,116,165,148,228, 96, 95,127, 61, 23,191,233,228,126, 4,220,170,214, 73, -191,183,183,204,239,195, 17,182,110,190,255,161, 67,248,208, 85,251,190,175,159,195,107,231,232,103,182,240,112,132,203, 10,183, - 54,200,189,140,174,162,125,173, 43, 61,242,237,107,120,225,192,108,120,103,213,104,176,247,119, 38, 8,188,247,101,187,168,245, -201,126,254, 19,191,124,180, 7,114, 21,237,181,122, 40,200,218, 35, 69,182,129,122,216,177,122, 88,185, 52,154,247,126,231, 7, - 71,245, 38, 32, 72,179, 32, 9, 73,103,149,111,231,110,193,117,116,167,130, 88,176,137,233, 72,197,242,150, 87,209,196,112,135, - 29,225,160, 35, 92,238,225,125, 17, 62, 84,144,247, 62, 9,135,255, 50, 28,125, 28,194, 21, 79,113, 11,150,195,190,253,101,244, -225,127, 1,119, 94,133, 91,135,240,224, 58,220, 83,244,246,128,222,222,162,155, 17, 61, 31,209, 71,153, 58,130,244, 74, 10, 50, - 91, 44,125, 38, 62, 33, 79,163,225, 89,162, 39, 38, 78,197,175,122,224, 72, 89,110,168,236,112, 13, 77,228, 41,179,133, 83,147, - 71, 10, 55,206,131,119,160, 41,206, 54,184,166, 43,104, 7, 97, 81,221,203, 75,104, 60,136,165, 80,108,250,189,110,251,138,227, - 12, 33,145, 32,147,170,187,250,101, 42, 53, 98,165,226,201,110, 30,186, 49,173, 14,230, 96,153,214,245, 38,111,111, 67,235,198, - 61,110,181,182,247,119, 18,243, 10,125,180, 59,233,110, 17,135, 28,218, 97, 77, 91,151, 9, 33, 90,103,154, 17,134,106,163,220, -118,110,102,220,221,163, 58,165,136,233, 34,229,177,173, 53,226, 36, 22, 83,127,207, 46, 20,216,182, 91, 95, 22, 85,149, 61,121, -208, 18,126,213,108,123,121, 97, 85,219,243,103, 47,134, 27, 23,131,224,154, 78, 34, 94,132,144,234,190,253,109,143,207,161,109, - 37, 97,207, 60,206, 73,143, 33, 78,138,254, 38, 59,172,165,184,213,111,174,188, 51, 31, 97, 47,228,140,168, 66, 10, 1,233, 18, - 37,207,152,241,162, 74,206, 35, 57,231, 41, 98, 86, 22,160, 16,213,199,111, 30,109,202,210, 94,103, 9,129,228,163,127,183,225, -236, 41, 26,179, 8,195,104,141,162,104,155,212,186,221,109, 10,100,169, 86, 27, 48,126, 75,219,155, 75,140, 19, 52, 41,151, 66, - 41,251,130,203, 82,109,245,147, 67, 37,213,202, 88, 10,197, 45,109,187, 49,211,117,153, 46, 6,142,186,142,176, 62, 96, 40,133, - 49,143, 28,212, 74, 56, 58, 50, 42, 94, 8,164, 24, 72,126, 97, 42, 90, 25, 75,102, 44,133, 84, 29,215,113, 20,204, 7, 29,167, -187,141,206,226, 22,117,145, 92, 18, 56, 47,156,109, 10,111, 84, 24,138,249, 41,111, 4,187, 33, 30, 69,216,121,202, 65, 95, 33, -105, 36,252,240,117,210, 31,186,194,193,159,127,141,114,167, 34,207, 28, 34,127, 48, 33, 63, 88,224, 93,223, 2,235, 31,181,168, - 72,137,134,183,212,211, 57, 65, 75, 31, 65,254, 34,156,254, 18, 12, 95, 67, 31,156,193, 87, 19,220, 46,112,199, 11,186,227, 28, - 77, 30,107,169, 78,226, 45,133,214,133,239,166, 42,146, 23,243,164, 3, 65, 86, 9, 89, 41,212, 56, 49, 92, 85,231, 2, 45,117, - 65,153,155, 76,162,134, 48, 21, 89, 48, 28,179, 71,249,245, 45, 50,212,126, 22,233,196,187,110,111,223,150,191, 62,104, 62, 39, -117,131,182, 7,174, 55,234, 13, 46, 86, 27,125, 30,167, 98, 81,167,207, 88, 48,136,222,223,217,226,119, 87,225,171, 91,234,173, - 45,220,223,160,183,119,214,225, 62, 28,144, 71, 70, 44,146, 8, 60, 10,232,198,216,233,114,201, 95,147,243,130, 30,102,219,177, -119,254,243, 81,231,211,112,180,221, 57,199,157,245, 55, 67,129,135,234,168, 89,191,237,106, 50,165,219,206,215, 3, 62, 27,212, - 67, 65, 86, 98, 93,126,174,112,176,130,167, 59,184,148,173,240,199, 4,215,122, 27,239,223,220,218, 68,225,229,209, 2,117,142, - 20,190, 52,160,159, 26,144, 33,195,211, 61,242, 29,199,200, 55, 31, 33,151, 86,112,210, 91, 17, 7,155,195,238, 92,229,118,234, -235,135, 52,218,195,248,238, 35,184,190,131,211,157,193, 0,206, 2,108, 35,114,167,162, 37, 18, 46,117,112,211, 91,202, 19,229, -104, 59,176, 14,198,240,182,131,200,138,228,232,155,133,157,103,222,139, 23,150, 54, 76, 89,161,244, 85,233, 86,209,114, 17, 82, - 32,116, 29, 97,149,144,147,158,112, 45,193,211, 9,121, 26,219,249, 63,217, 33,151,159,131,254,247,192,250,219, 12,103, 44, 43, -200,111,193,246, 23,225,236,127, 65,239,127, 1,238, 31,193,221,167,225,243, 25, 61,223, 64, 45,212,135, 5,125, 56,162, 37,219, -251,131, 32, 7,166,116,158, 66, 12,235,156,127,149,196,144,171, 76,157,163, 76, 98,181,234, 85, 49,103, 3, 0,181, 1, 93,112, - 97, 93,240,207,117,151,246,193, 2, 37,248,134, 71,102, 85,245,162, 25,158,212,213,170,109, 47,121,129, 73,190,215,185,250,224, -204, 63, 98, 59,223,165,199,101,162, 89, 89, 72,204,196, 34, 11,251,153,197,106, 30,244, 16,166, 40, 21,161,238,171,175, 9,211, -238,187,122,170, 92, 23,196, 35,139,133,224,121, 19, 13, 22,147,253,163,221,139,253,236,121,143, 12,167,251,202,113, 21, 6, 23, -212,141,174,162, 46,139,224,245, 82,155, 70,193, 59,201,176,240,124,233,108,143, 83, 23, 37, 44,139,116, 93, 92,130,150,170,245, -186,192, 49, 46, 11,189, 94, 96,199,183, 21,201, 99,133,120,249,218,214,121,188,177, 92,141, 60,102, 93, 91,224,200,151, 28,247, - 32,145, 24,141,152,150,156,170,150,157,123,144,181, 78,234,251,170, 13,170,226,110, 10,153,121, 0,147,234, 88,102,128, 76,240, - 93,119,232,146,167,126,150, 89,197, 95,242, 4,207,178,137,145, 92, 64,216, 94,208,233,203,227,126,254, 20,162, 21,223,182,122, -154, 64,236,206, 17, 24,182,104,246, 85, 77, 10,251,126,125,103, 17,132, 96,194, 55, 17, 39,198,117,157,237,219, 9,126, 17,197, -179, 2,116,226,202,171, 95,162, 67,136,196, 16,173, 48,167,206,112,183, 49,210,117, 29,171,152,232,251,158, 46,173, 88,165,142, -216,173,204,255,224,235,221, 90, 70,170,119,251,155, 97,112, 17,159, 78, 65, 72,105,141,218,200, 80,148, 88,230,107,115,171, 89, - 77, 93,105,137,116, 5,125, 88,185, 51,216,104,170, 96,100, 51, 85,120,106,109, 34,187, 90,205, 71,125, 16, 64, 98, 15,111, 5, -248, 75,103,112, 51, 18, 63,122, 12, 63,156,225,163,192,181,239,131,245,127, 2,233,134,217,143,244,209,226,241, 77, 80, 31,194, -248, 69,120,244,179,176,123, 29, 78, 31,192,215,146,117,126,247, 42,156, 59, 44,165, 57, 84,163, 76,234, 77, 19,186,217,216, 77, -170,162,217,219, 12,193, 10, 77, 23,144,131, 48, 69, 49, 73, 83,175,101,108, 31, 31,188,144,166,105,113,104,191, 14,243,126,158, -206,137, 52,205,222,119,236, 92,242,132, 1, 93,186,246,245,235,204,142,140,179, 38, 97,154, 59, 14, 10,167, 64, 29,172,139,108, - 59,234,109, 70,207,189,125, 90, 99,132,151, 23, 21, 62, 60, 34, 87, 15,172,155, 61,233, 96,237,233, 63,159, 62, 71,207,183, 48, -142,112,111, 71, 61, 31, 25, 93, 36,152,178, 18,118,209,170, 83,103,218, 43, 80,244,188, 34,187,106,151,154,149,120,156,156, 78, - 28,109,162, 26,128,102,240, 57,244,166,152,114,188,175, 30, 67,233,151,219, 46, 65, 42,246,218,157,154,149, 90,170, 95,104,250, -100, 15,202,170,115,158,185,216, 68,226,238, 8, 47,159,218,123,121, 54,162, 59, 69, 87, 38, 76,226, 65,181,215,246, 59, 14,224, -134, 32,207,246,112,121,101,175,197,198,115,130,235,104,151,144,203,157, 59, 50, 28,162,147,177,231,233, 32, 66,249, 48, 28, 62, -130,131, 55, 97,216,192,209,153, 89,197, 14, 18,114, 22,145,183, 4,222, 97,225, 68,218,239, 8, 93,135,102, 69,118,197,242,192, -179,162,185,144, 11, 12,131, 78,184, 82, 17,179,109,198, 32,116, 17,219,147,175, 35,225,176, 71, 14, 59,194, 73,132,107, 9,121, - 42,192, 51, 1,185, 33,232,241, 10, 57, 56,130,254, 25, 8,207,155,131, 35, 60, 9,165,131,225,117,216,254, 4, 60,250, 27,112, -126, 31,189,119, 0, 55,159, 49,245,254,189, 17,125,101, 75,205,197,133,151,117,142, 2, 12,254,156,103,166,100,196,170,222,113, - 72,153, 96, 8,161, 21, 88,215,130, 84, 79,167,170, 85, 38, 24, 74,113,149,184,101,163,155,223, 60,186, 61, 45,234,140, 49, 54, - 21,174,123,189,235,220, 1,230,133,181,205, 38,252,173, 19,223,111,153, 90, 65,207,162,123,227,218,246,171,213, 98, 39,186, 23, - 28, 66,157, 62, 58, 80,109,173,209,236,110, 90,124,221,208, 44,120,115, 78,183,138, 19,184,196,188,235,179, 61, 53,144,168, 4, -181,149,138,132, 64,168,213, 1, 67,246, 94, 7,173,211,223,105,162,148,181, 24, 21, 23,168,237,234,140,175, 13, 33,208, 7, 33, -187, 80, 76, 22,110, 10,157,186,200,186,232, 30,101, 22,201,181,245,132, 79, 89, 42, 74, 21, 23, 4, 46, 80,188, 75,246,254, 84, -108,125,130,209,172,176,181,217,246,218,126,254,226,220, 92, 46, 48,222,127,187, 28,139,139,127, 76,141,140,214,133,232, 9,104, -113, 26, 61,131, 21, 25,173,118, 17,106, 1, 86,197, 83,198,180,182,149,143,236, 69,133,202,254,255,153, 96, 51, 81,132,174, 51, -203,151,230,178,184, 8,185,245,216,127,240,224,152,217, 9, 20,118, 81,173,191,200, 25,111,207, 88,112, 7, 74, 35, 15, 70,119, -163,168, 24, 13,110, 24,179,141,250,155, 29,198, 29, 36,136,184,248,212, 84,250, 49,218,197,160,234,130, 44,160, 70, 3,237, 82, - 71,231,130, 56, 66,176, 90,153, 71, 7,159,205,170,196,198,160,111, 17,171,187,113,228,108,183,163,158,157, 82, 9,214,125,143, - 35, 73,132,227,131, 67,174, 28,159,112,114,114,153,148, 58,106, 45,108,117,199,237,179, 71,108,206, 78, 45,161, 48, 4,210, 90, -172,168, 71,117,107,145, 46,253,216,182,103,115,160, 14,100,216,237, 42, 55, 71,211, 32,137,216, 25,127,123,180,179,245, 10,202, - 73, 85, 98, 22,250,245, 1,242,220, 9,124,139,192,229,115,248, 3,131,141, 29,175, 61, 15,235,127,207, 20,190,225,200,252,182, -228,230,108,117,117,205, 61, 24, 63, 15,167, 63, 1,231, 95,131,221, 45,244, 86,133, 55,131, 37,130,109, 11, 19,175, 51,129,236, -162,169,213, 61, 77,115,105,142,212,162, 38, 72, 91, 89, 4,159,172, 93,118,223,219, 40,220,138,181, 63,100,217, 17,144,203, 20, -151,126,241,105, 73, 94,168,215, 10, 43, 7,167,116,237,228,115,219,124,148, 61,136, 3, 89,173, 40,102, 71,141, 85, 31, 9,231, -140,110, 20,182, 21, 61,171,112, 58, 26,125,173, 40,210, 41,117, 83,172, 11,149,128, 92,139,200,213, 8, 95, 46,200,155, 91,248, -253,106, 47,219, 87,182,240,142, 14, 93, 21,248, 64,128, 23, 49,198,187, 84,180, 91,120, 72,187,104,157,235,229,100, 33,235, 4, -116,107,205, 33, 35, 54, 79,173,189, 95,124,218,172, 85,145,218,193,218, 46, 15, 42,190,231,124,100, 63,147,198,246,112, 22,223, - 59, 10,210, 11,122,172,237, 84,183,145,249,213, 96, 5,246,161,139,221, 6,239,168, 71, 95,127,132,130, 30,131,246,160,135,192, -224,131,191, 43,157,145, 11,139,162,111,129,188,145,209, 67,208,227, 74, 56,200,246,247, 9, 1,142, 58,184, 22, 76,237, 94,157, -153,149, 4,210,161,125, 65,201,150,105,126,114,217, 2,103,158,123, 19,206,223,128,187, 59,120,135, 34,103,192, 61,144, 27,137, -112,174,232,206,184, 9,241,180,218, 5, 98, 80,250,179,202,193,166,152, 86,193,187, 43, 57, 8, 70,182, 58, 12,200, 73, 15, 79, - 36,228,138,192,147, 1,185,134,175, 26,214,144, 86,208, 61,137,196,119,131, 60, 15,122,205,247,134,175,195,248,105,216,124,198, -166, 80,103, 91, 56, 63,132, 7, 79,195, 77,181, 91,243,217, 72, 61, 29,208, 33, 83,123,157,165,213, 83,232,203,156,148, 88,212, - 34, 74,235,130, 21, 94, 28,129,169, 98,111,113,174, 58, 19,183,188,202,235,194, 31,221,238,157,201, 89,217, 73,204,122,214,184, - 11,237, 66, 16,252,190,171, 23,124,216, 85, 76,116, 43,238,155,202,173,179,214,253, 98,161, 64,168,246,115,197,133,240, 75, 39, - 64,192, 34,193, 74, 27,121,114,177, 7,158,228,172,208, 69, 33, 84,243, 45, 15, 42,211,238,157,118,169,152,130,224,253,107,180, -110, 76, 42,157,204,194, 41,105,176, 29, 55,192, 72,109,107, 11,157, 4, 99, 65, 91,130, 91, 48, 64,150,204, 83,157, 32,176,241, - 73,222, 70,101,242,211,215, 69,186,246,126,124,169,211,223, 60,168,166,238, 13, 2,234, 66, 25,175,123, 94,239,233,124, 94, 0, - 98,170,238,211, 96,150, 2,190, 36,251,214,195, 73, 27,176,176,157, 93,244,159,179,200,132,151,104,215, 26, 17, 33,134, 64, 8, -201,119,228, 70, 88,203, 90, 39,130,168, 76,171, 5,247, 82,235,156, 17,176,140,145, 94, 18,109,116, 1,187,105,118,147, 40, 66, - 23, 12,192,164, 62, 2,175, 19,125,176,145, 16,103,214,185, 44, 5,172,186,152,232, 72,216,251, 59,181, 75, 76, 10, 97,234,166, - 99,138,142,120, 53,250,224, 56,142,118,129,110, 29,188,204,121,236,180,204, 63, 17,138, 8,165, 20,164,100, 31,187, 39,223,109, -219,186, 97,187,219, 48,158,219,232,189,186, 98, 32,231, 66,169,213,190, 71,201,115,170, 94,251, 60, 6, 65, 67,176, 63, 83,178, -217,235,166,232, 85,108, 34,144, 58, 78, 46, 93,226,210,149,171,164,213, 1, 15,199,145,123,183,222, 36,159,157,186, 61, 48,144, -142,188,182,173,130,137, 50,228,194,195,215, 53,197,118, 18,100, 20,242,185,157, 37,135, 97,254, 48, 94,170,202,225, 89,229,100, -157, 8,151,215,200, 65,135,188,119, 5,127, 98, 7,223,185,133,120, 5,134,239,134,244,199, 33,124,179, 23,243, 17,107,235,154, -249, 35, 65, 61,133,242, 50,148,183,172, 67, 63,191, 9,195, 93, 19, 60,189,150,108,135, 94, 93, 5,178,178,226, 40,209, 70,233, -211,211,218,162,150,188, 59,150, 86,144, 87, 94,128,219,239, 95, 57,241,164,243,125,107,242,147,171,225,180, 84,231,147,164,181, - 31,157,125, 13,209, 22,190,209,174,253,206,139,173, 94,192,183,213,186,218,161,218,136,251, 44,195,166,154, 48,168, 42,186,173, -134, 80, 61, 27,209,179, 98,162,143,188,240,208, 39,199,171, 14, 62,230,201,145,112,210, 89,135,253,106, 33,126, 26,120,225, 4, -190,186,129, 87, 54,240,177, 21,188,175, 67, 46,117,232,203, 10, 95,174,196, 7, 74, 24,108, 5,160, 39, 9,174,118,112,185,179, -124,164,131,104,133,190, 93, 88, 54,192,186,216,114,184,154, 34,122,154, 78,104,130, 67, 69,162, 32,199, 17, 61,173,176, 45,246, -117,165,162,155, 2,143,252,232, 73,246,250,132,236,151, 43, 21,184,151,109, 60, 30,125, 18, 81, 5,174, 9, 92,141,176, 41,232, -105,181,191,107,239,239,209,145,243,115,183,192, 93, 15,151,201,190,228, 59, 23,228,161,247, 99, 7,110,219, 59,216,185, 22,225, -220,253,222, 43,180, 7, 57, 28, 64, 62, 5,219, 83, 15,159,191, 14,253, 31, 7, 62, 4,233,111, 67,121, 19,142, 30, 34,249, 33, - 58,238,160, 14, 72, 30,144,172,134, 19, 30,124,106,178, 3,182, 2, 15, 20,206,100,158,111,246,254, 51, 92, 22,155, 76,156, 68, -207, 90, 95, 67, 56,129,244, 52,196,103,160,255,152,197,175,202,145, 65,115,182,191, 0,187,127, 2,103,111,160,167,231,176, 9, -112,218,195,233,161, 77, 40,182, 59, 56,171,212,157,101,155,214, 97, 68,163,175, 97,134,108, 58,130,232,113,241, 91,179,102,101, -156, 23,238,235, 2,173,144,139,237,121,219,199,165,137,182,106, 85, 87,176,235, 36,134,106,141, 82, 66, 77, 56, 85,101, 66,223, -138, 40,161, 92, 40, 28,117, 14, 9,209, 37, 65, 12, 93,116, 91,214, 44, 84,239,240,171,119,196,180,244, 46,159,254,165,186, 36, -165,205,240,147, 42,115,100,153,248,208, 40,133,121,223, 25,171, 19, 26, 69,232, 4,196,247,139, 89,149,161,154, 69, 74, 68,109, - 61, 39, 58, 29,248,161,249,239, 85,201, 85,167, 29,190,234,156,107,142, 83,240,204,210,103, 95,191,138,237,197, 11,179,230,104, -244,206, 93, 93, 77,254,160,194,153,119,214,213,167,134,121,207, 6,215, 84,230,205, 91,191,132,166, 56,224,107, 15,127, 43,123, - 24,141, 37,252,103,233,127, 47,178, 63,117,174,139, 83,117,229,125, 69, 88, 36,121, 77, 5,126,210, 10, 44,246, 46,222, 77, 39, -137, 19, 76, 69,188, 88,205,137,101, 54, 14,207,165,236,101,183,139,187, 8,204,229,160, 11,177,181,139, 50, 69, 22,153,240,243, -127,219,139,131, 21,136, 90, 9,105, 53,143,221, 23,184, 93,212,192, 48, 83,218,156, 78,115,129,125,200,207,226,134,163,170,211, -235, 30, 93, 28,103, 64,152, 52,113, 35,170, 10,195, 56, 80, 70,243,150,167, 24, 32,122,168, 75,169, 83,145,159, 12, 17, 90, 13, - 56, 35,129,172,202,102,187,101, 28, 71,219,151,215, 74,201,153,210, 2, 90,166,105, 64, 68, 67, 52,101,124, 41,211,206,106, 10, -232,145, 96, 62,244, 92, 60,240,204, 39,131, 97,246, 63,140,227,142, 59,183,111,114,251,206, 45,255,254, 22,146,214,210,244, 10, -144,142,124, 85,190,198, 98, 48,151, 47,113,112,177, 66, 12,129,176,238,136, 53,114,242, 76,199, 11,119,183, 60, 58, 43, 72, 85, -214, 69, 57, 14,129,213,122, 77,124,231, 17,242,241, 8,223,188, 67,222,119, 6,215,159,131,250, 39, 33,254, 33, 56,120,202, 31, -235,193,247,230, 46,101,209,222,162, 35,235,151, 96,248, 5,168,107,216,126, 1, 54,119, 96,120, 4,103,143,208,183,162, 29,102, -163, 23,215, 67, 31, 49,186, 61,219, 72, 96,213,119,213,177, 93,171,103,193, 87,114, 84, 93, 31,109,239,126,232,162,169, 3,143, - 56,235, 13,206, 98,113,155,243, 50, 79,229,235, 21, 0, 0, 32, 0, 73, 68, 65, 84,203, 94,120,223,123,231,226,190,166, 96,183, -154, 51,179, 45,144, 49,111,247,121,177, 34,117, 94, 77,196,244,168, 90, 62,249,198,195, 34,212, 14, 96, 69,169, 67,165,110, 43, -117, 44, 12, 62, 34,181,189,162,117,233,186,243,124,241,149, 5,105,116,119, 11,125,180,245, 0, 15, 10,252,211,129,248,117, 43, -248,150,206,162, 81,191,116,110, 80,150,156,225, 3,157,177,219, 63, 23,144, 71,126,251,186,150,224,160,179,163,164, 15,200,245, -149, 41,244,175, 36,228,200, 25, 85,186,152, 58,244, 14, 18,168,254, 54, 5,177, 36, 25, 2,114,160,232,105, 65,135,236, 80,145, -104,251, 93,166,214,201, 46, 31, 21,120, 75,225, 74,130,119,245,240,153, 17,174, 68, 3,197,188,190,133,109,161,158, 85,184,239, - 2,152, 43,209,225, 70,209,110,166, 99,133, 65,108,154,161,158,233, 43, 17,185,226, 33, 40,215, 77,223,193, 23,183,182, 75, 94, -169,173, 64,174,244,232,229, 4, 47,100,164,127, 96,227,253,163, 4,221,155,176,250,113,195, 10,111,158, 2,253, 48,132, 83, 72, - 61, 18,119, 46, 74,116,235,158, 12,136,110,161,110,161, 62, 2, 61,131,225, 28,134,193, 82, 62,196, 95,167,110, 13,105,109, 59, -241,248, 14,144,167,161,123, 15,252,255,116,189,217,179, 37,217,117,222,247, 91,123,239,204,115,238, 84,115, 79,213,232, 9, 3, - 1,130, 0, 65,144, 20,105,138,146,104,153,150, 44, 59,100, 59, 68,234,193,118,132,195, 47,140,144,159,236, 71,251,145, 79,142, -240, 63,224, 7,135, 31,236, 7, 7, 67,180, 77,155, 14,153, 14,112, 16, 1, 73, 4, 45,145, 24, 9,128, 32,134,106,116, 55,170, -199,154,110,213,189,247,156,147,153,123, 47, 63,172,181, 51,247,185,213, 68, 68,161,167,170,123,239, 57, 39, 51,215, 94,107,125, -223,239,235, 94,132,254, 54,196, 43,182,210,200, 23,176,253, 38,108,126, 11,206,191,130,222, 27,225,199, 61,188,219,163,239,140, -232,147,115,116,227, 15,194,232,235, 17,197, 14, 13,131,191,246,161,160,143,252,239,163, 77,160,114,182,113,241, 38, 91,244,231, -164, 74,206,194,152,153, 99, 78, 75,171,100,111, 10,110, 77, 76,139, 77, 44,104,213,101,182,222,252,200, 62,194,147,178,124, 93, - 65,231,196,192,210,242, 26, 92, 48,215,137, 43,149,115, 45, 50, 46,150,194,236, 99,169, 10,213,130, 21,237, 88,143, 6,209,191, -102, 97, 14,176,232,130, 33, 88,167, 98,197,180, 22,198, 92, 20, 13, 66, 87,247,150, 89,231,196, 46,117,113, 82,231,173,190,186, - 10, 63,212,221,183, 46, 61,180, 22,157, 87, 24, 26, 23,181,121, 86,246,250,217,208,164,170, 21, 89, 68,107, 45,238, 86,102, 22, -221,146,191,158,170, 0,209, 99, 68, 67,179, 95, 69,108, 85,168,243, 60, 93,247,226, 90,139,239,221, 91,188,233, 83, 10,244,230, - 51, 8, 18,102,225, 88,231, 27,175,209, 59,226, 82,121, 24,178,172, 43, 77,212, 27,231,144,173,218,157, 70,177, 80, 19,196,210, -199,114,241,247,184, 24,246,180, 22,203, 42,118, 43, 37,207,211,135,118,188,190,100,249,233,124, 48,144, 38, 22,119, 65, 14,155, -183, 61,198, 8, 49, 81,198,237,178,150,104,198,231,178,151,235,254,148,155,126, 6,203,208, 70,175,170, 21, 71, 43,234,102,101, - 19,183,162, 77,192,110, 55,146,199,145,104,121,228, 16, 2, 99, 49, 46,116,125, 79, 98,144, 57, 26,118,114,232, 75, 81,236,112, -227, 7, 98, 9,193,215, 20, 70,146, 83, 89, 88, 10,190, 16, 34,166,158, 41, 38,202,176,243,231, 90, 35,116,172,168, 91,177,206, -188,157,166, 89, 62,140, 52, 89,236,186, 63,206,247,201, 66,186,174, 74, 18, 33,244,193,229,249, 13, 5,194,239,250,176,238,136, - 71, 43,228, 87, 14, 72, 31,239,184,245,223, 63,224,250,110, 7, 71,145,112,146,144,231, 58,248, 88,129, 95,222,193, 39, 35, 92, -125, 21, 14,127, 3, 86,255,192, 30,108, 6, 89,180,228,172,121,167,212,129,118,134,254, 28,190, 12,219,223, 6,249, 12, 76,135, -176,125,207,150,245,195, 35,235, 94, 54, 30, 70,126,226, 82,213,226, 79,172,202,153,172,209, 80, 61,115,202,213,140,122,234,101, -201, 39,141,106,146,214, 85,180, 56,204,149, 43,185, 43,222,170,238,145,119,184,183,201,118,219,140,217, 67,192, 50, 92,140,232, -214,139,206, 70,209,205,132,158, 43, 58,140,148, 33, 91, 33, 31, 10,101,107, 31,116,201, 19, 90, 28,118, 80, 76,116,179,155, 96, - 40, 66, 78, 97, 30, 23,197, 58,234,241, 12,122,141,234,196, 50,219, 51,119,111, 79,196,104,163,167,254,209,150,245, 63,187, 71, -250,175, 95,132, 79,118, 76,255,237,143,217,190,126,129,156, 4,250,111, 6,226,223, 63, 54,133,248,143, 10,220,140,200, 58, 89, -218,115, 15,114,165, 67,158,237, 44,176,229, 40,186,109,193,223,219, 19,247,192, 31, 38, 27, 91,151,206,170,195,129,218, 88,252, - 34,195,217,136, 76, 5,178, 23,223, 67, 31,196, 62, 25, 77, 13,127, 88, 76, 76,247,221, 9, 94,238,224, 87,175,194,149, 43,240, -234,198,138,238,153,117,162,170, 10,157,162,189,239,113, 58, 49,181,102, 31,144,209, 42,140,198,209,234,236,125, 69, 79,139,233, - 32,126, 42,217, 19,234,206, 14, 61,157,224,137,229, 31,235,104,137,110, 60, 24, 9, 93,132,183,182,232,161,141,214,120,121,101, - 7,149,221, 27,208,191, 3,252,164,117,236, 60, 99,226, 76,142, 65, 94,104,198,130,238,250,141,197,100,216,229, 20,226, 27,112, -252,142, 21,120, 70,151,198,247,150, 2, 23, 94,130,240, 41, 43,236,233,196, 21, 95, 63, 0, 30, 65,254,190,141,217,119,119,208, -211,199,112, 55,192, 15, 18,122,231, 9,249,221, 29,229, 34,163, 58,217, 61, 87, 39, 73, 79,236,193, 64, 4,189,240,202,226, 92, - 97, 45,120,225,114,177, 90,182, 75,116,114, 81, 87, 41, 97, 78, 16, 19, 47,158, 45, 57, 69,212, 30,156, 41,176,128, 73,252,236, -150,177, 48,167,122,235,212, 4, 65,109,182,171, 53, 38,119, 70,119, 20,155,240,101,153,221,158,115,145,150, 96, 95,175, 22,192, -212, 60,236, 67,133, 51,121,200, 76,146,101, 88, 54, 5,165, 27,189, 19,159, 67, 50,124,116, 42,246, 26,166,166, 43, 37, 87,132, -234,100,156,244,102,191, 46, 69,205,185,154,189, 11,244,148,182,169, 22, 34,153, 13, 45,246,221,130, 29,112,151,124,234, 50,119, -147, 21,223, 58, 79, 62,154, 66,187,148, 21,117,248, 8,115,116, 39, 51, 20,165,150,161,128,136,206,202,123,113,117,254, 2,183, -209,197, 10,216,216,207,234,231,116,121,223, 61,199,170, 74, 64, 36,217,126, 88,133,108,126, 49,146,139, 36,237,177,238,207, 59, -106, 78,121,240,246, 51,204, 69,189,102,140,215, 46, 87,243, 52,235, 12,236,176,101, 63,133,237,165, 13,188, 98,221,180, 31, 17, -100,137,146, 85,105, 57,245,251,232,185,210,202, 0, 93,192,153, 68,136,221,138, 73, 39,178,157,234,104,178,223,102, 20,109,237, -150, 91, 59,157,162,151,130,102,116,222, 53, 4, 9,214,156,138, 32, 49, 33,209,186,245,130, 48,110,119,228,113,156,201,118, 89, - 76,165,111, 27,215, 52,103,173, 15,227,192, 48, 77, 76,195, 96,247,167,239,195,163,251,239, 13, 85, 92,220, 38, 88,102,166, 64, -153, 39, 36,101, 6,185, 69, 9,208,117,228, 50, 44, 20, 64, 93,130,149,102,199, 66,251,254,233,165, 36, 29,223,245,107,105, 93, - 87,144,214,171, 30,214, 1,233,236,195,149, 38,231,150,226, 10,241,171, 9,185, 17,225,137,194,239,236,224,153,158,248,185, 21, -252, 68,129, 79,140,240,242, 57, 92, 63,128,195, 95,130,213,127, 5,221,103, 33, 28, 47, 35,118,205,151,242,199,221,182,150,255, - 18,118,191, 3,143,255, 21,164,159,130,248, 60,236,190,106,224,148,178,181,113, 99,167,240,108,182, 14,105,151,247,153,131, 49, - 46,225,229,181,237,136,141,197, 76,196,196, 83,161, 52,187,243,228, 79, 28,187, 24,101,240, 39,203, 96,123,122, 61,155, 12,125, - 58,170,237, 84, 47, 28,125,186,153,236,191,159, 91,209,214,193,140,255,101, 44, 54, 78, 25, 51,186, 41, 22,167,151,133, 82,138, -125,152,193, 0, 12, 25,101, 64, 24,178,113,240,139,231,180,215, 83,119,244, 31, 57, 86,107,145, 10,121, 92, 48,157,231, 34,116, - 42, 68, 41,164, 35, 97,247,141,115,174,252,143,119,137, 63,145, 56, 63,221,241,248,186,208, 29,194,225,227,137,195, 63, 62, 39, -252,167, 55,144,163, 3, 24, 2,114,179,135,171, 61,114,128,169, 25,143, 35,164,236, 29,167,195,110, 86, 9,186,107,208, 29,248, -211,117,131,205,192, 19, 28,190,104,209,158,247,190, 7,231,131,219,195,140, 28,167, 33, 27,169,237,208, 64,233, 26, 10,124, 97, - 99,133,249,205, 12, 31, 57,135, 79,249,154,163, 38,135,244, 2,143, 65,199,226,147,145, 98, 95, 79,146, 23, 54,111, 21,119, 85, -255, 96, 85, 66, 94,142,102,155,122,103,164,188,185, 51, 31,254, 88, 40, 27, 53,126, 66,176, 74, 82,142, 34,114, 22,145, 20, 41, -187, 64,124, 48, 34,155, 12, 47,172,225,240, 12,174,127, 29,142,238,129,126, 20,228,154, 77,142,198,239, 65,186,109,133, 89,189, -191, 13, 35,240, 30,240,151,176,121, 11, 30,159,195,195, 11,244,113,237,164,125, 98,112,242, 45,100,245, 69,136, 7,158,231,185, -177,226, 95,118,118, 0,188, 24,225,126,132,183, 3,122,103, 71,254,241,134,252,120,231,240, 8, 55,123,199,138,250,170,211, 34, -187,196,183,155, 76, 9,145, 16, 5,137, 50,251,231, 39, 63,211,214,181,250, 20,116,217, 9, 55, 69, 64, 90,216, 73, 37,160,133, - 96,153, 8,193, 11,162, 23, 22,187,240,194,188,183,150,134, 39,190, 87,218,179,119,171, 42,123, 57,224,115,180,101, 54,107, 88, -108, 54, 87,194,165,224,110, 23, 94,101, 89,178,148, 10, 66, 44, 58,191, 13,201,247,243,147,235, 2, 43, 91, 73,157, 93, 95, 67, -149,150,157,100,125,141,102, 87,171,221,118,169,145,199,106,116, 76,130, 61, 18,202,236, 34,107,147,228,196,105,124, 50,143,229, -103,107,171, 39,241, 85,191,254, 50, 54,213,198, 21, 38, 53, 74, 98, 22, 80, 85,159,189,241,173,100, 14,211,169, 54, 53,109,130, -118,148,194,174, 48, 35,176,130, 67,173, 44, 72,106,233,123,103,137, 97,112,205,127, 21,173,133, 84,223, 20,130, 83,176,212, 43, -122,237,146, 17, 83,169, 75,176, 78, 92,137,179,182, 64,221,173, 80,166, 76, 41,217, 86, 50,254,232, 44,222, 91, 91,137,240,134, -164, 20, 15,145,125, 42, 97,100,158,244,148,102,153, 31,100, 57,236,204,217,240,213,174,167, 74,215,117, 16, 3,121, 24,104, 94, -226, 66,229,187, 28,198,213, 28, 76,219, 67,170,206,185, 37,203, 65, 37,132, 90,128,109, 42,168, 2,227, 48, 50, 57,115,221, 14, - 77, 54, 13, 75, 18,136, 93,162,168,178, 29, 7,118,219, 45,211, 56,248, 68, 33, 56,164,198,167, 26, 33, 46,185, 5,179, 52,192, -131,133,106,170, 95,179,239,215, 82,124,148, 31, 41,174, 27,168, 7, 57,213, 75,200,156, 75,228, 65,116, 95, 55,177,255,123, 29, -181,155, 94,187, 2,135,139,159,154,236,136,212, 2, 28, 41, 92, 87,184, 61,194, 11,163,253,251,159, 83,184,154, 45,120,226,106, - 15,183, 94,129,254,215,129,127, 0,188,228,155,156, 13,232,195,167, 53,149, 51,141, 97, 11,229, 59, 48,254, 30, 60,254, 35,144, -235,176,254, 28, 12, 95,179,110, 94,176,217,243,225, 51,176,218, 32, 87,119, 46,160,187,180, 27,104,149, 23,101,223,250, 66, 14, - 78,150, 19, 27,161, 79, 30, 58, 50,248,150, 43,251, 94, 82,189,229,185, 80,171, 99,231,101, 17,115,109,138, 21,240,157,147,123, -138,218, 63, 79,254, 75,138,141,135,182, 25,157,148, 60,186,191, 89,116,206,103,175,153,236, 99, 17, 46,178,107,229, 26,209,198, -212, 36, 27,213, 56,214, 41, 47, 15,140,186, 51, 59,159,124, 77, 18, 44, 2,247,236, 40,112,250,111, 46,232,255, 28,166, 3, 40, - 43,235,238,166,117, 64,223,157, 76,221,253,111, 93,135,215,109,162, 34,175,174,225, 70,135,244,157, 83,132,138,141,150, 67,129, -120, 19,120,222, 2, 67,226,123,192,199,129,191, 9,252, 79,192,251, 32,207, 66,121,100,135, 42, 73,112,100, 25,164,250,230, 57, -122,103,135,190, 51,160,119,183, 86,164,175, 11,233,113,177, 41,192,127,126, 3, 94, 78,176, 27,173, 64, 31,123,215,114,210,161, -103, 25, 57, 72,232, 65, 54,109, 68,151,108, 4, 24, 93,206, 59, 21,179,156, 92,235,237, 49,217, 7,251,154, 27, 40,167,153,114, -238,113,132, 67, 97,218, 21,166,179, 74,236,202,132, 7,163, 97,118, 49, 85,122,217, 21,210, 90, 9,103,230,245,231, 86,129, 23, -126, 0, 71,239,129,124, 4,228,138,143,199,255, 16, 86,207,195,193, 85, 43,208,225, 28, 46,238,193,143,206,225, 7, 5,222,119, -241,156,170,241, 15,174, 39,228,102,132,213, 14, 13, 79,172,200, 31,122, 21,121,162, 86,156,239,187,177,227,108,160,108, 38,202, -253,145,252,112, 71, 25, 39, 52,249, 41,222, 15,120, 18,218,129,165,144, 11,108, 82,180,226,148, 21, 53, 19,181,123,160,253, 35, -204,150, 73, 62, 15, 38, 75,227, 93,110,144,174,245, 65, 76, 40,104,246,189,110,169, 44,241, 86,101, 46,115, 33, 14,205,190,180, - 90,207,114,110,138,159, 44,133,139,178,140, 58,101,143, 47,190,144,214,170,204,162,212, 29,178, 83,156,167,217, 78,165,140,109, - 87,231, 95, 55,120,129, 28, 93,132,148,115, 67, 72,203, 51, 30,142,146,171,119, 70,200, 18,216,130, 41,152, 61,246, 57, 87, 17, - 96,185,172,200,215,133, 2,199, 50,118,151,153,144,102,133, 71, 85, 61, 7,190,109,152,132,168, 50,239, 61,139, 44,185, 6, 50, -251,243,117,137,231, 37,120,119,181, 47,158, 91, 34, 97,101,222,240, 45, 7, 49, 89, 70,253, 92,202, 38,119, 17, 27, 33, 80,138, - 26, 34,187,242,193,125,100, 44, 8,177, 75, 36, 76, 92, 90, 36,250,180,197,222,159, 49, 23,198,113,154,119,215, 53,142,122,246, -203,123, 71,234,196, 21, 3,190,224,187,102,205,123, 62,120,213,125, 69,187,238,241,217, 22, 44,109,165, 19,138,123,198,241,240, - 44, 73,157,173, 79,234, 68, 87,151,233,199,124,152,209, 38,113,174,201,117,173, 0,162,253,158,221, 38, 35,193,247,232,196,104, -127, 46, 8,211, 84,152,198,113, 17,172, 85,146, 95,176,124,128,237,148,173,152, 15, 91,212, 99,195, 67,140,206, 62,241, 72,154, - 16,230,201,196,158, 88,193,125,248,226,171,144, 90,152, 85,139,175, 41, 10,164,132,196,100,220,246,236,235,205,198, 58,184,231, -146,104,171,184,238,255,181,138, 38, 43,188, 58,201, 63, 62, 52,208,199, 65,177,241,117,180,189, 46, 73,205,170, 36,209, 66, 53, -250,235,144,174, 90, 7,222,189, 2,233,147,208,127,210,198,142,230,145,114,185,243,105, 51, 98,111, 11,122, 89,110,241,242, 14, -148,183, 61, 59,244, 53, 88,255,134, 35,187, 86, 22, 12,178,187, 7,195, 7, 16, 55,126,215, 14,190,176,154,230, 11,203, 78, 33, - 14, 87,209, 12, 97, 7,113, 7,211,102,177,166,141,117,215,173, 70, 22,219,168, 21,166,209,121,238, 59,111, 17,182, 5,182,166, -124, 86,177,147,154, 58,102,175,100,155,213,105, 54,246,185, 37,185,249,184,105, 82,139,116, 45,197,132, 74,201, 82,145,102, 8, - 7, 58,127,249,157, 15, 3,170, 10,119,239,124,162, 54,178, 42, 14, 56, 25,155, 17,104, 22,115,169,109, 70,119,204,245, 78,128, -205,102,207,139,110,121,239, 39,223,201,109, 20,121,182,183, 11,230,160,135,151, 12,167,106, 16,143, 12,225,121,123,175,195, 45, - 63,209,191, 7,121, 13, 97,107,138,236,153, 32,253, 29,215, 63, 76,176,253,115,123,255, 70,183,215,125,245,148,242,187,143, 40, -111,109,209,149, 89,172,166,179,145, 41, 90,206,142,136,176,186, 40,244,255,230,140,144, 3,242,145, 43,118, 13,141,238, 30,184, -218, 35,155,130,238, 38,228, 57, 63,201, 28, 56,201,101,240,207,183,179,193,177,172,124, 14,252,234,202, 46,179, 31,238,224,145, - 82, 30,219, 46,126, 10,133,173, 42, 91,135, 92, 68,135,197,164, 65,233,243,196, 74,139, 77, 17,222, 85,226, 54,219,250, 97,219, -193,174,135,151, 47,144,171, 31,128, 30, 64,255,243,160,223,135, 15,222,128,241,161,173,107,206, 4,126,152,225, 13,224,141, 9, - 29,118,140, 97, 52,246,149, 68,228, 40, 18, 14,147, 29, 74,114, 64,142,147, 5,179,100, 76,224,183, 85, 83,239,110,139, 77,108, -130, 31, 4,187, 50, 83,213,138, 66,118,107,153, 78,205,131, 59,152,130,122,204, 53, 28,198,108, 98,102, 80, 88, 34, 72, 53, 44, -236,239,150,132, 45, 65,141,214,167,152,195,160, 52, 97, 7,158,180, 82,233,120,104,153,147,172,106, 65,183, 97,201,126, 39,201, -164,205,238,216, 30, 52,129, 42,192, 23,155, 38, 96,123,242,132, 37,157, 85,200, 74,100, 9, 45,178, 64,153,197,101, 19,106, 7, -222, 6,140, 84, 57, 7, 11, 49,109,172, 67,255,214,143,229,202,107, 27,165, 7,138, 4, 82,178,123, 40,229,194,228, 95,173, 20, -245,115,188,206,118, 47,230, 14,116,177,141,105,179,159,108,219, 64,109,254, 93,161,233,246,165,142,235,195,204,115,175,231, 39, -209, 50,175, 33,230,174, 43, 84,100,172,238,237,137,235, 88, 57, 58, 0,108,210,133,159,223,226,138,231, 3, 81,171,126,114, 37, -184, 52, 92,240,162, 75,108, 90, 81,161, 72,161, 72, 38,187,136, 48, 35,228, 58, 54,111,242, 89,219,169,204, 2, 83, 12, 51, 67, - 61,180,147,155, 89,192,182,175, 48,111, 55,224,250, 84, 37,104,200,110, 77,247, 25, 80, 98,236,153, 80,166,113,154,129, 65, 69, -100, 86,210,239,101,193,238,215,243,249, 51,179,243, 65, 43,244,132, 16, 29, 21, 28,163,239,211,147,101,151,143, 59, 74,153,154, - 61,191, 29, 48, 74,136,236,198,129,113,187,165,140,163,237,169, 59,159,128,200, 18, 53,104, 59,244, 56,159, 50,102, 17, 98, 67, - 31,172, 2,189,122,125, 76,121,178,248, 86, 85, 68, 38, 36, 70, 66, 12,100,141,115, 50,168, 54,239,226,135, 89, 11, 91,187,158, -162, 75, 65,151,154,167,254,169,104,118,160,238,186,117,204,241,196,112,149,114,197,254, 62, 29,251,174,240,153, 5, 97, 41, 7, - 16,250,198, 0, 51,184, 53,109,247, 33,177, 22,122, 9,241, 83,172, 35, 12, 47, 64,252, 85, 43,226, 26,172,187,143,207, 67, 62, -135,112, 10,241, 45, 8, 63,182,140,239,105,235,187, 77, 7, 64,171, 64,153,188,224,143, 62,234, 28, 96, 28, 77, 88,181, 43, 86, -176, 55,174,160,126, 48,153,213,171,130, 80, 38, 69, 39, 87,152, 79,182, 31, 87,241,130, 93,199, 85,142,119,157,159, 34,163,239, - 56,165,194,251,189,107, 47,197,236, 13,149,249, 62, 85,166,181, 48,168, 48,100,101,240,145, 98, 29, 16,168, 7, 10,180, 17,128, - 41, 56,164, 32,251,122,191, 14, 78,196, 10,248,197,104,231,174,177,179,214, 97,167,246,210,123, 79, 88, 77,209, 30,142,235,171, -145,240,211, 7,139,234,233,102, 63, 11,224,116, 83,144,225, 14, 28,156,128,220,116,130,217, 43,160,223,128,242, 99,200, 55, 96, -250, 52,164,191, 2,254,149, 41,150,206,183,240,208,216,240,250,112, 64,191,244,128,242,127, 61, 2, 70,228, 25, 65,111,249,120, -252,205,128,134,133, 18,166,219,130,126,225, 9,253, 31,110,144,191, 53, 16,126,253, 25, 23,232,169, 41,223,233,145,251,226,150, -163, 26,154, 99,254, 73, 89, 1,169,216,190, 47,129,172, 19,218,129, 60,155,204, 50,248,254, 0, 63, 8,228, 71, 3, 79,164,176, -233,226,194,220,143,190,207, 12, 22,114, 54,105,161,159, 70,242,123,133,114,145,137, 79, 38,194, 7, 35,242,206,132, 12, 7,232, -107,167,200,245, 31, 3, 47,194,225,103,224,246, 49,220,185, 3,111, 2,253, 26,126,229, 16,110,159,192,255,240, 67,242,239, 63, - 97, 76, 19, 37, 23,164,159, 8, 99, 36, 12,147, 39, 38, 5,100,154,224,253, 96,206,138,173, 11,175,178,171,175,179, 35,140,179, -209,247, 36, 9, 97,231, 7,185,236,202, 85, 93,196, 86,129,194,164,193,245, 24,203,142, 88,231,251, 41,204,161, 34, 82, 71,124, - 90, 22, 27, 79, 85,172, 5,157, 71,236, 85,136,150,103,101,142,117,233, 65,133,236,227, 84,109, 18,229,146, 44,201,131,101, 98, -239,241, 98, 80, 22,103, 21,169, 61,188, 82, 22,250,209, 15, 33,107, 97,138, 48, 77,166,159, 72, 85, 64,215,216,148,117, 6,229, -232,135,242,196,235,195, 63, 70, 51,155, 76,121,217,125, 87, 14,212,108,183, 11,113,182,145,137, 22, 66, 85,249,123,209,175,126, -252,122, 88, 86,151,113, 72,131,193, 85, 31,233, 7,127,143,181,237,154,154,154, 50, 71,151,122, 33,152,227,249,170, 12,177, 9, -254,217,235, 85,125,244, 60, 71, 60, 95,202, 37,175,169,110, 53, 35, 35,233,194,134, 9, 21,219,218,172, 82,104, 2, 77,170,184, - 78,102,190,154,197, 4,211,100,155,139, 71,237,105,147,230, 86,230, 96, 31, 63,214,204, 98, 1,247,222,123, 33,203, 78, 80, 11, -206,102, 47, 57,207, 70, 60,253,235,208,177,151,171,210,222,239, 93,142, 53, 69, 11, 41, 38, 74, 76,142,251,206,205,238,200,231, - 39,186,140, 56,171,221,186, 6,210, 46,171, 38, 27,169,231,106,177, 19, 8, 33,121,135,157, 12,246,146, 18,163, 42,187,209,147, - 60, 93, 33, 42,238,118, 42,192,110,183,101,220,237, 16,205,196,202,128,166, 10, 2,125, 49, 50,227,111,109,213,218, 28, 45, 22, - 25, 69,123,204,246, 67, 64, 36,154,123, 96,154, 16,103,214,139, 79, 66, 74,153,154,251,251, 82,102,125, 8,243,195, 97,209, 80, -212,116, 59,177, 41, 77,153,252,128, 95,128,178,130,233, 25,136,215,125, 28,121, 27,250,107,176,242,206, 60, 28,154, 37, 39, 30, -215,244,112,208, 11,104, 73, 62,243, 81, 47, 95,218,230, 95,254,184,131, 29, 10, 72,149, 83, 9,229, 30,148,115,203, 70, 47,239, -194,248, 46,140,239,121,177,158, 42, 93,195, 63,216,201,118,150,249,137,169,138,199, 29, 12, 25, 29,188, 35, 61,247,104,209,199, - 19,220, 87,120,127,132,243,236,156,105,179,146,217,238,215,119,186,217, 69, 91, 46,248,208,170,124, 15, 11,107, 82, 91,212, 82, -108,242,215, 29,185,169,141, 35,100,242,134,118,235,107,249,154,225,172,165,197, 14,235,254,122, 81,108,140, 58, 23, 68,149, 25, -114,178, 27,149,141,219,199, 71,181,174, 93,154,189, 74,246, 73, 0, 59,120,110, 5,171,143,118,139,240, 44, 4, 88,247,166,251, -162, 88,100, 41, 43,152, 30, 66,186, 11,225,115,222,141, 71, 40, 55, 64, 62, 6,211, 21, 59, 88,233, 53,251, 92,182,192, 54,163, -111, 94, 80,190,240,152,242,149, 51, 67,172, 30, 36,251,168, 55, 1, 58, 37,158,153,117, 45, 36, 31, 37,215,125,230,227, 9,249, -127, 78,145,103, 87,200, 63,188,229, 99,133,100,157,198,160,240,100, 50,111,120,244,125,110,125, 98,119, 17, 73,142,159, 13, 1, -121,111, 64,223, 24,224, 16,194, 47,246,164,219, 10, 95,132,131,239,238,200,231,138,118,182,250,216, 70, 65,163,208, 37, 27, 10, - 76, 65,152, 78, 21,221,140,244,253, 68,186, 58, 33, 33,146, 78, 38,235, 70, 59,208,248, 16, 57, 81, 79,152,251, 4,252,228, 21, -120,243,155,246,207,183, 86,240,246, 19,248,218,134,210,153, 21, 82, 39,108,106,147, 60, 29,169, 19,130, 20,239,104,155, 15, 61, - 96, 69, 61,248,228, 40,251, 3, 61,213, 66,228, 15,168,178,128, 4,107,206,124,240,223, 59, 11,171,124, 65, 89,229, 41, 81,150, -188,110,209,118,140, 91, 40,181,124,171,169,198,172,147, 10,203, 38,214,199,207, 26,196, 84,244,190, 71,175, 26,111, 13,150,138, -166, 49, 32,217,192, 33, 14, 91, 94,236, 72,179,127, 37, 32, 1,142,187,196,213,103,122, 14,126,233, 4,121,109,205,240,187, 15, -120,239,251,231,168, 40,147, 83,197,122, 12,101,187,228,138, 87, 63,244,126, 0, 9,245,128, 86,106,176,155, 41,139,251,106,141, -107,159, 44,209,211,198,213,239, 95,239,218,187, 96, 15,247,220, 28,136,132,229,251,212, 40,151,168, 85, 91,235,100, 50,241,110, -119, 38,239,177,167,108, 95,188,226, 50,219,239,180, 1,200,212,113,104, 96, 9,150, 17,247,246,207,193, 46, 46,122,144,230,160, - 49, 43,222,101, 89,153,204,123,246, 37,128,110,182,180, 61,181,193,150, 5, 17,107, 67,148,138,171,149,166,136,102,251,140, 29, - 93, 27,244,175,249, 58, 44, 0,178, 89, 60, 93,178,119,156,181, 33, 41, 79, 63,218,165, 57,189, 92, 70,201,206,129, 56,251,157, - 44,238,255,143,169,243, 85,165,121,185,237,163, 8, 51,108,168,253, 98, 90,202,126,104,187, 67, 92,234, 74,167,106, 21,130, 4, - 35,172,185,143, 60,197, 72, 22, 97,179,219, 82,166,209,223, 99,239,112, 69,152,114,102, 26, 71,114,158,252,125, 14, 75, 16, 76, - 61,132,120,247, 29,176,113, 86, 29, 64,235, 37,204,210,222,132,171,174,120,138, 57, 47, 44,201, 10,202, 48, 17,198, 9,233, 19, -154,162,231,120,232,165, 9,135, 23,124,196,234, 32,245, 58,169, 33, 67,126,152,111,116, 22, 73,223, 47,200,179,167,176,254, 62, -164, 27, 6,126,209,183, 64,111,129, 62, 15,253,203,208,221,114,140,235,129,119,119,218,242, 40,155,113,136,254, 53,233,187,149, - 20, 87,247, 50,247,161,220,133,252, 77,144,143,218,109, 87,222,134,233, 3,200, 15, 44, 70,115,154,108,217, 86, 38,163,135,149, -108, 69,127, 60, 51,123,209, 46, 27,113,109,235, 12,207,237,104, 5,104,147,173,176, 63,200,112,207, 4,109,133,105, 22,247,204, -180,180,236, 35,245, 97,241, 85, 86, 91, 75,173,174,179, 68,166,217, 45, 34, 11,224, 70, 69,140,102, 59, 45, 33,105, 59,183,167, -239,170,218,180, 57,185,207,172,234, 75, 55,102,244,206,190,126, 48,117,159, 55,154,163,130,169,134,167, 9,116,147, 79,166,213, -186,243, 24,204,105,117,178, 18, 78,142,109, 3,162, 90,144,215, 55,232,107, 23,200,141,130, 62,216, 25,180,231, 90, 7, 55, 54, -200,245, 11,232, 63,106,221, 41,175,131,188,228,199,255, 27, 80, 94, 3,254, 22,200,191,128,233,174,185, 15,222, 53,139, 30,159, - 91, 17,126,121,133, 92,241,192,232, 71, 62,126, 27, 51,218, 95, 16, 30, 78,164,149, 63, 69, 79, 4, 89, 11,242, 40, 32,234, 14, -137,179, 12, 39,201, 60, 54,169,131, 81,145,139, 26,143,107,159,195,172,230, 74,106, 19,128, 85,231, 6,221, 17,254,242, 2,253, -241, 68,201, 35,124, 92,232,126,227, 42,105, 55,113,248,207, 55,148,119,204, 34,183,253,160,176, 27,236, 97,190, 58,176,209,215, -147,173,146,163,144,178,178,126, 48,210,203,132, 14, 5, 78,132,120,226,160,145,143, 60, 52,237, 6, 64,255, 34,188, 38,240,206, -183,225, 15,222,133, 31,143,112,162,232, 99,115, 72, 72,175,243,168, 75, 5,100, 40,104,231,139, 80, 48, 92,110, 46, 54, 78,111, - 1,231,131,117,235, 50, 45, 18,112,201,251,137, 91, 97, 14,212,104, 78,254,149, 31, 81,230, 77,158,141,178,117,177,152,205,164, -176, 16,144,121,212, 94,246,133, 69,178, 63, 69, 51,177,152,143, 30,181,198,123,186, 34,189, 65,103,214,192, 20,105,250, 44, 81, -232, 29, 6, 18, 99,228,224, 36,112,244,179,199,132,255,236, 57,152, 70,244,119,238,205, 72, 41,113,111,248, 80, 51,189,221,186, -148,231, 7,145,238,137,156,234,248,170,218,239, 42,120, 36, 52, 60,247, 50, 43,174,212, 44,145,234, 74,255,102,199, 95,209, 18, -161,186, 94,117,153,250, 78, 46,239, 90, 53,124,251, 57, 90, 83,108,220, 28,154, 3,132,204, 36, 55,153,117, 16,212,127,174,152, -215,153,135,198,172, 85, 48, 13, 68,196,229,104,182,219,247,162,222, 98, 95,133, 5, 36, 99, 12,251,101,207,223,242,172,230, 0, -158,218,173,106,237, 89, 27, 90, 30,213,203, 45,151,176,182,178,112,220, 29,117,188, 72,157, 26,227,186, 44,241,181, 13,175,103, -217,221,150,210,214,211, 15, 65,209, 85, 36,238,126,177,111,231, 22,203,250,160,144, 66, 66, 82, 50,111,183,175, 4,130, 23,111, -213,167, 73,120,203, 7, 41,123,125,101, 21, 76,202,101,113, 92,140, 22,189, 27, 35,187,221,142, 60, 14,246,186, 66,244, 21,131, -146,115, 38, 15, 35, 37,231,185, 33, 89, 70, 74, 45,157, 46,248, 72, 63,204, 65, 45, 13, 33,127,111, 68, 94,119,251,165, 89,111, -137,107, 18, 36, 38,198, 14,116, 24,144,169, 16,186, 68,137,145, 50, 57, 33,181,221,197, 87, 56,143, 68,135, 22, 55,181, 76, 23, -123, 31, 85, 40,199,251,217, 22,255, 87,207,145,227,157,141,190,245, 42,228,251,176,125, 23,242,219,144, 95, 53,255,109,218, 24, - 88, 67,142,188,219,246, 25,176, 78,205, 6,236,242,167,236,223, 76, 19,148,251, 80,238,128,254, 24,198,191,130,221,215, 33,189, - 6,221,175,249, 92,170,131,114, 2,229,194,108, 68,101,176, 95,195, 19,152, 30,195,197, 57,122,110,176, 19, 6,177, 59,117,151, - 29, 18,162,139, 98,253, 81,182,228,182,209, 21,234,243,145,223, 59,242,188,112,222,231,211,189,255, 55,202, 62,151,218, 8, 73, -126, 58,149,125,177,125,241,130, 58,142,214, 97,141, 62,249,207,174,216, 76, 77,148,239, 30, 68,162,241,162,218, 84,192, 47,239, -178,236,165, 70,181,232,211,204,140, 57,158, 31,184,163,219, 70, 68,237,236,115, 24,225,133,171, 16,186,128,246,166,146,230,222, -132,254,193, 67, 27,191,175,221,223,125, 52,194,250, 28,142,255, 49,132,255, 0,184,135, 5,147, 43,112,100,135, 56, 62, 9,225, -143, 96,247, 47,225,237, 29,250,230,132,158,142,144, 51,114, 45,161,201,222,107, 57,138,240, 66, 66,146,160,187, 12,159, 58,182, - 11,109,114, 69,223,129, 93, 96, 33, 8,226, 33, 42,156, 21,120, 82,204, 86, 24, 28, 65,123,225,171, 17, 5,217,150,101,163, 83, - 71, 94,100,123,226,158, 36, 27,219,223, 29, 40,111,141,148,239,142,200,183,182,132,159,233,136,191,188, 38, 93, 51,144,196,250, -237,145,252,229, 29,249, 71, 35,225,102, 68,142,133,241,207, 71,206, 86,202, 32, 86, 88,226,164, 28, 61,154, 56,124,125, 3, 35, -196, 11, 69,206, 15,208, 79,108,144,107,119,204,175, 30, 95,132,231, 62, 13,219,111,187,102,163, 67,182, 9,189,231, 63, 79,242, - 61,104,189, 32,134,236,162, 45,153,201,128,182,238,105,242, 75,107,180,105,158,159, 73,148,236,201,129, 13, 89, 45,200,194,113, -183,219,167,241,157,137,122,215,141,237,201,181, 54, 44,106,171,137, 98,187, 58,234, 3,177, 29, 11,178,204,114,151,253,189,204, -137,107,120,231, 94, 84, 81, 49,124,110,110, 84,240,161,238, 29, 27,245,182,170,237,175, 31, 61,158, 24,126,255,148,254,247, 79, - 25, 55,133,115, 50,155,152,201,121, 25,127, 87,146, 92,168, 35,110,191,134,235,121, 35,205, 29,187, 54, 51,238,198,111,239,208, -145, 25,219,234,185,232, 45, 54, 85,230, 87,106,249,232,120,166,123,152, 97, 57,234, 60,114,102, 13,198, 28,190,164,203, 1,170, -138, 4,163, 44, 93,178, 94, 10,101,169,194, 47,101,127, 15, 42,174,158,175,202,232, 24, 28,114,162, 25,134,237, 37,251,218, 2, - 84,175,215, 68, 93,231,213,132, 60,154,228, 52,209,125,181,119, 22,230, 33,244, 76,116,171, 74,232,214, 83,191, 23,224,186,252, -249,232,135,143, 86,114,161,173, 35,220,253,253,226, 7,133,122,192, 42,151,188,225,237,212, 56,248,148,241, 67,255, 87,199,198, - 24,146, 53, 9,164,174,159,125,238,179,240,178, 90, 39, 75,251, 19,237, 23,205,102,232,227,216,227, 37,219, 32, 4, 99,199, 71, -239,208, 67,234,184,152, 38,118,195,206,255,123,116,165, 63, 76, 99, 38, 79,147, 89,245,218, 81,186,163, 25,149,229, 64, 39, 40, - 49, 36, 23, 38, 22, 27,163,123, 66,219, 83,236,155, 70,112,160,174, 93,209,121, 74,101, 59,254,210,117,110,155,132,144, 58,159, - 22, 47,201,125, 79,191,125,242,212,103,104,211,131, 56,139, 55, 18,127, 57,192,195,100, 36,175,103, 39,184,122, 10,199,143,224, -224, 46,172, 86, 80, 14, 96,188, 5,253,107,150,249, 28,175, 67,188,225, 59,241,155, 16, 14,172,200,235,232, 54, 40,125,122,145, - 50, 31,213,162,251,128,158,129, 48, 25,184, 99,248, 54,148, 47, 65,247,139, 54, 5,144,119, 32,223,243, 14,125,107, 94,245,139, - 7,112, 54,160, 15, 4,206,130, 11,221,116,153,111,111,124,116,186,117,239,248,153,117, 98,138,157,250,108, 89,105,150, 33,173, - 65, 47, 85,205, 94,253, 51,165,238,153, 90,138, 83,123, 10, 95, 94,130, 58, 56,174,178, 3,134, 98, 33, 6, 53,179, 58,250,239, -147, 92, 19,156,116, 62, 40,212,241,223, 76,134,218,187,153, 60, 31,166,117,229, 5,219,151, 20,255, 67, 5,232,130, 1, 40,198, - 73, 89, 37,120,233,170, 53,181, 42,193, 72,113,135,193,128, 43,193,176,181,114, 43,193,237, 2,183, 55,200,245,127, 4,241, 63, -180,137,140,161,214,128,231, 64,126,210, 98, 75,229, 15,225,201,111,161,223, 5,222, 75, 40, 35,250,100,180,177,193,219, 59,195, -151, 30, 6,244,165, 14,169,249,233,197,218, 39,217, 22,152,196, 14, 94, 15,118, 6,167,121, 49, 89,248, 74, 12,150,173,254,252, -161, 61,185,118, 59, 15,190, 9,203,211,188,171,106,161, 88, 23,158,120, 96,177, 81,240,158,237,209,231, 6,228,129, 21,206,221, -215,183,236,190,182, 37,246, 66,186,153, 88, 61, 31,233,126,101, 69,252, 76, 71,136, 66, 88,117,132,207, 38,142,223, 63,103,120, -125, 96,119,100,194,179,139, 34,236,128,252,112,226,100,216,160,163,146, 6, 63, 89,191, 40,200, 51, 63,130,131, 71, 16, 62, 10, - 47,191, 6,219, 59,240,104, 34,190,182, 34,142, 35,211,227,178, 56,138, 7, 31,133,201, 37,220,101,237,214, 28,129, 32, 77,122, -148,178, 20,185, 82,100, 86,138, 27, 77,203,174,207,169,237,212,155, 10, 96,177,201,165,137,144, 14,139,176, 43, 96,123,186,210, -230, 74, 75,227,111,181,199, 82, 41, 62,101, 42,204,158,233, 69,250,189, 32, 32, 82, 16,130,219,231, 52,168,119, 17,203, 53, 94, - 83,213,152,148, 11, 10,187,113, 55, 15,239, 74, 80, 74,182, 12,233,185,171, 11,194, 80, 92, 3, 80,133, 70,186, 31,237,186,236, -140,181,153,100, 73, 99,133,178,123, 87,212,138,118,209,203,221,209,172,179,158,173,113, 21,224, 82, 42, 40, 70,150,103,212, 84, -215, 97,106,218, 0, 11, 18, 49, 43, 93,214,253,192, 20, 9,115, 50,232,222,100,178, 13, 21,145, 75,237,171,221,223,147,185, 22, -131,218,232, 85,131, 97,162, 85,231,144, 71,105, 19,212,180,216,202,162, 73, 88,147,102,164,155,116,113, 23,132,134, 48,151,129, -209,117, 18, 53,236,100,105, 76,116,239, 32, 34,173,214,176,174, 5,154, 52,158,224,100,185, 34, 62,238,110,148,232,121, 79,161, -214,248,168,165, 85,228,115,169, 43,151,249, 16, 41,141, 85, 45,197, 14,237, 18,101,202, 75,240,204,124,176, 43, 79,229,187,138, - 95,207, 82, 49,179,205,156, 95,154, 81,124, 10,209, 58,116,207, 45,223,169,178,219,110, 9,197, 24,253, 38, 80, 45,214,161,231, - 66, 46,227, 12,126,177,209,250,194,140, 87,173,153, 31, 46,188, 11,129,130,237,192,161, 32, 33,205, 7,166, 42,116,171, 90,152, -138,127,149,134,253,191, 56, 4,140, 57, 95, 60,178, 59,166,132,166, 14,157,166,230,117,201,226,120,208,188,119, 44,171, 48, 35, -156,248, 87,155,211, 84,190,113,134,188,190, 34,116,201,210,183,142, 48,150,246,141, 17, 78, 54,232,141,135,200,173,187,112,244, - 29, 88,253,190,229,197,166, 99,136,183, 32,222, 54,127,121,255, 11,208,125,204,115,160,139, 89,214,102, 83,114,125,199,179, 9, -241,136,144, 15, 33,118, 32,190,179, 31,191, 14,211, 19, 8, 63, 13,225, 89,232, 78, 13, 25,187, 23, 25, 36,182,251, 13, 78,142, -216,120, 87, 62, 86,210,195,130,104, 85, 87,164,171,150,134, 83,153, 41,141, 18,105,191,160,107, 67,202,210,197,178,211,138, 45, -195,146,163, 49,102, 59, 63,100, 53,171, 90, 5, 97, 36, 22,238,118,237,172,179,159,146,217,123, 72, 85, 31,163,182,168,107, 2, -203,225, 64, 29,237,168,254,128, 65,157,104,235, 12,157,226, 40,250, 87,175,194,209,202, 66, 32, 36, 69, 75,169, 19, 87,153, 95, -233,145,219, 29,242, 82,129, 23,118,200,201,223,135,240,107, 80, 30,248, 46, 93, 13,188, 18, 20,194,187, 80,126, 7,253,224, 91, -240, 77, 69,223, 14,112,115,128, 39, 25,253,192,115,205, 71,243,221,201,218, 22,252,250,246,206, 62,159, 67,247,147,171,154, 78, -225,193,136,190, 49,153, 20,226,123, 35,242,194, 8,207,117,246,125,122,223,245,247, 30,115,118,144,144,110, 64,163, 19,254,206, -213,152,247,167, 88,236,235, 73,231,184,177, 2,215, 2,225,163, 43,148,137, 32,153,124, 58,241, 24, 24,139, 18,223, 25,232,222, - 20, 14,191, 53,112,248,108,224,224,118, 79,248,116,130, 65, 88,253,195, 3,174,252,211,145,199, 23,202, 32, 54, 28,216,185,211, - 81, 54, 19,199,239,110, 97, 5, 41, 43,178, 21,116, 44,200,205,251,112,184,131,195,103,225, 99,183,208,205, 7,132,243, 66,186, -182,166, 60,217,144, 55, 19,154,202,124, 58,171,162, 40,237, 4, 73, 46, 66,211,197, 47, 45,141,119,121,190,182,180, 94,111,179, -242,170,121,142, 45,227,220, 69, 41, 44,203, 44,172, 25,117,214, 69,172,212, 81,255,135,200,150,202, 76,240,210,153,141, 86,217, -234,185,105, 7, 13,109, 26,216,136,113,230, 67,168,157,160,175, 74,231, 75, 57,216, 79,162, 33,217, 0, 0, 32, 0, 73, 68, 65, - 84,232,209, 71,217, 33,219,225,183, 56,103,190,222,122,161,146,219,116, 17,161, 73, 48,224, 76,112, 27,103,221,202, 21, 93,238, -143, 58,208,180, 53,131, 16, 66, 85,117,251,180,173,181,234,105,155,105,206, 82,172,217,223, 58,168,103,116,171,238,171,187, 69, -197,197,131,174,102, 15,166, 21, 40, 33, 16, 84, 44,174,214, 81,156, 33,248,104,188,242,185, 92, 73,254, 97,225, 36, 51,141, 47, - 40, 33, 23,195,127,122, 82,155, 86, 85,119, 21,180, 73, 99, 97,213,229,185,177,247,243,203,135, 9, 10,101, 22, 56,230,166,128, -207, 82, 52, 49, 97,228,130,154,213, 61, 27,157,206, 93,189,238,229,209, 75,163,170,215,218,109,214, 21,101,101,215,107,139,184, -101, 46,130,251,251,117, 26,234,217,190,247, 58,138,144,250,222,126,238,146,151,239, 53,143, 55,195, 94,183, 90,213,236,104, 45, -182,251, 25,233,117,236, 30,131, 69,192,246,221,138, 85,151,152,128,237,102,235,129, 39, 66,145,192,148, 39,242, 56,249, 14, 63, -207,238, 1,145,125,171,180,250,158, 98, 81,177, 27,159,189, 30,154, 69,154,159,209,179,211, 85,150,227,101,104,118,234,186,143, -197,153,245,103,130,225, 97,201,133, 24, 35, 83,113,248,132, 44, 26,171,118,116, 23,100,241,164, 51,243,255,139,119, 15, 66,252, -111,142,195,111,134,179, 1, 30,101,164, 15,240, 83, 29,252,233, 0, 95,221,161,223, 86,244, 91,130,188, 21,224, 97, 48, 95,213, -110,128,199,143, 97,251, 14,240, 38,232,159,193,240,251,144,191,106,136,215,112,213,199,243, 71, 70,230,178, 28,212,230, 82,140, -214,222,208, 65, 88, 67,186, 9,241, 99,150, 46,162,247,188, 91,191,238, 68,179, 39,246, 53, 66, 15,253,100, 56,207, 81,236,215, -224,221,122, 85, 20,111,176,253,248, 69, 54,145, 91,171,110, 81, 83, 33,207,127, 95, 22, 79,226,114,204, 95, 64, 47, 34,139, 90, - 81, 60,233,172,102, 68,143,234,150,178, 57, 43, 90,230, 7, 80,239, 77,101,181, 27, 77,186,255,160,129, 37, 47, 37,122,236,183, -238,199, 25,251,120,107,223, 99, 92, 85,179,171, 74,180,245,227,249, 43,215,224,250, 33, 4,141,132,163,206, 64, 65, 7, 29,241, -164, 67,174,174, 9, 47,175,144, 87, 10,242, 66, 65, 14,255, 14,132,255, 4,244,129, 59, 21,220, 8, 27,254, 2, 46,254, 55, 56, -253, 3,244,141,247,208,255,119, 64,191, 61,161,219, 1,213, 17,221, 12,240, 32, 83, 78, 71,235,144,130, 53,247,146,252,226,125, - 99, 68,191,185,177, 19,207,218, 77,189,131, 91, 9,119,197, 82,196,114, 65,222, 26,225,139, 23,240,141, 11, 31,189, 39,123, 65, -170,232, 27, 91,248, 96, 50, 17,221,177, 24, 69,237,194,131, 34, 38,103,199,111,178,135, 14,128,188,150,224,176, 80,238,140, 76, -217, 68,114,244,130,174,133, 45,194,249, 6,134,251,133,248,195,129, 48, 22,244,134, 50,124,127,228, 98, 43,156, 15,194,217, 96, - 35,217,209,207,123,113, 87,232,118,197, 39,253,138,236, 28, 69, 75, 70,194,185,217, 3,111, 69,120, 50, 33,239, 41,114,108,128, - 1,189,176,107, 74,147,204,133,122,238,126,178,146, 75, 99,113,172,100,169,250,176,208,165,208,104, 83, 97,100,217, 18,205,254, -235,160,203,206, 57,184, 66,123, 63, 36, 59, 92,138,157, 44,243,195,158,189,225,165,236, 35,221, 42,157,165,202,193, 43,189, 37, -120,209,206,193,199,159, 94,252, 43, 31,199,159,254, 86,116,170, 86, 95, 93,189,175, 51, 50,162,222,126, 85,252,151,231,235, 91, - 23, 97, 92,176, 2, 60,186,184, 42,121, 54,123, 5, 97, 69, 49, 58, 87,167, 74, 39, 54,177,218, 53, 1, 50,226, 4,187,106,160, - 48, 83,251,146, 89, 94,191, 79,174,187,211,246, 93,144,202, 37, 23,183,149,182,122,172, 74,212,140,144,186,166,251,109,193, 62, -254,249,248,222,164,130, 73, 44, 9, 44, 16,146,131, 78, 80, 68, 11, 82,178, 27,112,124, 34, 24, 2, 26,163,233, 32,136,116, 49, -178,238, 87, 72,119, 64, 73, 43, 52,246, 16, 19,154,146, 49, 27, 66,104,120,242, 50, 11,188,234, 20, 98,182,177, 53,107, 1,219, -126, 52,106, 8,109,136, 4,149, 25,224, 34,202, 89,225, 80, 89,233,158,192, 54,167,149, 53, 67,205,176,167, 95, 95,198, 5, 81, -246, 73,119, 34, 77,225, 19,220, 47,110, 86,203, 46, 38,194,170, 39, 79,217, 20,225, 90,109,114,186,168,251, 61,129,173,238,199, -231,217,137,234, 62,208,197,197,164, 49,134, 37,194,180,235, 32, 37, 46,118,131,129, 99,196,223,191,105,162, 76, 19,228,137,201, -241,221, 85,177,110,159,223, 66,107, 19, 49,207,122,168,246,180,104,197,180, 74,231,230,215, 55, 7,204,216,215,144, 69,193,176, -151, 74,183,136, 0,154, 57,134,184,200, 79,157,205, 65,205, 34,112, 85, 87, 89, 14, 16, 50,131,115, 76, 32, 87,180,204,147, 20, -179,147, 6,210, 91, 91,225,250,182,112, 24, 54, 28, 94, 7,249,202, 68,121, 99, 67, 25,242,172,166,208,187, 29,242,221, 21,225, -217,222,236, 95,231, 10, 55, 34,242,241, 12, 31,153,224,246, 6,174,255, 49, 92,251, 18, 28,220,132,245,207, 66,252,183,161,251, -121,235,188,195, 85, 87,204, 15, 86,172,227,179,160,143, 93,241,126, 0,241,208,126,143,158, 65,190, 11,242,216,118,154,161, 51, -100,108, 92,217,168, 62,222, 71, 14, 30,161, 7,152, 77,235, 84,108, 71,171, 1,210,100,133, 61,136,133,114, 20,167, 39,209,180, -219,173, 76,248, 67,148,155,243,190,188, 34, 44, 85,109, 60, 90,149,233, 85, 57,235, 99, 67,101,201,130,137,193, 58,143,202,193, -174,162,184,188, 23, 33,185, 88, 50, 82,180, 67,195, 84,149,200,205, 46,191,158,238,196, 9, 84,189, 71, 99, 38, 89,116, 99,207, -118,112, 99, 5, 65,140,223, 46, 87,122,194, 81, 71,184,218, 35, 47, 30,160, 47, 68,120,121, 68,110,158, 64,247, 43, 16,255,174, - 23,243, 17,244, 24,194, 35,224,159,161,239,126, 29,253,215, 59,202,151, 7,244,225,100,148,182, 94,209,164,200,155, 62,157,247, -145,163, 14,130,116,222,113,108, 20,185, 42,104,202,198,126,255,171,201, 34, 69,174,121,162,206, 21,187,195, 53, 66, 94, 43,225, - 72,225, 64,145, 7, 19,242,222,214, 44, 99, 69, 61,192,165,160,255,252, 9,122, 91,144,191,125,136, 60,159,140, 32,248,126,182, - 64,152, 39, 5,253,222,136,158,102, 88, 25,122, 55, 51,145, 58, 97,221, 57, 85, 13,211,222, 73, 48,248,223,233,160,232,166,208, -127,107,203,244, 53,229,113, 22,198, 32,108,179,178,205, 86, 16,214, 2,154,157,153,252, 56,115,172, 91,232, 32, 5, 69,206,122, -120,152,209, 23,129,103, 50,114,114, 0, 63,123, 21,121,172,164,215, 33, 92, 23,194,235,129,233,193,232, 34,115,157, 9,198,140, - 62, 2,109, 14,101,115,189, 13,127,141,255,231,178,222, 72,155,249,106,217, 79,161,122, 58, 50,186,217, 65, 95,234,227, 22,172, -171,236, 5,166,204,160,166,121,228, 26,125,199,237,249,215, 25,207,193,110,236, 89, 25, 31, 87,137,255,113,153,195, 52,108, 50, - 97,193, 24,153,154,208, 85,187,127,157,213,236,168, 46,123, 95,223,160, 85,139,210, 65,128,181,143,124, 75,195, 99,175,204,236, -196, 2, 27,116, 92,196, 28, 51,154,125,151,123,153,180,165,151,252,113,210, 68,158,202,165,128,149, 54,202,116,242,206, 71, 85, -200, 49, 89, 16,199, 52, 34, 20,231,122,123, 58,219, 28, 20, 99, 16,160, 34, 22, 50, 21,252,207,148, 26,252, 65,178, 81,175, 84, -170,155,139, 5,253,161,108,151,134, 15,204, 75, 54,239,123,140, 75,200,135, 24,226, 20, 53,118,134,150,105,254,115,165,105, 72, -234, 97, 35,184,117, 81,155,157,255,236,181,247, 17,246,158,189, 76, 47,137,216,170,186,124,182,249, 86,172,171,159, 1, 89, 94, -123, 45, 76, 79, 73,231,154,108,215,250,255,209,161, 97, 81,160,235,123, 63,252,149,167, 48,105,218,138, 69,133,253, 29,125, 83, -208,101, 94,142, 58, 10,214,177,173,125, 74,132,148,184,152, 38,242, 52, 16,130,101,219, 79,211, 72,241,253,121,174,205, 94,115, -144, 43,141, 27, 97,182,167,248, 61,180,231,138,151, 89,178,106,214,219,138,205,189,164,236, 88, 16,185, 6, 40,162, 10, 45,103, - 44,236,146, 42,103,209,200,230,206, 97,246,184,251, 10,182,177,140, 20,103,240,183,148,199,202,251,151, 24, 72,155, 16,136,209, -166,158,135,119,118,240,189, 13,131, 51, 31,147,192, 90, 11,235,221, 72,218,108, 41,119, 35,101, 99,167,154,116,144,224, 47,146, -137,117, 14, 34,114, 34,240,209, 2,159,126, 23,249,248,255, 13, 47,252, 30, 92, 63,134,245,199,160,251, 71,144,254,166, 97, 56, -195,145, 63,132,214,134,225, 84,247,155,151, 83,147,110,135,107,134,150, 45, 24,228,102,245, 14,108,191,103,243,238,248, 2,244, - 71,200,250,125, 56, 26,208,247,177,214,245,188, 24,217,194,125,172,236,196,200, 98, 23, 66, 41,226,207,171, 96,138,228,232, 99, - 74,105,118, 99,178, 8,142,196, 33,207,101,242,110,174,168, 71, 90,170,227, 29,217, 3,103, 38,207,140,209,232, 23, 77,222, 87, - 35,199, 70,221, 90,253,166, 53,167, 62,151, 75,138,120,239,196,170, 37, 67,188,107, 73, 98,138,233, 46, 40,135, 1, 14, 11, 60, -119, 69, 72, 71, 9, 89,119,132, 3, 67,249,198, 27,107,120,177,135,151, 34,225,118,129,147, 23, 32,253,187, 16, 63,235,140,243, - 96,254,244,248, 87,112,241, 63,163,223,249,128,242,123, 91,242, 55, 47,200,247,119, 22,125,218,155, 6, 82,122,177, 36, 57,127, -250,202, 42,216,123,124,205,212,235, 82, 10,186,197,186,249,152,209,247, 39,228, 98, 66, 62, 62, 33,107,167, 54, 93,241,207, 38, - 42,217, 74, 4, 92, 40,241,125,179,108, 49, 40,252,196, 33, 92, 13,232,170, 48,253,127, 27,248,242, 99,194,171, 29,225,167, 59, - 75, 69, 27, 60,151,253,182, 32, 69, 40,119, 70,202,189, 17,174, 65,217, 8,105,172,126,106,241,248, 96, 37, 37,235,192,183, 69, -121,112, 1,219, 81, 24,124, 92, 56,184, 75, 33,123, 51,158, 60, 2, 30, 32, 63,201, 92,121,115,107,209,171, 87, 11,114,154, 77, - 39, 48,246,232,173, 0, 55, 59,248,187,215,144, 17,194,131, 72,247,217, 14,185,179,101,122, 48,218, 65,103,212,121, 26,222, 42, - 98,247,206,150,165,217, 13,183, 81,151,141, 7,186,236,141,110,132,210,108,141,235, 42, 71, 84,246,145, 30, 66,227, 70,113,239, -251, 37,187,105, 21, 67,201,222, 30,186, 1, 93, 56, 32, 99,102,126,235,228,254,238, 64,167,197,114,196,235, 20, 41,152,162,189, - 0, 57,139,175, 26,172, 8,150, 25,177,202,220,209,236,145, 68,159, 82,123,195, 58, 64,103, 35, 40,138, 42, 67,118,191,185, 23, - 40,117,211, 77,251,222,168,238,167,151,213,226,158, 91,139, 92,245,221, 4, 8, 26, 22, 79,127,147, 10, 38, 31,162,109,194,187, -167, 73, 77, 12, 53, 54,121,221, 73, 76,105, 95, 37, 32,197, 31,190, 65,132, 18, 35, 18, 59, 99,136,171, 71, 57,251, 33,103,244, - 78, 81,220, 75, 95, 60,127, 92, 93, 87, 80,161,244,165, 2, 99,114,178,102,162,212,180, 46, 43,251, 29, 32, 18,153,130,123,188, -103,130,159,237,187,231,241, 56,151,140, 15,218,252,172,212,173,141,173, 15,164, 1, 96,181,160,206, 60, 43,172,151,104,213,125, - 91, 90, 43,144,171,144, 30,109,248, 48,178,160, 90, 29, 81, 43, 10,177, 75, 72,234,200,211,248,148, 35,142,189, 78,223, 39, 6, - 65,230,216, 96,217, 27,100,215, 57, 85,245,142,139,229,152,119, 29,131, 22,198,237,214,176,190, 18,200,101, 32, 79, 19,154, 39, -255, 90,101,175, 99,174,133,214,137, 77,243, 72,190,226, 99, 5, 63,216,214, 48,156,217,211,175,174,196,119,182,124, 21,205,169, - 77,166,171,160,148,102,205,146,203,178, 72, 81,215, 8,132,228,236,120, 64,250,142, 60,142, 38,164, 21, 3,109,233,222, 33,129, - 61,176,141, 89, 15, 45,174, 54,254,147,231, 15,127,179,115,201,237, 16,132,243, 24, 56,147,192,185, 8,103, 8,231, 42,148, 96, - 23,213,249,144, 57, 45,133, 33, 22,138, 20,134, 97, 96, 60, 31,152, 30,111, 41, 31,236,208, 59, 35,124, 5,248, 82, 68,255, 84, -224,173, 1, 57,127, 7,228,139, 32,191, 11,250,117, 43,230,114,203,189,239,189, 23,154,232,197,254, 25,235,236,229, 69, 43,224, -225, 58,196,231,160,123,198,232,118,156, 58,147,251, 10, 28,128,156,236, 96, 93, 22,190,106, 87, 79, 56, 97, 70,248,121, 12,149, - 91,115,150, 43, 81, 90, 26, 66,176, 44,240,250,123,203,180, 48,181, 43,163,125,102, 16,248,205, 16, 5, 82, 20, 58,119,234,229, - 73,103, 82, 86,185,116,209,215, 67,111,244, 8,240,206,215, 33,227,162,105,154,213,173,193, 85,190,177, 89, 61, 31,116,194,202, -199,238,215, 50, 60,251, 92,164,127,110, 69, 56,233, 9, 39, 43,226,173, 53,225,246, 1,124,180,135,143, 9,242, 66, 15,135, 31, - 55,184, 15, 47,219, 45, 47,226,170,174,127,138,190,247,127,192, 31, 63, 36,255,175, 23, 76, 95,127,204,227,237,192,233, 90,121, -146, 96, 80, 37, 4, 11,111, 56,223, 40, 59,207,139,150, 11, 53, 61,198,181, 68,184,209, 67,143,165,181,157, 78,232,131,209,176, -173, 23,217,146,225,178,218, 52,229, 8, 75,169,187,155, 41, 63, 28,209, 15, 50,122,191, 32, 71, 1,249, 72,132, 51, 69,142,109, - 26,160,113,162, 92, 12,236, 94,223,112,246,198,142,139,191,216, 81,222,218, 33, 79, 38,228,186, 16,126, 97,141,124,126, 77,120, -181, 39,124,106, 69,120,177, 51,209, 75, 54,122,220,202,109,248,235, 35, 97,213, 43,195, 4,167, 91, 97, 82, 97,235,197, 96, 48, - 83, 4,131, 86, 2,155, 80,130, 44, 78,135, 8, 97, 80,210, 46, 47,214,133,173,189,118, 75, 35, 1, 78,122,120,121,133,188, 63, - 64, 17,226,115, 29,193,151,160, 53,221,172, 6,243, 8,210, 6, 40, 45, 69,254, 82,138,149, 94,162,115, 20,246,187,241,189,223, -223,196, 35, 7,167,183,153,114, 59, 46,192, 87,185,100, 60,158, 83,187,100,190,208,164,249, 1,130,167,101, 77,197, 56, 19,234, -243,253, 18,116,246, 52,151,185,251,150, 89,147, 82,153,236,197,185,237,243,175, 6,129,106,126,110,153,247,193,210,116,109,201, - 15,197,125,130, 85, 12, 36, 49,215,192,144, 97, 82,221,167, 46, 58,133,113,200, 31,190,210, 74, 1, 58, 31,163,103, 17,247,198, -203, 98, 41,144,250, 90,131,143, 59, 3, 53,149, 57, 86, 8,141,180,130,172,101,149, 48,185, 37,111,116,212,108, 85, 94, 71, 87, - 61,219,180,219, 16,164, 65,162,107,106,220, 83, 92, 20, 77,201, 15, 58,117,159, 95,156, 74,233, 3, 19, 17,186, 40,164, 32, 75, - 4,172,199,228, 22,138, 13,199,213,156, 8,234,175, 33, 5, 33,164,206,198,210,212,247, 95,103,172,108, 16, 89,160, 53,254,179, -170,200,211,158,242,102, 20, 95,199,136,245,181,137, 29,227,150,126, 94, 91,234,159,238, 7,139,104,227,125,170, 30,106, 93, 4, - 73, 22,181,107,201,104, 81, 32,174, 14,252, 64, 56,205,187,116,109, 2, 77,236, 32, 22,136, 30, 1,171, 85, 32,217,220, 52,218, - 72,239,140,235, 30,232, 82,207,122,213, 83, 98, 98,179,221, 32, 37, 67,180, 41,137,141,221, 7, 11,128,210,203,200, 28,153,223, -131,138,221, 53,247, 66,216,211, 47,204, 83, 3,145,189,110,219,244, 6,121,185,113,253,123,180,160,229,197, 37, 33,203,184,195, - 79,216, 85, 64, 87,170, 69, 83,156,248, 55,141, 14,227,105,217,184,230, 93, 15, 18, 45,152, 70, 76, 20, 40, 41,154,219,226,191, -124,246,240, 55,147, 27, 53, 11,194, 64, 96, 7, 70,179,242, 4, 31,137, 48,168, 24, 88, 76,132,173, 8,155,108,182,240,199, 17, -206,162,112, 30,149, 49, 20,114,158, 40,155, 1,121, 48,193,157,130,126,165, 67,190,209,193,102, 68,210, 29, 83, 87,151, 63,176, - 81,187,220,246, 29,188, 35, 95,101,106,150, 93, 14,169, 9,215, 76,148,151,110, 67,255, 12,132, 11,131,105,107,130,238, 0, 57, - 84,228,218, 0, 87, 11, 28, 57,219,187,143,150,246,229,209,122, 18,237, 36, 99,170,156,138, 76,117,193, 69,146, 69,125, 61,184, - 98,183,217,197,213,247, 63,213,164, 40, 23,107, 71, 49, 21,122,113,210, 85,181,140,176,247, 16, 95, 38, 80, 33,154,170,182, 51, - 81,186,237, 17,235,206,181,209,102,204,130,112, 63,163, 28, 4,179,172, 29, 71, 56,217, 40,215,111,116,244, 31, 63, 32,244, 43, -226,141, 3,194,237,181,101,215,127, 60, 32,175, 4,228,218,179,176,250, 60,196,159, 55, 42,160, 76,222,230, 60,130,241,127, 65, -223,254, 38,124,185,144,255,112,195,238,205, 51,238,167,204,253,149,112,166,182,107, 62,203,246, 64, 60,219, 9,143,118,194,102, -244,144,176, 2, 93, 22,194,245,104, 35,118, 1,253, 96,162,220, 29,152, 30, 78, 51, 46, 32,111, 50,242, 36, 19,206,213,114,228, -223,203,148,187, 19,250,129, 89, 15,195,115, 9,249, 72, 71,120,161,179,234,250,110,134,105,160,188,189, 65, 31, 14,156,159, 21, -222,139,118,173,157,110,149,241, 97, 38,252,104, 36,190, 51, 18,158,137,200,107, 7,200,203,107,228,246,138,248, 82, 32,220,140, -196, 40,164, 67,232,110, 5,226,181,128,158, 41,167, 79,224, 34,135,121,165, 49, 78,230,126,156,178,237, 24, 83,172, 39,106,153, -187,178,236,159,163,168, 18, 55,254, 48,149,154, 75, 84,233, 97, 10,215,123,120,190, 71,238, 26, 66, 82,158, 75,200,198,191, 81, -242,192,135,184, 60,232, 68,247,211,169,246,241,150, 11, 35, 91, 26,161, 84,227,128,219, 91,197, 5, 22,123, 86,106,246,241, 33, -232,158,233, 68,218,125,186,196,249,139,213, 68,171,217,102,227, 86,174,162,178, 32,152,235,175, 36,243, 20,161, 52, 83, 37,196, - 19,187,128, 66, 88,246,231,218, 60,238,157,119, 94, 2,205,247,182, 78, 38,122, 88, 75, 77, 74, 78,224,185,240,202, 38, 11,219, - 22,246, 82, 41,113, 52,224,193,150,218, 86,197,167,158,174,140,109, 63, 24,170,149,203,119,229,177, 41,216,234, 93,117,240, 2, - 22,188, 16, 90,199, 83,215, 95, 58, 11,217,212,225, 31, 90,242,114,152,168,138,230, 70,164, 92, 21,202, 82,227, 58,125,250,161, - 49,153,142,160,100,119,228,152, 45,169, 52,184,240,250,115, 76,237, 7, 30, 22, 37,248,172, 76,247, 3, 9, 41,206,251,233, 16, - 59,223,175,218, 26,160,175,190,123,177,178,220,137,165,159,153, 37,177,204,182, 50,221,187,246,164, 25,149,219,243, 81, 69,246, -124,225,101,239,242,213,189,195,128, 60,125, 78,152,133,101,181,232, 74,140, 4,132,212,245,214,165,231,105, 57,232,180,250, 38, -239, 66,103, 94,187,132, 69, 8, 22,132,167, 96,180, 62,114, 79,201, 52, 9,113,213,179, 25, 71,166,221,206, 72,131, 37, 51,229, -201,196,210,165, 44,163,107,221, 79, 61,146, 86,101, 31,130,255,114, 17,170,255, 60, 93, 76,116, 93, 79,136,209, 14, 89, 94,128, -149, 96,160,167,185,235,215,217,103, 95, 49,183,165, 2,206, 40,174, 43, 89,126,158,146,173,139,148,102,255,102,105,123,186,103, - 69,173, 48,160,224,201,112, 82,181, 6, 62, 33, 10, 18,136,255,228,249,227,223, 76,110, 13,153,138,237, 27,183,165, 42, 69,157, -103, 21, 2, 59, 21,206,179, 48, 98,234,234, 18,133, 93, 17,182, 69,217,169, 37,144, 93,136,176, 11,194, 38, 9, 83, 80,162,102, -194, 52, 89,123,116, 39,194, 55, 58,120, 91,225,226, 62,116, 95, 70,226, 23,172,157,139,175,120, 1, 58, 48,196, 23,161,153, 1, -137,137,232,194, 53,203,173,238, 94,128,238, 42,244,147, 37,141,165,222,232, 99,199,130, 92,203,200,245, 1,174,103, 56,193,212, -213,201,192, 6,210,133,229,131, 74, 11,171, 82,130,123, 33, 39,245,128, 23,165,234, 66,234,141,218,121, 49, 78,209,111,190,232, - 65, 15,197, 44, 73,237,184, 61,200, 37,212,165, 44,112,139,152,236,225, 49,233, 62, 37, 74,196, 58,254,228,162,245,181,135,158, - 29, 39, 51, 35, 28, 5, 88, 35, 28, 61,211,179,250,236, 49,225,228,144,240,194, 10,121,173,135, 79, 4,120, 45, 34, 55,175,195, -193,103,172,152,199,143, 2,174, 99,144, 96,106,247,233,183,209, 7,119,225, 59,145,252,197, 51,118,175,159,242, 65, 46,124,224, - 7,180, 41, 91,214,205,206,245,104,231,158, 6, 42,193, 58,136,149,194,250, 40, 18, 95, 94, 17,110,116,246, 30,110, 76, 64,183, -221, 42,143, 51,108, 85,216,170,112, 49,193,230, 65, 97,120, 47, 19,207,149,120, 40,200,237,100,221,245, 47, 31, 32,183, 18,250, -142, 41,158,202,247,183,148,247, 7,166, 63,185, 96,251,112,226,145,103,166, 76,110,118,216, 69,216, 78, 74,185, 59, 18,191,186, - 69,238, 77,179, 93,144, 46, 34,193,198,251, 37, 23,244, 73,161, 60, 42,236, 46,148,179, 81,216,101,153, 95,211, 99,255,107,138, - 86,208,131, 68,255,188,150, 66, 23,196,172,100, 89,108,142,155, 54,101,230,105,115, 86,144, 51, 69, 14,253, 3,189,209,195,205, - 4, 63,154,144,117, 64,142, 2,250, 32,155,171, 33, 25, 54, 54,164,104,145,198,200, 94,199,189,116,244,117,124,185, 60,164, 90, - 77,198,194, 16, 95, 58,220, 24, 27,206,251,188,107, 92,148,187,114, 57,193, 41,132, 26,206,108,191, 55, 93,154,161,138, 93,195, -243,232, 81, 91,162,152,236, 9, 56, 39, 87,186,151, 25,194, 18,108, 53, 85,154,189,174,119,219,203,136, 93, 23, 37, 59,150, 85, -208, 71,235,112,131,207,115,173, 11,134, 11, 21, 70, 31,249,106, 67,155, 75,254,217,132, 70, 16,215, 24, 2,230,131, 77,242,221, -124,141,118,152, 27,116,135,208,172,130,160,151, 86, 14,117,102, 17,252,160, 31, 28, 98, 83,154,221, 63, 78, 81,107,243,205,235, -103, 90, 90, 15,121, 51,117,169,185,221, 26, 92,217,172,217, 4,103,170, 51,102, 87, 47, 77, 27,180, 10,179,106,161,245,221,115, -253,123,149,128,132, 72,137,201,139,126,130,212,161,211, 96, 62,237, 70,253, 62,239,164,133,134,199,111,141,197,222,126,189,249, - 61, 75, 38,183,189, 31, 42, 97,111,135,141, 11, 61,151,117,146, 46, 63,248,229,162,126,185,171, 76, 70,145, 76, 18, 72,171,181, -173,110,178,189, 11,165,148, 61,155, 66,181,172,133,154,128,134,161, 88, 45, 0, 70, 46,145, 76,237,189, 78, 49,178,234, 87,172, - 86, 43,134,162,236,182,155,217, 89,148,167,201,173,205,121,129, 70,181,247, 73,179,187,183, 2,153, 22,145, 99,213, 63, 4,119, - 21,185,242, 93,221, 26, 87,113,177, 18,189, 1,110, 24, 1,141,126,112,161, 9,126,152,164,203,237, 11,179,170, 61,134,246, 6, - 95,152, 38, 78,178, 11,226, 93,121, 12,132, 24,188, 67, 79,243,247, 73,193, 97, 7, 8,236,138,199,130,170,123, 17, 85, 40,158, -220, 54,170, 48, 86, 11,150, 58, 71, 58, 70,198,146, 9,110,247,144, 82,216,169, 18, 35,108, 5,182,162, 28, 78,153, 62,103,186, -243, 29,221,251,145,240,122, 79,248,227,158,240,249, 53,250, 31,223, 67, 62,241,223,193,201,111, 67,255,239, 67,250,101, 27,205, -203,161, 21,114,137,205,192, 78, 32, 30, 89, 97, 15, 47,195,234,151, 12, 85,171, 27,243,181,231, 7, 6,180, 25,127,132,108,238, -194,246, 33,156,239,208,135, 1,222, 11,112, 47, 34,167, 9,121,164, 48,140,200,110,162,236, 2, 58,100, 66, 54,180,168,246,138, -140, 98,224,137,156, 73,106, 83, 10, 89, 7, 27,207, 79,214,201,215,241,162, 20,217, 75,196,154,109, 12,141, 66, 84,154, 28,104, - 84,108, 55,231,191,127,229,250,164,212, 80,244, 87,106, 39,109, 27,183, 7,226,145, 16, 83, 71, 56,234,136,159, 61, 68,174,247, - 22,247,249,140, 88, 86,250,209, 53,136, 47, 65,120,205, 98, 68, 37,154,131, 64, 31,185,100,127, 7,211, 23,209, 39,239,194,247, - 2,229, 95, 63,102,124,253, 9,247, 39,248, 64, 2,231,147,204, 86,161,177,250,168, 39,251,153, 87,126,245, 69, 85, 86, 2,225, - 70, 34,220,234, 9,199,201,146,235,130, 61,233, 71,204,230, 55, 84,125, 73,177, 7,228,245, 91,166,115, 8, 31,237, 8,159, 62, - 48,128,119, 14,232,159,109,209, 15,132,248, 55,122,228, 35, 9,125, 50, 50,141,133,109,191,116,211, 67, 94,114, 93,114, 7,186, - 10,148, 60,113,237,171,103,116, 15, 39,226, 11, 61,178,142,148,123, 19,211,219, 3,211,253,129, 39, 99, 97, 27, 33,135, 96, 63, - 79,134,179,193,214,250,227, 84,117, 47,118, 83,104,130, 62,218, 40,112,187,181,113,123,116,111,233, 78,224,113, 50,146,223,241, -253,137,245,227, 76, 60,152,208, 65, 73,189, 89,160,136, 1,158, 59,128,191, 1,124,245, 2,185, 46,196,155,153,252,227,193,140, - 31,149,233, 62,170, 45,238, 55,153, 32,197,212,250, 90,133,152,142,106, 45, 11,251,189, 37, 60,148,176,175,237, 20,177,183, 80, - 23, 25,200,242,192,111, 81,150, 94,237,212,219,254,121, 72, 16,170, 4, 95,125,255, 44, 85,227,118, 89, 81, 54, 63,108, 66,168, - 63, 87,125,192, 4, 38,191,186,117,198,182, 26,247,191,140,101,166,178, 73, 85,189,207,216, 83,211, 88, 7,159,134, 20,241,174, - 84, 27,229,186,238,143,122,235,215,233, 92,155, 66, 83,208,105,242, 92,234,136, 92,138,199, 28, 8,172, 28,224, 82, 71,245, 49, - 88, 81, 47,126, 24,183,189,166, 54,244,252,133,254, 84, 59,251,209,127,134,224,239, 67,104,172,167,200, 94, 56,157, 77, 4, 2, - 77,167,102, 74,108,153, 70,235,192, 42,221, 46, 5,239,218, 23,171, 88,104, 68, 97,170, 75,135, 44,168,237,239, 3,236, 84,102, -174,123, 8,201, 4,120, 10,196, 14,101,103, 36, 52,255,190, 83, 61,172,168,204, 92,179, 73, 13,101, 28,129,222,223,155,249,240, -243, 33, 12,208,162,151,131, 67,234,103,210,232, 54, 46,195, 81,218,110,215,167, 96,162,190, 6, 21, 33,170,210,245, 43, 8, 17, -245,104, 85, 81,221, 79,117,243,247, 68, 90, 7,130,182,234,144,197,119, 87, 61,229, 97, 46,234, 61, 37, 4,134,205,150, 80, 89, -238,117, 26, 48, 90, 28, 80,144,200, 42, 5, 52,216,103,150, 27, 52,171, 93,226,145,152, 18, 93,215,205,240,155,226,160,163,162, - 22, 82,148, 27, 75,164,173, 21,146,173, 60, 82, 90,186,110,221,223,251,235, 37,191,253,190, 32,209, 68, 86,245,112, 95, 17,225, -162, 32, 41,218,100,106,154,252,144,211, 30, 34,236,160, 17,194, 2, 26, 50, 7, 73,144,121, 31, 51, 2,147,216, 15, 61,185,106, -117, 66,216,249, 15, 49,250,155,222,213, 27,215,119, 73, 18, 29,171, 88,160, 99, 66,180, 48, 40,236,180,112,234, 76,145, 21,112, -156, 39, 14,207, 38,186, 39, 23,164, 63,236,145, 63,235, 9,175,101,228,231,190, 14, 31,251, 6,242, 98,128,171, 7, 22,125,217, -157,216,158, 61,173, 65, 78, 32,253, 12,164,159,131,240,138,237,218,229, 25, 22,163, 76,163, 52, 42,231,214,153, 14,223,132,205, - 23,144,231,190, 7, 47, 61,130, 39, 91,244,161,192,155, 17,222, 78,132,123, 29, 34, 35,154, 50,165,207,115, 50,155,157,170, 27, -245, 71, 7,244, 1, 29, 45,130, 53,228,209,139,185, 86,247, 12,157,143,210,170, 69,106,142, 81,172, 55,108,116, 17,203, 76,176, -242, 29,125,180,140,231,228,251,246, 20,133, 24, 3, 97,109,145,161,225, 56, 17,174,116,200, 65, 66, 62,217,195, 11, 17,174,129, - 92, 89,195,250,186, 79, 56, 94,114,113,161,130,108,236,223,229, 55,161, 60,182,201, 71,249, 62,236,222,128,215, 3,229, 79,207, -152,190,245,152,199, 67,230, 65, 20,158, 56, 13,175,158,188, 39,167,140,197,149,189,236,226,163,200, 94,160,235, 3,225,102,103, -163,247, 20,188,245, 85,202,206, 10,250,136, 21, 78,124,191,121,120, 37,178, 62, 14,132, 11, 67,193,234,195, 9,221,128,126,175, - 32, 93, 36,254,108,135,220,240,216,200, 81,225, 43, 66,159,148,131, 4,103, 59, 22,102,183, 26,129,237, 2, 40,209, 72, 46,215, -222,219,161, 39, 66, 58, 84, 3,226, 93, 4, 56,181,135,245,105, 14, 84,237, 77,241, 88,207,106,149,138, 53, 6, 52, 66,223, 5, - 62,254,249, 67,158,220, 31,249,209, 95,110, 76, 97, 30,173,238,141, 46,234, 26,197, 14, 25, 7,131,114,117, 26,231, 27, 48,173, -163,217, 63, 99,132,151, 14,108,180,240,253, 45,225,213, 53,114, 14,122, 62, 17, 79,108,119,146,207, 38,244,116, 48,225, 97, 49, -152, 75, 81,157, 33, 70,165,232, 2, 86,201,203,228,187, 92, 66, 94, 87, 81,230, 44,116,247,247,134,230,159,159,222, 18,178,191, -255,204,151,214, 0, 82,139,188, 49, 85,181,185,157,172,234,235, 66,156,115,229,242,232,226,174, 50,103,144, 7, 51,138, 85,161, -206, 12, 60,241, 0, 16,196,174,117,223,101,217,110,190,236,231,151, 87,250,153,180, 80,168, 37,200,101, 22,153, 46,176,233, 5, -222,211, 12, 30, 70, 42, 93,216,246,199,187,106, 19, 84, 37,168,204,247,229,194, 90,175, 83,135,101, 4, 92,194,114, 88,216, 91, -159,205,135,243,101, 87, 93,119,217, 58, 79,124,100, 22, 10,106, 76,150, 12, 87, 44, 61,174,166,122,197,152,172, 56,228,130, 78, - 19, 57, 27, 85, 45, 72,211, 61, 42,179, 66, 94, 27,229,191,109,127, 50, 90, 70, 8,201,222,247,225,194, 24, 26,213, 49, 80, 61, -220,190,225,174,247, 80, 13,242, 25,253, 32, 21,155,149, 68,110,196,126,168,208, 14,230,231,228, 57,173,154, 3,105, 20,219, 50, -179, 22,120,170,104,201,156, 82,134,239,253, 87,171, 21,221,106,205,118,156, 90,103,221,194, 96,111, 38, 47,115, 44,235,158, 52, - 68,246,200,199, 53,208, 36, 5, 43,232,146, 18,227, 52, 89, 80,139, 59, 15,114,182,168, 83, 45, 21,237, 92,220, 30,231,137,109, - 68, 7,208,100, 23, 38, 71,250,149, 29, 60, 74,158,252,221, 95,246,230,168, 54,215,110,153, 25,250, 22, 24, 19,144,148,128,201, -244, 13, 69,247,209, 59,210,236,211,139,101, 0, 84,237, 87,169, 86,194,246,186, 11,158, 84,217, 89,250, 32,174, 51, 8, 33, 44, - 59,127,191,182,202,124, 24, 86, 82, 41,206,124, 22,179,162, 84,207,232, 6,191, 17,138, 25,226, 17,153,173, 67, 89,101, 30, 31, - 34,193, 34, 6, 93,241, 90,196,198, 78, 5,227,227,166, 98, 93,255,128,146,131, 48,117, 74, 15, 28,234, 72, 58, 29, 9, 95,139, -200,215,163,239,188, 3,114,248, 24,185,254, 24,110, 1, 30, 28,199, 21,133, 27,191,135,188, 18,224,197, 99,184,246, 73, 56,252, - 47,160,251, 5, 8, 55, 61, 74,212, 91,159,152,140,122,215,189, 6,135,255,158,117,241,227, 29,216,253, 57,178,251, 50,188,250, - 6,122,111, 11,175, 71,228,135, 9,121,208, 17,114,221,215,248,227, 47,251, 77, 85,178, 49,201,139,129,110, 74,202,104, 74,168, -102, 98, 81,210,228, 98,136,201,118,105,165,152, 98,188,120,236, 34,201,131, 56, 74,158,115,168,235,222, 60, 6,155, 14,196, 40, -150,240,117, 20, 9,171,100, 83,129,227,132, 92,239,144, 43,201,222,135,219,192, 51, 43,164, 63, 49, 93,129,124,196,243,207, 87, -214,163,148,187,192, 99,136,159, 48,178,223,244, 61, 43,246,211,219,160,223, 69,223, 41,232,183,183, 76,223, 57,229,236,108,228, - 81, 18,182, 59,131,132,100,160, 83, 27,135, 74,103,157, 75,242, 61,126,240,189,126, 63, 9,241, 70, 34,220, 92, 33,199,209, 42, -227, 35, 12,135, 90, 44, 59, 62,142, 16,163, 5,118,172, 18,200, 88, 56,255,192,104,190,221,157,204,234, 71,153,120, 18,137,215, - 58,226,231,123, 68, 35, 92, 24, 30, 75, 78, 18,161,143,232, 38,179, 58, 22, 11,133,217,249, 65,210,249, 0,243, 3, 47, 26,110, -246,218,155, 59,228, 68,136, 47,117,164, 85,135,110, 38,142,222, 29,216, 1, 15,139, 5,234,132, 58, 13, 9,206,206,247, 14, 34, -250, 40,229,237, 31,108, 57, 63,205, 11,145,214, 7,159,163,175,206,147, 56,172, 16,115, 31, 92, 57,157, 64, 46,144,215,133,212, -249,174,164, 83,248,216,177, 9,234,238,239,144, 79, 31,192,191,184,128,151,123,248,123,107,194,151,158,160,239, 41,218,179, 71, -242, 82,109,243,178, 23, 52,106,171,232,110,133,150,179,142,206, 71,247, 84, 45, 6,218,128,167,116,217,151,151,253,209, 40, 13, -103, 93,171,184,206,164,213,196,138, 37, 45, 77, 50,161, 87,181,146,173,123, 33, 66, 16,207,146,207,130,134,122,221,123,239, 60, - 93, 66, 87, 6, 33, 21,153, 83,199, 74,168, 28,124,157, 11, 73,165,112,133, 69, 85,199, 20,162, 63, 0, 77,249, 94,167, 10,179, -189,190,138,192,252, 1, 22,154,201,151,248, 78,186, 23,232,171, 71,155, 5, 30, 80,234,193,192,109, 65,193, 5,114,185,161,174, - 40,206,178,154,173,136, 50, 91, 75,235, 62,179, 30, 90,234, 55,158,115,189,213,173,174, 33,154,255, 60,103, 74,140, 51,105,178, - 79,137, 28, 34, 69, 18, 49, 41, 41,140, 72,182,144, 42,113,127,118, 3,255,195, 66,167,131,231,183, 23, 71,235, 66, 41, 22, 70, - 82, 98, 50,124, 51,173, 51,103,102,141,241, 52,138, 67,246,121, 94, 77, 54,124, 17, 59,130, 21, 95, 7,137, 86,246,187,204, 57, -242,251, 35,118,153, 35, 94,165,237,166,165, 25, 29, 35,115,146, 89, 23, 18,221,234,208,237,142, 77,158,176, 54, 0, 46,183, 84, - 46, 98, 60,217,203,173,159,109,201,243,244,199, 33, 51,169, 35,246, 61,147, 42,227, 48, 56, 62, 87,152, 38, 11,135,209,113,156, - 89,219,138,185,148,132, 60, 35,137,139,179,236, 83,234,232,250,149,105, 40,114,158, 39,214,185,174, 7,244, 50,202,169,174,230, - 29, 78, 36,246, 44, 15, 49, 94, 10,121,113, 28,114,104,167, 30,101,241,181,187, 38,160,136,160,121,108, 88,238,246,223, 82, 12, -224, 40,221, 86,115, 80,149,157,170, 75, 6, 0, 64,146,104, 29,206,232,136,193,209, 97,109,163, 95, 0, 81, 5, 25, 50, 18, 35, -147, 8,145,192, 40,236,219, 10, 84,232, 66, 32,198, 64, 25, 97,146,108, 54,175, 92,201,105, 54,194,202, 82, 49,167, 86,228, 87, - 65, 89,147, 9,100,207, 76,142,200, 20,145, 15, 4,238, 86,207,133,239,192, 83, 32, 28, 7,228,246, 22,126,241, 43,200,231,190, - 14,207,223,132,107,159,129,245,175, 88,190,123,188, 5,242,156,121,223,137, 6,192, 73,135,144, 94,130,131,191, 13,229, 55,224, -234, 29,228,198,111,193,179,127,130,126,236, 49,188, 5,220, 79, 48, 90, 91, 32, 71,190,199, 28, 50,108,221, 86,245, 16,232, 51, - 97,116, 10, 29,101,137, 79, 84, 39, 61,121, 48, 12, 59, 79,130,171,109,161, 47, 35,235, 72, 91, 86,130,116, 98,160,152,181, 64, - 31,145, 99,219,201,154, 95, 45, 26,227,252, 42,214,149, 31,175,224,224,182,197,213,202,243, 70,128, 67,141, 8,151,239, 25,176, - 71, 51,164, 23, 32,188, 4,195, 31, 66,233,205, 22,168,223, 67, 31, 94,192,119, 38,242, 55,207, 24, 78,119, 60, 10,194,227,209, -120,221,197, 39,178, 93,178, 61, 62,190,239, 79, 1,214,201, 16,180, 43,224, 64,132,120,163, 39, 92, 79, 8,209, 0, 63, 15, 21, -206,204,207, 28, 4, 86,201,234, 91,181,118, 14, 19, 60, 25,237,198, 93, 71,229,170, 22,142, 21,226,173, 14,185,217, 35,215, 87, -240,126, 49, 10,224,113, 38, 30, 7,219, 24,172, 23, 1, 98,110,146,188,166, 98, 41,108,165,152, 31,189,127,152, 57,121,125, 68, -186, 64,120,161,163,123,237, 0, 57, 83,202,163, 76,174,215,244,100, 7,168,164, 21,175, 45, 51,212, 37, 79,133,247,223,207,172, - 68,109, 44,234,237, 88,197,243, 22,199,163, 86, 21,214,217, 36, 4, 81,174,156, 22,132, 45,225, 71,102, 65, 33, 4,248,104, 66, - 62,125, 8, 95, 43,112, 18,225, 51, 5,190,191, 67,255, 56, 51,125,111,135, 70,157,103,157,243, 16, 72,246,163,122,171, 2, 61, -243, 52,144,104, 22,212,150, 57,102,126,121, 92, 4,246, 58, 2,109,177, 96,123,187, 60,239, 40,213, 24,241,245,125,144,182,147, - 47,251,129, 40,245,235,148,217, 43,223, 88,211,138,223,224,186, 48,142, 23,113, 94, 65,220,148,162, 46,246,145, 58,234,246,231, -114,186, 52, 69,168, 73,107, 50, 22, 52, 6, 98, 74,243, 8,201, 24, 13, 54, 73,180, 28,246, 68,233, 35,162,153, 48, 88,216, 83, -156, 11,251, 82, 24,163, 79, 91,234,208, 88,125, 95, 30,103,135, 65,217,243, 93, 47,226, 68,239, 86,181,217,183, 59,217,177,168, - 65,133,148, 50, 43,215, 43, 60, 68, 53, 83, 52, 52,194,155,138,180, 30, 17, 85, 70,205,140, 26, 40,253,218,154,131, 90, 44, 66, - 50,142, 61, 54,202, 13,165, 64,153,102,120,149,250, 78,151, 82, 76, 92,133,144,243, 56,115,171,107, 49, 85, 45,179,112,109,137, -240,253, 16,112,183,180, 81, 91,203,161, 37,212,174,189,233,152,107,120,141, 92, 78, 93,155,197,143,186, 76, 44,184,188,159,183, -247, 34,137,176, 90,175, 33, 36,166,113,240, 34, 84,201,119, 31, 22, 21,199,156, 64, 86,156,146,182,183,175,175,163,119,137, 6, -154, 89,245, 72,136, 76,195,206, 56,234, 33,144,199,113,206, 46,159,111,234,122, 76,168, 7,179,146,253, 62, 40, 86,208, 87, 43, - 99,221,187,221,176,134,203, 80,218, 57,216,211, 60,118,117, 37,105,113,230,124, 8, 1,141,117, 54,226,138,247, 57, 1,168,198, - 77,215,207,201,225, 82, 98,235, 86,149,110, 78, 13, 69,148, 24, 3, 49,245, 75,178, 91,158,236,240,221,120,247,139,195,105,172, - 55,205,164, 18, 3, 90, 44,127,184, 4,231, 66,123,199, 30, 84,152,234, 3,207,223,172, 89,150, 95,253,142,193,253,195,106,230, -123,213, 72,206, 16,181, 48,170,141,221,234,232, 33, 20,171,145,235, 40, 28,196,192, 65, 40, 28, 38,165, 67, 89,171,113,169,196, -247, 32, 98, 71, 63, 0, 0, 32, 0, 73, 68, 65, 84, 17,117,175, 20, 74, 33,102,135, 55,156, 9,225, 78, 71,248, 97,135,252,239, - 32,215,238,193, 39,255, 8,174,255, 17, 92, 87,228,165, 14, 94,125, 14,110,190, 12,135,191,102, 60,249,240,188, 39,203, 37, 43, -250,235, 27,208,127, 10, 14,223, 66,174,253,115,184,253, 39, 70,199, 27,183,118,165,118, 9,210,202,115, 84,207,208,211, 45,188, -157,225,110, 68, 30,138,241,206,119,178,204,115,235,174,114,106, 18, 89,166,198,198, 80, 47,254,149, 35, 82, 87,174,204, 63, 12, -232,145,121,252,103,100,234,177,255,245,176, 67,250,171,166, 43, 72, 31,177, 86,189,170,166,202,133,237,203,203,153,179,246, 11, -132, 91,144, 62, 7,195,159, 65,126, 8,225, 19,160,175, 27, 55,255,174, 82,190,127,206,244,254, 5,103, 5, 78, 85,216, 78, 14, -228,243, 44,156, 50, 25,181,183,143,152,142, 96,182,111, 20,214, 2,171,103, 18,225, 51,107,228,181, 53, 28,116,200,189,193,230, -162, 43, 8,189,176,246,177,237,144,173,144,154, 37, 9,114, 46,230, 86, 84,216, 37, 56,212, 98, 63,242, 22, 19,153, 29,216, 75, -144,126, 36,220,236,137, 63,222, 65,150,217,164, 48,168,165,104,209, 32, 74, 69,160, 36,216, 5, 88,223,155,144,195, 68,124,182, - 71, 62,218,145, 56,224,248,219, 27,244,126, 38, 39, 99, 19, 73,150,153,165, 31,171, 23, 56, 7, 36, 40,125, 92,198,170, 18, 27, - 78,193,222, 67, 38, 88,142,119,130,243,108,239,205,201,249,132,156, 14,116,119,109, 77,194, 42,193, 43, 7,240,147, 71,240, 87, - 23,240,153, 3,244,206,192,248,229,115,244, 89, 95, 10, 95, 84, 28,234, 50, 95,107,159,105,161, 17, 90,181,236, 2,105,188,192, - 21, 0, 39,205,181,101,197,210,193, 7,109,182,118, 19,108,210,166, 98,105, 51, 10,176,125,161,167,105, 53, 86,162, 82,187,214, -218,217, 21, 32, 22,202,232,232,229,169, 32,197, 12,239,218, 20,115,145,253, 20,183, 42, 37, 11,165, 85, 52,219,142, 56, 54,114, -106,117,133,251,232,130,184,145, 70, 37, 23, 18,218,217,115,104,202,117,135, 47, 22, 66, 69, 68, 53,144,198, 45,157,102, 43,206, -237,250,162,174, 14,230, 17,123, 29,191,107,131, 44,185,148,149,217,172,205,140,200,230,227, 85, 89, 2, 30,231, 2, 92,173,112, -158,250, 50,205,225, 76, 58,251,254, 53, 38, 86, 34,196, 82, 24, 52, 27,217, 12, 5, 57,176, 46, 50, 79, 11,107,189,235,136, 39, - 55,172,176,108,206,208,237,214, 70, 37,117,205, 16, 2,185,136,251,219,179, 9,122,163,146, 99,164,196, 30,213, 97, 1,185, 52, -188,250, 57, 6,185,233,206, 67, 93, 21, 72,141,212, 21,211, 73,201,178,126,144,214,245,123, 41, 76,165, 85,201,163,234,201,128, -245,144, 80,199,204, 54, 34,238,251, 53,177, 91, 49,148, 50, 35, 89, 89,230, 29, 79, 37, 97, 70, 26,186,159,234, 30,133, 77, 36, -122,138, 25,196, 24, 89,117,189,121,210,243, 68,158, 76, 56, 51,150, 98,144,153,108,212,184,122, 3,205,234,125,167,200, 21,191, -206, 82, 8,196,212,249, 26, 89,153,138,241,224, 43,205,173,213,121, 32,173,192,209,199,102,213,146,230, 10, 87,165,248, 33,112, - 57,220,168, 51,244,115,201, 75,160, 83,187, 94, 40,217, 5,133, 29, 37,218,164, 64,167,201, 2,105, 58, 83,185,171,136, 9,121, - 93,143,176,172, 44,202,162,182, 47,153, 84,219,145, 82,187,147, 58,114,172,185,196, 13, 13, 77, 84,233, 28,196,210, 38, 56, 91, -174,236,228,162,136,142,162,194, 46,143, 78, 71,178,145, 88, 93,215,173,130, 61,168,143,114,225, 56, 10,185,192, 65, 20,203,164, -214,224,249,193,101, 62, 92,168, 70,186,169,176, 26, 71, 82, 20,244, 8,242,129, 18,186, 68, 24, 58,228,251, 7,232, 7, 35,229, -189, 29, 12, 59,194,141, 55,144,159,120, 11,254,222,159, 34, 63,125, 2,207,127, 12,142,127, 21,186,207, 67,120,198,232, 42, 56, -158,246,248,215,225,224, 63,130,233,212,109,114,163,101,198,167,107,134,166, 45,143,144,107, 95,134,231,190, 4,159,120, 7,125, -114, 97,168,220,236, 94,215,154,141, 93,124,247, 49, 86,168,127,244, 89, 96, 66,164, 44,102,216,222, 21,115, 49, 65, 95,153,152, - 62,251, 77,226,193, 26, 29,228, 53,156, 95, 88,235,187,254,121, 3,243,200, 19,251, 57,203,153, 85, 69,221,185,186,125, 13,233, - 19, 48,189, 5,155, 63,131,254,103,140, 28,167,239,161,247, 7,248,238,150,233,238,134,237, 38,243, 40, 8,231, 91, 35,184,106, -150, 25,215,185, 43, 86,208,241,169, 88,196, 14, 95, 69, 3,199,100,116, 27,144, 28, 23, 21,146, 5,131,219,235,247,220,249,177, - 30, 18, 10,156, 15,176, 43, 38,152,236, 93,188, 84,218,124,130,173,167,211, 4,177,223,112,210, 19,158,235,232, 86, 22, 77,216, - 39,179,131,159, 95, 24, 20,169,243,183, 45, 68,123,240, 15, 25, 70, 31,155,234, 54,163,143, 50,225,181, 21,241, 39, 15,144,152, - 56,249,230, 25,250, 96, 66, 69, 56,171,249,129,137,153, 10,168, 98,187,222,232,226,166, 32, 6,174, 9, 77,220,165, 52, 33,154, -248, 41,216,241, 61,164, 65, 9, 15, 7, 83,182,175, 34,114, 16,209,131,128,124,100, 13,175,172,225,157, 29,242,239, 28, 33,255, -167,117,145,210, 21, 52,137, 39, 3,250,251, 80, 22,122,153, 40,104, 84,226, 36, 51,142,184,137,181,110, 73,198, 76,126, 15,149, -204,252,222,207,221, 64,190, 36,120, 43,151, 30,142,181,197,217,115,244, 52, 44, 87, 31,242,206, 45, 91, 21,131,105, 65,166,134, -214,230, 28,118, 90, 86,184,239,168,231, 26, 25, 92,164,231, 95, 39,214,209,119, 12, 30, 65,106, 45,179, 56, 9,174,184, 35,187, -119, 12,236,136,233, 91, 68,237,223, 79, 49,146,177, 73, 82, 41,217,210,217, 98, 32,249,153,169,111,152,239, 89, 13, 54, 82, 26, -149,246,194,221,119,193,158,191, 93,213,111,220,202,197,130, 86,220,169, 94, 2,221, 44, 19,143,250,185,197,176, 64,129,212, 21, -227, 69, 11,108,207,209, 16,221, 59, 29, 73,177,179,243,126,183,140,128,139, 19,234,138, 39,126,201, 48, 80, 54,103,196,245, 49, -101,117,108, 87,219,230,204, 94,175,216, 94,213,114,183, 11,185, 12, 22, 40,162,246,122,136, 61, 26, 59,131, 65,185, 70,160,204, -130,185,198,126,230,175, 53, 87,178, 89, 61,122,105, 67, 9,110, 69,152,232, 94, 0,139, 74,104,116,255,141, 66, 59, 52,113,170, -179,141, 77,232,186, 21,253,122,141, 6,241, 36, 52, 43,166,218,232, 42,158,202,110,173, 2,185, 82,156,179, 94,173,151,139,253, -174, 82,227,186, 85,111, 7, 66, 15,132, 81, 17,198,113, 36,103, 87,220,214,105,211,124,168,113,237,212, 12, 45,183,180,180,144, -162,127, 46, 94,208,125,154, 48, 67,119,116, 57, 16,171, 79,110,184,196,114,159,189,246,132,185, 27, 23,191,230, 67,116,144, 80, - 30, 80,151,154,154, 78,193, 52,105, 85,252,166, 51,227, 2, 98,234,172, 75, 15, 97, 33, 52, 58, 50, 87, 36, 88,106,158,235, 79, - 74,206,115, 4,113,138, 30, 72,145, 51,108,199,194,182,216, 8,222,186, 0,102,225, 72,168,105, 79, 30,176, 16, 93,249, 74,201, -110, 17,139, 20,133,190, 79, 4,141,140, 27,101, 44,153,186, 41,170, 34,141,169, 40, 35,197, 70,169, 2, 57, 8,121,178,209,255, - 81, 18,186,100, 98, 49,123,130,217, 60, 55, 28, 69, 79, 78, 10, 14,157, 73,246, 32, 61, 12,112, 8,220, 78,200,185,119,207, 41, -217,213,249,197,130,126, 97, 7, 71, 95,135,231,191, 14,159, 16,228,213, 53, 28, 31,195,122,237,124,215, 99,232, 79,160,191, 5, -233, 21,232, 62, 9,221, 21, 72, 87, 92,129,255,140,141,238,251,191, 3,235, 31, 35, 55,223,128,252, 30,228, 45,232,128,144, 23, - 34,158, 15, 79, 69,182, 32,131,181,160,165,238,114,234, 5, 22,102,106, 20, 83, 54,156,237,198, 44,127, 70,103,115, 21,221,238, -255,167,235,221, 98,109,203,210,251,174,223, 55,198,152,115,174,125, 57,183, 58,117,239,174,238,118,119,187,219, 54, 77,219,177, -163, 36, 68,113, 68, 98, 19,130,148, 60, 32, 2,146,133,184, 8, 9,161, 32, 33, 4, 88, 8,241,128,242,196, 59, 32,241,130, 16, -138, 20,204, 67, 0, 33, 8, 82, 2,137,130,131, 37,156,142,113,140,237,166,239,238, 91, 85,117,117,213,185,238,203, 90,107,206, - 57,198,248,120,248,190, 49,231, 92,187,154,150,142,186,251,212,169,179,247, 94,107,174, 49,190,203,255,255,251, 63,129,233, 57, -242,199,127,213,125,230, 31, 88,193, 81,247,118,153,215,131,119,233,201, 58,249,154, 97,255,119, 64, 46,173,107,215,111,194,248, - 2,222,171,148,111, 31,200, 63, 62,242,162, 40, 47,179,112,200, 22, 61, 31,150,247, 84,137,222, 5, 73,176, 6,188,197, 77,118, - 64, 39,129,240, 48, 33,103,193,100,228, 31, 29,169,223, 58,146,255,104,100,254,225,204,109,132,253, 12, 71,159,196,198, 8, 23, -189,185, 13,115,241, 31, 93,160, 70, 89, 94, 2,223,245,216, 31,246,223, 11,143,122,239, 22, 12,114,115, 57,192,163, 12, 79, 71, -219,171,231,128,233, 0, 20,138,243, 88,135, 51,232,174, 11,241, 73, 33,124, 2,228,245,158,240,165, 68, 55, 85,238,253,254,158, -114,157, 41,157, 29, 52,199, 54, 80,217,238,178, 67, 19, 96,233, 50, 14, 94, 60,205, 34,167,227, 62,255, 76, 28,139, 23, 25,199, - 74,120, 49, 33,103,137,244, 94,132, 20,236, 98,127,109,176,215,233, 50,144,254,108, 37,255,239, 47,145,215, 65,250,106, 76,251, -122, 26,118, 17, 60,189,164,206,246, 58,116,237,194,150, 19, 11,237,210, 41,213,226,216,129, 40, 72,169,166,253,208, 59, 84,186, -147,237,103,221,228, 88,175, 56,217, 69,248, 67,155,105,111, 71, 2,178, 97,210,235,250,251,106,221,135,212,181, 67, 89,214,168, - 42,196,160,107,124,176,174, 48, 23,113,113, 34,149,197, 57,162,110,194,182,241,173,137, 69, 37, 84,134,100,218,157,118, 14,217, -247,215, 56,105,118,184,205,213,206,133,164, 74,212, 74,143, 46,106,245,217, 59,254,122,167,171,172,170, 76,181,122,238, 66,203, -115,223,164,223,169, 46, 74,253,229,215, 18, 20,104,175, 65,110,161, 42,186,138, 93,219,235, 88,253, 66, 47, 77,139,147,109,222, - 89,163, 59,136, 82,180,166,167, 6,170,199,126,134,197,238,230, 96,153,170,228,253, 53,189, 42, 12,231, 72, 76, 72,215,163,135, - 91,170,102,170, 68,123, 33, 99, 34, 12,103,232, 60,219, 8, 57, 23,168, 19, 53, 68,155,108,108,138, 23,105, 35, 32,116,137,147, -173, 63, 65,149,221,152, 0,193,233, 72,210,246,205, 13, 72,163,235,101, 27, 54, 41,150,237,217, 10, 75, 58,158,137,183,162, 4, - 98, 55,208, 13, 3, 33, 38,198,108,157,180,120,193,161,101, 21,152, 44,206, 13,109,223,115, 88, 38, 46, 13,214,228, 8,248, 5, -150,100,130,182, 30, 77,137,105,154,236,117,148,192, 92, 50,101,158,109,181, 81,170,137,235, 54, 72, 92,221, 96, 12,131, 64,138, -137,152, 58, 23,214,153, 96,174,117,219, 39,101,221,118,159,237,235,172, 32,186,174,118, 54, 41,109, 34, 66,149,232,145,223,234, -137,130,174, 92, 79, 59,106, 42,246,231, 66, 36,196,224, 4,193, 74,205,198, 55, 8, 49, 34, 77,125,175, 74,206,197, 39, 1,246, -169, 12,209,179, 0,156,149, 95,171, 17,231,162, 8, 97, 56, 35,229,106,118, 13,149, 96, 35,200, 90,233,124,127,165, 45,234, 83, -214, 56, 68,169,129,144,172,210,108, 63, 96,108, 10,207, 32,132,110,176,221,210, 56,115,116,196, 93, 16,243,180,207, 42, 36,205, - 4,133,189,143, 88, 74,182, 70,247,178, 6,204,114, 44,156, 11,244,157,165,129,233,101, 66, 30,236,208, 65, 32,216,155, 36,231, -189,167,130,121,213, 60,184,118,255, 38, 91, 39,125,168,214,142, 22,224,105, 71,252, 97, 64,190,209,161,159, 15,240,240,104, 54, -184,177, 66,254, 49, 92,249, 73,253, 90, 68, 62,135,137,158,222,122, 19,206,238, 91,196,172,244,118,129,206, 71, 63,248, 58, 59, - 85,195,153,135,208,236,124,190,117,180,246,102,206,232,126,143,236,175,205,236, 45,193, 47,113,151, 85, 87, 59,121,116, 95,236, -251,172, 30, 86,210,139, 5,154, 68,129,239, 30,224, 79,191, 10,151,127, 2,230, 31,122,190,124,177, 40,218, 58,217,197, 46,172, - 17,184,227, 87, 96,124, 9,247,126, 17,184, 5,253, 33,250,116, 66,191,115,164,124,112,224,230, 86,121,166,129,253,108,251,192, -236,135,217,208, 0, 38, 98, 62, 97,153,221,250,218, 0, 59, 10, 41, 6,194,227,132, 60,238,236, 95,120, 94,169,207, 50,249,233, -204, 62, 87, 94,102,235,204, 75, 59, 25,252, 71,142,254,247, 84,255,224, 22, 86,196, 46, 55,126,250, 62, 22,184,181,165,183, 60, - 48,111,168, 76, 21,233, 97,232,225, 85, 87,188, 30,102,181,177,163, 23, 31, 45, 87, 62, 6, 19,228, 61,248,250,145,112, 30,137, - 15, 58,228,149, 68,248,249, 11,186,163,114,255,171,123,242,177, 90,224,139,152,210, 63,248,158,119, 59,102, 95,156, 10,178, 73, -145, 58,101,128, 44,159,235, 42,112,244,196,188,238, 54, 19,158, 79,200, 46, 18,207, 45,242, 86,135,132,188,115,134,254,224, 22, -126,225,156,240,245, 35,245,199,123, 99,220, 15, 66, 56,110, 14,214,176,233,216,189,232, 24,156, 19, 51, 42, 39,225, 33,213,221, - 37,217,104,199,164,168,222,137,182,236,128, 37,208,215,179, 11,182,180, 16, 87,177, 47,191,181,166,173, 84,255, 92,171,132, 83, -139,146,239, 70,181,165, 82,149,214,197,213, 69, 64, 37,226,148, 65, 93, 39,145, 49,232, 18,164,104, 77,191, 44,219,235,224,234, -229,172,186, 6,164, 86, 59,107, 26,118, 53,169, 57, 66, 6, 10, 41, 4,195, 52,251,159,151,176, 58, 75, 16,232,180,218,216,221, - 69,113,147,218,133, 94,100,221, 41, 27,190,214,252,245,145,192,188, 88,197, 86,204,109, 92,176,170,237, 82,210,147, 12,243,232, -254,117, 9, 86,148,196, 77, 39,187, 4,162,196,132,226,226,184, 82,125,132,236, 1, 37,197, 59, 64,173, 72,181,208,141, 26, 58, - 66,151,176,102,219,160, 35, 18,173, 59,173,227,222,153, 26,137, 20, 19, 12, 3,117, 60, 90,199,158, 11, 85,102, 36,117,132,212, -129,118,212,108,151,154, 53, 5,137, 24, 59,223,233,250,165, 18, 76,175,100, 5, 85, 65,213, 46,233, 37,145, 82,215,212,175,234, - 43,207,181, 99,151, 37, 12,163,234,221,100,239,187,197,129,141,222,219, 56, 59,165,142, 16,123, 38,167,185,209, 24, 7, 14, 96, -161, 5,205,184, 18,156, 37,166,212, 39, 23, 65,238,176, 28,154,155, 34,210,197,142,216,245,182,247, 46, 54,162,202,192, 60,205, - 94,228,172,147,132,186,201, 34,208,205, 52, 46,132,104,254,249,152,236, 57, 41,229, 14, 5,174,126, 92,144, 80, 55,188,252, 13, - 97, 78, 54, 43,131,208,188,234,162, 11,114, 57, 0,187,126, 48, 97,121,173,116,201, 96, 49, 99, 45, 28,166,145, 50,142, 14,189, -113,198, 65,215, 45, 69, 74,174,166,226,215, 90,156, 56,106,161, 47,185, 20,242,116, 68,170, 18, 37,216,212, 34, 37, 82,242, 61, - 66,212,194,121, 4,145,196,160,133,169,216, 11, 33, 46, 46,201, 62,126,145, 32, 20, 73, 84,169, 11, 53,202,192,133,182,223,203, -125,100,154, 10,211, 92,104, 5, 67,169, 48, 23, 37, 72,229, 92,108,135,129, 7,173,133, 98,190,236,131, 79,117, 45,197, 72,184, -168, 74, 31,148,184, 87,139,184, 44,222,229, 14,246,193,209, 32, 75, 26,132,238,149,250, 66,169,199, 64,157, 50, 76,147,137,104, - 34,132, 93, 68,207,123,226,107,129,240,112,103,221,252,177,218, 92,247, 38, 83, 63,152,209, 39, 5,190, 94,145,223,141,200,195, - 61,132,175,195,179,201, 78,188, 93,180,121,103,136,200, 89, 7, 15, 2,124, 50,193,219,157,159, 46, 56,197, 78,225, 70,224, 71, - 25,158, 9,122, 13, 60, 10,240,122, 92, 85,155, 13, 85,151,196, 4, 98,183,110,200,153, 10, 92,249,102,224,137,130,142,200,151, -126, 5,202, 45,148, 23,158, 45,127,176, 75, 93,111,253,239,115, 1, 96,253, 8,230,119,161,123,211,126, 79,191,142,222,188,128, -239,102,234, 31,237,153, 94, 78, 60, 15,112, 61, 25,100,166, 20,139,189,204,108,172, 81, 69,204,218,222,146,182, 16, 82, 80, 6, -133,238,126, 36,188,218, 27, 1, 39, 11,245, 42, 83,158,204,228,219,204,173, 26, 87,125,159,173, 88,104,147, 91, 41,107,199,219, - 59, 75, 97,241,102,103, 63, 69,167,138,244,209,170,226,164,200,189, 72,188,215,209,189,200,164,170,140,213, 44, 96,187, 4, 53, - 8,251,227, 74, 85, 44,197, 10,193,171,201,182, 21,114,149,121,248,213, 3,114, 63, 18,126,225, 18,121, 99, 32,126, 25,250, 27, -229,225,119,247,212,162, 92, 1, 7, 17, 39,202,157,100,165, 16, 88,106, 68, 31,175,174, 76,240,120, 39, 0, 72, 93,188,116, 84, -232, 50,214,173,239, 2,210, 7,194, 16,224,222, 17, 62,115,137,124, 98,135,190,156, 8,127,225, 62,241,191,158, 96,151,221,116, -111,185,228,155,245,243,230,114, 48,109,195,208, 40,133,171,190,103, 25,249, 90, 97,161, 39,252,244, 59,167,237,154, 64,184,137, - 29, 19, 86, 20,106, 46, 91,229,173,189,206,167, 35,119, 57, 9,150, 17,223,187,139, 10,162, 1, 77, 66,210,178,184, 38, 40,117, -241,131, 47, 26, 32,100, 9, 41,218, 42,203,181,165,134, 45,113,158,235, 48,183, 20,124, 82, 35, 72,138, 4, 85, 82, 45,118, 54, - 86, 83, 35,119, 18,108,100, 25,212,249, 9,149, 36,202,173,130,207,206, 78,134,185,230, 97,111,113,183,186, 92,202,141, 11, 81, -165, 69, 28,183, 97,133, 46,187,249,246, 60, 71,239,202,113,151, 95,216,108, 44,172,153, 73, 62,114, 45, 70, 21,243, 73, 87, 43, - 32, 45, 90,180, 50,249,206,190, 11, 21,173, 35,185, 36,159,134,219,154, 51, 68,199, 91,215,130,206, 35,117,151,168, 2, 93,215, -219, 69, 55,103,114, 41,134, 14,157, 70, 66,204,132,212,147,186,193, 5,124,246,208,212, 50,251,207,100, 78,129, 20, 2, 85, 12, - 35,172,165, 16, 81,119, 40,201, 42, 6,245, 11,253,132, 98,232,107, 8,245,243, 95, 54,197,207,106,199,112, 17, 97, 35,244,133, - 72, 12, 61,161,235,144,216, 83,180,146, 75, 89,162, 99, 43,117, 51,122,111,104,216,182,191,174,104, 72, 75, 17,215, 16,179,150, - 79, 94, 23, 56, 76,138,137,212,119, 16,133, 60,102, 11,101, 17,131,204,148,121,242,142,185,110,188,255,107,112,202,154,198,102, -190,242, 16,147,209, 36,107,246,148, 56,255,190,234, 70,212,162,219,156,144, 85, 28,217,170,254,224,250,129,182,222,169,181, 16, - 98, 34,164, 14, 81,216,197,200,253,251,247,144,110, 96,154, 38, 74,173,204,170,148, 60, 49,231, 66,153, 51, 81,108, 45, 91,169, -148,108, 1, 62, 49,217,106, 32,249,190,188,106, 37, 16,208, 16,188,179,159, 77,232, 60,236, 8, 93, 34, 87,101, 60, 28, 72,103, -154, 73, 49,114,214, 65, 41,202, 49, 22,139, 24, 45,190,191,114, 49,213, 81,125, 21, 90,149,218, 71,178, 4, 68,103, 84,133, 33, - 24, 26, 83,231,130, 20, 72,233,140, 24,111, 57, 23,245, 61, 88,165, 6, 56, 19,229,204, 61,185, 81,108,212,154,130,125,160, 26, -184,100,170,166,156,190, 81, 97,168,112, 62, 41,195, 97,166, 83, 37, 14,160, 15, 88,103,161,213,104, 28,122, 93,201, 7,101, 76, - 1, 21, 37,244,129, 46,122,108, 67, 12,118, 74,158,187, 89,118,244, 98, 32, 84,106, 84,116, 7,245, 21, 19, 2,113, 25, 76,189, -254, 12,244,104,102, 15,153,252, 65,232, 33, 12,138,148, 64,232,147, 77,191,251, 96,151,249, 92,225,170,160, 79,170,157,198,103, - 98, 13,254,212,153,167,171,110, 20,197,183, 10,151,222,114, 30,109, 70,173, 30,251, 41, 47,129,111,140,240,239,189, 1,195,167, - 97,255,129, 95,230, 51,212,209, 60,248, 76, 38,209, 15,175, 64,184, 7,183,191, 9,211, 75,184,252, 83,160, 63, 66,231, 31,194, - 7, 25,253,214,145,242,254,129,155, 12, 47,171, 48,218,121,195, 84,151, 4,223,165, 19, 45,155, 14,181,177,162,135, 0,103, 10, -241,161,199,142,122,252,153, 62, 49,206,251,177, 8,147,192,232,253, 77, 81,187,172, 60,216,207,238,136, 96,250,207,157,172,246, - 40,252,245,180,150, 41,192,224, 2,204, 7, 61,225,237,129, 97,154,185,189,205,220,102, 27,195, 86, 3,198, 49, 58, 16,170,115, -156,255,236, 31,176,235, 0, 93, 23,232,159,102,228,247,142,244,247, 58,228, 11,103,200, 39,122,210, 47, 94, 48, 28, 42, 15,222, - 59,154,128, 73, 12, 65,154,235,218, 1,167, 53, 55,229,164, 51,113, 30,132,141, 88,239, 28,116,234, 59,246, 3,144, 70,219,175, -203, 16,237, 87, 23,209,157, 32,239, 60, 66,138,160,159,129,240,103,238, 81,127,235, 37,242, 72, 33, 7,100,170, 54,170,222,100, -137,107, 93, 55, 53, 49,194,176,137, 24, 61, 73,103,243,248,209, 37,116,124,129, 92,164,211, 97,106, 27,157,120,229, 18,217,116, -246, 85, 79, 76,110,178,165,172, 53,122,218,242,255,195,186, 50,113,129, 85,148,202,224, 48, 21,203,241, 86, 36, 52,120,145,120, - 84,100,195,160,174,214, 31,226, 70,168,231, 54,170, 22, 13, 26,124, 50,100,182,159, 0, 69, 73,126, 25,196, 54, 2,199, 58,224, -157, 27,187, 67,206,156, 73,165,136,145,232, 50,171,216,173,141,198,131, 26,146,182,222, 65,165,136, 95,236, 81, 54, 89,230,178, -138,234,216,224, 99,131,172,100,191,197,219,173, 44,172,247,186,132, 90,215,165,219, 87,169,174, 36,151, 69,127,144,117,229, 62, - 12, 1, 83,103,235,186, 94,137,213, 61,212,162, 84,157, 45, 42, 54, 68, 66,133, 97,119, 78, 77,133,227, 60, 34,206, 50,215,106, - 88,238,160,213, 0, 40, 33, 57,134, 86, 23,236,109,140,105, 65,222, 74, 8, 22,108, 85, 11,193,195,119,216,234, 10,228, 84,192, -185,237,146,131,216,243, 19,116, 77, 12, 83, 9,171,114, 94,162,237,133,131, 5,181,132,216,249,229,104, 41,117, 21,239,130,203, -230, 66,119,253, 84, 91,234,139,248,216, 61,207, 70, 77,107, 19, 51, 87, 99,218,235, 31,232, 59,183,176, 21, 37,231,188, 52, 35, -243, 60,129,110, 80,171, 34,190,191, 95,217,235,226, 46,171, 16,147,217,237, 98,240, 46,120,237,191, 91,110,124,115, 18,168,224, -168,241,184,136,219,194,170,100,217,192,130,236, 12, 61,239,122,206,207, 47, 8, 41,129, 42,187,174,163,219,237,184,158, 38, 14, - 57, 51,205, 19,243, 60, 51,231, 12, 57, 47, 59,247,230,188,176, 58,185, 56, 16, 52,210,133, 72, 28,118, 75, 94,122, 6,234, 52, - 50,132, 72,127,126,142,246, 3,251,227,145,227,237, 21,121, 28, 73,247,165,144,212, 62, 60,115,176, 17,121, 86,165, 68, 33, 19, - 32,218,135,245,166, 40, 47,139, 85,249,147,135,193,207,193,132, 42, 69, 33, 82,173, 59,158, 71,226,249,125, 46,206,118,212, 82, -108,151, 50, 91,135,126,233,190,245,234, 56,189,132, 44, 73, 71,147,218,225, 16, 16,166, 42,116,106,168,212, 89, 34,247, 66, 34, - 74,161,237,255,169,213, 46,230, 93,183,158,178,157, 11, 18,212, 41, 67,168, 69, 23,166, 72,184,223, 17, 30,196,133,239,222,210, -180, 24,128,135, 54,230,210, 92,208, 23, 51,229, 69, 70,231,106,115,192, 24, 8, 93, 48,241,252, 25,232, 99,129, 71, 98,176,154, - 25,184, 26,209,155,138,126, 56,163, 71,181,244,178,123, 29,225, 97,176, 19,111, 44,200, 21,107,200,112,241, 54,175,141, 37,230, - 66,125,153,209,209,124, 97,225, 3, 37,124, 54,194,151,127, 30,142, 87,144,111,188, 18, 24,237, 82,215,217, 78,189,152,160,251, -164,117,241,227,247,253,146,239, 97,254, 14,124,116,128,111, 78,148,111, 31, 56,222,204,188,116,225,218,177,192, 92,215, 28,226, - 70,245,138,209,212,189,169,241,230,253,215,160,102, 45,147,203,132, 92,118,118, 88,238,161, 94, 21,242, 77,101, 18, 49, 72,203, - 98,225, 20, 74, 59, 36,106,165, 74, 32,121, 16, 78, 39,246,126,196,212, 22,246,109, 73, 29, 44,156, 39,221,192, 43,129,240,169, - 68,124, 47,210,213, 98,121, 3,115,195, 30,194,121, 7,215, 94,148,132,141, 45, 44,136,112, 19,220,180,240,193,145,240,187,145, -116,158,144,119,122,228,157,129,244,229,202,110, 84, 30,124, 52,217,197, 30,173,174,219,118,201,203, 1, 16,100,109,153,101,131, -254,188,147, 42,169, 62,205, 40,246,206,144,110, 10,242, 98, 38,116,126,176,221, 75,232,195, 91,228,254, 99, 36, 62,133, 95,189, - 71,252,135,123,184, 81,116, 23,168, 59, 69,167, 53, 41,203,101,249, 39,221,118, 23, 45,246,119,210,211, 38, 58,108,114,202, 79, -149,250,121, 99,199, 88, 11,145,213, 66,237,226, 52,221, 50, 26, 87,119, 6,213,231,218,245, 39, 68,101,121,196,231, 22,185,186, - 11, 91, 37,248,218,217,108, 7, 82,186,217, 0, 44,246,101,133, 16, 43, 90, 44,221,173,253,153,234, 0,148, 66, 64, 84, 8,222, -253,203,182,252, 16, 67, 54, 95,116,173,211,183, 68,171,189,174, 98,220, 37,161,178,145,224,196,214,137, 56,136, 40,159,136,251, -172,139, 23, 2,157, 88, 26, 99, 27,217,139,174,221,185,178, 30, 57,181,217,183, 60, 72, 67, 92,100,105, 1, 45,234,239, 64,117, -120,146, 80,125,212,189, 20, 50, 21,102,207,119, 24,188,151,208,101,108,219,178,100, 3, 90, 10,146, 71,164, 63, 71,131, 9,185, -134,152, 80, 44, 99, 67, 84,140,150, 86,138, 65, 82,202,228,108,245,176,174, 41,162, 77, 88,230,227,100, 26,202,152,252, 11, 5, - 19,234,233,102, 97,125, 34, 12,213, 77, 0,143,108,162, 86, 29,162, 83, 27, 48,200,226, 97, 67, 76,254,111, 6,231,145, 71,143, -252,245,253,184, 83, 56, 75, 46,182, 38,104,232,217, 86, 96,106,181,233, 71, 23,169,217, 60,251, 18,172, 35,181,101,122, 93, 24, - 18, 11, 28, 38, 6,202, 56,217, 62,217, 71,209,117,206, 62,206,175,190, 82, 98,237,250,217, 16,232, 98, 48,113, 92,140,214, 89, -107,221, 68,208,110,199,244,226, 48,173,136,196,184, 38, 24,214,109,145,184,134, 35,197, 20, 57, 31,118,220,191,184, 36,118,157, - 23, 60,129, 26, 19,207, 14, 7,174,110,110, 25,199,163,237,156,155,215, 60, 69, 74,173, 76,227,209,206,200,216, 17,186,110, 89, - 83,132,109,108,107,203, 90,207,217,113,187,145, 57, 4, 14, 55, 87, 76,251,189, 71, 3, 67,186,223, 53, 69,189,146,188, 18,110, - 69,126,145, 98,163,143, 40,156,163,220, 19,225, 16,148,105, 80,142, 53,112, 28,179,225, 11, 43,196,208, 89, 10, 79, 85,130, 22, -186, 24,152,242, 68, 71,129,104,147,229,179, 8,179,151,127, 70,251, 82,180, 90,230,118,231,251,176,200, 42,242, 40,130, 9, 6, - 58,251, 97,232,234, 26, 47,185,235,224, 44, 89,121,191, 87, 66,174,244,101,178,197, 94,159,144, 92,145,162, 72, 19, 47, 61, 76, -182,187,174,117, 25,167, 72,239,158,210, 51,129,235,136, 30,142, 86, 8, 4, 1,177, 7, 43, 92,118,200,131,132,184,221, 76,231, -140,238, 21,189, 42,232,211,140, 30,124,192,248, 48, 32,143, 58,120, 45,192, 78,208,235, 10,123,108,196,124,230,153,239,197,243, - 86,247,118,250,105, 1, 61,216, 56, 74,178,192,139, 10,191,254, 25,224, 21,152, 95,216, 37, 46, 25,242,232, 72,220, 98,187,252, -248,134,141,218,143,255, 0,174, 95,192, 43,159, 3, 62,128,155, 23,240,157, 76,253,218,158,249,201,129,171,201,226,230, 75,105, - 89,189,235, 5,149,252, 12,239, 69, 40, 98,187,208,222,119,233, 22,247, 42,196, 62, 16, 94,237, 44, 66, 21,165,190,156,169,207, -179,141,143,196,189,227,109,116,186, 81,117,215, 24, 76,112, 23, 86,213,122,140,178,162, 31, 27, 98, 80, 34,240, 22,232, 75,228, -124,132, 55, 7,226,227,145,243,155,153,123,179,114,136, 54,181,153,171, 29,130,247, 59,184,153, 87,207, 58,213,104,115, 41,155, -122,127, 80, 37,254,224,136,252, 65, 36,222,143,200,163,142,240,133, 51,186, 91,133,223,171,232,203,153, 26,101, 73,200,107,187, -224,185,248, 7,243, 20,125,110,135,153,108,206, 21, 93,183,137,234, 2,153, 89, 77,233, 31,174, 39,194,185,165, 36,201,187, 9, - 94, 13, 6,238,223,125, 26, 57,255, 22,225, 95,187, 64,255,179,153,250, 86, 68,118,192,148,215,233, 94,105, 4, 41, 7,187, 84, - 27, 15,246,193, 62, 31,249,206,126, 93,151,148, 85,189, 99,241,221, 64, 49, 62,166,132,210, 69,214,108,219, 32,239, 40,117, 19, - 68,180, 32,189, 78,151,136, 90, 87,201, 80, 69,233,162, 9,190,212, 69, 69,232, 10,173, 89,194, 86,188,208,219, 2, 62,107, 86, -162, 47, 37,117,113,180,123,113,224, 23,140, 84,231,108, 55,160,138, 4, 39,194,217,175, 42, 74, 46,149, 94, 76,244, 54, 85, 56, -186,154,123,141, 10,117, 15,185,251,182,163,197, 4,120,126,185,189,247,139, 82,190,178, 56, 84,194,230, 53, 43, 62, 89,138,209, - 62,186,115, 11,180,145,200,236, 29,170,111,209, 9, 81, 72, 90,209,160, 11,100,170,250,131, 19,212, 60,246, 85, 54,238,172, 70, - 55, 12,230,163,111,113,187,165, 90, 16, 77, 46,222, 13, 78, 19,210, 13,132, 52,160, 33, 33, 90,232, 98, 36,207,147,123,155, 35, -210, 37,136,113, 21,135, 57,114, 48, 68, 43,254,141,123, 94,124, 29, 82,150, 56, 88,139,122,209, 37, 73,254, 84, 52, 39, 27,217, -219,122, 29,158,228,159, 72, 32,132,100,217, 26,186, 78,117,212,187,254,208,246,248, 40, 85,220, 10,233,223, 71, 27, 59, 45, 95, -165,130,116,209,237,224,237,235,234, 29,235,122,219,215, 71,250,174,183, 88,213,108,194,182,138,146,231,121,121,129,151,213,142, -171, 71, 23,200, 17, 45, 8, 37, 46,232,218,186, 86,142,171,213,110, 99, 53, 51,117,122, 92, 86, 0,237,239,194,119,254, 45,252, - 37, 70, 11,148, 73,169,115, 52, 65, 38,134,200, 49, 20,174,110,111,217,223,222,216,174,223,197,116, 33,218,251, 54,151,108,241, -179,197, 61,243,213, 86, 25,169, 23,162,116,166,154,175,149, 60,207,238, 54,146, 37, 66,247,118, 28, 25, 15, 7,234, 60, 45,254, -123, 17, 33, 37,130, 31, 88,149,168,106,202,203, 32,203, 62,170,248,135,182, 79, 66,170, 74, 95,172, 58, 63, 14, 61,251, 25, 38, -175,234,164, 15,104, 13,110,150, 55,196, 30,243, 68, 9, 22, 43, 56,136, 24,215,188,147,101, 47, 89, 16,106, 88, 67, 19,162,239, -180, 58,169, 12,213, 71, 99,231, 59, 87,147, 58,147, 60,138,181,101, 93,242, 79,106, 65,206, 35,177, 8,122,125, 52, 97,138, 70, -179,149, 5, 65, 30, 13,200, 59, 59,163, 36, 29, 42, 39,124, 66, 13, 32,197,254,206,203, 72,144, 1,121, 92,151,110, 77,186,128, -188, 18,145,251,166, 24,172, 31, 77,232,203,217, 46,245,209,253,244,247, 13, 38, 99, 94, 61, 27,171,215,131,192,222, 81,160,169, - 34, 93,112,159,142,127,114,179,218,218, 96,116, 27, 66, 47,240, 3, 69,126,177,135,207,254, 52,220,222,154, 32,142, 12,249, 96, -106,251,166, 64, 11,103,144,222,132,227,223,133,247,191,141, 78, 3,242,166,192,248,125,244,195,138,254, 96, 36,191,119,228,112, - 83,121,137,112,204,106,233,105,173, 32, 95, 1, 91,110,171, 88, 3, 28,108,108,105, 68,185,190, 64,119, 47, 33,175, 59, 22,246, - 80,225, 89, 70,111,138,121,209, 89,248, 8, 11,155,193,215, 66, 86, 20,248,230, 67,219,133,152, 86, 48, 13, 17,211, 42,196,100, -150, 60,122,216, 61,133,183,247,132,215, 7,250, 39, 19, 23, 47, 38, 6,177,172,243,105, 90,239, 36,113, 75,101,213, 53, 26,119, - 44,112, 59,155,103,190, 27, 11,241,155, 71, 43,198,254, 88,128,139,142,248,115,103,112, 44,156,125,109, 79,190,202, 75, 67,107, - 59,107,219,207, 22,189, 75,223, 58, 85,169,109,108,204,171,213,204,245,126, 33, 8,221, 94,137, 47,102,106, 23,145, 15, 39,228, -135, 17,125,253, 71,200,163, 63, 7,220, 71,126,249,155,132,223,219, 19,254,254, 1, 62, 19,169,103, 21,142,198,147,214, 98, 93, - 69,187,208, 93, 19, 68,236,132,110,182,139, 46,111, 78,184,186,193, 85,126,124,153,126,138,120, 93, 67, 90,196,135, 69, 13,253, -186,118,164,139,159,189, 52,199,154,218,229,220,198,222,245, 4,143,109,105, 85, 94,128,176, 92,168,235, 14,191, 29,124,213,213, -127, 90, 65,114, 93,121, 3,181, 41,134,117,179,247,182,231, 36, 44,186,123, 89, 28, 26, 22, 27,106,127,235,132, 85,147, 41, 42, -193, 71,145,121, 93,214, 47,108,238, 6, 78,105,100,192, 90, 79,147,222,178,158,178,219, 41, 75, 40,157,123,230,253,242, 85,187, -139,138, 4,183,149,217,235,150,212,222,119, 75,108,172, 20,255,203, 27,222,216,194, 61,236, 66, 79,205,109,232,120,233, 40,167, -233,114,213, 15,105, 91, 35,136,115,218, 65, 74, 38, 78, 19, 33, 14, 22, 33,234, 62,237, 24, 34,101, 26, 77, 56,215, 50,161,187, -100,168,235, 90,150,213,135,230, 66,205,121,157,203,108, 39, 6,109,236, 46, 97, 9, 2,218, 22,181,117,219,183,183,128, 23,115, -178, 59,127, 60, 25, 53, 79, 45, 97,143,208,138, 49, 35,170, 25, 73,206, 59,104, 79, 39,115, 37,182,147,221,116,241,129, 75,244, - 46,116,154, 86, 37,253,162,184,247,207, 93, 85,179,120,117, 29, 69,132,113,154, 55, 23,185, 46, 28, 21, 90,240,139,132,211,120, - 94, 23,175, 53,251,152,169,221,117, 25,255, 47,118,181,229, 51, 97, 85,158, 46, 1, 48,155, 88, 88, 17,251,123,220,206, 29, 61, - 41, 47, 5, 11,175,169, 34,140,121,102,158,247, 76,165, 80,202,140,180, 4, 54,199,230,206,165, 80,219,186, 96,153,154, 52, 40, - 78,165,228,138,138,141, 38,139,255, 76,120, 12,108,174,133,105, 26,169,211, 4,181, 18,150,131,213, 83, 68,195,152,208, 82, 9, - 85,156, 0,101,214, 48, 5,106,168,134,134,213,134,206,244, 39,176, 20,186,243,196,174,235, 72,197, 46, 69,213, 76,150, 64,191, -235, 41, 65,232,181,208, 7, 27,105, 73, 48, 42,153, 0,169,197, 57,122,151,158, 55,163,224, 22,127, 73,123, 44,165, 67,134, 51, -228,184, 55,156, 98, 3,169, 15,131,221, 28,209, 80,172, 60, 8, 72,202,118, 84,185,162, 72,187,136,220,235, 9, 63,117,102,135, -220, 17,187,236,131,213,232,198, 20, 87,191,157, 76, 40, 38,175,247,107,254,250,253, 96, 93,126, 48, 23,173,126, 48,219,197, 92, - 4, 46, 20,238,153,141, 79,162,237, 14,234,161, 34,135,201, 70,246, 23, 62, 65, 8,174,108, 45, 98,130,132,169,174,126,170, 32, -118,217,139,129, 1,228,165, 34,255,210, 39,160, 94, 66,190,246, 55,224, 96,151,123,157,124,197,144, 44,165,174,124, 27, 62,250, - 38,250,141, 10, 95,126, 8,241, 37,250,209, 1,222,203,212,247, 70,202,237,200, 53,112,157,197, 59, 82,179,108,205,254, 97, 73, - 11,210,209,209,153,193,208,153, 45, 98,118, 0,118, 9,226,163,142,240,176, 55, 95,227,237, 76,125, 81,168, 83,101, 18, 28,130, -209, 44,246, 74,104, 0, 48,223, 13, 23, 63,231, 67,241, 76,122,245,203,189,108, 88,167,109,236, 39, 15, 32, 62,128,183,174, 8, - 63,125, 78,120, 58,114,126,152,185,172,202, 53,194,209,239, 40,241, 75,167,147,213, 91,219,169,173, 21,142, 5, 98,134,151, 9, -210,205,140,124,125, 79,255, 56, 34, 95, 56,131, 87,122,226,207, 92,210, 29,149,139,111,236,157,144,104,113,194,234,167,191,108, -156,183, 69, 87, 15,121,106, 69, 73,219,173, 53,225, 88,219,195,183,172,118,132,116, 91,144,243,153, 48,116,200,147, 10,207,110, -225,149,167,208,253, 37,232,190, 68,248, 55,254,123,194,223,251, 67,244,208, 33, 59, 19,205,233,180,138,204,234,221, 64,151, 2, - 93,244, 47,146, 27, 43,109, 67, 50,228, 99,121, 26,126, 80,182, 36,173,211, 63,113,194,232, 14, 62,185, 89,212,240,101, 3,249, - 88,185,227, 84, 57, 77, 29,116, 1,220, 26,116,177,218,156,138,114,199, 15,109, 63, 84,208,181,103,207, 91, 49,150,174,175,163, - 58,162, 54,251, 20,161,101,116, 71,183,154, 37, 87,191,183,159, 67,151,236,241,246,122,212, 13, 15, 94, 22,101,123,243, 24,207, -155,188,239,178,185,180, 54,132,224,213,246,180,233, 92,149,150,196,229,197,100, 41, 36,196,158, 11,132, 81, 5,157, 43,147,159, -145, 89,197,206, 80, 17, 7,244,216,103,174, 84, 22,164,234,150, 77,166,136,229,107, 96,128, 29,109,197,112, 43,218,188, 35, 52, -165,183, 18, 36,179,243,177,244, 56,207, 11,194, 52, 72,132,190, 51, 65, 97,206,238, 44,240,229,200, 38, 66, 85,182,188, 8,217, -128, 98,238,132, 4,109, 83,208, 44,209, 48, 44,144,154,144,210, 26, 68,228, 59,242,160, 38, 96,140,169,179,221,184, 8,115, 41, -140,243, 76,158, 70,247,214,215, 69,240,216, 62,104, 33, 8,244,189, 23, 31,171, 40,205, 10,206,234, 3,115, 75, 86,236,251,158, -216,155,154,126,154,102, 71,242,138, 49, 11,220,163,170, 57,175, 29, 64, 91, 47,137,119,220,206,124, 15, 33, 46, 48, 24,221,236, -224,106,243,150,139,239,252, 84, 54,150, 59,143, 60,197,252,153,109, 36,110, 26, 8, 97, 8,194,217,238,140, 28, 34, 55,227,200, - 52, 30,172,216,241,203, 95,162,189,118, 5,152,243,236,142, 5, 93, 53,184, 27,203, 96, 69,125,165,146,109, 4, 47, 6, 38,210, -220, 50,225,179,157,213,169,115,241,236, 54,171, 93, 73,242,231, 3,242, 52,192,147,100,203,198,138,161,245,230, 76, 61, 40, 53, -154, 82,122,210,150,188, 38,148, 98,172,217,185, 63,163,140, 7,179, 64,212, 66,223, 71, 66, 85,152, 71,170,147,150,196,167,219, -182,254,142,116, 81,136,234, 24,217,224,187,176, 16,172, 63,143,220, 0, 0, 32, 0, 73, 68, 65, 84,152, 84, 56,150, 74,214, 74, - 23,236,247,228,124, 71,236,122,226,237, 11, 95,222,218, 44, 76,187, 1, 57, 23, 68, 39,123,241,207, 34, 50, 84, 56,219,217, 15, - 54, 43, 66, 36,188,209, 35,175,245,254, 41,206,112, 17,209,210, 33,227,228,251,233, 22,150,110,249,166,114,105,114,109,149, 98, - 41, 56,179, 80,111,205,132, 93,159,101,171,234,206,253, 22, 60,100,116,159,151,169, 6,135,138, 78,106, 10,167,206, 25,208, 55, -138,220, 55,101, 44,147,117,238, 4, 65,179, 34,179, 34, 15, 2, 97,223,193, 31, 78,132,159,233,225,157,119,224,230,104, 35,137, - 90,237, 50, 47,163, 83,227, 58, 11,184, 9, 17,174,127, 31,253,110,133,235,132, 60, 78,176,127, 1, 31,205,232,251, 19,245,106, -102,174,166,143,200, 77,168, 83,237,210, 78,219, 76,233,134, 14,246, 66, 63,138, 29, 84,125,128, 65,148,212, 7,194, 27,157, 97, - 79, 85,109,250,127, 85, 40,199, 74,222,120, 51, 83,180,131, 42,103,150, 72, 89,201,141,254,102, 21,232, 92, 44, 44, 38,119,172, -105, 88, 85, 86,153,154, 36,208, 55,145,139, 39,232,167, 50,241,123, 59,250,167, 51, 23,243, 72, 95,109,106,112, 88,224, 78,171, -162,167, 29,216, 30, 69,204, 88,132,235, 0, 59,148,238,233, 68,248,131, 61,221, 89, 7,159, 78,240, 86, 71,204,231,244,183, 10, -239, 29,144,169,176, 15,107, 8,143, 21,175,174,120,175, 27,160,217, 73, 96,138,156,164, 81,137,223, 26, 85, 97,138,208,205, 74, -188, 45,212,243,140,220,102,228, 22,208,143,140,125,208,125, 30,222,122,139,240,107,255, 62,250,223,222,194,207, 38, 35,180, 29, - 42, 57,183,253,235,170,118,223, 66, 93, 6,177,209,252,220,146,189,234,157,192,150,192,194,180, 61,193,190,254, 36,252,166,167, - 46,182,220,162,182,207, 44, 62, 54, 21,223,109,223,197, 97,110,215, 18,150,165, 46, 75,236,235, 6,127,115, 2,159, 49, 58,164, - 15,119,253,114, 54,122,156,250,200, 93, 28,122,181,118,236,139,210, 88,194,162, 36, 95,173,242,118,168,246,254,231,230,170, 76, - 85, 40,190, 19,173,122, 39,232,165,178,229,161, 46, 5, 69,217,118,160, 77,216, 25,214, 11,173,180,247, 58,250,238, 72,155,207, -219,173, 94,193,236,113,147,194, 88, 42,217, 3,176,114,179,104, 57,146,205,239, 36, 99, 53,180, 68, 52,245,239, 95,130, 11,197, -132, 89,124,188, 95,219,254,222, 5,167,209, 51, 49,170,249,154,205, 52,148,172,187, 78, 25,205,213,163, 93, 87,177, 89, 8,137, - 48,116,238,106,169,126, 49,182, 66, 84,209,208,118,197,193,131, 86,100,249,122, 43, 70,214,254,121, 11, 27, 65,130, 79,250, 92, -208,165, 74,205,117,141,153, 77,182, 87,143, 41,217, 36, 13,152, 75, 49,165,247, 52,218, 69, 94,171,231,139, 87,247,129,251,192, -172,235,237,253,119, 81,100,187,216,150,139,212,239,231, 46,245, 12,195, 14, 66,100, 30,109, 74, 33,209, 21,231,117,182,239,211, -211, 53, 55, 50, 96,179,197,185,125, 13, 49, 13, 0, 14, 14,211,141, 57,109, 83,197, 45,222,214,214,241,171,200,114,226,180,255, - 21,163, 1, 96, 68, 96,151, 18,195,238,140, 41, 4,174,111,175,169,243, 76,148, 96, 40, 96, 47, 17,171, 4, 74,201,228,226,190, -114, 79,124,195, 67, 93, 8,193,190,108, 12, 27, 82,156,117,231,179, 86,166,155,107,202,120, 68,106,117, 77, 64,178,245, 71, 12, - 14, 4,210,101,133,150,194,127,244, 6,204,123,216,223,160, 31,102,248,221, 11,248, 63, 59,120,119, 34,228,137,110, 63, 26,138, - 50, 86,166, 16,184, 21,203, 74,215,121,166, 74, 71, 14,137, 58,103,186, 24,169,177, 67,166,105,121,177,178, 38,227, 94, 43,164, - 82, 9,169, 50, 96,251,167, 40, 32, 73, 40, 33, 80,106, 37,182,180,162,222, 71, 79, 53,210,237, 6,250,121,164,203,217,121,186, - 9,238,157,193,189,206, 72,100,231,103, 72,159, 45,212, 96, 82,120,212, 59,201,202, 78, 99,217, 5,179,139,197,100,251,119,173, -182, 5, 75, 59,100, 31,144,161,160, 23,238,113, 74, 88, 18,219,117,134,155, 74,185,202,112,116,142,187,248, 40,221,253,148,122, - 44,102,163,107,106,197,132, 93,246,131,239, 18,198, 66,185,205, 72,141,132,183, 58,240, 8, 82, 28,154, 98,164, 23, 59, 96,195, - 89,130,144,145,127,253, 19, 80,238,155, 56, 78,171,217,215,202,108,197, 7, 45, 93,229, 77,235,183,175,247,240, 61, 53,107,221, -160,232,143,103,248, 81, 70,127, 52, 81,110,103,227,186,155,110,143, 17,155,190,132,118, 99,232,234,201, 78, 54,245, 50,123, 79, -187,220, 3,116, 5,186,243, 72,120,173,131,157,183,201, 79,103,234,209,187,202, 96, 69, 75,112, 27,210,178,131,212,187,233, 86, -126,104,139, 43,225,179,154,160,112,242,253,139, 84, 83,246,235,193,120,253,225, 53,120,188, 39,188,181, 35,188,123,228,252,122, -226,126, 54, 93,225, 81, 78,119,180,114, 71,188, 86,212,132,123, 83,128,171, 32,116,185, 18, 62,152, 8, 95,187, 37,158, 9,188, -181, 67,222,222,145,126,193,235,130, 15,143,200, 33,115, 76, 54,205,136, 97,221,142,212,176, 65,183,202,102,191,168, 39, 13,204, -199, 46,188, 18,160,238, 51,117, 95,136,185,192, 62, 65,126,110,175,123,247, 26,200,125,194, 95,249,139,232,255,250, 55,209, 23, -230, 91,215, 98, 22,206,188,181,216,137,251,165, 27,229,207,217,250,169, 42, 83,222,172, 49,218,250,187,222,233,142, 27, 99,122, - 51,126, 80, 62, 14,147,183, 67, 95, 92, 21,191,134,175,148,176,109,242,117, 81,114,181,215, 60, 87,159,232,213,109,215,189,190, -102, 77, 45,215,184, 4,205, 51, 95, 89,215,122, 45, 52,165, 46,157,241, 93,125,128, 3,173, 48,166, 58,190,167, 77, 94,232, 76, -165, 50,185, 60,165, 16, 9,162,116,161, 82,171,186, 15,126, 19, 12,162,235,183,216,194,129,182,239, 99,227, 19, 76, 77,112,231, - 35,210,165,106, 68,137,181, 34,161,105, 6,132, 89,132,169,218,247,209,178,230, 23,207,122, 93, 71,181, 13,151,159, 17,170, 8, -157, 88,160, 80,221,168,186,181,182,181,139, 3,108,157,120,102,117,141, 17,206, 12,230, 99,223,108, 37, 64,234,145,100, 80,147, -128, 43,184, 53,155, 39,218, 71,229, 75, 64,149,119,151,161,133, 1,249,104,186,170,175, 53, 54,249,231, 77, 24,183, 92,236,222, - 0, 68, 49,176, 77, 3,142, 5,223, 51, 75,176,241, 51, 33, 81,197,246,197, 69, 33,231,153, 60, 79, 80,243,130, 48, 93,119, 56, -130,148,130,164,100,148, 60,103,128,200, 73,218, 81, 88, 70,241, 73, 2,195,176, 35, 14, 61,199, 92,200,121, 38, 4,219,215,235, - 60,155,142, 43, 37,234, 56,218, 62, 60,218,121, 41, 77,119,224, 48,155,232,239,107,169, 45, 29, 45,218,179,181, 88, 26,101,137, -222, 93, 32, 5,219,108,244,118,161, 7,103,178, 32, 12, 41, 17,186,142,155,156, 57, 28, 15,224,104, 87,137,209, 83,250, 10, 37, - 59, 30,214,167, 17, 18,215,231, 90,189,112,176,232,214,206,128, 67,110, 91, 45,185, 50,229,137, 50,142,148,146,237, 30, 86,161, -150, 66,150, 98,144, 51, 57, 77,198, 11, 64,226,193,111, 26, 56,165,190,135,188,249,159,195,103,254, 30,252,177, 9,190, 61, 32, - 95,191, 64,190,115, 78,250,104,102,120, 54,115,185, 31,185,159, 11,207,146,114,211, 23, 74,151,208,216,145,210,206, 59, 22,179, - 99,148, 90,201,146, 40,209, 84, 90, 85,102, 38, 81, 58,181,125,131,198,134,218, 19, 68, 51,177, 88,114, 91,223,153, 40, 33, 6, - 65, 14, 19,253,229, 64, 87, 38,122,177, 86, 95, 46,206,145,221,206, 60,206, 82,140,253,156, 3,114,123, 64, 59,123, 72, 92,253, -101, 7, 74,209,149,136, 82,163,237,159,230, 10, 41,161, 15, 6, 27, 29, 93,143,232, 7,123,235,186,167,140,142,149,122,171,246, - 6, 84, 19,204,145, 2,225,194, 2, 39,202,213,108, 7,211,130, 35,179, 17,101, 80,108,122,208, 69,187,244, 71,251, 59,234,211, -137,240,102, 66, 30, 69,120,233,115,192,217, 31,215,234, 30,248,127,177,131,207,188, 3,123,167,211,213,217, 58,116, 29,157,177, -217, 65,234,161,255, 50,148,223,131,169, 32,207, 20,254,244,206,138,150,167, 51,250,124,164,220,204,228, 99,177, 45,129,159, 73, - 73, 76,140, 83,155,224, 40,216,222, 50,134,213,122,214,162, 31,131,119,234,157, 96,138,247,123,201, 94,131,171, 66,125, 62, 83, -246,133, 41,251, 78,178,200,178,119, 92, 15, 79, 59, 72, 75,221,144, 30,117,211, 77,183, 25,237,114,177, 31,237,245, 45,183, 16, -118,160, 15,225,242, 3,120, 59, 19,238,247,244,221,145,243, 99,161,235, 44, 55,160,212,230,180,216, 40,184,155,237,164, 29,218, - 5,142, 1,110,147, 48,236, 11,225,253, 3,242,176, 39,156, 39,120,144,144,207, 12,116,163,243,170, 63,130, 48, 22, 38,191,216, -131,216,248,183,137,232, 66, 16, 82, 16, 75,223,219,142,141,221,222,180, 37, 69,182, 93,106, 41, 16,143,217,224, 71, 55,189, 65, -129,242, 55,129, 47, 26,180,232,209, 63, 71,248,245,255,131,250,215,158, 89,246, 80, 88,193, 45, 86,114,110,152,156,117,213,175, -137,191, 95,125, 88,117,202,101,227,183, 95, 92, 85,156, 70,188,173,223,183, 95,116,133,213, 67,231,174,208,149, 60, 23,169,193, - 10,211,192,202,133, 95, 44, 65,155,113,100,105,169,101,117,189,247, 91, 33, 39,185,145,181, 60,168,198,119,226,213, 47,219,186, - 20,129,250, 19,139,164,101,197, 32,178, 8,238,106, 27,138,251,251, 61, 58,230,193, 87,245, 4,132,206, 59,183,105, 73,118, 51, - 78,122,254,216,110,245,227, 49,181,230,217, 14,248, 18,111,243, 26, 42, 9, 93,236,123,206,141,244,208,159,122, 2,161, 41,205, - 23, 93, 54,187,224, 38,249,242, 53,100, 64, 93, 3,176,186, 40, 52, 8, 73, 2,153, 96, 17,160,178, 38,159,213,106,211, 75,235, -194,237, 97,201,190,126,144, 54, 98, 14, 98,163, 48, 23, 88,202,202, 39,181,188,245, 90,214, 78, 83,130,167, 72,174,130, 79,196, -199,224, 33, 46,113,170,108,166, 53, 65, 44,102,184,233,180, 36,246,246, 62,214, 21, 41,216,210,246,170, 4,230,121, 98,158, 39, -239,208,213, 3, 82,140,254,103, 49,163, 38, 20,211,152,124,175,172, 39,122,149,101, 22,231, 98,206,174, 55, 50,157,198,200,124, - 56,218,186,184,235,200,174,254,151,198, 2,152,103,223,119,219, 97, 22,155,171, 69, 65,106, 65,186,206, 59,251, 66, 12, 22,149, - 90,169, 86, 68,181,168, 87,239,108,108, 66, 32, 43,163,221, 9,112, 54,149,240, 85, 67, 8,212, 24,217, 79, 35,101,158, 22, 33, -158,196,232,133, 77,166,228,201, 5,114,155, 41, 37,235, 24,201,196,127,137,110, 24,144,126,160,148,194,148, 39,230,105, 50,207, -125,201,110,163,147,211,216,228, 45,143,162, 37, 44,250, 89,156,136, 59,224, 30,240, 42,196,255, 18, 30,252, 16,249,242,223,129, -159,251,159,225,159,121, 23, 94,222,194, 7, 17,249,127, 7,194, 87, 47,121,229,247,247, 60,248,241,145,219,219,145,167,103,145, -151,231,231,148,148, 12, 8,147,122,251,248,141, 35,104,101,154, 45, 90, 48, 71, 53,152,134, 31, 21, 83,181, 75, 37, 69, 19, 42, -149,224, 10,108,236,197,175, 83,165, 83, 69,135, 1,158, 31,153, 52, 64, 55, 64,183, 67, 94,102,226,152, 9,181, 32,146, 9,211, -104,240,146,115, 80,153,225, 92,144, 55,122, 52, 5, 36, 76, 54,206,232,173, 75,151,108,187,118, 8,232,141,162, 31,102,234,187, - 35,243,213, 76, 61,102, 51,253, 91, 0, 51,210,131, 68, 27, 77, 74,173,212,234, 7,154,143,181,151, 64, 7, 31, 71,114,163,132, - 2,225,205,206,148,242, 25,234,143,103,202,251, 19, 97,215, 17,191, 28, 76,129,127,163,200,220, 66, 97, 34,188, 3,242, 39,223, -128,124,223,118,233,181,218,101, 87, 71,155, 99,203,224, 51,187, 47, 65,255, 69, 56,252,109,120, 89,224,162,131, 55, 7,184,154, -145, 39, 25,125,154,169,215,153, 50, 25, 29,174, 41,124, 61,209,150,226,137,123, 65, 44,246,213,138,126, 37,185, 48, 46, 5,207, - 77, 23,232, 37, 16, 31,154, 53, 11, 5,189,206,212,103,133,114,240, 4, 52, 87,164,235,162, 8,150, 53,132,196, 59, 62,241,139, - 60,250,101,210, 58,249, 50, 41, 58, 42, 50,123,142,183, 96,220,253,250, 4,226,219, 72,255, 0,125,109, 36,188,217, 19,223,235, - 56,223, 23, 46, 10, 28, 61,121, 77, 54,130,182, 46, 8, 26,117,201, 1, 87,177,130, 99,246, 3,255, 44, 40,233,101, 37,124,255, - 64,191, 19,248,210, 37,114,127,128,207, 7,186,217, 23,184,207,143,132,177, 18,211,218,177, 53,203, 92,240,177, 91, 12, 45, 45, -107,205,239,145,141,141,187, 93,172,110, 85,166, 30, 42,229,118, 38,125, 56,160, 31, 78,200,197,223,130,248, 73, 24,190, 0,115, -143,124,233, 83,200,163, 23,232,143, 39,100,103, 54, 45,241, 48,165,150,134,189, 44,125,151,221,116,181,194, 75,238,112,244,117, -147,154,229,157, 82,235, 60,150,162, 64, 86,187, 14,117, 19,238, 34,156,192,105,116,177,116,121,184,146, 3, 74,244,174,225,169, -229, 90,215,182,115, 85,138, 46, 81,110,158,251,108,239,111,192,226, 52,139,174,113,146,170,119,109,115,178, 57,175, 90,191,212, -246, 3, 77,205,111,234,229,193,247, 19,147, 23,121,109, 39,154,125,218, 96, 25,236,235,197, 89,221,251, 92, 89, 95, 63,217,236, -206,219, 89, 89, 8, 11,114,247, 36,217, 66, 21,159,220, 26,132,178,138,235, 82,170,191, 30,234,154, 32, 49, 16, 77,169,203, 8, - 62,122,204,111,241, 28,139,224,133,109,241,244, 74, 75, 59, 50, 91,110,168,153,144,231, 37, 30, 88,154,189, 82,140,117, 63, 78, - 6, 26,145,104,239, 9, 33, 17,130, 41,167,181, 89,190,100,179, 8, 49, 68, 29,177,235, 61, 93,175,248,206,216,157, 56,110, 71, - 19, 54,158,205,102, 33,107,115,142,170, 11,217,206, 46,110,123, 40,151,240, 16,116, 29,107,187,232,121,158,102,230,105,180,251, -192,199,237, 91,241,157,180,226, 36, 37,202,220,192, 49,110, 21, 91,132,188,222,240,133, 64,215,117,244,253, 64,232, 59,142, 57, -147,231,217,186,218, 16,208, 89,109,245,219,245, 6,228,241,137,174,249,245,173,144,180, 26,182, 24,122,188,165,190,121, 65,169, -234,152,229,166,149, 73,209, 4,123, 13, 34,227, 1, 80, 1, 83,221,199,174,183, 2, 10, 37,249,250, 98,156,103,131,192, 56,120, - 71, 60,198,120,158,103,242, 60, 90,227,184, 20,169, 97,227,172, 49, 28,108,140,137,216, 15,182,130,158, 38,166,227,129,121, 58, -218, 26, 65,218,132, 76, 78, 48,208,252, 68,190,196,106,255, 76,242,225,159,128,123, 95,128,238,179, 16,223, 66,229, 13, 8,191, - 4,225, 87,161, 87,228,193, 15,224, 19,127, 11,190,244,219,112,245, 28,253,214, 5,241,127, 59,231,254, 63,158, 57,127,145,120, - 92, 18, 55, 73,216,239, 6,198,190,163, 28,143,148, 58, 19,242,100,111,172,216, 88,201, 66, 20,140,232,149, 69,136, 18,173,163, -204,133, 73,205, 82, 39,126, 1,132,169,112,126,121,193,144,206,209,253, 51, 36, 14,132,112, 15, 61, 84,166, 81,169, 7,165, 79, -129,238,246, 64, 55, 30, 56, 79, 66, 26, 18, 81,133, 24, 10,225,195, 9,162,169,214,229,237,138,124,242, 12, 46,146, 29,120,199, -138, 94, 85,202,211, 76,253,254,129,195,213,145, 43, 9,148,110, 71,234, 33, 81,232, 37, 19, 45, 93,216,171, 88, 91,136, 73, 10, -132,251, 3,220, 90,199,154, 58,150, 28, 99,201,106,182,180,217,214, 10,225, 81,103,252,231,171, 66,254,222,209,168,125,159, 31, - 8,175,184, 12,252,104, 45,177,124,241, 12,238,189, 99, 70,114, 81, 23,197, 29, 13, 50,163,254,161, 79, 3, 12,127, 6,234,143, -225,240, 3,248,102,129, 79, 14,166,254,127,126,139,190,152,168, 55,153,114,156, 25,139,217, 6,219,126, 46,184,192, 40,109, 46, -159,118,113, 5,223,163,167, 32,116,161,218,255, 86, 8,187,128,220,235,221,107,175,150,122,118,147,201, 69, 77, 36,215,118,161, -106, 32,148,176,209, 87, 45,143, 92,109, 51, 18,161, 95, 38,106, 62, 82,174, 78,213,205, 25,210,193, 14,154,239,127, 3, 62,247, - 16,194, 99,184,124,134,188,209, 17,239,119,156,189, 24, 57,175,112, 83, 76,108, 52, 97,187,212,182,251,236,116, 69, 73, 46,121, - 37, 30, 29,124, 91, 97,151, 11,241,106, 38,127,127, 34, 61,152,224, 51,150, 29,192, 23,206,237, 98,255,142,194,139,153,144,179, -141,118, 13,118,215,226,182,236,188, 9, 38,248, 59,129,114,132,245,210,148,205, 69, 81, 34,212, 92,168, 87, 51,250,116, 66,190, -113,134, 94,124, 15,145,255, 10,230, 95,131,240, 0,250, 55, 8,127,225, 12,254,139, 35,241,211,174,206, 86,221,216,202,238,254, -167, 46, 4, 58,145, 21,152,115,162, 92, 63, 13,173,244,234, 62,178,196,180, 4,124,236,104,130, 39,238,140,188, 33,248, 72,189, - 46,138,246, 86, 64,157,100,160,123, 14,145, 44,186, 10, 79,227,162,154, 86,164,157, 93,101, 5,116,108, 25,246, 77,172, 28,219, -107,187,116, 67, 27,241, 88, 19,118,105,245,194, 74, 23, 11,230,174,237,211,117,189,208, 75, 53,198,211,194,199,103, 85, 44,175, -119,214, 38,176, 69, 88, 44,137, 34,107, 87, 42, 85, 23,186,156,184,111, 60,122,161,155,213, 92, 22, 89,149, 94, 42, 29,149,178, -241, 60,154,157,183,122,168,203, 10,180,105, 1,142,109, 29, 82,138,241, 52,250, 70,137, 43,153, 90,178, 91,248,100, 17, 4, 6, -177, 46, 80, 67,103,202,123,218, 14, 54,227,158, 37, 98, 10,148, 26, 29, 61, 26, 60, 25, 44,184,157, 78,168, 46, 98,147, 16,109, -207, 92,178,237,212, 67, 92,133, 95, 98,221,191, 46,194,200, 86,166,132,197, 43,174, 34,148,146,109,132, 92,117, 5, 85, 5, 79, - 15,115, 79,250, 60,102,166,241,136,214, 76, 45,142,111,221, 20,107, 11,197, 48,117,246,207,180, 56,211,221,139, 61,223, 53,203, - 18,150,147,232, 58, 19,199, 21, 96, 26,237,146, 76,187,222, 38, 76,213, 34, 83,107,223,145,247,123,175, 75,130, 79, 3, 32, 23, - 11,205,137,193, 20,249,101, 89,139,232, 34, 26, 53, 58,173, 39,241,165,232,238, 12,221, 20,178,129, 46, 70, 82, 99,177,187,112, -173, 8, 20, 87,223,199, 16,189,216, 10,228,134,117,157, 39, 23, 17,234,146, 64,103,231, 70, 88, 66, 39, 36,216, 10, 96, 42,133, -121,191,247,232,216,188,234, 26,126,146, 53,117, 51,210,210, 45, 85,114, 19,178,147,202, 47,127,141,240,137,175, 33, 95, 72,240, -115, 17,249,147, 3,188,125,142, 62,122, 0,221,231, 64,126, 5,228, 95,129,240, 87,225,236,219,200,227,191, 1,159,251, 26,250, -143,119,196,175, 92,112,249,245,204,249,115, 24,199,204,129, 61,199, 62,112,211,247, 4,157,157,225, 43, 12, 82, 25,164, 46,123, -233, 54, 82,202,197,132, 38,227,146, 71,108,135, 73, 42, 74,188,247, 10, 90, 59,142, 53, 18, 46, 31, 34, 50, 80,247, 7, 38,141, -148,144, 97,156, 97,154,185, 8,194, 69, 12,156,107,165, 11,137, 46, 36,250,155, 66,156, 15,196,151,145, 48, 59, 13,227, 97, 71, -221, 11,220, 84,244, 22,244,166,146, 75,101,127,185,227, 56, 43,181,206, 70, 22, 14,137,210, 91,186, 90,157, 51,177,181, 36,206, -108, 15, 40,177,183, 17,229, 33, 55, 88,139, 34, 73,136, 41,160, 89,225, 96,173, 93,120,188,131,203,153,242,193, 76,249,246,193, -108, 97,159, 30, 8,111, 12,240, 40, 34,143, 35,188,246, 10, 76,131,117,171, 57,175, 4, 57,205, 6,148, 9,201,194,102,244, 5, - 28,255, 71,120,118,133,126, 15,228, 47,247, 86, 8, 60,155,225,186, 82,246,153, 50,155, 10,187,141,146,183,108,243, 70, 66,146, - 85,139, 98, 58,160, 69, 32, 23,216, 73,101,168, 74,188,236,144, 55,147,157,188, 71, 69, 95, 22,244,214,172,108,217, 51,215,205, -230,100,251,216,237, 90, 71,188,149,213,184, 9, 24,241,139,183,110,119,189, 69,208, 89,145,238, 96, 99,214,255,103, 68, 30,125, - 23, 94,255, 60,114,126,134,190, 62, 19, 94, 31,232, 62, 24,185, 87,102,110,146,121,214, 75,216, 72,149, 55,177,144, 33,108,146, -192,144,101, 58, 48, 2,105,159, 9, 47, 39,226,247,142,112, 25,144, 55, 35,188, 50, 32, 63,171,164, 12,212, 35, 50, 9, 33, 87, - 56, 22, 66,217,140,182,195,186, 58,168,245, 52, 79, 90, 54,169, 86, 49,174,246,190, 82,149,112, 51, 17,158, 38,210,144,224,172, - 67,245, 91,200,107,255, 3,236,126, 13,244,179,132, 95,253, 3,226, 95,191,161,222,204,164, 11,239, 52,239, 36, 54, 75, 93, 69, - 60,218,118,232,213, 61,206,149,141,222,117,211,180,111,130, 48, 52,152, 7,120,233,218,117,133,206,212, 37,166,204, 21,222,146, -144,133,179,238,107,113, 49,210, 97,109,136, 54, 87,168,171,235,120,162, 4,230,160,230,131,174,167,249,237, 45, 49,107,123, 16, - 45, 7,229, 86,125,200, 42, 54, 92, 47,223,150,203,237, 62,240, 22,190,225,226,170,162,106,251, 96,214,189,252,228, 54,199,186, -233,245,215,194, 69, 61,160,101,197,213,202, 29,174,190,110,230,242,226, 33, 63, 17, 39, 24,218,199,192, 72,132, 33,218, 69, 31, - 33, 87, 11, 46,169,139, 48, 78, 79,173, 97,178,249,187,219,168, 61,117, 72,215, 33, 82,137,197,199,171, 45,254, 86,172,120,137, -254, 1,205, 93, 79,137,253,226,102, 56,177,164,210,242,187,157,104, 23,182,209,167, 38,158, 82, 49, 30,124,168,230, 52,145,212, -249,106, 33, 44, 19, 23, 33,248,106, 32, 26,132, 69, 51, 90,149, 89, 29, 37, 44, 45,215,188, 44, 83, 24, 17,199,102,167,184,136, - 2,231, 82,152,199,131, 39,232, 21,143,148,245,120,215, 38, 8, 83,247,163,151, 12,185, 88,183,141,241, 58, 44,148, 68,151, 91, - 74, 82, 36,245,157,197,142,118,137,113, 46,204,243, 76,151, 34,221,112,198,205,225, 96, 13,202,176,227, 56,155, 32, 47,248,133, -169, 33, 88, 65, 83,138, 17, 16, 99, 90, 43,254,150,190, 38, 44,151,110,155, 24, 46, 84,101,145, 69,195, 16,188,176,153,107,117, -251,157, 21,197,154,243,210,157, 35,230, 92,152, 91,192, 78,105,197,207, 50, 66, 91,246,221, 49, 69,170,123,207, 75, 41,148,105, - 50,198, 64,206,139,117, 72,183, 46,146, 45, 77,242,206,133,126, 2,196,218, 8, 85,227,191,124,214,253,181,253,135,194,248,213, - 74,254, 7, 21,253,155,153,240, 55, 70,248,219, 55,132, 63,252, 33,114,241, 91,112,254,191, 64,255,155,144,246,144,190, 12,231, - 63,134,199, 19,250,250, 61,244,205, 14,121,116, 78,247,226,150,179,195,200,133,118,236, 36,209,213, 66,212, 66, 39,149,115,102, -118,193, 60,155, 65,203,134,102,101, 97, 14, 83,179,198,248, 8,169,203,149,203,159,254, 34,212,217,146,125, 30, 63,164, 30,142, - 86,105,157, 13,132,156,153, 15,183,140,227,136, 6,167,210, 53,188,101, 12,212, 46, 49,135,200, 52,103,226,205, 12, 47, 50,250, -222, 4, 79, 38,180, 56,209, 36,155,177, 37,136, 61,104, 34,221,134,117,239,248,131, 46,185,183, 50, 34, 73,168, 53,112,123,176, - 74,173,195, 86,224, 22,174, 97, 84,169, 24,132,112,110,190,110,125,225, 73, 64,175,245, 11, 20,142, 99, 69, 62, 40,132, 93,135, -124,170,135,159,234,225,222, 39,236,123, 41,142,130,229, 22,230,201, 91,178, 1,226, 61,232, 94,129,233, 43,176,255, 54,124,173, -194,187,138,252,211,247,225,102, 66,127, 56,162, 31, 29, 41, 31,140,204,135,204,193,116,122,107, 46,247, 86,179,233,159,253,216, -118,232,126, 25,117,209,224, 45,231, 65, 57,139,145,254,237, 29,241,139,231,200,121, 66, 95,102,202,119,143,204, 79, 38, 14, 69, - 57, 98,107,252,169,220, 25,221,222,137,122,144,150,209,236, 54,144, 62,153,150,240, 60, 5,210,235, 59,194, 39,118,240, 40, 25, - 79,127, 62,194,255,125, 3,243, 1,249,236, 3,255, 91, 70,228,186,160, 79, 11,220,102, 70,207, 10,216,122,226,171,255, 44,166, - 94, 54, 1, 75, 39,226,187,240,166,236, 55, 58, 97, 44,237,176, 14,112, 30,225,178,243,220,122, 65, 70,204, 86,216,155,205, 43, -228, 6,131,193, 5, 49, 43, 30,180,110, 70,244,219, 32,152,200,218,125, 74,109, 35,122,227, 97, 75,142,182, 63,120,244, 17,114, -246, 24,194, 47,192,229,119,144,219,103,212,223, 25,225,210,109, 93, 91,173,192,146,131,173,167,203,198,205, 88, 88,183,222,121, - 95,178,159,144,230,116,165,214,217,153,180, 22, 59,117, 19,195, 41,193,118,128,181, 49,184,197,133, 91,126, 25,182, 65,115,101, - 13, 61,137, 81, 72, 98,182,163,166,230,109, 49,160,178,137, 42, 69,215,174,120,171, 75,216, 90,234,195,102, 52,111,227,124,241, -233,145, 65,144,186,205,115, 27,197, 40,112,163,174,107,129,236, 19,161,217, 11,170,178, 93, 79,248,247,211,254, 93,145,141,247, -184,129, 30, 37, 80, 52, 80,176, 14, 76,252,189, 77, 98,151, 58, 2,163, 10,179, 36, 52, 6,186, 32,164,100,244,187, 73,132,217, -247,180,219, 52,210,224,207,101,117,192,141,138,160,169,183, 15, 92,158,144, 50, 47,214, 46,189,251,249, 12, 54,206,183,149,165, -141,132, 99,240,113,121,136,214,141, 46, 22, 62, 89, 46,166,208, 28, 9, 62, 46,175, 62,122,246,212, 30,227,178,123,110, 56, 30, -186, 18, 83, 90,226, 98, 45,143,219,186,236,198, 39, 81, 86, 32, 74, 16, 83,124,135,212,209, 13, 59, 19,124,149, 74,174,153,121, -154,108,234, 80, 11, 90,102, 47,222,101,233,140, 5, 75,208, 84,112,251,154, 11, 41,131, 56, 47,189,158, 68, 1,119,253,192,217, -249, 5,221,238,140, 18, 2,227,241,136,214,194,249,238, 12,217, 13, 76,135, 91, 82,236, 24, 67,224,240,242, 5,226,188,117,137, -201,138, 16,143, 33,141,169, 35, 72,112, 77,199,170,111, 88, 29, 45, 94,244, 5, 7,210,176, 22, 46,203, 51,169, 77, 20,111,212, - 73,205,133,228, 54, 67, 21,152,181, 26,228,199,247,223,141, 9,176,157, 60,181,247, 86, 99,103,240,174,105, 34,143, 71,243,154, - 55,229,255,102,213,117,114,161,235, 54, 34,152,143, 29,186,119, 49, 61,233,183, 6, 56,219, 9,247, 68, 56, 87,184, 95, 42,151, -165,114,249,213,137,139,223,135,179,223,136,116, 15,247,132, 47,190, 64,254,249,111,193, 63,117,137,190,254, 0,118,103,200,107, - 9, 36,161,111, 2, 63,117, 6,239, 38,194,243,129,203, 31, 84,206,191,119,203,195,227,200, 94, 51,210,139,117, 60,162, 76,174, -200,156,189, 27,152, 49, 33,123,219, 97, 76,185, 48,164,142,238,141, 55, 56,252,224, 93,194,163,199, 48, 41,229, 56,154, 29, 32, -194,116, 56,144,143, 35, 85,101,209,157, 69,169,198, 53,158,179,193, 45, 98, 71, 25,206,152,242,204,238, 56,123,164,104, 50, 97, - 79,136,104, 12, 72, 10,236,114, 37,234,145,177, 31,152,217,185, 15,117, 66,234,178,168,179,195,172,219, 81, 66,101, 63, 39,142, -115,230,181,243,202,227,168,220, 28,108,151, 30,147, 32, 67,103,252,204,226,169, 89,123, 65,111, 33, 60,238,209,108, 62,119, 57, -239,221, 79, 89,145,123,151, 80,122,219,161,151, 17,244,165, 93,232, 57, 26,167,149,100, 49,176,249,143, 96,255, 61,248, 64,209, -111, 84,228,103,122, 83,243,127,255, 22, 14,230,117,174, 83,179, 70,173,193, 31, 91,212,105,220,220, 12,193,243,128,163,119,183, - 73,236, 82,239, 9,164,203, 68,124,189, 67,238,123, 95,116,101,182,171,130,154, 42,218,187, 88,217, 88,133,164,169,106,239, 76, -142,151, 29,102,216,252,163,246,185,137,234, 56,173, 3,204,217, 2,109,190, 53,195, 47,188, 15,175,188,137,220,127,129,190,221, - 19,223, 28, 24,158, 31,121,176,207,236, 59,155, 18,136, 31,148,113,233,252,214,226, 97,123,169,169,243,126,246, 64,154, 11,114, - 59, 35, 31, 77,164,206, 9, 57,175, 38,139,107,205,144,138, 82,158,143,112, 95, 16,157,145, 81, 41,162,139,122, 95, 93,121, 29, -116,229,180,155,237,104,211, 1,183, 51, 32,249,126,125, 46,148,219, 9,185,138,200,251, 59,120,179,192,131,223,129,244,167, 64, -254, 34,225,215,222, 35,253, 79,123,234,245, 76,119,223,161, 76,242, 19, 6,108, 46, 36,106, 29,116,101,195, 1,192,213,250,126, -249, 55, 74,158,129, 92, 92,237,189,128, 20,149, 26,124, 87, 88,183,170,112, 19,148,181, 75,166,182, 49,165, 10, 53,250,101,173, - 43,132,164, 74, 96,212, 66,170, 78,199,114, 33, 27,155, 68,182,197,239, 45, 56,146, 84,204,230,234, 26, 20, 81, 61, 25,187, 23, -239,234,140,151, 96, 34,164, 78, 3,209, 81,176,101, 97, 8,152,186, 93,151,140,116,219,135,151,230, 79,119,108,109, 92,214, 76, - 62,210,110,194,185, 77,119,223, 64, 63, 85,221,254,185, 28,246,234,194, 57, 43, 48,134, 40, 36, 17,131,237,108,172,121, 57, 8, -115,118, 87,135,199,249, 53,237, 88,243, 90, 55,200, 22, 24,214, 53, 22, 43,113, 74,104,234,110, 89, 96, 52,219, 40,207,162, 30, - 80, 82,143, 36, 31, 31,175, 33, 59,117, 17, 2,106,195,183, 53,209, 74, 16,148, 98,221,164,154,187, 65,156,160, 38,226,192,148, -100,227,248, 42, 88,183,216,246,242,186,146, 7, 91,118,250,106,177,180,142, 62, 4, 33,246,118,161,231,121, 54,149,187, 11,214, - 74,173,214,113,150,246, 76,110,166, 51, 41,217, 51,208, 58,248, 38,156,172, 80, 75,221,100, 24,120, 86,122, 63,208,167, 14, 73, -157,137,198,242, 76, 31, 2,221,217, 25,251,105, 34, 84,165,238, 18,135,171, 43,116,158,221,226,101,163,247,226,246,185,246,255, -115,219, 69,202,221,181,150,158, 88,213, 84,117, 97,111, 44,102,183,170, 14, 65,138,190,158,114,210,161, 7,184, 76, 37, 91, 2, - 93, 93, 71,100, 75,158,253, 70,241, 47, 98,207, 83, 29,143, 20, 95,185,232,182,112,186,139,118,102,227,187,228, 14,228, 81,185, -195,169, 56, 61,120, 83, 44, 48,162, 28,189, 34,254,192,197, 29, 23, 59,191,228,115,229,222,126,228,193,111, 31,185,248,191, 2, -187,179, 91,226, 63,121, 69,248, 87, 47,209,159,127,132,190,253, 8,189, 22,244,252, 1,124,186,194,225, 0, 63,170,132,223,191, -224,242,155,133,139,143,110,169,115, 65, 43,204, 81,152, 98, 37, 39,187,140, 83, 88,105, 82,165,218,161, 54,228, 66,119,255, 33, -250,240, 85,228, 71, 31, 65,223, 51,125,244, 1,211,113, 68, 83, 64,111,111, 40,135, 3, 69, 10,125, 39, 11,215,153, 12,218, 57, - 7,184, 66,208, 74, 37, 48,165,142, 46, 5,130,206, 22,231, 55, 77,208,117, 4, 49,251, 0,131,144,242,140,212,217, 24,248, 65, - 8,201, 44,104,246,154,187,192,166,228, 13,157, 42, 48,206,194,197,195,200,131, 7, 21,125,110,126, 80,233, 65,118,129,250, 36, - 55,101,154,165,126,160,200,121,103,241,160, 95,216,193,167, 6,248,116,132,238, 1,228, 9,116, 2,110,236, 98,159,226,218,170, -197, 11,208, 27, 24,223,135, 15, 3,188,155,225,122,134, 63,123,110,139,223, 27,171,104, 52,219,127,215,182,235,194,201, 86, 27, -117,116, 59,144, 9,206,170, 22, 76, 36,215, 58, 18, 49,144, 75,188,236,144,183, 7,203, 0,205,106, 57,239,179, 90,166,140,195, - 90, 90, 12, 98,139, 37,213,159,176, 6,222,142,249, 83,104, 93,172,156,206, 61,125, 88,174,207,179,217, 41,223, 8,240,213,151, -200,159,125, 8,195, 61,228,205, 76,248,116, 38,125, 52,114,241,254,158,251, 69,153, 35, 28,252,176,109,227,193,184,233,226,156, -254,184,156, 79,179,147, 41,227, 12,247,174, 51, 97,152,145,120, 36,246, 64,119,110, 62,252,183,123,194, 92,224, 91,192,149,141, -165, 19,153, 48, 87, 27,189,183,213,169,172,151,168,110, 88,236,225, 78,135, 29,218, 94,238, 88, 41,177, 16,110, 38, 98,223,193, -203, 8,211, 19,184, 60, 64,252, 37,120,237, 93,210,191,243, 27,148,255,244, 37,220,247, 11,174, 29, 40,245,227, 94,115,101, 19, -213, 26, 54, 99,185, 59, 5,213, 66, 79, 91,118,134,235, 31,169,158, 95,223,130, 75,140,127,190,170,115,219, 78,113,251,245, 84, - 54,142,204,106,201,138,133, 74, 9,234,240,186,181,227,180, 2, 65, 23, 56, 80,113,116,235, 18,146,177,249,118,215,128,185, 53, -159, 58,168,144,168,116, 42, 30,184,178, 22,111,217,157,144,213, 23, 44, 45, 36,165,104, 93, 5,125, 75,161,105,190,223,206,122, - 93, 8,155,120, 96,214,215, 36,251,246, 60,139,172, 61,115,144, 37,173, 48,110, 10,168, 45,160,101,150,192, 92, 12, 89,171, 75, - 97,228, 5,141,174, 5, 85,241, 76,132,198,170,239, 93, 64, 55, 59, 98,185, 77, 3, 82,155, 54,182,159,177,218,249,181, 20,230, -213, 11,178,205,164,115, 29,157, 55,117,189, 91,228, 84, 23,193,106,187, 80,196,149,243,165, 22,164, 40, 26, 13, 26, 97, 99,239, -108,175, 89,140,132,254,204, 41,147,141, 33, 80, 55,163,228,149, 65,158,115,161, 78,147,137,205, 74, 65,107, 70,107, 94,126,120, - 89, 86,126,178,140,172,107,201,235,110,185, 61, 3,165,249,215,213,221, 80, 66, 55,244,116, 67, 79,232,122, 99,164, 56,188,102, -119,118, 14,169, 99,186,185, 97, 2,198,171, 43,234,254,150,232, 22, 54,109,130,187, 86,117, 71,187,224,107, 45,238, 99,151, 83, - 8,132, 63, 8,182,174, 96, 41,108,218,132, 65,181,161,138,163, 23,101,149, 24, 3, 41, 36,106,136,140,243, 68,157,166,229, 25, - 22,183,204, 89,162,154, 46,145,186, 16, 60, 62, 53, 59, 89,111,187,255,145, 77, 65,115,183,230,144, 19,202,229,233, 34,125,251, - 27,119, 46,245,229, 60,168,202,232,202, 61,193,194, 51,130,171,189,207, 6,225,114,128,135,192,195,121,230,149,127, 52,242,224, - 31, 93,113,246,234, 71,196,191,124, 15,249, 23, 30,162,159,120,149, 58, 93, 34,207, 4,186, 35,188, 38,240, 37, 65,190, 54, 16, -159, 76,240,188, 16,159, 22,250,253,209,162, 88, 35, 28,130, 46,163,137,189,167,145,134,185,112,241,230, 91,196,183,223, 34,124, -243, 27, 76,251, 43,242,225,214, 0,145, 37, 65,153,232,165, 48,196,232,251, 54, 99,196,103, 31,177,198,206, 71,102,170, 46, 9, -154,137,146, 44,231,125,178,139, 93,231, 76,149,142, 16,171,137, 72,250,129, 64,161,159, 50,193,217,146,218, 8, 82,234,202, 46, -177,216,187, 33, 21,230, 16,153,107,101,190, 86,250,207,158,195, 91, 21,253,238,232, 73, 62,254, 33,235,212, 40,117,209,238,235, -120,191, 35,124, 98,128, 79, 15,240,185, 8,143, 31, 64, 57,179, 11, 93,247,118,161, 31,227,102,110, 58,152, 72,110,254,177, 49, -225,175, 20,125, 81,204,102,246,120,128,235,108, 59,122, 15,138,209, 90,151,131,190,113,204,131,172,137, 83,178, 29,233,184, 80, - 40, 96, 35,212, 20,161, 43, 74,220, 5,194,195, 14,121,165,183,155,248, 88, 96,175, 14,185,112,138,220,194,102,112, 25,148,119, - 95, 4, 54, 1, 28, 91,164,232,230, 87, 48, 37,180,164, 22, 79,230, 63,235, 71, 35,220, 22, 27,139,127, 43,195,103,158,192, 59, - 15,225,209, 25,124,166, 16,223, 63, 50, 60, 27,185, 63, 23, 14, 81,150,241,106, 59,200,219,238,115, 89, 45,202, 50,113,180,130, -113,118,189,225, 65,137,215, 51,165, 19,228,195, 64, 56,143,232, 39,119,200,101,132,119,206, 44,207,253, 91,178,100,239,176, 47, -200, 92,220,225,192, 73, 94,178,174,247,235, 58, 46,151,205, 47,127,108,116,172,232,141,194,195,106, 19,152,154, 65,158,194,217, -151,161,254, 21,228, 47,125,155,244,215,255, 46,122,101, 67,153,234, 80,149,117,220,177,225,122,182,139,120,115,161, 47,227,185, - 13,120, 69, 55, 93,109, 3,188, 44,235, 24,117, 95,180, 24, 28,165, 40,139,128,201,192, 72,156,176,217,173,128, 51, 27,149,248, -173, 88, 75,182, 93,186,108, 46,105,101,193,247, 54, 66, 86,241,174,127,205,178,118, 0,204, 9,235, 67, 87, 65,231,146, 2,135, -227, 85,133,206, 79,176,124, 23, 44,227,211,190,153, 53, 35, 94,253, 32, 79,209,236, 74, 73,103,162, 26, 21,179, 46, 29,145,219, -209,252,224,182,112,150,184,120,234, 67,114,123,170, 86, 43, 50,216, 68,148,182,233, 66, 16,230, 90,201, 89,151, 66,172, 52,180, -238, 86, 61,239, 26, 33,245,175, 23,177, 78, 87,100, 9,220, 90, 4,136, 45,237,172, 81,242,138, 43,246,163,239,132,107, 53,207, -186,116, 61,226,209,165,102, 63,247,224,147, 48, 19,139,159,167,218,168,124,237,162,171, 4,103, 93, 20,140, 49, 94,107,241,239, -177, 58,210, 54,152, 71, 58, 88,160, 14, 34, 68, 85, 66,138,150,194,167, 94,168,182,238,126,158, 44, 69,206, 41,113, 11, 0, 39, -156,100,148, 46,187,250,234,133, 67,216,232, 38,212,178,219, 78,170,214,152, 18,221,176, 35,117, 61, 53, 4, 3,205,228,153, 33, - 68, 98, 63, 48,205, 19,135,105,226,120,115, 13,121,118,187, 93, 58,185,148,109, 58,225, 96,154,210,186,225,186,168,247, 37,108, -180, 61,173, 24,212,149,150,160,117,213,149, 7,127, 13, 75, 53, 96, 90,215, 37,164,235, 56, 78, 35,121, 28, 87,241,223,146,167, -238, 54,193,150,173,128, 90,103, 94,243,162,188, 23,130,231,173,215,117, 92,223,166, 73,155,144,169, 53,198,248,244, 30,215,143, - 67, 39, 78, 6, 17, 41,109, 42,231,217, 31,204,134, 79,188,174,150,149, 29, 49, 42,220,135, 17,206,147,112,255, 65,228,126, 85, - 30,223, 76,188,246,223, 60,225,222,111,188, 96,248,165, 15,137,255,246, 99,244,243,143,209,113, 7, 79,177,236,206,135,192,190, -179,125,242,183, 43,241,187,137,248,209, 76,186,206,116,204,164, 14,134,100,129, 49,215,147, 85,164,203,244,181, 98, 0, 0, 32, - 0, 73, 68, 65, 84,221, 91,159, 66, 47,206, 8,199, 3,245,230, 6,166,145, 46,218, 40,174,148, 9,237,130,251,150,237, 69, 42, - 85,201,193,188,238, 45,218, 48,182,189, 97, 45, 6,190, 33,160,169, 51,250,212,156,209,227, 30,173, 29, 49, 38,228,124,135,116, -103,200, 48, 33, 58,195, 14,100, 84,194,172, 54,202,154,109, 87, 18, 99, 36, 45,104,213, 64, 29, 43,245,163,137,244,197,115,248, - 66,103,129, 49,147,121, 49,101, 23,144,179,232, 17,145,129,240,184,135, 47,236,224, 51, 1, 30,222, 71,242, 67,247,104, 31,160, -236, 77, 88,208,102,140,187, 8,221, 25,240, 18,158,237,225,185, 67,113,114,134,199, 14,210,121,182, 55,207,113,239, 31,182,186, - 17, 88, 56, 98, 57,212, 38, 86, 82, 79,254,114,199,156,179,220, 98, 83,190, 11,244, 81, 9,151, 29,225,149, 14,206, 19, 34, 17, - 61,204,166, 6, 44,186, 68,104, 86, 86, 16,159,186, 25,119, 85, 96,234,169, 2, 94,252, 18,111,251, 66, 85, 36, 53, 35,124,179, -207, 8, 60, 47,232, 84,108,219,219, 5,244, 43, 55,200,235,231,112,150,144, 55,123,194, 39, 7,226, 7, 59, 46, 14, 7, 30, 70, -251, 89, 14,229, 84, 49,205,102,239,218,158,231,226,109, 65,244,125,252, 65,148,120, 93,216,133, 25, 25, 2,242,131,128,116, 1, - 13, 3,114,153,224,173,128, 28,109,167,169, 85,208, 50, 81, 35,164, 99, 69, 68, 23,156,107, 83,162, 7, 61, 45, 94,100, 99,153, -146,165,110,177,125,171, 30, 43,210,124, 86, 18,128, 29,132,183,225,254,127, 72,252, 79,190, 74,253,171,239,161,175, 36, 82, 46, -228, 77, 90,239,137, 0,109,243, 1,174, 62,147, 94,185,212,171, 80,238, 46, 99,189,234, 41, 76,166,229,129, 47, 23,157,202,202, -240,223, 72,110,164,173, 30,164,218,122,197, 47,180, 54,246,157,138,109,155, 90, 87, 94, 79, 46,120,150, 11,234, 36,137,109,251, -117, 54,151,123,251,217,162, 40, 73, 34, 41, 8,103,174,135, 24, 91, 16, 75, 83, 80,187, 45,203,124,229,120,220,168,189,240,177, -229, 88,251,110,175, 86, 7,191,232,194,123,114,194,152, 31,254,238,193,110,145,157, 65,117,137, 88,109,148,185,185,108,132,120, - 98,201,121,177,174,170,230,186, 76, 16, 62, 62, 12, 93, 11, 45, 89,180, 44,202,250,223, 45,163, 61, 34, 39,130,168, 22,205,147, -130,123,196,171,225, 65,187,126, 48,238,186, 90, 38, 0, 21, 3,193,164,206, 58,229, 5,103,106, 23,112, 21, 89, 38, 73,170,149, - 16,162,189, 30, 57, 47, 42,137, 16,251, 37,171,214,196,114,193,149,238,213, 88,243, 46,136, 83, 87, 62,169, 43,197,107,198,172, -100, 43,191,109,117, 18,184,202,212,178, 13,202, 70, 48, 18,214,204,242, 69,216,160, 30,220, 3, 49,117,116, 93, 71,140, 29,115, -206,140,199,189,189, 39, 67,207, 62,103,110,166, 35,199,219, 27,152, 39, 83,241, 75,216,116,186,174, 42, 23,243,159,183, 9,192, -214,215, 45,178,126, 77,221,120,245,101, 11,171,212,117,196,185, 29,137,247, 18,136,195, 25,183,243,196,180, 63,152,237, 44, 24, - 91, 69,116,179, 14,241, 47, 84,188,152,105,251,253,187,134,180, 86, 70,180,194,118,219, 16,233, 6,207, 44,119,133,239,250,241, -177,251,246, 31,165, 45,180, 63,249,131,159, 48,142,241,190, 42, 99,181, 81,204, 40,112, 85,225, 50, 40, 87, 98, 77,213,179,157, -240,254, 46,240,106,174,188,241,219,215, 60,252,135,183,236,126,246, 35,194,191,251, 10,250, 79, 60, 66,231, 30, 25, 20,198,108, - 63,240, 27,192,207, 36,248,163,137,240,189, 76,255,195, 91,226,205,204, 89, 52,132,232,189,122,164, 92,222, 99,250,229, 63,199, -252, 59, 95, 33, 93, 61,103, 56, 94,147, 58, 83, 53,206,215, 47, 12, 20,224,166,127, 98,132, 26,208,154,153, 8,236,220,130, 98, - 9, 72, 66, 23,253,192, 18,181,109, 91, 85,144,132,244,157,189, 33, 37, 35,121,134,121, 68,206,207,145,139, 29,114,110,164, 38, - 66,133, 51,123, 48,120,105, 59,240, 42, 25, 81,203, 36, 14, 82,145,206,148,238,245,187, 71,226, 39,123,120, 61,193,179, 98,243, -255,115, 65,206, 4, 25,133,240,102, 7,159, 31,224,179, 10,143, 30, 35,229,129, 75,155,179, 41,232,114,134,209, 88,244,210,230, -225, 65,225,197, 21, 60, 81, 27,185,239, 13,151, 38, 63,229,113,179,123,239,210,123, 95, 61,232,122, 52, 54,180, 98,108,241,152, - 85, 12,149, 47, 6,159,105,162,174,222, 89, 1,157,168, 1, 21,118, 9,121,212, 35,131,169, 82,153, 42,117, 86,223,177,110,210, -165,124,252,203,169, 99,229,228,177,148,141,237,169, 46, 23,222, 50,103,116,147,187, 93, 24, 92,249,148,225,201, 68,124, 39,194, - 77,134,175,189,132, 47, 63,130,123, 59,228,115, 23,164,247,103,234,237,204,189,167, 51, 57,185, 39,189,174, 43,134,200, 10, 7, -217,126, 56, 74, 49,226, 95, 85, 24,197, 66,137,186,171, 66, 56,203, 72,154, 73,239,187,223, 47, 6,184, 76,240,233,193,120, 67, -163,207,118,247, 80,123, 33,206,149,160,117, 25,197,159,168, 82,125, 92, 25,101,221,221,138, 99, 70,165,237,168,199,138, 76,213, - 15,202, 25,164,115, 60,238,167,145, 63,254, 31, 16, 63,255,235,212,143, 42,241,190,109,109, 26,180, 71, 78, 62,176,178, 77,162, - 89, 49,240,122, 39, 49, 85,148, 90,228,206,101,190,190, 81, 85,215,239, 89,116, 51, 6, 87,167,191, 21, 69,213,118,190, 82,170, - 67, 85,252, 0,114,229,244,236,119,107,239,172,242, 82,218, 37, 87,239, 36,181,157,130,113, 22, 86,245,230,123,107,127, 38,160, -110, 35,139,182, 63,245,189,209, 92,170,247, 89, 43,240, 68,169, 75,108,108,195,100,138, 8,146, 58,251,251,231,201,104, 94, 11, - 68,199,113,199,106,254, 95,203,151,143,144, 44, 32,100,137,245,118,245,190,162, 75, 44,106, 70,236, 89, 19,235,247,230,172,158, - 38,185, 94,216,139,179,195,159,122, 65,108,237,224,162,188,212,166, 73, 27, 18,105,245,106,180,122,241, 19,218, 5,179,196,156, - 43,177, 51, 58, 89,172,166, 22,111,217,233,235,196,194, 59,209,208,161,204, 54, 93,104,138,248, 90,137, 81, 60,254, 51, 82,138, - 79,111,234, 76,157, 45,166, 83, 99,178,179,174,174, 43,146,170,101, 93, 3,105, 37, 87,179,251, 45, 91,161,176,226, 12,197,253, -218,134,103,149,117, 4, 45,193, 56,229, 37, 47,153, 9, 77,160, 38,158,179,222,232,109,213, 63, 80, 49, 90, 86,122,151,122, 52, - 4,142,211,200, 60, 78,116, 49,114,156,102,170,142,204,165, 90, 14,200, 38,167,160,226,201,115, 18,189, 67,175,148,121, 51, 1, - 16, 57,249,124,156,208,146, 56, 53, 98,180, 3,212,125, 1, 92,132,196,197,227, 87,217, 31, 15, 72,169, 28, 85, 57,222,222, 82, -243,140,104, 37,134,206,233,122, 86, 52, 45, 22, 54,177, 98,166, 93,232,167,133,158,219,183, 55, 72,220, 19,231, 90,189,155, 15, -240,255,131,124,190,171, 33, 90,118,234,232, 66, 55,109,217,205, 90, 12,222, 49, 55, 21,175,239,138, 50,240,172, 10,103,230, 12, -227,182, 24,224,227, 42, 10, 79, 31, 8, 15,179,242,214,215,111,121,244,111,237,217,125,225, 25,225,215, 95,181,192,145,177,179, -127,225, 76,224,126, 15,143, 19,250,217, 10,223, 72,196, 63, 56, 16, 95,140,116,185, 48,236, 97,254,103,127,133,253,171, 63, 69, -247,238,127,199,120,251,220,236, 81,221,142,241,214, 4, 17,196,176, 16, 70, 69,226, 18, 13, 86,131, 82, 36, 27, 80, 37,177, 40, - 65,205,167,109,150, 17,201, 74, 96,166,106, 64,163, 47, 63,107, 37,104, 33,220, 92, 67, 25,145,116, 9,151, 61, 18,138, 9,184, - 10,132,123,138,206,150, 84, 22,102,165, 75,217,160, 42,179,209,230, 68, 2,250, 34, 35,169, 67, 94, 9, 80, 18, 18, 5,233,212, -212,213,159,218,193, 79, 43,188,250, 73,136,127, 30,246, 95,241, 18,254, 0,249,104,108,211, 92,215, 37,109, 47, 48,223,194,147, - 25,110, 51,154,189,109, 24, 20,222, 26,236, 38, 27,125,124,114, 8,182,146,199,224, 13, 97, 35,218, 90, 58,131, 54,250,246,189, - 37, 77,221,219,242,211, 85,108,236,120,225, 44,249, 62,216, 5,244, 66,215, 56,171,237, 72,125,211,157,182, 29, 89,240, 72,239, - 19,123,155,172,162,147,182, 83,151, 22,133, 21,163,141,193,178,249,224,245,210, 98,104,121, 50, 17,223, 24,208, 63, 56, 32,159, - 56,131,199, 59,120,125,135,124,254,130,244, 60, 51, 28,111,184,184, 46,228, 4,199,236, 95,183,174, 10,226,213,206, 41, 39, 43, -135,182, 27,206, 81, 56, 86, 8, 47,230, 37,208, 34,118, 1,237, 2,116, 88,204,236, 59, 3, 50, 85,226,204, 2,179,183,173,140, - 16,167,122,130,112,219, 6, 66, 44, 62, 84,185,139,199,242, 27,250, 38,192,116,132,249,187,190,210,217, 25,147,224,236, 87, 9, -255,241,231, 9,255,230, 55, 9,247,226,226, 36,111,251,241, 69,108,168,171, 53,113,113,133,149,143,119,136,181,174, 48, 69,253, - 56, 29,246,132, 14,215,250,155, 18, 54, 75,112,191, 50,150, 8, 81,173, 70, 39, 67, 86, 4,170, 11,214,174,171,114,230,227,243, -181,251, 98,131,221,244,142,184, 17,225,238,132,209,156,128, 94,196,189,214, 53, 35, 21,178, 68,102, 17,230, 54,194, 21,181,188, -245,205,208,150,182,139,181, 54,157, 26, 34,101,158, 44,104, 74,252, 66,151,176,137,243,148,165,192,140, 41, 57, 65,175,174, 32, -169,186, 6,216, 22,167, 11, 21,247,154, 87,133,172,213,186,255,205, 68, 42, 46,121,240,186, 92, 94,117,171,106,247, 41, 89, 23, - 87,113,162,108,100, 90,237, 98, 95,157, 12,178, 64,130,226,112,238,157, 96, 98,206,133,233,112, 67, 9,137, 34,137, 34,222,169, - 58, 36,166, 96,220,143,144, 44,133, 76, 61, 53,172, 8, 11,115,124,206, 51,250,255,209,245,118,177,182,101,217,125,215,111,140, - 57,215, 90,123,159,143,251, 85,117,235,163,171,219, 93,238,110,219,109,119, 28, 39,178, 19,199, 73, 72, 8,249, 80,148, 32,100, -132, 64,188, 16,161,136, 8,158, 64,138,120, 0, 5,162, 86,224,129, 7,144, 16,136, 7, 4, 15, 72, 8, 33,148, 40, 65, 74,136, - 66,136,132, 29, 59,182,227,182,211,137,237, 78,140,251,195,238,118, 87,119, 87,215,199,173,251,113,206,222,123,173, 57,231,224, - 97,140,185,214,190,183,170, 31,142,238,173, 91, 71,103,159,189,246, 90,115,206, 49,198,255,255,251,215,226, 7,151, 96,160,139, - 26, 58,100, 68, 60,136, 74, 35,124,165,135,209,208, 43,205,200, 73,167,149,104, 15,199, 28, 89, 18, 41,197,231, 16,170,251,178, -204, 33,138,123, 30, 99,138,177,118,111, 94, 84,135,169, 38,242, 56,145,198, 49,226, 75,103,196, 26, 85,178,231,137,164, 68,237, -162,180, 56, 2,174,121, 68, 13, 52,249, 90, 79,192,125,214,145,128,157, 89, 75,122, 39,202, 54,253,196,122,152, 91,215, 12,191, -110,123, 17, 94,185,127,143,116,125,205, 92, 27,207, 88,184,125,250,100, 37,189,233,121,141,220,147,221, 66,211, 80, 75,161,126, -196,134,126, 78, 76, 20,145, 23,192, 75, 47, 90,216, 94,168,149, 94,216,221,237, 67,186,247,168,212,135, 14,236,232, 2,156,234, - 21,249, 51,123, 17, 71, 23, 92,232,102,220,138,144, 35,211,250,164, 48, 55,227,166, 10,207,146,240,232,174,240,114,133, 87,191, -122,195,131,255,224,192,248,185, 71,200, 95,121, 25, 62,117,215,191,249,113, 2, 93, 28,167, 58, 9, 92, 42,124,125, 68,191,254, - 20, 30,188, 9,127,242, 47,178,251,250,111,162,239,189,199,188, 28, 25, 46, 39,110, 91,225,180, 84, 52,249,147, 87,173,173,228, -172, 38, 41, 78,249,130,234,192,160,238, 45, 23, 1, 29, 98, 51,204, 18,152,191, 16,100, 52,219,136, 85,234, 22, 16,217, 73, 36, - 87, 29,253,163,218,141, 78,170, 43,234,161, 44,167,134,188, 7,195,179, 19,106, 66, 27, 96, 89,140, 60, 20,164, 39,153, 61,170, -200,107, 3,242,178, 15,251,164,138,171,200, 63, 1,188,114, 1,187,191, 16, 60,247, 91,151, 72,183, 19,204, 21, 59,133, 40, 32, - 16,183,104,130,175, 62,243,168,211, 78, 93,155, 4,185,140,235,117,138,118,211,164,216, 77,243,254,160, 60, 47, 80,123, 78,117, -190,218,171,156, 72,165,230,212,173, 20,155,122, 78,130,238, 7,244, 58,123,181,170,130,157,188, 27, 96,139, 11,101,200,241,126, -100,155,136,173,155,121,220, 55, 61,224, 78,206,110,196,243,198, 67, 10, 26,135, 12,177, 8, 15,217, 75,190, 39,160, 15, 18,245, - 4,237,189,130,236, 18,122, 55,218,240,127,106,132,187, 35,242,201, 61,233,131,133,241, 84,185, 58,221,120,199, 38,195,161, 42, -170,182, 37,107,197,254,153,251, 24,226,133, 57,127,109, 1,243, 59, 25,211,211,133,146,207, 84,193, 73,145,151, 51,220, 25,176, - 55, 65,231,216, 61, 31,187, 79,208,250, 14,219,236,204,188,199, 11, 97, 16, 81,150,117,254,106,239, 59,151,234, 57,178,239, 27, - 60,252, 53,104,239, 64,186, 10,213,218, 53,242,123,255, 93,244,211,255, 25,242, 54,164,139,173,197,223,171,232, 62,207, 62,119, -185, 61, 39, 88, 78,120,117, 30,149,120, 61, 39,192,173,161, 21, 27,161,202,100, 75,109,107,141,115,133,222, 58, 82, 89, 49,177, -205, 43,139, 22,115,120, 83, 89, 19,243, 14, 65,118,155,158,179,167,157,221, 3, 38,129, 37,149, 51, 31, 93, 59,179,231,185, 70, - 32,197, 76,151,168,173,231, 86, 60,181, 77, 51, 53, 57, 10,202,196,217,238,218,122, 69, 84,163, 77,105, 48,140,200,180,119,123, - 86,109, 30, 46,164,225,249, 24,188, 85,211, 74,115,114, 28, 48,134, 61,236, 60,231,198,197,109,182,126,188, 37,198, 67,173, 54, -170,184,135,191,213,237,222,110,173, 51, 18, 92,112, 90,250, 26, 26,182,185, 30, 89,148, 4,246,131,249, 89,189,109, 35,136,117, -131,215,205, 1,144, 2, 72, 50,152,161,251,107,116,218, 83,159, 61,102, 62,222,114,210,129,197, 18, 85, 26,164, 70,149,228,126, -119, 4, 77,153,166, 25,202,226,226,219,228, 85,120, 69,168, 75,161,116, 65, 91, 93, 34,213, 76, 67, 57, 47, 27, 75, 66,125, 51, - 84,201,161, 78,143,123,190, 89, 79,110, 90,103,245,213,106,220,107,254, 89,166, 52,160, 57,252,215,243, 49, 54,212,231, 21,134, - 98,207, 71,152,114, 54, 62, 19, 17,242, 48,145,199, 9,178, 50,207, 11,182,204, 1,183,113, 72,112,109,205,223, 95,216,229,120, -206,186, 41, 43,202,214, 58, 96, 34, 54,117,211, 51, 4,232,139, 21,202,202, 17, 8, 47,130,120,152, 88,183,216,157, 16,242,241, -136, 13,153,195,211,199,212,211, 41, 52, 4,172,209,172, 61, 81, 46,165,193,181, 21,181,248,200, 33,174,177,189,208, 38, 63,255, - 85, 92,164,215,214, 81,206,139,169,136, 47,110,232,219, 4,254, 35,143, 10,190,230,150, 26,148, 46,188, 80,233,175, 58,116,235, -107, 84,232,141,115,230,180, 81,205,103, 75,214, 28, 97, 94,154,255,219,209,224, 86,225,131, 43,229,165, 6,175,127,233, 9,247, -254,194, 45,249,143,221, 69,254,227, 87,224, 99, 23,240,193, 8,143, 60, 71,220, 38,224,165, 4,156,104,175,127, 6,218, 7,164, -250,187, 12,237,134, 97, 20,198, 1,242,237, 1, 83, 35,153, 80, 37, 78,202, 6, 86, 23, 52, 85,100, 26,208,164,238,131,151,140, -100, 67, 99,246, 42, 23,206, 93,183, 15,234,154, 53, 44, 65, 17, 90,123,183, 99, 80,177, 6, 69,174, 51,146,129,203,134,212, 29, - 28,103,207,139, 31, 20,203,194, 48, 87,228,253,133,121,134, 97,167, 94,121, 46, 5,118,226, 74,241, 15, 10,114, 63,123, 91,234, - 22,184,151,224,161, 57,177, 79, 94, 66,150,191, 19,106,119,131,122,139, 45,226,171, 98,204,160,109, 55, 34, 79,102,236,231,159, -193, 93,129,135,193,135,159,129, 59, 25,246, 9,222, 15,144,255, 78,182, 15,168,190, 72,205,242,177, 67,183, 55,201, 25,214, 86, -113,244,101, 82, 23, 23,234, 40,232, 69, 70,238,142, 1, 23,151,213, 42,103,181, 33,203, 38, 0, 17,233, 41, 85,178,230, 67, 59, -251,252,172,210, 56,243,114,247,155, 82,165,111, 50,201,211, 73, 58,110,235,212, 96, 39,232,189, 1,110,149,246,205,133,246,157, - 5, 25, 19, 82, 11,124,233, 25,252,216, 53, 60,156,224, 83, 59,210,227,202,176, 24, 87,223, 57,120, 43, 54,193, 28, 49,176,233, - 5, 59,223,249, 6,115, 46, 66, 49, 7,255,145, 15, 13, 25,139,115,204, 39, 69,190,157,176, 4,242,242,132,220, 25,177, 79, 53, - 15,194, 41,128,204,180,217, 51,142,173,182, 15,141, 27, 76,195,159, 25,188,239, 85,178,221, 95,183, 26, 60,169,240,158,194,241, - 29, 56,125, 17,242, 39,232, 3, 47,166, 63,140,254,107,215,232,127,253,152,124, 87, 73,173,177,156,209, 98, 95,172,186,251,230, -210,133,144, 17,183,189,158,242,245, 92,127,164,231,221,132, 16, 26, 38, 11, 14,188,173, 94,103,107,219, 74, 82,123,245,216,147, -219,218,182, 2,184,134,163,174,227,199, 67,176, 38, 70, 83,199,167,246, 10,207,124, 35,236, 98, 50,117,133,154,211,210,186,143, -189, 67, 57, 6,223, 20, 82,241,150,110,193, 88,162, 98,172,154,144,148, 73,106,206,170,104, 53, 72,118,189, 37, 53, 96,187, 11, -191, 30,167, 83,108,228, 3, 77, 19, 58,184,106,168, 30, 15,171, 47,186,105,162, 36,159, 19,151,184, 6,169,139, 36,218, 54, 38, -144, 32,185,149, 56,147,181, 51, 48, 79, 63, 44,182, 23,132,154, 53, 64, 75,189,165, 59,132, 93,116, 10,177,199,218, 85, 57, 19, - 65,244,182,123, 83, 33,103, 39, 99,234,197, 30,189,186, 71, 59, 29, 88,230, 19,183,115, 97, 81,165,132,210,187, 83,224, 2,108, - 14,106,232,180,243,207,165, 69, 78,119, 39,214,244,239,139, 86,180, 68,139, 77, 52,193,144, 17,205,254,247, 94,169,170,103,120, -180,226,164,123,205,201,197,104,209,246,182,214,168,165, 3,102,188, 58,214,148, 93, 76,187,148,176,153,186,176,167,133,119,240, -195,176,148,179,229, 74, 97,208,196, 48,238, 72,121,160, 24,204,243, 28,209,165,217,157, 0, 34,148, 82,227,119,248,176,219, 70, -147, 99, 87,171, 61,159, 54,103, 29,123, 43,182,229, 34,124,168, 52,246,103,182,131,102,106,173, 80, 11, 7, 73,220, 62,125,202, - 43,151,151,124,208,140,229,224,244,203, 86,125, 92,184,234, 34,162, 80,108, 89,168,181, 98,165, 70, 39, 64,183,238,152,124,184, -242, 22,209,179,124, 67,215, 31, 61,135,165,144,239,221,114,127,177,245,126,254,255,210,191,122, 55,127, 30, 44,172, 63,178,198, -115,234,121,252,227, 11,189,253,118, 22, 34, 49,135,192,227,196,166,186, 94,162, 82,184, 81,225,118,231, 15,232,248,229, 91,242, -223,185,241,121,226,143, 14,158,168, 54,203,202, 89, 39,123, 28,167,237, 4,145,119, 73,239,127, 29,185, 63,145, 7, 97,119,156, -217,165, 16,115,201,134, 83,145,206, 4,181,202, 96,141,125, 86,174,166,204,176, 27,144, 65,209, 41, 33,151, 9,238, 13,126, 74, - 60,201,122, 44,119,129, 67, 40,213,155, 7,128,203,253, 1,125,121,132, 33, 98,245,118, 78, 51,146,218,252,160,112,145,144,187, -153,116, 87,201,248,130,111,197,189, 43,122, 1, 50,186, 21,206,145,237, 78, 91,145,151, 6,248,152,194,213, 15,128, 93, 32,135, - 95,136, 39,251, 0,243, 18, 43, 98,103,103, 38,184,163,240,179, 79,224,183, 79,216,163, 25,153, 27,188,146, 96, 81,228,245, 9, - 94,157,224,241,226, 23,120, 18,248,214, 66,251,237, 3,229,184, 56,247, 28,161, 54, 13, 21,177, 57, 36, 33, 52,105,201,186, 10, - 93, 72, 89,124,206,103,158,200,150, 31, 76,164, 55,119,200, 43,147,223, 77,223,157,177,111, 30, 41,143,102,202,161,113, 60, 19, - 3,153,109,160,160,222,194,110,182, 41,232, 58,236, 38,169, 48,168, 48, 38, 97, 63, 56,124,102,184, 59,144, 94,223, 35,175,141, -112,223,145,187,124,115,134,251, 2, 23, 81,178, 28, 13, 57,128,220, 17,248,160, 34,175,100,184,183, 11, 16,140,162,181, 33,179, -145,159, 45,171, 24,200,100, 19, 65,157,143, 8, 68,182,104, 77, 61, 19,211,145,194, 46, 85,226,126,200,126,205, 48,144, 81,224, - 50,251, 97,106, 48,228,132,179,234,101, 27,136,174,247,207,224, 35, 5, 73,157, 87, 29,179,116,141,255,238,127, 31, 61,135,154, -203, 4,175, 85,100, 47, 48,253, 4,200,126, 45,239,229,213, 95,194,254,250,239, 98, 57,129,182,231,230,234,231,170, 87,225,249, -127,176,182, 9, 41, 42,231, 62, 86, 57,107,185, 75, 84, 22,182,169,249,215, 74,127, 83,173,251, 89,119,179,166,173,115, 62,219, - 4, 69, 45, 42,229,206,198,239,249,229,213,132,114,230,205,174, 43,245,109,179, 5, 72,120,174, 53,123, 40,134,224, 30,240, 33, - 39,210,144,201, 17,252, 81, 3,114,180, 52,143,173,148, 97,244,192,166,174, 38, 31, 6,218, 48,193,184,195,166,157,255,174,243, -236,213,249,144, 33,143, 94, 49,151,133,118, 58,122, 12,108,242,182, 52,170,222,166, 87, 13,116,104, 91,149,207,117, 77, 2,220, -188,145,174, 77,168,155, 29,171,139, 32,251,225,241,236,222,146,149,134,231,107,233, 46,206,176, 41,124,202,179, 41, 53,152,250, - 93,196,217,131, 67,194, 45,237,133,241,229, 53, 88, 99,153,143, 28,151,202, 44,137,170,153,150, 39, 76,242, 6,118,233,136,218, - 46, 16,196, 60,199,189,139,192,130,119,222,172,110, 48, 35,186, 64, 48,163, 17,225,169,113, 93, 92, 91,236, 48,149,243,239,105, -214,176,226,213,121,181,141,152,166,241,218,152,209, 22,239, 2,108, 29,247,180, 97, 23,217,238, 53,206,245,104,226, 51,255,113, - 24,153, 46, 46,200,227,196,220,140,211,225,198,127,102, 31,249,136,227,151,169,109,165, 43, 34, 91, 85,155, 66, 99,213, 98,166, -221, 3,128,164, 39, 87,225, 86, 51,105,182,126, 96, 61, 86, 85, 67, 96,105,170, 72,171,228,148, 72,195, 68, 85, 23, 20, 30, 69, -121,252,244, 9,229,116,136,238, 69,116, 67, 35,138, 86,196,159,237, 98, 80, 79,135, 24, 81,180, 45, 66,248,133,137, 62, 1, 65, - 18,217, 6,109, 98, 91,128,147,124, 4, 96,230,121,157,187,125, 20,131,102,171,212, 69, 2,135,152, 66,225,217, 96,136,190,170, -198,236,168,179,175,123,229,222,236,188,114,119,101,244,100,112,140,212,139,169, 91,108,212,125,197,199, 65,184, 25,149, 87, 14, - 71, 30,252,247,111, 51,252,223, 55,200, 95,125, 25, 62,117, 15, 25, 34,239,252, 13,133,227,128,236, 27,242,206,251,200,165,186, -180,246,100,228, 60,113,241,184, 50,206, 11, 83,105, 12, 5,230,106, 28,171,119,244,181,129,148,138,230,130,214,140, 12,151,176, -223,251, 65, 97, 39,176, 31,189,229,127, 58, 65,137,184, 65,196, 45, 91, 39, 67,170,231,148,234,117, 70, 46,242, 26,130, 41, 26, - 54,171,253,232, 37,237,212, 72, 53, 99,195,136,126, 48, 81,254,233, 13,203,239, 30,105, 55, 13,189, 82,184,219, 96, 17,172, 8, -146, 11, 60,220,249, 83, 45,226, 41, 40,243, 63,246, 63,205,160,156,176, 99,196,176,246, 82,230, 66, 92,204,240, 79, 14,212,188, -208, 78, 11,250,181,133,244,125,131,255, 30,151,161,124, 43,226,136,182,177,121,117, 72, 7, 36,244,116, 33, 11,245,238, 38, 44, - 82, 54, 24, 77,138, 13,190, 11, 10,117, 76,232, 85,134,171,209,191,225,216,224, 81,165, 30, 10,118, 44, 44, 37, 40, 93,161,185, - 72,201,219,237,125,243, 44,109, 83,153, 55,182,106, 53,197,220, 62,171,127, 20,178,243,205, 83,122,111, 60,121, 70, 59,173,151, -123, 13,189, 74,216, 32,200, 28, 24, 89,105,216, 23,110,144, 63,185, 67,238,239,176, 55, 26,114,218, 51,136,103,212,223,121,231, -128,101, 33, 69,247,230,140, 32,187,158,100,211,115,170,244, 13, 65,218, 4, 90, 49,100,110,180,165,210,142, 5,125,164, 88,255, -165,239,140,200,171,187, 21,228,194,187,190, 33,182, 82,177, 98,235,125,228,130,163,173,156,150,190,211,174,146,235, 16,173, 44, - 13,158,137,219, 17, 31,188, 5,237,125,208, 7,241, 84, 93,193,195,127,157,244,211,191, 74,251, 27,133,244,170,146, 91,101, 89, - 67, 70,236, 57,226, 92, 39, 99, 57,237,139,109,241,235,115,194,118, 54,202,236, 77,169,216,112, 83, 84,236,231, 0,151, 53, 13, -109, 85,116, 7, 31,123, 5,164,123, 62,173,213, 45,204,163,243,225,107,156, 73,157,199,238,180, 51,225,121, 98, 28,161, 52, 95, - 15, 59,221, 87,237,242, 55,114,171, 12, 36,116, 72,216,169,156,217,181,146, 39, 34,214, 22,228,197,130,106,194,198, 17,149, 33, -238,203,160,171, 13, 67,216,155, 20,155,143,216,124,112,190, 4,184,109, 45, 37,183,241,105,194,146, 15,184,235, 25,194, 84,195, - 86,166, 57,109,222,242,224,230, 23,220,226,213,120, 94,200, 45,103,225, 89,221,138,215,100,155,209, 14, 41, 86, 19,243,188,117, - 98,115, 39, 18, 18, 53,230, 44, 93,171, 96,102, 48, 78,180,101,102, 89, 22, 78,167, 19, 75, 53,150,136,231, 21,150,128,199, 68, -117,151, 61,246,212, 84,221, 82, 59,237,189, 13, 94,230, 21, 23,219, 22,239,135,104, 18,134, 97,242,120,217, 62,211,213, 28, 65, - 39,230, 52,184,142,130,213,158,211, 29,235,125, 41, 17, 21, 26,237,102, 17,199,196, 34, 78, 83, 91,102, 95, 20,206,139, 63,219, -196,140,222,138,174,207, 69,225,246,153,114, 82, 37,143, 99,240,213,149, 82,143,107, 87,224, 57, 32, 82,171, 27,237,149, 13,202, -162,113, 88,108,103,140, 56,255,124,210,154, 6,106,210,226, 61,217,218,193, 16,112,119, 65,140, 97,146, 8,105,156,200, 73,253, -154,150,133,211, 60,115,120,252,129,163, 92, 45, 58,110,107,203,223, 15, 11,170, 66,213,196,114,184,197,150,226,225, 76,145, 89, - 96,234,194,234,205,237, 17,249, 8,210, 43,117, 63,144,183,243,230,250, 11,221, 4,251, 8, 64,172,125, 68,213,222,255,146,239, -134,120,163,136,123,211, 23,235, 73, 93,158, 97,125, 48,215,103,153,179, 72, 86,235,139,196,134, 63,190,208,205, 56,154,197,220, -200,219,124,217, 60, 4,225,152,132,155,189,240,116,223,120,245, 43, 79,184,250, 75, 39,228,223,188, 69,254,226, 67,216, 11,150, - 95,162,181, 55,145,227,140, 62,125, 31,153,129, 71,126,242,179,212,144, 1,116, 86,198,164, 92,139,249,102, 46,158, 60,214,250, -195, 85, 64,150,226,182,180, 36,112,121, 9,247, 38,120, 9, 56, 10,242, 94,195,180, 33, 86,177,185,177, 6, 12,223,201,232,195, -201,103,227,163, 64, 83,175,214,198, 16, 9,141, 97, 65, 58,156,224,105,245,104,191, 34,164, 87, 7,236, 73,161, 62,105,180, 15, -140,180,107,222,182,190, 82,236, 8,178, 68,168,185, 42,212,103,200,252, 36,230, 60, 7,236, 20, 23,187, 68,127,111, 23,153,236, -191,248,140,118, 40,216, 93,195,230, 74,125,180,160, 95, 62, 33, 63, 49, 5,173, 46, 46,248, 69, 88,163, 98, 39,147, 41,147,150, -230,155,117,242, 89,104,171,207,159,250, 68,108,173, 84,221, 89, 38,164,164,232, 69,246,121,250,165,130, 41,118, 91,176,219,138, - 29, 42, 45,162, 86,103,219,216,231, 22,221,229,210, 89,235,201, 63,231, 30,233,184,194,110,116, 99,178,187,129, 65,144,203, 12, -187,193,231, 59, 57,195, 55,102,236, 59, 5, 94, 51,236,169,159, 28,229, 42,146,245,212,165, 7,242,126,195,126,227, 9,242,227, -247,224,229,201,237,145, 18,234,232, 95, 51,238,190,127,226,105, 22,199, 13,159,181,172,107,188,251,132,121, 32, 86,131, 23,249, - 55, 45,153, 47,214,115,163, 29, 61,249, 79, 6,133,189,122,231,101, 63,192,107,178,198,123,202, 7,254, 96,180,217,129, 67, 22, -220, 90, 29, 4, 75,194,122,250,105, 94, 25,172,195,109, 11, 22,251,193,224, 3,224,245,247, 97,121, 7,134, 31,136, 82,123,128, -244, 39,208,127,231,147,232,223,248, 50,169, 36, 70,169, 20,188, 2,174,103,208,148,142, 50,213,248, 71,167,198,217,214,146,238, -226,186, 51, 25, 90,138, 10,176, 87,214, 43,199,253, 76,168,100,237, 69, 4,134,156,197,148,250,168,199,108, 99,161,154,232, 74, -217, 90, 35, 54, 61,154,100, 83,238,214,136,173,140,217,185,160,158, 94, 38, 91,183, 71,226,144,144, 74, 65,166, 29,101,151, 54, - 28,109,139,132,177,197,193, 25, 41,103,100,156,124,174, 27,164,196, 86,253,103,212,214,176,229,228,239,107,153,209, 90,124,212, - 52, 12,174,126,111, 46, 14,107,187,168,194, 14,199,141,212, 19, 95,131, 24, 73,140, 83, 28,136, 37,198, 23, 82,206,104,113,241, -231,144,182, 71,176,156,193, 94, 82, 56, 16,186,208,208, 35,131,109,245,172,247, 36,182, 28, 7,155,117, 20, 97,193,104,215,204, - 92, 10,199,121, 94,237, 96, 22,209,188,114,170, 46, 92, 27, 6, 48,113, 92,112,110,212,154,160,229,141, 30, 41,201, 5,113, 73, -145, 97,192,138,195,120,114,242, 77,166,210,199, 46, 78,191,244,106,126,243,153, 91,173, 88, 89, 34,156, 38,173, 51,103, 19,167, -131,246, 19,163,213,182,206,126,252,254,178,231,157, 26, 91,196,208,246,239, 93,183, 32, 78,143,211,148,209, 60,146, 82,162,224, - 8, 85,179,237, 48,233,152,227,182, 34,103,109, 67, 33, 70, 17, 33,235,166,184, 10,117, 53, 61,215, 89, 94,117, 14, 81,161,123, -154,155,119, 34,104,182,134,185,148, 82, 67, 36,232, 98,205, 60,140, 44,165, 4,163,190,108, 58,128,232, 20,104, 10,204,114,107, -212, 50,211, 37,153, 46,148,136, 92, 82,145, 77, 99,176,110,150,186,186, 2, 52,242, 3,186, 50,168,107, 94,158,171,210, 87, 90, -221,247, 20,194,111,240,153, 31,105,198, 44,194, 81,224,113,134, 91,115,194, 92, 50, 97, 15, 92,246, 8,112, 92,159, 53, 27,236, -194,175, 89,207, 5,179,103, 51,248, 19,190,145,239,154, 39,116,213, 80, 60, 46, 10, 55,131,242,236, 14,188,118,156,121,233,127, -253, 46,227, 23, 79,240, 87,239,195,103, 62, 6,111, 63, 68,228, 9,122,231, 6,174,197,171,154, 91,127,168, 41,213, 31,174,136, - 87, 28, 13,106,242, 5,163,103, 42, 39,241,133, 27,245, 42, 74, 70,241, 22,106, 18,184,186,194,246, 9,110,158,249, 83,218, 43, -167,221,136,126,242, 18,185,151, 97,111, 1, 38,136,147, 77,242,157, 64, 84, 48, 43,176, 27,125, 99, 63, 85,152, 13,185, 72,164, - 31,186, 66,190,189,248, 5, 42,225, 11,156,207,230,221, 6,164,201, 67, 90,218,201,167,143,167,234, 23,105,142, 50, 71,195,155, -190, 24,246, 43, 7,236, 42, 34, 11, 23,127, 47,237, 91, 51,233, 88,131,242,214, 96,183,248, 97,229, 80, 92,220, 53, 37,164, 41, - 67,107, 76, 33, 88,111,210, 61,198, 18, 9,121, 33,130, 49, 86,224, 76,198, 21,239, 58,102,184, 55, 34, 23, 41, 84,218,134, 61, - 45,216,220,168, 39,227, 84,124,131, 44,214, 33, 13, 27, 26,182,179,216, 85, 55, 26,203,185, 88,111,101,118, 35,232, 62,163, 83, -134,189,122,200, 9, 96,223,152,177,103, 11, 60,115, 31,172, 51, 93, 5,185, 56, 83,121,142, 5,249,154, 97, 15, 15,200,247, 93, - 97, 15,155, 43,150, 71,101,104, 2,191,246, 24,158,156, 56,170,112, 74, 17, 52, 19, 93,164, 62,232,215,152,187,245, 89,155,134, -229, 71, 82, 44,218,213,104,135,134,228, 70,122, 90, 96, 76,216,197,236, 7,184, 75,133,215,247, 80,253,100,157,222,181,213,223, -218, 78,113, 82,104, 32,201,252,251,163,106, 94, 87,252,236,195, 85, 91, 26,114,106,240, 52,193,233, 6,230, 95,135,253, 31, 96, -195,228,188, 2,175,255,123,164,159,254,207,177,191, 93,176,215, 19,195, 77,165,157, 55,222,206,132,136,171,136,110, 37,198,121, -217,173,104,232, 30,206,221, 43,222, 81, 91,146,231,134,175,191, 99,237,109,204,120,208,215,104,213,168, 76,187, 55,146,236,149, - 86,245,195, 33,205,144, 97,196,134, 17, 41, 5,155,103,154, 44, 97,137,218,184,239,172,249, 3,129,157,109,254,251,228, 30, 37, -107,198,128,178,164,204,148, 35,222, 50,101,234,241,136,150,194, 14, 40,121, 96, 25, 19, 53,170,112,103,206, 87,199,207, 54, 67, -171,145, 90,128, 80,186,157,104,157,181,102,210,144, 2, 40,100,180, 20,190,226,182,101,109,232, 89,130,156,103,214,251,207, 40, -209,245,170, 97, 37,169,145, 51,207, 25,251,191,207,220, 91,219,186, 84,122,150,133,217, 66,107,100, 17, 93,168,146, 24,101, 99, - 58,116,148,174,164,240, 7, 4,206,245, 84, 11,181,132, 42, 31, 89,175,149,147,217,150, 46,247,166,213,130,150,130,230,193,173, -100,170,180,230,207,182,107,135, 22, 52, 42, 63, 77,105,229,246,155,165,109,179,169,109,157,235, 90,115,161, 23,165,110,246,180, -216, 50, 85, 19, 41,185,248,171,118, 79,123, 7,170,164,240,185,247, 36,213,179, 80, 30,139,200, 85, 86,225,165,110,164,187, 24, - 63,164,148,104,146, 56, 85,143, 87, 61, 55,243,187,149,113,123,173,243, 70, 88, 23, 38, 86, 51, 31,135, 18,121,234,113,223,119, -193,162,157,209, 0,147, 8, 57,229, 85, 88,231,143,105,163,205, 14,136,169,173,145,172,177,155,118, 88,158,176,101,241,215, 54, - 91,109,124, 93,123, 64,140, 82,106, 93,156,229,208, 71, 2,129,212,150,102,207,181,115, 36,184, 1,136,110,221,178, 78, 6,236, - 7,225,100,103,176, 41,158, 63, 38,189,208,141,252, 80,158,163, 25,233,191,249,254,221,231,239, 53, 87,172,191, 92,225, 65,133, - 7,102, 92, 38,184, 80,225, 78,242, 49,224,164, 49, 98, 92,163, 58,125,223, 26,116, 75,201,210,179,164,155,110, 3, 89, 45, 36, - 81, 97,148,234,234,227,195, 78,169, 25,166,239, 28, 25,254,254, 9,253,216, 45,242,123,158, 66, 73,232,242, 12, 30, 0, 59,117, - 25, 77,193, 91,229,161,100,180, 64,138,117,110,242, 16, 27,199,148, 96, 18, 37, 93,102,184, 28,225,206, 21,220,191,240,139,113, - 92,188, 21,209,212, 91,165, 55, 62,195,214,143, 95, 32, 63,180,131,169, 70,208, 65,184,247, 53, 16,119, 41, 57, 25,206, 12, 73, -230, 39,187,222, 94,108,234, 89,203,123,133,197, 49,132, 50,102, 84, 20,189,227,170,121, 30, 42, 60,188, 3,166, 72,121, 10, 86, -176, 83,139, 19, 82,172, 8, 67,136, 5,191,122,130, 95,189,193, 94,194, 85,231, 53, 20,241, 71, 72,115, 66,126,226,210,239,148, -233, 26, 46,127, 20,210, 35,228,155, 79,225,155,197,213,252,165,158, 59, 55,214,148, 49,141, 96,145,245,122, 41, 12, 73, 72, 99, - 66,167, 76,126,105, 66,190,111,135,220,223,123,155,243,221,153,246,246,137,250,184, 80,231,194,161,201,170,147,232, 51,199,172, -178, 10, 76,123, 80,130,200, 71,224, 97,197, 89, 57, 87, 10,195,253,145,244,112,135,188, 49,193,203,163, 71,141,253,253, 39,180, -182, 96, 41, 42,166, 28,243,234, 11,221, 86, 73, 83,215, 60, 60, 51,120, 53, 35,119,198,240, 95, 26,114, 61,160,187,132,190,219, -208,147,199,167,106, 98,101, 99,247,170, 48,105,132,144,196,172, 51,169,111,242, 57,185,157, 79, 34, 25,198, 15, 43, 26, 11, 67, -140, 11, 38, 31,140,202, 20,243,242, 57,126,126, 55, 32,219, 6, 14,146,236, 17, 94,114,198,106,151, 20,115,119,146,119, 1,166, -132,188,210,224,226, 8,187,159,132,244,160, 75,205, 64, 95, 67, 62,243, 51,216,223,122, 23, 27, 93,148, 86,187,158,225, 12,247, -138, 88,180, 74,159,167, 81,105,100,216, 39,241, 38,209,144,146,207,162,199, 17,153,118,232, 56, 58, 57,175, 72, 48,217, 59,188, -104,219,140, 87,255, 55, 96, 73, 49,205,129, 3, 13, 46,184, 14,136,186, 40, 72,202, 66,171,254, 44, 89,180, 73,251,205,215,206, -185,214,218, 55,145,104,249,139,147,220, 44, 15,222, 74, 31, 6,210,224, 63, 99,110, 66,209, 76, 30, 6,210, 56,146,134, 1,146, -122, 94,185, 53,134,230, 26,246,214, 60,222, 83, 59,218,181,197,225,165, 89,180,233,149, 60, 13, 30,189, 25,106,209, 78,207,236, -204,244,180, 6,208, 88,176, 6,162,149,219,182,234,176, 91,241, 52,200,207,221, 99, 92,240,160,151, 99,245,231,163,244,103,164, -111, 68,241, 48,166,222,214,143, 13, 63,197, 65,187,173,109,101, 54, 17,106, 30, 48, 29, 56, 45,133, 82,106,244, 61,226,231,134, -192,215,234,102, 43,108,165,120, 91, 58, 70, 16, 12,227, 26,231, 38,113,250,118, 86, 69, 8,218,162,125, 86,154, 81,231, 25, 74, - 4,203, 68,152, 79,247,255,107,140, 74, 58,119,185,123,192,123, 56,208,138,100,109,219,252,166,199,181,174,219,168,200,166, 0, -183,118,134, 3,118,178,158,226,175,145,135,137, 97,218, 65, 26, 56,205,142, 94, 85,137,216,215, 24,145,180, 37, 14, 50,102,207, -153, 77, 36, 14, 4, 73,213, 5,125,145, 12,234,113,195, 62,190,241, 2,191,110, 4,200, 30,222, 18,173,249,218,204, 5,110,173, - 82,154,185, 0,219, 64,114,136,255,138, 19,244,182,153,179,191,166, 14, 99, 56, 23,132, 90,150,104,141,202,115, 41,169, 26,185, -245,253,181, 36, 58, 84,170,186,142,128, 86, 44,109,173,107, 74,155,125,175, 93,251,133,192,151,243,178, 61, 50,222, 72,159,255, - 31, 95,250,124,250,131, 19,249,135, 71,118, 15, 71,238, 92, 38,238, 37,229,193, 34,188, 92,140, 7, 5, 94,170,198, 3,117, 56, -220,117, 18,174,146, 48,169,119,167, 99, 13, 99,140,205,117,212,205,194,148,227,212,175,122, 86,189,245,177,176,249, 60,188,142, -202,112, 88, 24,126,110, 70,143, 7,244, 15,206, 94, 49,138, 7,110,144, 4, 57,186,145, 86,150,176,198,196,160, 71, 85, 24, 84, - 25,212, 24, 21, 38,245,216, 86,189,235,100, 52,219, 93,120, 14,250,225, 0, 99, 67,110,193,170,248,140,195, 20,121, 56,160, 31, - 27,224,218,243,189, 58, 12,119,167, 0, 0, 32, 0, 73, 68, 65, 84,101,182, 51, 5, 71,243,141,195, 12,217,165,181,135, 42,234, - 27,187,244,214, 64,176,141,201, 62,255,215,203,140,220,155,144, 73, 60,183,251, 19, 25,238, 61, 64,150, 91, 40,183, 30, 98,114, -140, 77,189,167,147,236, 20,174, 18,252,236, 51, 63, 53,143,134,157,236, 57,196,171, 62, 85,228, 15, 93, 64, 46,112,241, 3,112, -249,103, 33,127, 3, 62,248, 22,252, 78, 11, 79,100, 64, 36, 94,196,179,190, 88, 53, 43, 12, 89,145, 81, 73, 23, 3,233,149, 9, -190,111,239,191,239,161,193,219, 11,246,238, 76,187,153, 89,142,198,225,172, 74,108,108,237,123, 51,159, 15,202,121, 54, 91,236, -232, 26, 27,127,138, 80,180,253,164,228,251,147,191,214,235, 59, 23,252, 61, 91,224,103,159,210,172,210, 74,195,110,154,111,126, -147,250, 6, 56, 70, 6,123,197,239, 1,113,188,152,188, 26, 4,184,197,231, 0,242, 32,147, 6, 69,159, 9, 90,141,220,162,141, - 74, 95, 60, 58,169, 76, 72,121,187, 6, 41,197, 67, 55,196, 38, 46,172, 68, 46,201,253, 1, 52, 24,241, 13,125, 28, 98,156, 18, - 54,243,178,209,169,104,125, 45, 13,107,228, 62, 26,161,226,118, 52, 25, 4, 25, 82,220, 47, 25,238,128,220,185,133,225, 30, 12, -159, 13,174,172, 1,123, 31,195, 60,250, 71,180, 47, 20,236,194,162,189,187,217,160, 56,163,218,157, 7,231,164,216,116,178, 12, -232,180, 67, 46, 46,225,226, 26,219,141, 14, 39,137,236,131, 84, 22,172,213, 72,213,234,161, 53,103, 18, 67,217,238,109,107, 17, -151,236, 50,113,127,221,181, 34,142,110, 93,173,216,178, 32,121,240,205,189,148, 77, 48,213, 89,218,189, 26, 73,217,121, 14, 81, -145, 19,249,223, 18, 29,160,170,137,162,138,229, 28,112, 41, 79, 14,147,230,182, 33, 48,114,246, 22,190,136, 39,165, 57, 30,217, - 92,200,213,140,214,138,183, 62, 7, 7,131, 72,107, 33,148,143,254, 74,140, 16, 68,206,208,219, 34, 46, 80, 76, 9,211,204,146, - 7,106, 30,176, 60,161,211,222, 81,210,105, 8,134,186,135,165, 44,230, 7,144,115, 98,158,157,105, 74,250,193,118, 58, 3, 98, - 73, 23, 69,245,192,151,102,190,145,152,145,205, 5, 87, 51,153,121, 94, 40, 22, 41,127,178, 89, 53, 27,155, 35,193, 86,125,200, - 70, 46, 84,201,174, 78, 95, 22, 74, 51,202,178, 80,235,178,110, 20,162,222,249, 44,157,146, 25, 66,182,182, 58, 32,218,217,125, - 21, 54,195,158,185,110,117,203,139,183,134, 68, 94,251, 74,148,139, 3,195, 42,100,238,248,214, 86,195, 73, 16, 80,171,179,180, - 41, 17, 33,229,145, 97,154,144, 52,176,148, 5,169, 21, 19, 87,161,151, 90, 86,165,189,217, 25,237, 80,117,205, 91,207, 57,147, -199,232,240,196, 1,167, 31, 94,218, 26,254, 19,202,255,176, 41,186, 88, 54,173,128,156, 46,112,236,188,118,213,228, 33, 58,170, -148,184,191,207,249, 23, 67, 30, 96, 24,144, 82,177,236,160, 29,106,217,210,236,226,224,224,243,254,188, 50, 1,122, 10,161,179, - 4,212,159,147,110,219,171,171,165,229, 67,184,237, 15,129,102, 94, 64,202,158,135, 64,100,251, 95,110,209, 79, 13,240, 35, 10, -159, 28,224,206,132,102,152, 30, 87,198,111, 26,252,118,131,175, 20,236,187,149,250,164, 82, 22,227,184, 52, 14, 2, 55, 98,220, -100,225,169, 9, 79,163, 61,191, 84, 56, 70,225, 90, 59,211, 57,102, 30, 37, 66, 67, 36, 42,246,163, 8,239, 42,212, 11,229,181, -121,225,238, 95,127, 76,250,142,192, 95,126, 9,125,115, 71,251,170,194,103, 34,244,113, 20,248,182, 32,143, 10,217,132,148, 42, -150, 98,209, 89,161, 21,134,142,186,149, 81, 30,216, 14,169, 98,247,119,112,167,193,147,131, 11,178,118, 6,247, 19,220,205,113, -196,238, 84,164,110,253, 48, 56,198, 21, 27,170,251,183, 35,217, 65,174, 67, 16,228, 41, 8,112, 87,209,107,131,161, 56, 98,118, -223,160,166,120,162,163,165, 93,159,122,151,224, 20,135,133,158, 35,154,204,219,187,223, 45,240,157,130,221,139,240,230,174,104, -147,234, 20,187,139, 56, 53,169,192,248, 38, 92,254, 24, 28,190, 2, 15,254, 9,161,228,193,102,247,209,134, 6,109, 5,179,240, -220,201, 17, 82,235, 85,168,207,179,184, 51,184, 64, 48, 80,145,148,182, 86, 84,245,156,101,189, 86, 26,231,173,172,176, 76,181, -109,211, 57,167, 45, 38,245,137, 68, 30,252, 16,193,148, 99,160,159,225,157, 91, 23, 93,197, 33,134,102,180,103,138, 94,248, 2, -205, 73,145,189,109, 38,104, 12,222, 45,216,151,158, 33,191,239, 14,242,112,244, 7,101,159,224, 39, 7,242,195,145,244,207, 14, -180, 71,179, 3, 72, 78,149,214, 10,197,220, 46,132,198,181, 89,129, 46,174, 74,239, 30, 36,105,206,185,111,181, 33, 82,145, 97, - 99,191, 90, 82,228,110, 70,174, 6,120,216, 28, 8, 4,200, 83,208, 91,176,157, 31, 76, 56,198,155,159, 21, 25,122,171,177,133, - 42, 62, 62,239, 83,133,111,103,120,229, 22,118,127, 15,118, 63, 14,195,143,132,177,116, 4,253,113,244,223,120, 5,253,155,111, -145,170,145, 66,113, 91,207,221,241, 1,186, 17, 4, 53, 63, 84,170, 38,223, 88,243,224, 21, 75, 53, 56,204, 62,103, 94,202,154, -238,226, 52, 70, 37, 15, 3,165, 41,181,154,191,103, 26, 90, 60, 65, 76, 37, 81, 83,138, 46,132, 99,114,125, 61, 86,239,172,168, - 98, 38, 88,202,232,110,196,106, 11, 54,249,128,236, 46,208,211, 28,156,116,175,222,172, 91,119, 36, 44,113,181, 34,230,130, 34, -143, 54,245,251, 37, 91,137,170,213,157, 13, 38,142, 65,117,108,157, 87, 80, 41,194,160,176, 70,138, 67, 73,130,160,167,137,251, -181, 25,144,113,128, 50, 99,102, 43, 44,198, 69,147, 78,152, 44,113, 0,110, 8, 45,101, 44, 57,236,166, 38, 65,135, 1,134,201, -237,142,154, 17,140, 82, 10, 66, 37,215, 25, 93, 78,228,200,193, 46,102, 31,130,118,166,228,143,107, 94, 89, 14,178,218,244,123, - 39,171,111,180, 53, 54,122, 81,111,197, 46,243,137,101, 41,158, 63, 17,113,167,137, 70,194,168,174,116, 12,171,152,109,163,147, -230,237, 34,107, 5,116, 88, 49,189,180, 74, 91,142,142,123, 77,121,125, 72,107,139,208, 39,210, 74,189,107,181, 63, 24,105,157, -237,183, 32,165,245,214,178,136,167,233,121,229,160,113, 64, 74,171,134,192,194,218, 74, 0,127, 86, 6,250, 89,122,217,106, 83, - 55, 99, 84, 71,225,142,195, 72, 27, 51, 50,187, 31,189, 90,163,198, 61,213, 90,228,194,155,160, 73,221,254,152,178, 87,203, 41, -187,112,143, 22, 9,106,178, 10,223,170,157,157,124, 3, 67, 75,116, 45, 45,249, 28,188, 44,209, 21,160,173,182,205,164,137, 33, -103, 52, 37,183,149, 6, 21,111, 85,218, 35,200, 48,208,106,139, 67,164,249,136,163,179, 15,122,167,164,235, 20,154,231,186,119, - 39, 64,159,235,183, 53,144, 74, 86,126,194, 71,123,207,237, 35,133,113,242,156,211,101,123,175,249,173, 95, 57,176,255,213, 35, -187, 44, 12, 59, 37, 93, 41,250, 70, 70,126,104, 64, 62,151,224,115, 19,118,255, 2,185, 49,134, 15, 26,249,171,198,238,139, 51, -247,126,103,161,189, 91, 89, 78,149, 83,109,220, 42, 60, 81,120, 60, 10, 55, 56, 64,238, 96, 27, 42,180,131, 72, 36,170,249, 73, -182, 40,203, 69,224,209, 36,164, 90,185,254,133, 15,188,205,250,151, 95, 66, 62, 57,193,215, 20,126,112,143,237, 78,160,234,130, -164, 99,246,211,193,209, 91,217,214,156,184,137,122,149,231, 67, 18,175, 74, 44,141,212, 87, 63,141,221,221,161,239,126,211,209, -176, 47, 53,184,111,174,176,175, 53, 72, 37,190,209,154,216, 25,146, 43,200, 68, 39, 67,238,157, 97,218,196,144,187,209, 70, 61, - 53,216, 3, 69,177,219, 80,185, 87, 28, 53,123, 87,195,166,117,240,121,249,162,222,210,239,189, 58,100, 83, 37,254,230,236, 21, - 90,242, 84, 52, 43, 21, 59, 86, 56, 84,218,169, 97,178,243,159, 41,234,116,146,225, 14,212,207,194,149, 87,145, 82,156,221,185, -212, 21,216, 70, 50,176, 49, 22,146, 53,111,193, 23, 28,153, 18, 58, 38, 31, 17,220,201, 46, 8, 19,117,181, 91, 87,154, 5, 62, -179,139,223, 90,124,102,185, 67, 93,162,149,111,155, 69,123, 75, 32,236,220,159, 8,141, 97, 23, 39,223, 41,124, 62, 9,248, 86, -193,114, 16,244,202, 86,229,154,121,117,110,179,107, 15,228, 94,246,141,189,199,174,189, 53, 99,251,103,200, 15,223,133,151,197, - 43,254,151, 12, 62,113, 23,249, 49, 33,125, 61,145,126,125, 71,125,107,161,220, 28,209,227,236, 24, 83,193,187, 61,153,205,206, -216,227,215,206,134, 85, 86, 27,237, 84,225, 54,218,149, 79,226, 90, 20, 69, 30, 36,236, 94,218,218,237,136,171, 72, 14, 29, 80, -232,159,175, 73, 67,170, 56, 0, 41,192, 29,235,124,162, 25, 60, 73,216,187, 5,185,122, 11,118,255, 39,220,249, 56,232,101,128, - 89, 30,192,195,215,208, 63,252, 54,252, 92, 35,221,137,241, 64,235,157, 18, 57,131, 9, 13,228, 72,168,210, 52,132,162,181, 66, - 93,226, 96, 86,189, 66, 26, 70, 44,169,111, 13, 18, 76,182, 82,144, 82,144,101, 33, 45,149,166,153,186,219,187,128,177, 95,151, -192, 68,163, 94,181,153, 66,121,250, 20, 59, 28, 28, 70, 19,212, 48, 29, 70,116,119,129, 13,131, 71, 94, 86,163,148, 5,171,213, - 23,215,210,182, 20,175,243,182,108, 84,110, 75,245,246,111, 27, 92,196,212, 59, 1,100, 69,107, 88,153, 52,121, 35,122, 89,200, -218,188, 29,175,130,204,133, 33,185, 34,190,106, 10,235, 21, 72,241, 64,151,108,142,186,173,103, 93, 14,149,234, 41,145,226, 17, -164, 86, 11,165,186, 32, 74, 69,208,211,193,253,239,217,173,115,102, 80,155, 35, 12,115, 31,160,231,201, 23,241, 84,145,214, 60, - 80, 37, 78,209,238, 93,223, 28, 33, 37,112, 20,205,188, 98,231,140,182,104, 18,207,106, 84,115,101, 89,162, 34, 55,106, 83,119, -143, 12,217, 63,218,210,104,197,239,175,231,225, 96, 45, 42,244,153, 52, 76, 43,163, 2, 29,161, 85,172, 26,181, 85,180,182, 53, -240,200, 34, 52,102,131,156,185, 34,218,219,236, 70,137, 16, 18,159, 84, 68,181, 94,159,239, 32, 18, 4,183,115, 76,234,154,216, -103,109, 85,215,182,126, 47,174, 9,114,230,241,186,211,158,105,127, 65, 26, 7,150,102,204,167,133,121,153,253, 94, 48,243, 42, -189, 85, 4,101,152,198,128,211,228,200, 56,240,251,184,181, 26,174, 28,215,126, 52,241,206,229,218,205,224, 57, 55,170,231,192, - 75,162, 45,243, 42,120,179, 56,240,174,227,195,148,104,170,110,237, 67, 72,121, 88,253,232,195, 48, 58,142,120, 89,214,131, 5, -185, 98, 53,196,163,182, 29, 36, 52,197,134,156,124,134,238,163,219, 45,111,221,171,110,221,170, 46,219,234,113,251, 30,114, 56, - 59,211,128,240, 34,175, 30,200,255, 56,114,212,247,139,177,171,149,171,167,133,235,183,102, 46,190,160, 92, 12,194,116,157,200, -175, 39,228, 71, 70,248,241, 17,249, 3, 3,246,167, 38,168,144,222,174,164,255,175,176,251,197,133,235,175,157,120,248,184, 49, -159, 42, 71, 26,143, 19, 60,201,194, 77, 8,130,139, 60,143, 16,237,164,177,169,251,134, 21,110, 51,140, 75,101,250,205, 39,240, - 95, 53,228, 47, 63,128, 31,188,128,127,161,200,247, 79,216,157, 1,222,159,144,247, 23,248,160, 97,143, 23,100,158,145, 42,207, - 39,107, 36,133, 57, 86,240,131,120, 40,202,245, 53,246,240,190,223,140,119, 26,236,139, 51,233,137,152,212,229, 12,145, 89, 3, -138, 82,193,118,138, 44,134,221,152, 87,179, 45, 54,253,172,176,111, 94,121,162,136, 85,159,141,223,198,162,253,122,242, 57,249, -238, 2, 78,199,144,144, 23,182, 94,106, 28,225,167, 16,212,189, 95,224, 37,241, 54,135,129, 29, 13, 59,248, 65,163, 29,219, 54, -235, 40,129, 23,179,147,127,117,168,192,168, 48, 38,210,220, 56,213,152,143, 6,231, 93,187,115,165, 17,115,178,132,236,146, 87, -234, 87, 25,121, 48,192,206, 33, 29, 54,183,141,140, 22,121,155,154,125,108,145,226, 20,174,230,228,178,174,161,168,109,227,204, -159,223,116,189,217, 48,164, 24, 81,140,201, 7,236,147,250,245,254,157, 19,114, 33,200,168,232,232,239, 77,162,180,177, 86,253, - 26, 29,154, 47,154,215,209, 55,183,120,177,175,159,176,252, 20,249,204, 93,208, 2,186,135,235, 31,133,151,175,225,205, 95,195, - 62,247, 91,164, 47, 8,250,203,153,242,254, 45, 44,139, 87,255, 1,190,247, 46, 92, 28, 0,149,231, 66,223,173,199, 87,222, 54, - 76,221, 18,213,129,230,214, 6,184, 55,194,125,117,187,157, 76,222,214, 93, 60,130, 81, 39,176,108,216, 98,125, 5,247,241,205, -178, 69, 82,130,193,105,129,119, 19, 60, 60,193,238,215, 97,255, 79, 97,250, 41, 23, 88,200, 29,224, 14,250,231, 39,210,207, 85, - 82,115, 14,195, 18, 84, 20,141,177, 65, 78,222, 45, 82,107,164,148, 2,140, 83,250,240,149,170, 25,147,236, 29, 4,107, 1,155, -153, 93, 77, 94,155,227, 62,155,243, 33,116, 24,104,227, 62, 14, 47, 33,205, 83, 9, 13,137, 87,236,173, 6, 31, 33,135,109,172, - 86,154, 86,207,208, 62, 29,145, 60,146,246,123,200,147, 87,152,116,178,154, 56, 76, 72,166, 16, 57, 85, 15, 2, 41, 37,102,185, -174,153, 47, 34, 17,237, 90, 17, 51,170, 10,102,213,231,155, 49,147, 7, 99, 10,198,190,228, 76,198, 96, 26, 97,186,164, 78, 59, -210,188,128, 46, 44,117,113, 44,180,120, 37, 88, 17, 71,165,246,172,117,105,254,115,211, 6,153, 49,171,110,229, 19,208, 38,206, -167,168,149, 90,107,204,191,235,154, 24,111,117,107, 69,155, 38, 39,218, 37,159,229,167, 86, 25,164,173, 27,250,233,140,229,223, -187, 91,216, 25, 93, 44,100, 60,162,202,177, 20,150, 90, 87,202, 91,177,198,128,144, 98, 99,211,148, 61,195, 94, 92, 83, 96, 18, -204,249,200,168, 71,132,188,191,164, 28, 15, 80,139,119, 20,243, 68,107, 39,170,249,238,155, 87,216,225,166, 77, 50, 9,197,184, -166,216,224,219, 25,101, 48,116, 10,210,206,136,112,182, 30, 4, 86,237, 68,216,197,172,143,116,154, 87,217, 91, 76, 96, 88, 93, -115,246,224,157, 33,147, 52, 57, 79,127, 41,204,165, 82,202,236, 7,227,206, 68, 23,111,117,167,113,242,141, 53,190,223, 67,124, -188,171,150, 12, 36,167,117,102,237,159, 83,132,211, 6, 55,163,213, 18,173,117, 89,113,183,198, 86, 65,119,114,167, 11,106,147, -243, 22,102, 31, 93, 16,116, 56, 17,101, 24,132, 52,142,222,180,237, 17,198, 61,165,206,156,210, 41,105,235,112,184, 83,172,190, - 48, 35,119,167, 76,171,171, 49,207,133,216,108,162, 82, 59,115,160,219, 71,196, 90,159,195,225, 95,252,174,252,229,197,188,106, - 22,200,205, 5, 69, 89,225,130,198,117,129, 7,239, 23, 30,190, 7,119,190,116,224,234,111, 37,198,187,137,225, 83, 35,242, 71, - 38,236,247,143,216,159,184,128, 63, 45,200,163, 70,250,157,194,197, 47, 47,236,127,253,196,189,239,158, 88,142,149,185, 54,110, - 7,113, 33,187,186,237,104, 6,154,186,144,164,198,252,189,152, 48,155,113, 51,129, 46, 30,246, 98,255,109, 66,255, 35,129, 31, -190,192,126, 59, 33,159, 29,177, 35,240,237, 25,190, 60, 35, 39,193,170,120,123, 60,157,209,213, 74,108, 16,178, 64,109,232,119, -223,130,203,167,240,202,222,231,162,185,249,124, 32,141, 62,172,173, 17,174,210, 43,137,106,216, 28, 11,127,113,178,154, 28,138, -179,214, 59,236,185,246, 40,167,120, 90, 71,133,151,212,155, 51,115, 12,146,175, 7, 63, 68,156,138,183,193,151, 80, 24, 31,227, -233,206,226,173,227,155, 6, 79,189, 36,182, 83,156,118,187, 42, 71, 67, 29,216,177, 98, 43,255,245, 25, 44,191,238,135,151, 69, -125,244,144, 29,166,146,130, 91,189, 52,176,131,145, 6,143,164,213, 20,200,220,193, 55, 89,149,128,172,236, 6,239, 73,159,218, -243, 97,215,230,194,136, 20,196, 52, 11,244,169, 74,231, 39,199,223,117,243,176,219, 70, 7,101, 8,221,133,230,128,198,236,146, -107, 7, 46, 7, 23, 62,190, 91, 87,224,140,180,230, 35, 14,195,243,225,155, 34,131, 97,218,252,134,121, 26,194,201,148,253,115, -154,178, 3,122, 46,158, 32,111,188, 12,135, 35,180, 59,176,255,183, 32,255, 37,228,226,239,193,197,127, 7,211,129,252,143,174, -144, 15, 14, 94, 57,186, 36,117,179,151,232,153,194, 79,227, 51, 9,152,139,149,134,221,198, 98, 36, 6,143,226, 48, 86, 4, 30, - 12,216,189,209, 53, 14,217, 63, 91,185, 1,158, 9,146,131, 60, 23, 7, 67,159, 67, 4,146,167, 11, 78, 26,206,237,255,160, 32, -151,239,194,205,207,195,240,105,247,173,235, 4,250, 83,200, 27,191,140,190,158,209,239,156,152, 46, 61,195,187,246,200,220, 36, -228, 88,220, 68, 70, 68, 51, 84,159, 71, 10,174,242,182, 90,124,243,172, 62,255,108,226, 42,255, 26,149, 73,141, 42, 76,114, 70, -242,228, 85,123,199, 47, 71, 6, 4, 75,217,136,115,181, 4,246, 85,176, 97, 8, 50,153, 83,199, 90, 53, 88,102,172, 84,116, 60, - 65,158,220, 74,150,167,245,126,160,248, 1, 96,141,192, 76,201,253,254,134,255,190,209,146, 84, 77, 94,205, 90, 99,142, 10, 44, -229,236,135, 9, 19, 74, 54,234,168,107,117, 92,135, 29,146, 71, 70, 17, 74, 30, 97, 62,209,110,235,218,113,104, 98, 43,168,197, - 90,245,138, 61,208,183, 26, 50,120, 85, 65, 99, 4,211,158, 19, 35, 57, 78, 90, 52,121,219,182, 86,172, 45,219, 92, 75,148, 20, -248, 64, 77, 3, 50,141, 36, 42, 99, 89,160,250, 6, 93, 59, 82,180, 19,131,215, 42, 51,110,195,216,188,172, 25, 75, 93,188,179, - 97,193,221, 15, 65, 94,238,177,162,109, 19,164, 33, 9,197, 91,233,162, 33, 34,107,133,122, 60,160,227, 68, 61, 25,182,212,136, - 27,245,158,125, 13,162,166,132, 69,211,226, 61, 16,221, 17,135,166,132,229, 81, 66,240,169, 1,117,169,177, 70, 69, 43,187, 61, - 23,155, 26, 91,139,181, 16,117,122,152,137,133, 45, 80,146,146,243,232,225, 39,225,139, 47,165, 96, 82,215,177,145,157,253, 28, - 49, 97, 76, 35, 50,106,204,164, 99,105,106,117, 61, 84,136, 36,134,232,122,216, 89,220,116, 78,201, 9,143,177, 73,214,142, 85, - 12, 18,161,196,193,196,171,253, 20,156, 15,141, 66,197, 29, 8, 37, 0, 60,173, 5,231,192, 42, 25,193,210, 64,105,222,125,106, -165,197,178,108, 43, 80, 38,169,250, 1,163, 69,236,113,173, 33, 48, 13,205, 65,117,193,162,167, 94,182,176,152,198,181, 93, 67, -185,228,123, 10,228,214, 42, 93, 94,228,208,108,147,247,124, 91,225,131, 56,189,105,204, 69,122,108,233,133,194, 78, 60,154,243, -158,192,131,218,120,240,110,229,213,119,103,238,127,225,150,139, 75,101,248,248,132,254,145, 29,246,199,247,240,123, 6,236, 39, - 46,224,105, 67,190, 50, 51,254,226,194,248, 47,142, 92,126,119,230,193,161,112, 59, 55,158, 42, 60, 27,133,219, 24, 43, 31,101, -139,143,208, 32, 53,230, 1,212, 10,249,219,207,104,255,131,160,255, 62,200,103,175,176,247, 12,185,239,155,177, 29,131, 2,247, -182,250,238, 53, 5,147,177,212, 77,205,181, 23,111,181, 78, 21,238,220, 64, 59, 98,179, 35, 15,209,140, 77, 13,169,147, 63,184, - 41,146,217, 78,165,251,128, 66, 3, 21, 96,148, 20, 54,183, 59,195,115,209,124, 44, 49,184, 22, 65,238, 77, 62, 87, 47,192,221, -228,135,128,229,128,149, 32,163,244, 77,221,226,130,167, 64,212,254,230, 1,150,134, 93,130, 29, 10,246,172,110,225,228,241, 64, -112, 39,210, 90,108,128,241, 83,193,164,252,142, 19,217, 58, 35, 85,188,221,155, 22,235, 33,104, 20, 17,108,113, 27,155,142, 49, -251, 24, 18, 58,170,207, 13,175,146, 75,211,163,213,202, 77,141,124,118,127,111,238,108,144,181, 5,223, 21,245,253, 32,143,201, -202,124,239,205, 7,139, 42,126, 80, 15,145, 75,131,122,151,227,110, 14,139, 66,130,223,121,134, 61, 94,176,215,187, 39, 40, 4, - 23,139,159,250,156,135, 28,106,242,165,109,171,225, 16,194,201, 33, 98,125,127,235,128, 77,143,145,151,238,194,241, 31, 66,249, - 41,216,255, 17,200, 63, 13,118,131,252,161,255, 9,134, 35,249,103,119,200,141, 80,106,241,214,250, 25, 67, 86,244,108,115,175, -125, 1,118, 95,117,107,134,158,234,154,220, 68, 57,185,205, 82,128, 7, 25,185,202, 30, 14, 36,138,188, 29,179,224, 67, 13, 59, - 78,111,109, 38, 79, 43,236, 89, 3, 57,200,110, 75,131,167, 10,203, 2,243, 91, 80,223, 1,153, 64,238,193,248,167,225,206,255, -140,254,177, 70,254, 63, 38, 76, 11, 23, 97, 23,109,173,249, 25, 52,103,200, 59,191, 79, 79,199,128,123,120,123,166,206,133,186, - 84,154,149, 21, 41,155,186,234, 60,178, 19, 90,180,254,210, 48,122,136, 71,100, 38,180, 26,149,189,197, 40,164,127,175, 66,109, -226,155,189,132,206, 0,127, 14,181,187,108, 69, 98, 62,191, 68,186, 91,168,239, 99, 67,110,167, 19,173,206,171,189,135, 14,250, -104, 94,117,169, 40,150, 50, 77,189,147,196, 52, 98,201,171,116,137,236,238, 74,117,122,153, 25, 69, 71,218, 82, 24, 14, 55, 78, -248, 34,193, 82,208, 90, 86,183,192,210,124, 62, 75, 11, 24, 72, 87, 74, 18,224,153,240, 53, 73,191,215,215,249,127,143,104, 45, - 46,188,142,182, 45, 75,241,217,126, 2,165,117, 84,149,199, 66,227,179,107,221, 93, 80, 85, 97, 62,193,241,228,149, 98,124,223, -220, 54, 22,122, 86, 33, 27, 40,149,210, 95, 39,150,251,190,102,151,160,252,229, 96, 46, 44, 86,157,185, 46,190,142,121, 0,157, - 5,190,181, 32,183, 79, 25,199, 29,146, 7,218,241, 22,149,192,188,182,138,217,226, 51,231,228,130, 97,103,192,119,165,127, 13, -104,239,246,254, 45, 41,174, 61,235,163, 5, 57,195,156,186,213,108,181, 94,181,182,165,243, 53,223,176, 82, 14,177,162, 38, 74, -107, 44, 37, 44,107,205, 28, 11,156, 61,148,198,186, 54, 64,132,156, 7,114,118, 66,158, 9, 46, 84,171,171, 12,209,109,205, 57, - 99, 42,148,165,132, 3, 34,236,139, 34, 12, 73,227,250,137, 87,243,173,249,216, 49,126,151,166, 10, 75,241,131, 78,192,107,170, -128,182,186, 6,252,132,247,114, 21,203,250, 60,222, 29, 24, 22,179,114,107, 45, 28, 51,234,203, 73,159, 73,226,163,189,222, 33, -235,182,189,166,186, 10, 29,215, 89,154, 74, 64,127,218, 11, 1,172, 31, 81,165,191,152, 42, 39,231, 2,185,109,204,144,254,192, - 94, 63,223,139,200,163,193,108,226,130,183, 22, 73,108, 45,144,213, 38,188,103,240, 45, 17,190,153,132,239, 40,188,127,106,156, -222, 91,224,139, 71,210, 63, 56,146,126,225,132, 62,110,240, 70,130, 31, 24,225, 39, 39,248, 67,123,228,205, 29, 58, 12, 76, 71, -229,242, 88,185, 92,140,203, 30,240,209,125,123,177,182, 75, 4, 66, 37, 13, 81,221, 98,216,111, 25,242, 3, 9,121, 35,195,219, -230, 22,178,251,142,108,229,158,248, 6, 58, 70,117,124,111,128,171,193,255,173,207,111,115,194, 87,196,134,220, 46,126, 50, 46, - 11,210, 15, 0, 75,236, 84,199, 88,236,107,136,153,196, 85,234, 82, 28, 94, 66,210,168, 22,117,203,249,124,142,210, 31,253,238, -189,122,238,249,157,228,172,203, 18, 39,152, 83, 92,228,110, 85,187, 8, 31,253,223,125,134,205,197, 5, 99,207, 10,237,209, 18, -254,231,104,127,215, 68,122,243, 18,249,253,123,144, 17,174,127, 26,242, 67,223,196,126,247,171,216,111, 66, 45, 75, 84,184,182, -182,250, 56,219,132, 83,204,210, 73,138, 94,103, 23,155, 92,142,240,241, 61,242,210,206,223,219, 51,131,247, 78,240,120,161, 61, -153,169,207, 22, 63,117,203,115, 41,134, 94, 69,233, 38,154,227, 5,230, 58, 34,140, 34,236,146, 31, 12,243,229, 64,126,117,143, -188,186,131,215,246,240,242, 0, 95,124, 74,251,242, 45,118, 41, 91, 37, 59,168,123, 75, 3,122, 46,221, 42, 22, 10,236, 62, 64, -236,137,181, 82, 5,116,240, 46,199,117, 69,174, 39,120,246, 15, 97,124, 3,134,215, 32,127, 26,166,215,145,135,191, 1, 23, 71, -244, 59, 25, 89,100,141,141,117, 11,154, 70, 91, 92, 86, 64,189,104, 90, 57,201,231,246, 64, 66,113,237, 76,228,248, 12,119, 26, -163,143,205,168, 44,221,188,172,226,153,215, 35,200,190,219,220,196,131,140,114,228, 6,236, 19,114,183,193,120, 5,187, 79, 65, -254,184,163, 99,211, 61,224, 55,144,139, 47, 99,191, 58, 96,183, 46,222,179,218,168,166,200,176, 67,246,147, 87,142,203, 66,173, -149,138, 82,154, 58, 64,163,122,151,234,124,218,211,149,178, 45, 54,105, 65,169, 50,210, 36, 69,104,134, 87, 12, 93, 84,103,182, -109, 88, 22, 45, 88, 59,135,128,212, 13, 71,234,239,103, 64,198, 93,159,109,108,243,204, 97,192, 82,222,146,163, 67,216, 83,197, -253,209, 18,149,176,228, 33,190,124, 83,148,253,133, 91,169,140, 32, 49,122, 53,163,101,102,160, 81, 82,102,174,149,118, 56, 58, -220, 72,140,211,233,200, 50, 31,161,245, 48,164,110,212, 98,157,211, 98,205, 59,146,201,159,229, 6,212, 26,232,219,213,193,177, -129, 86, 4, 23,160,182,148, 61,215,178,121, 68,236, 16,238, 14,119, 63,170,171,229, 53,185,166, 96,220, 33,215,247,176,253, 61, -170, 36,183, 69,213,122,230,179,246,194, 33, 99,164,228,135,196,197,132, 83, 21, 90,228,244,249, 51,213,179,201,187, 56,181,115, -243,195, 82, 22, 15,157,230,140,232,232,127,166,228, 42,111, 17,202,233,224,155,117,202,190,177,135, 77, 46,231, 17,212, 69,102, -173,213,149, 69,222,211,248, 68, 4, 13,123, 92,171,238, 73,151,190, 0,196,252,255,220, 98,166,225,175, 23, 81, 7,202,228,236, -155,168,166,168,202, 23,202,105,166, 84,199,213,106,210,192,254,194,144, 51,211,232, 97, 46,118,174, 60,151, 62, 51,119,225,174, -158,165, 32, 54, 51,106,109,212,110,201,107, 27,139, 67, 84, 73,162,228,193, 35, 92,171, 53,218, 82, 72,154,200,195, 16, 29,155, -182, 22,146,162,178,206,213,205, 44, 28, 33,222,181,144,184, 46, 73,125, 92,160, 42, 36, 52, 68,143, 45, 14, 44, 26,174, 44,167, -203,137, 38,135,251, 68, 40, 76,199, 71, 91,160,106,183,232, 97,255,236,106, 41, 62, 26, 92,119,194,239, 81,165,235,139,161,235, -155,100, 78,206,182,245,244, 83, 23,250,121,214, 28,245,152,127,219, 86, 88,206,205, 79,150,135,232, 16, 63,109,240,212,132,247, - 27,124, 71,132,111, 37,225,219, 34, 60, 58, 85,234,123, 11,250,207, 14,164,127,112, 75,250,245,130, 92, 24,188, 49,194,103, 71, -228, 39,247,240, 99,123,244,114,100,168,153,221,177,113,117,104, 92,182,240,126,246,152,164,190, 87, 42,100,179, 80,185, 26,246, - 85, 67, 62,149,145, 55, 6,236,253, 6,151,134,220,207,112, 21, 39,250, 34,222,166,189, 12,113, 90,247,171,140,177,240, 7, 5, -142,147,192,222,206,200, 95, 45, 44, 58, 46, 18,243,232,190, 32,183,168,251,163, 93,169,146,145,166,112, 61,250, 70,220,129, 10, -242,194,160, 67,146, 31, 42,238, 69,148,231, 28, 28,213,131,249,151,157, 33,137,238, 13,112, 91,177,127,126,194,172, 80, 31, 23, -152,227, 67, 63, 86, 23, 9, 13,137,100,137,244,169, 61,242,185,236,232,185,235, 63, 3,249, 62, 28,255, 31,248,157,111, 96, 95, -129,182, 20,183, 29, 45, 22,194,159, 77,237,174, 94,156,175,158, 73, 29,148,116, 53, 32, 15, 70,228,245, 29, 60,112,118, 51,143, -102, 87,151,223, 46,212, 39, 11,237, 89,241, 86,165,156, 89,169,206, 38, 16, 93, 28,109, 47,228,103, 39, 96, 76,226,103,170,172, -228, 59, 19,249,149, 11,248,248, 14, 94, 27, 97,202,216,223,124,159,118, 90,176,125,119, 16, 90, 8,204, 92,197,207, 18, 91, 64, - 63,116,133,135,157,232, 26, 88,232,211, 56, 52, 79, 12,123,188,192,125, 65, 46, 47,225,217,207,195,248, 50,140,159,134,225,115, -176,251,125,112,239, 23, 64,110,208,183, 50,178,180,192, 71,134, 96, 78,116, 75,156,145,228, 78,138,236,178,126, 57,179,185,117, - 90,137,172, 89,156,145,228,177, 87, 63, 60,142,186,217, 94, 10,235, 34,168,200,234,113, 39, 71,252,108, 22,100,231,240, 7,185, -223, 96,186, 11,187, 55, 97,252,193, 24,244, 78, 32, 63, 0,227,255,133,164, 19,246,203, 13,180,208, 82,102,217, 95, 99,121, 68, -151,197, 63,247,158, 53,222, 51,156, 91,136,228, 58,205, 74,207, 5, 85, 97,137, 18,165,229,193,231,238,230,243, 61,234,130,198, -102,184, 5, 79,184,218,121,197,134, 55, 91, 15,121,182,210,202,163, 89, 21,222,111,207, 62,238, 66, 14, 69,198,201,133, 71, 61, -100, 36, 84,213, 68,101,168,195,228, 22,188,156,145,156, 93,232, 53, 14,206, 14,215,204,134,142, 87, 20, 35, 91,245,199,217,224, - 52, 23, 76, 51,121,183, 39,103,165, 56, 72, 53,126,126, 67,107, 69,251, 98, 77,119,148,184,120, 51, 7,115,176,169,210, 52, 14, -148, 91,244,218,218,154,150,168, 66,155, 38,167,217,117, 95,187,217, 74,228,157,205, 81,178,164,236,139,188,184,138,123, 54,133, - 60,110, 96,156, 90, 86, 11,220, 42, 52,239, 26,208,230,108,248,118, 78,241, 59,247, 99,139,146,212, 86,232, 80, 99,131,188, 88, -231,185,231, 33,220, 17,190,185,149,101,246,247, 20,155,156, 14, 83,164,254, 21, 90, 93,188, 61,220,159, 39,250,198, 44,225,162, - 72,190, 89,245,226, 75,210, 58, 54,241,239, 75, 46, 20,203,206,142,239,110, 12, 19,168,214,220, 78, 87,252,192,217,149,229, 26, -188,248,156, 7,134, 97, 96,202, 35, 87, 87,215, 92, 93,221, 97, 24,119, 44,101,161,149,226,153,232,177,161, 75, 44, 64, 61, 96, -168,197,140,186,243,231, 83, 74,228,148,200, 67, 38,231,129,148, 51, 57,126,159, 82,235,115,155,117, 39, 50, 82,155,111,208,209, - 5,178,208, 77,208,186,126, 98,115, 0,117,208,140, 35, 95, 59, 66, 55,186, 23, 42,107, 40,210,134,166,141, 67,155,109, 82, 90, -215,132,168,199,209,174,174, 65,191, 38, 53, 68,173,172,225,192, 31, 45,142,227, 12, 58,213, 13, 90,124, 68,168, 75,250,227, 23, -250,249,116,118, 70, 72,231, 85, 89,220, 80, 35,155,183,188, 70,245,126,219,188,176,125,210,124,212,248,190, 10,223, 76,240, 78, - 18,110,231,138,124,253, 68,254, 71, 7,242,207, 31,145,167, 1, 13,121,115, 68,126,255, 30,249,189, 35,242,241, 29,169,100,166, - 34, 92,206,149,203, 98,140,157,250,117, 38, 22,206, 61,202,185, 24,246,117, 67,190, 63, 35,223, 63,194,141,227, 68,229,101, 65, -174,171,111,238, 67,248,232, 58,111,187,111, 57,115,180,119,251,134, 93,226,196,153, 3,204,108,134, 52, 87,176, 58, 38,237,140, -176,221, 89,144,139, 67, 73,184,159, 87,178,155,156,103,123,118, 26,192, 36,112,119,240,116, 54,139,120,167, 78,143, 59,181,205, -155, 62,136,207,144,223, 94,144,155,234,169, 89, 55,197, 55, 52,154,255,169,130,238,188,165,168,159,186, 64,126,104,242,138,229, -242, 95, 2,189,128,155,191, 3, 95,121, 27,251,186,209,202,236,179,255,110, 43,209, 51, 5,186,194,144, 61, 46, 74,114, 66,115, - 66,119,163,167,145,189, 58,186,242,253, 84,177,183, 79,142,230,125,186,208,110, 10,237,166, 6,210, 81, 54,255,118, 88, 48,180, -135,151,172,139,190,172, 30,204,172,206,188,222, 53,152,118,153,244,112,135,126,108, 15,175, 15,240,234, 30,110, 10,252,253, 71, -180,177, 98,251,104,231,214, 56,136,244, 21,235,133, 59,216, 96,107,155,198,120,193,154, 95, 83,185,169,254,217, 60, 43,225,106, -184, 7,207,126,201,199, 20,227,247,129,126, 12,201,111,194,245,207,195, 7, 11,250,118, 66, 6, 54,133,102, 15,161,201, 26,194, -108,137,185,229,243, 38,112, 89,229,202, 81,217,247,194,107,192, 15,122, 23,217, 31,150,238,146,168,108,200,200, 28, 66,193, 28, - 85,206, 20, 80,138, 75, 65, 30, 8,236,238,193,229,167, 97,248,161,240,172, 23,200,175,130, 86,228, 99, 95,128, 95, 22,218, 7, -123,236,222, 21,173, 37, 90, 57, 33,181,250,226, 46,157, 67,219,168,225, 61, 79, 49, 62,168,125, 97, 9, 74, 26,189,189,171,147, -255, 25,240,141,182,156,192, 42,231,241, 19, 22, 7,133,126,232, 49,149, 51,175,176,108, 56,203,179, 46,142, 87,184, 81,237,229, - 17,221,237,124, 35,204,131, 87, 37,125,129, 15,191,183,230, 1,166, 41,116, 34, 1, 30, 10, 59,144, 87,139,121, 93, 24, 53, 37, -134,105,199,184,223, 49, 12,131,207,160,155,209, 46,174, 24,118, 59,111, 77,207, 39,230, 16,224,181,214,220, 86, 22,141, 19,123, -206,153,225,170,114,111,165,198,248, 44, 15,126,160,227, 60,224,101, 83, 37, 55, 51,135,153, 12,147, 91,250,226,126,240,184,205, - 46,238, 12,181,183,192, 82, 42,203,241, 72,149,112, 31, 72, 70, 8,145, 32,178, 6, 13,245,235,183,152,135,224,212,224, 6,120, - 14,189,172,248,223, 14, 81,146, 72,131,179, 46,244,236, 33, 55,214, 66,247, 96,107,215, 99, 37, 72,228, 1, 29, 6,100,152, 64, -149, 58, 31,195, 15,206,170,196,182, 94,241, 70,184, 75,175, 38,219, 89, 72,139,177,205,126,207,193, 41,173, 85, 90,113, 97, 92, - 53, 91,253,222,221,175, 45,154, 24,242,192, 52,237,152,118,123,118,251, 11,198,221, 5,121, 28, 25,226, 96, 80, 69, 56,205, 51, -243, 50,111,155,113,101, 3,208,148,186,122,212, 29, 96,163, 12, 57, 51, 78, 35,121, 28, 72, 41,123,213,159, 28, 92,116,106,141, -211,233,232, 87, 71, 29, 80,147,146,227,134,172, 22, 15, 22, 10,203,101,105,174,152, 95,187, 80,237,172,117,190,242,225, 67,140, -152, 18,165, 54,164,109,241,170, 61,160,197, 98,195, 95,115,145, 59,201, 46, 66,175,172,148, 51, 12,108,243,217,252, 82, 34, 48, -233,249,198,175,189,152,233,242, 28,223,250,195, 62,246,117, 83,255, 87, 46,245,243,221, 75,201,202, 4, 63, 19, 5, 71,129, 59, -156, 1, 76,242,198, 12, 98,110,193, 82,105,198,147, 38, 60, 70,120, 79,132,119, 70,225, 89,107,148, 71, 11,195, 23,111, 25,126, -230,128,188, 83,225,245, 12, 31, 31,145, 31,220, 33, 63,234, 16, 18, 33, 49,204,202,238,212,216,151,198,132, 48,196, 60,163, 31, - 56,100,114, 1,156,125,179, 33,159,136, 86,124,141, 56,210,187, 47, 35,247,223, 69,174, 12,230,209, 45, 72, 68,203,251,253,230, -170,243,254,238,151,186, 65,202,119, 17,126,221,179, 42,171,251, 58,233, 74,210, 98, 62, 3, 40, 13,230,134, 92,171,119, 2,166, -141, 47, 28, 12, 84,175, 34,171,248, 2,255, 90, 68,164, 30, 98, 54,222,249,186,199,182,109, 2,187,152,185,255,179,163,171, 74, -123,158,108,109, 88,177,104, 9, 25,210,212, 83,148, 62,121,137,124,106,130,227, 9,246,159,241,159,243,228,239, 98,191,113,139, -125,123,161, 30,150,149, 52,117,238,120, 92, 63,175, 93, 90,147,235,210, 46,163,187, 1,121,121, 68, 94, 25,124,179,121, 86,224, -237, 5,110, 10,237,102,161, 61, 41, 62,131,169,103,172,136, 51,115, 65,143,162,238,247,110,183,143,244,255, 63, 70, 30,207,112, -119, 34,191,182, 67, 62,177,115,161,226,131, 9,126,251,150,246,171, 79,104,151,177,226, 86,217, 4,101, 97,167,179,210,177,136, -242, 33,210,130, 21, 91, 45, 21, 86,170, 7,128,156, 26,178,100, 63,117,222,175,200,197, 61,184,249, 5,200,247,124, 84, 33, 15, -125,211,126,233, 75,240,172,161,143, 60,234, 83, 7,117,234, 94, 74, 17,131,217,103,174, 65,152, 27,206,218,159,189,101,177,248, -109,227, 51,246,184, 40, 23,129, 88,220, 7,215,126, 58,123, 96, 36,136, 76,187, 51,219, 71, 7, 97, 92, 11,114, 23,216, 95, 59, - 84,104,248,108,248, 51,139, 31,167,211,143,192,248, 27,200, 75,223,160,254,191, 23,200, 48,187, 78, 35, 88,219, 45,176,158,181, -122, 44,101,179, 80,218,170,160,155, 51,115,157,123,150,230, 25,229, 69,148, 22,115,213,186,204,190, 32,191,176, 94,116,104,204, - 26,195,186,130, 79,116,253,255,235,124,181, 15,160,243,132,236,246,174,204, 28, 28,120,211,230,217,171, 20, 51,218,233, 16, 7, -136, 0,132, 12,227, 10,142, 89,169, 99,181,184, 2,190,206,104,168,143,181, 44,100, 53,134,120,196,114, 74,180,221,158,101,127, -151, 50,236, 17, 49,210,241, 25,203,233,224,222,226,160,228,229,112, 95,244,228,184, 94, 89,245, 67, 73,141,153,105,194,153,239, - 41,103, 76, 18,165,249, 38,222,191, 44,132, 80,158, 49,159,145,193,121, 0,222, 6,174,103, 78, 36,223, 32,139,102,170, 37, 74, - 53, 74,153,177,148, 72,227, 30, 77, 3,182,156,188,136, 72, 66, 90,129, 53, 74, 21,165,116,109, 37,186,197,230,198,161,179,187, - 77,232, 48,159, 8, 49,105, 43,124,198, 86, 97, 27,154,125,116,209, 59, 71, 42,171, 77, 81, 82, 38,143, 59,119, 72,212,176, 14, - 70,229,173,154,221,186,184,230, 1,120,181,124,150,250,179,181,231,213, 19,208, 52, 90,253, 73, 93, 79,144,243, 72, 26, 38,210, - 48,248,124,124,220, 49,140, 19,105, 24, 73, 99,142, 72, 84, 71,187,150,226, 85,170, 6,168,102, 41,133,101,153, 93, 68,215, 2, - 69, 27,179,124, 81, 37,167,196, 48,100,118,211,196,126,191, 99, 26,167,240,148,103, 6, 85,246, 67,230, 42, 14,126, 39, 51,150, -121,118,199,131,193, 24,223, 87,154,235,144,114,206, 62,235, 22, 88,150, 18, 35,158,179,248, 98,117,144, 12, 41,175, 89,242, 43, -212,166, 99, 99,131,159,161,189,245, 30, 29, 64,108, 27, 21,244,103, 44,117,167,242, 0, 0, 32, 0, 73, 68, 65, 84,213, 2,117, -107, 42,235,251,106,181,185, 11,228, 67, 91,249,134,131, 94,207,149, 31,218,208, 95, 76,107,243, 93, 63,253,153, 43,253,252,208, - 23,224, 88,123,186,117,122,138,117,104,165,197, 1,163, 74,108, 20,209,221,142, 53, 45,120, 59,204,205, 71,179, 39,132, 15, 68, -120,127, 16, 30, 39, 40,183,133,225, 75,183, 12, 63,115,139,188, 85,176,215, 18,242,137, 29,242,233, 9,249,236, 8,175, 15, 8, -153, 52, 39,198, 5, 6, 19, 6, 2,152,159,226,166,235, 66,170,247, 64, 94, 85,120, 21,183,119,229, 63, 15,211,159,130,253, 23, - 16,169,112,155, 92, 16,112,219, 98,134,221,251, 91,241,165,241, 97, 76, 93,201,206,166, 72,182, 13,170,237,192, 13,231,121,203, - 24, 15,198, 40,200,133,183,234, 66,214,186, 17,184,150, 96,162,190, 26, 61,181, 67,164,222,116,224,204,201,182, 54,242,117,246, -139,245, 43, 71,108,140, 14,193,114,150,252,165,226, 27, 78,206, 36,201,200, 39,247,200,247,141,112,123, 11,151,159,112,213,254, -119,126, 17,190, 80,104, 79,139,183,164, 74, 91, 3, 95,186,152, 59, 53,208,125, 66,246, 25, 25, 18, 58, 37,116,151,209,171, 1, - 94, 30,144,251,147,223,200,143, 11,188,183, 96, 55,133,118, 91,176,165, 98,179, 69, 71,218,182,112, 22,221,114,217,123,219,175, -173,247,153,172,212,186,157,194,152,149,252,210,158,244,230, 5,124,108,231, 27,250, 85,194,254,238, 35,236,189, 35,118,135,149, -173,105,241,160,117, 69,241,230, 1, 58,123, 72,122,128,117,243,246,153, 45,109,107,213, 47, 21, 57,178, 34, 25,185, 94, 96,119, - 31,185,249, 85,168,223,138,159,251, 25,184,184,143,188,241,101,184, 56,109,145,149, 54,120, 59,113,136,154, 71, 53,108,111,178, -126, 22,146,211,246, 16,213,232, 38,245, 3, 71,104, 31,188, 13, 63,120, 39,103, 12,233,255,160, 91,103,102, 12,147,127,207,181, - 22,137, 74,221, 96,186, 15,251,143,195,248, 57,188,141, 16,237, 11,189, 2,249, 17,228,213,127,136,252,220,219,180,223,109,112, -173,180,192,180,174, 95,173, 82,173,198,218,235,236,246, 30,149, 91, 99,173,232,183, 71,147,180, 85,233, 1,247, 96,157,120,111, - 49,160,125,145,168, 56, 34,182,217, 89,115,176,123,107, 37,230, 59,226, 56, 89,157, 70,167,197,105,162,206, 39,150,195, 13,237, -120,235, 18,148, 90, 87,242, 25,165, 56, 93,110,218,249,134, 88, 74, 55,139, 97,197,199, 0, 98, 37, 58,104, 11, 58, 31, 25, 78, -183, 12,243,145,100,190,218,212, 52,178, 92,222,167, 93,222,117, 94,247,211,119, 93,113, 46,137, 66,168,219, 99, 39, 92, 44,180, -198, 42,219,134,165, 94,241,246,251,214, 85,232,158,223, 62,147,125,182, 26, 85,108, 86,103,175,215,230,115, 39, 49,200,121,192, -134,145,182, 44, 94,221,139, 31,120, 28,245,224, 64,155,138, 98,173, 80,170,183,115,251,136, 65, 74, 40,232, 37,226,118, 98, 86, - 93, 16,138,157, 41,160,109,203, 68,239, 81,198, 26,213,121, 51,191,150,222, 86, 14,154,155,122, 26, 29,154,183, 16,144,110,241, -138, 78,130,198,198, 43,195,206, 55, 44,156, 11,159,134,157,207,209,163,157,238,115,242,228, 7, 33, 81,114,192,170, 82,136,216, - 28, 2,227,204,121, 37, 88,230,113,208,243, 42, 56,251,198, 57,100, 42, 49, 87, 47,133,218, 42,165, 86,230, 90, 88,230,197, 45, -104,162,193,201, 55,150,226, 92,127,139,238, 76,206,153,253, 56,113,121,113,193,213,126,199,157,139, 43,246, 23, 23, 12,195,176, -250,196,251, 60,125, 20,225,238,110,199,245,229, 53,170,202,220,169,137,205, 65, 49, 22, 68,193, 20,162, 58, 82, 98,110,141, 58, -159, 34, 72, 65, 54, 34,167,186,242,190, 59, 3, 92,248, 23,234,253,200,117, 95,219,238, 18,136,220,222,129, 18, 65,114,246, 74, -188, 91, 20,251,159,226,118, 73, 19,175,220, 91, 35, 14,155,124, 40,143,205,206, 82,128, 55, 91,160,125,207, 60,117, 17, 33,239, - 98,156, 56,200, 22,171,106,103, 80,132,115,182,119, 23, 63,118, 10, 82, 87,102,250,201,116,203, 98, 55,131,178, 24, 79,178,219, - 49, 14, 9,222, 25,132, 87,128, 55, 30,159,120,237,111,207, 92,253,226, 51,228,207,221,135,159,190, 3,175, 79,200, 43, 35,242, -131, 23,216,151, 14,240,107, 39,244,173,147, 43,209, 91,219, 74,206,226,234,116,251,221, 19,252,140, 32,195, 53,188,121,132,246, - 15, 64,254, 11,152,254, 83,120,237,191,132, 71, 2,143, 5,158,225, 27,247, 7,177,185,166, 51, 79,192,208, 23,164,216, 76, 52, -193,212,223, 96, 72,187,171,108, 45,216,212,103,237, 81, 81,119,209, 66,238,161,212,234,149,247,189,104,179,222,148,168, 38, 3, - 54,115,178,179,244,147, 80,161,127,115,113, 40,199, 33,178,119,147,111,192, 54, 24, 66, 70, 46, 61, 45, 78,158,102,184,138, 28, -243, 19, 72,123,236,132,186,239,206,238,215, 95,249,173,177,209,196,124, 70, 76,220, 7,126,145,145, 49,123, 82,217, 20, 26,132, -189,250, 76, 87,195, 61,240,180,248,193,227,118,139,219,148,157,211,191, 82, 85, 39,119,149,104,133,169,208, 74,216,107, 86,159, -164,172, 33, 46, 3, 48, 52, 35, 93, 78,232,189, 17,238,143,174, 69,184, 84,127,157,127,126,192,174,252,100,104,183, 56,183,222, -218, 89,160,119, 59,195, 38, 57, 60,197, 85,186,113,253, 59,119,186,198,134,110,230, 93,147,249, 8, 95, 7, 85,243, 95,226,211, -111,195,229,235,112,251, 53, 56,124,205, 45, 99,211, 31,132, 87, 63,137,252,209,255, 29, 62,248, 26,246,206, 12,111, 41,242,141, - 17,121, 63, 97, 83,245,174, 76, 87,174, 43,235,136,102,221,200, 70,159,169, 59, 96, 70,253,240,246,168,248, 38,158,178,131,137, -242,128, 13, 33,154,188, 80, 23,163,132, 26,150,146, 2, 94,210, 47, 94, 8, 47,237,212,229,162,241,136, 86,176,163, 11,254, 46, -255, 67,210,127,242, 87,208,191,120, 32,213,196, 40, 71, 74,243, 5,178,214, 74, 89, 91,168,189, 96,220, 62,155,174,135,104,125, - 70,222,154,183, 9, 67,248, 70,108,128,125,230,222, 34, 73, 75,206, 89, 86,113,111,245,141,190, 43,117,155,177,250,163, 77,156, -153, 46, 75, 13,155, 91,197,202,236,226,187,195, 77, 84, 1, 46,132, 19,240,107,212,231,144, 67, 14,255,122,129,121, 38, 81, 25, -178,231, 42,139, 24,218,170,219,248,218, 66,187, 57, 80,110,158, 81,244, 3,218,229, 13,109,186,164, 45, 51,167,106,228,164,100, -131,165,134,135,124,229, 26,133, 27, 94,212,157, 21,130,207,175,123,130, 92, 8,210, 82,245, 89,184,138,103,174,183,182, 97, 77, -147,224,214,192,178,144, 38, 33,219, 66, 29, 47,105,211,222,187,114,209,102,117, 37,122, 60,134,121,240, 13, 69,220,219,159, 4, -210,180,195,202, 5,237,246, 25,205, 36,114, 10, 88, 85,210,170,189, 94,136,145, 68, 92,243,214, 29, 57,193,215, 79,254,228,196, - 97,162,219,177, 28,177,189, 30,158,204,231,197, 57, 43, 12, 3,229,120,242, 96,152, 60,162, 73,209, 97,231, 26,135,101,137,181, - 41,252,222,177,193, 73,143,142, 13,103,148,158,121,169, 65,220, 62, 38, 25,203,254,134, 19,194,110,154,184,184,186,195,126,127, -197, 48, 58,221,110, 46,133,121, 62, 80,230,197, 29, 40,213, 55,238, 82, 11,212,202, 48,122, 74, 27, 34, 92,239, 47, 92,209,222, - 26, 57,132,127,217,220,218, 88,173,113, 44,149,185, 44,204,161,164,175,103,226,179,103,214,184, 61, 30,121,101, 89,184,184,186, -230,122,183,135, 86, 93,103, 17,252,126, 75, 3,132, 35,185, 38, 63,124,154,181, 53,161, 78, 99, 12,164, 41,249,115, 82, 93,119, -181,162, 93,123,122, 95,210,237, 58,197,103,219, 31, 58, 77,234,220,133, 16,120,246, 20,182, 85, 19,212,221, 2, 61, 32,160, 61, - 95,165,219, 89, 31, 94,206,106, 77,249, 30,212,185, 30,101,107, 64,222,197,232,247, 58,109,137,107, 75, 4, 67,244, 10,227, 28, - 53,186, 86,101,103, 48,133,174,101,234,248,108, 11,203, 83,111,235,151,234,133,115,201,240,120,167,124,215,224,227,143,142,188, -250,191,125,151,221,207, 61,131,127,251, 1,242, 47, 95,193,103,118,200,199, 50,124,118, 7, 95,154,225, 75, 71,236,157,197,127, - 64,178,213, 67,206, 50,195,111,131,253, 66, 66,228, 2,222,252, 6,240,215,192,254, 44,236, 94, 69, 94,122,132,189, 51,248,139, -206,230, 11,235,108,225, 60, 59, 19, 11,204,192,253,120,130,250, 70,146,237,204, 4, 24, 87,114,136, 25,234, 62,218, 41,183,213, -231,247,187,104, 89,156,226,110,191, 86, 87,227,167, 64,189,118, 27,214,210, 21,239,108, 20, 57, 12, 30, 53,184, 19,141,147, 18, -100,161, 36,232,221,120,189, 18,191,198,189, 20,237,125, 54, 25,179, 29, 60,148,102, 62, 59,120,136, 99,101, 9,198, 52, 41, 56, -234,125, 67, 31,146,243,199,199, 72,232,233,130,194, 83, 8,249,150,176,142, 20, 59,131, 52,132, 37, 1, 67,181,209,154,172, 26, -168,185,196, 60,252, 44, 82, 50,197,121,105, 24,149,116,103, 68, 95,217,193, 75,131,111,232,151, 3,252,218, 99,236, 88,176, 87, - 60,181,204,240,195,207,243,112, 6,123, 62,254,211,154, 39, 23, 21, 86,203,217,122, 56, 82,207,148,239,226,174,242,228, 22,253, -226, 66,122, 82,253, 52,252,153,111, 34,119,222,132,229,101,152,191,230,134,247,203, 63, 7,247,254, 26,220,249, 10,242,218,207, -193,247,255, 18,246,214, 35,248,173,140,124,125, 66,134,138,105,133, 99,243,101,179,143, 88, 74, 31, 67,232,230,107,151,230, 29, -154, 67,129, 71, 10,227, 9,155, 60,241, 78,134, 12,187,132, 93, 21,223,212,159, 84,184,109,200,208,182, 78, 91, 98,227,235,150, -199, 96,203, 11,105, 13,115,196,178,254,113,228,135,255, 40,195, 79,254, 61,236,151, 43,246, 96, 38, 91, 69,205, 34,158,181, 55, - 58,252,126,232,173,247,149, 35,212,206, 44, 49,171,210,189,167,188,245, 25,185,157, 97, 10,122,230,180,174,179, 57, 43,178,206, - 94,237, 44,131,180,245,138,208, 34,235, 92,195,166, 20,203,127, 19, 79, 22, 19, 18,114, 50,100,183, 71,247,151,209,190,116, 53, -183,180, 68,109, 93, 80,229,135, 42,173,174,117,113,123, 96, 97,152, 38,114, 30, 56,156, 78,148, 22,175,187,156, 60, 33,110, 62, - 49,179,101,235,182, 88, 9,251, 28,189, 4,146,182,231,208,247,181,174,153,172,169,126,162,234,209,197, 2,201, 26, 85,101, 93, -204,106,168,164, 77,204, 55,245,189,231,127, 55, 77,232,254,138,122,186,245,116, 51,245,113, 14,106,171,173,170, 58, 38, 49,174, -171,162,163,251,234,151,186, 56,194, 87,220, 35,223,219,228,106,222,250,245,243, 86,195, 66, 32,216, 66, 67,144,194,190, 37,227, - 64,139,170,150,134, 83,212,210, 16,202,244, 77, 96,103, 64, 9,250, 89,218,237,169,203,236, 27,126, 40,214,117, 24,124,180, 16, - 29, 31,143,203,141, 20,184,206,246, 23, 11,209,156,174,161, 36, 52,243, 90,104, 55,177,155,246, 30,204, 50, 12,140,195,158,113, -116,229,187,207,195, 43, 41,121,107, 92, 46, 4, 21,111, 99,247,124,123,107,109, 85,204,215, 86, 41,167, 35,135,249,200,241,112, -160,212,194, 82, 27,183,117, 97, 57, 45,156,150,194,113,153, 61,223,188,235, 46, 82, 90,215,141, 90,141,199,225, 6,185, 79,176, - 57, 98, 32, 89,227, 57, 81, 51,146, 10, 69,149,219,211,137,122, 58,173,150, 53, 86, 93,151, 67,110, 90,140, 1,178,248,207,106, - 34, 52, 43,126,222, 34, 57,198, 59, 90,239, 62,194,243,142, 67, 19,241, 17, 66,117,251,232,234,227, 23,239,152, 52,129,186, 20, -111,191,159, 19, 45, 95, 88, 6,251,120,126, 3, 87,109, 40, 17,125,190, 81,191,118,119,254,127,190,222, 52,214,178,236,186,239, -251,173,189,247, 57,231,222, 55,213,171,170,174,158,216,221,108,138, 83,115,146,168,209,177,100, 89,146, 37,197,178, 29,197,145, -129,216,138,157,216,136,157, 1, 65,226, 0, 14, 2, 88,249, 96, 68, 64, 2,196, 8,224, 15, 73,156,192, 8,144, 15,129, 97, 4, - 6,236, 0, 65, 2,120, 72, 96, 73,182, 18, 75, 20, 69,154, 17, 73, 73, 20,155,100,119,147, 61,212,208, 85,245,166,123,207, 57, -123,239,149, 15,107,237,115,239,171,110, 69, 68,161,212, 53,188,186,239, 14,123,237,181,214,255,255,251,167, 35,191,137,173, 61, -133,237,202,111,152, 33,236,216, 28, 53,236,246,169, 45,254,187, 21,244,160,242, 30,194,221,222,170,141,236, 77, 72,242,127,122, -204,112, 63,193,246, 32,240,184, 86, 94,120,237,156, 27,255,205, 68,252,220, 9,252,165, 91,200,135, 14,224,149,132,220, 73,232, - 11, 61,242,219, 91, 99,162, 63,158,124,198,111,222, 64,173, 21,121, 99, 68, 63, 23, 16, 89,193,139,223,128,252, 63,129, 28,161, - 7, 29,242,148,152,130, 28,239,218, 46,170,101, 89, 87,143, 69,109,163,135, 18,140,252,246,216, 11, 91, 8, 54,179,110, 87,163, -236,114,201,149,255,104,106,199,177, 94, 59,240, 88, 39,184,105,163, 81, 88, 91,215, 85,196, 45, 4, 94,164,178,238, 82,111,198, - 2,111,204,232, 74, 17,141,104,170, 72, 49,208, 13,151,190,243, 47,102,133, 66,131, 25,250,131, 26, 63, 93, 86,118,216,135,118, - 9, 49, 47,187,204,141,151,229,157,213, 96,221,184, 56, 62, 87,162,237, 88,164,119, 81,215,186,119,241, 96,195,214,178, 87,172, -236, 96,146, 10,218,249, 27,161, 4, 36,215,157,150,176,238, 38,230, 13, 1,156, 68,232,181, 18, 14, 7,226,157, 1,158,233,225, -180, 67,142, 59,160, 71,127,115,131,174,212,146,242, 54,234,194, 64,189,134, 71, 92,222,224, 98,124, 0,205, 78,210,217,223, 15, - 6,183,149,197, 86, 24,119,187,191,122,150,209, 47,103,210,168,200,168,240,201,175,155,211, 64, 63, 12,249,117, 24,255, 55, 24, -254, 2, 12, 63, 1,235, 63, 2,135,223, 70,142,255, 22,220,249,101,244,185, 9, 94, 93, 33,119, 19, 28,102, 36,251,165, 86,252, -125,180, 47, 48,104,170,210,226,239,145,171, 2,143,130,177, 10,158, 1, 14, 6, 8, 3, 50,140,112,176, 69, 15, 20, 30, 72,203, - 38,222,165,176,180,208,238,114, 14,229, 93, 3,208, 44,146,181, 10,108,204,187, 62,252,123,196,191,242, 5,226,159,126,157, 58, - 87,146, 15,203,219,190,184, 5, 88, 4,175,230,139,238,176, 54,238,182,117,224,198,238, 94, 64, 3, 86,104,252,146,164,101,255, - 58, 21, 44,105,177,134, 93,112,205,123, 90, 8, 19, 7,225,163,204,230, 55,110,235, 20,233,250,101,212,172,126,139,208,121, 50, - 2,155, 19,194, 90,140, 40, 49, 17,242, 12, 49, 17, 17,162,203,123,141, 85, 63, 32,125, 2,157,169, 18,152,165,177, 36, 20, 26, - 16, 36, 27, 54, 39, 55, 22,182,152,136, 45,171, 90,170,236,146, 90, 86,119, 35, 13,217,155, 68,106,243,222, 23, 75,159,172,187, -125,115,222, 11, 53, 72, 40, 50,110,161, 27,168,146,168, 41,248, 74,163, 32, 90,156,109,212, 65, 23,173, 43,140, 62,161,153,183, -148,188,133, 20, 73,135, 71,212,203, 3,242, 52,210, 48, 36,133,157,106, 58,180,124,242, 69, 40,170,139, 82, 63,184, 67, 64, 83, - 71,154, 38,138,231, 21,104,205,198,121, 71,108,180,238,123, 91,139, 10, 53,225, 90,183, 58,160, 14, 86,216, 77,156, 85, 81, 2, - 49, 25, 17, 79,203, 68, 41,211,226, 66,210,101,167,237, 78,128, 16,136, 62,114, 79, 33, 48,116, 43, 14, 86,135,172,214, 7,196, -126, 69, 13,129,237,102,195,102,115,225,152,105,235,128,231, 82,152,199,201,128, 46,174,251, 88, 38, 72,142,121, 77,253, 0, 40, -185, 20,174,166,145,203,237,150,121,154,188,129, 44,174,132, 55, 54,123, 8, 98, 93,188, 35,146, 91,231, 95,181,146,181,114, 57, -207,232,249, 25, 67,191,162,247,203,130,230,236,169,149,246,190,222, 76, 19,211,118,227,151,131,157,106,209,226, 14,170, 43,213, -237,226, 32,177, 3,137,206,121,119, 61,149,191, 33,154, 0, 79,124, 66, 82,197,196,133,185,228, 37, 15,222,240,186, 45,187,222, -109,132, 45,150,245,125,218, 25,145, 61,182,140, 62,185, 71,223,173, 36,117, 95,141,215, 52,226,127,241,118,248,197,222,155,206, - 27,205,214,237, 63,119,190,103, 95, 5,225,160,179,198,238, 56,152,253,250, 56, 90,243,181,142,112, 16,133,195,100,117,226, 32, -218,143,195, 8,171, 40, 12,254,223,107,223,219, 55,238,113,242, 74,176, 29, 2,181, 20,134,111,108,137,159, 31, 97,165,200,179, -214,221,201,157,136,220, 73,230, 73,143,193,124,201, 77,217,158, 92, 36, 60, 41,140,130, 28,174,237, 1,220,243,241,230,224, 55, -203,236,114,253, 73, 29,106,162,230, 77,238,217, 9, 8, 86, 46,126,203, 45,227,124,127,215,238,136,211, 33, 58,248,220, 31, 67, -113,222,250,198, 23,110,119, 34,220,153,225,224, 19,118,147,185,120,199, 70, 19,155, 98, 35,237,185,122, 78,173,251,234, 31, 84, -248,173, 43,247, 59, 59,248,166,136, 83,193,220,131,125, 96, 2,183, 22, 12, 35, 31, 76,118, 64, 28,253,176,237,194,222,253, 42, -188,169,230,229, 47,238,185, 79,150, 8, 22,134, 72, 56,244,231, 45, 6,187,177,118, 22, 79, 40,125, 7, 79,155,165,141, 8,250, -184,192,187,179, 41,224,231, 74,157,219,242,213, 71,128, 77,189,227, 83,130,134,116,222,239,174,155,136,103, 85,148,190,139,164, - 91, 7,196, 15, 31,192,203,135,112,123,141, 28,245,232,197,136,254,189,251,212,131, 98, 23,133,209,169,107,237,192,220, 27,117, - 94,203, 87,204, 38, 30,212,201, 46, 62,173,160,154,127,121, 95, 65,130,233, 10,170,123,168, 47, 50,225, 93, 19, 37,202,201, 67, - 56, 56,132,238,251, 33,127, 27,194, 59,102,119, 11,167,102, 15, 28,126, 20,214, 47, 33, 39, 95, 65, 78, 31,217, 40,125,238,161, - 70,179,167,197,125,225, 91,243,195,202,110, 60,209,148, 44,201, 63, 96,157, 24,112, 38,221, 4,185,233, 69, 73,145,131,209, 19, - 73,124,247, 63, 84, 11,173,233,143,161, 95,193,240, 65, 72,207, 63,129,139,242, 23,150, 3, 56,250, 14,124,241, 43,212, 87, 11, -249, 16,143,253, 12,168, 54, 5, 47,139,125,107,153,236, 47,157,181,175,255, 61,222, 17,207,239,110,179,150,214,181, 46,123, 7, - 15, 98,146, 39,149,184,178, 99, 86,171, 23,231,230, 51,103,112, 43, 90,234, 80,209, 37, 97,203, 91, 50, 40, 5,209,106,201,105, - 93,111,190, 72, 88,124,236, 34, 66,208, 74, 71, 49,113,110, 74,212,213, 26,141,145,213,188, 33,205, 35,147, 86, 70,215, 12, 16, - 34,181,239,109,168, 85,139,137,144, 22,157,135,238, 69, 64,251,250,202,127, 95, 61,254,115, 1,159,248,143,234, 2, 41,252,174, - 91,252,207,238, 44,157, 66, 23,133, 78,109,237, 49, 13, 71,148,126,133,110, 47,108,119,234,164,178, 44,145,178, 58,180,206,110, -158,172, 3, 23, 39,211,149, 76,208, 66,153, 38,234, 60, 46,232,224, 90,118,105,124,237,158, 43,169,167, 59,190, 97,123,227, 24, -136,195, 1, 49,173,252,207, 91,218,158,150, 22, 78,227,128,152,108,238,130,176, 90,219,172,100, 79,165, 93,242,108,246,170, 82, - 40,243,108, 99,230,176,147,214,198,152,232,250,129,174, 27,124,117, 80, 22,183, 71, 8,145,224,222,243, 24,205,150, 86, 69, 24, -231,145,205,213, 21,211,184,101,154, 38,174, 54,151,108,175,174,200, 57,147, 75,113,146,163, 41,216, 55,211,150,205,118,203,229, -246,138,203,171, 43, 46,175, 46,217,110,174,152,166,201, 64, 49,202,210,157,183, 66,142, 86, 82, 8,116, 33,209,167,142, 62, 37, - 82, 76,214, 13,151,194,156,231,101, 28, 63,207, 51, 37,151,229, 8,169,236,160, 57,205,110, 55, 22,229,114,220,144,199,173, 93, - 60,119, 35, 44,227, 39, 56, 71, 95, 80, 87,218, 71, 82,138, 22, 21, 92,170,133,148,185, 82, 56,136,113,249, 13,211,236, 78,136, - 70,203,203,101,153,208,180,244, 76,117,171,158, 77, 26,174,227, 96,159,236,212,245,189,107,246,107,190, 98,217,151,197,203,242, - 93, 16,255,243, 59,225, 23,111,154, 8,151,155, 17, 78,147,193,203, 14, 35, 28,138,112,146,132, 67, 47,228, 71, 94,172,111,138, - 89,155, 79, 19,220,140,194, 13, 81,110, 6,225,166, 23,251, 3,129,195, 78, 56,242,191,119,226,100,208,163, 32, 28,251,215, 89, - 11, 68, 21, 52,194,220, 25,250, 49, 61, 24, 73, 95, 24,145, 7,213,148,222,183, 58,235,242, 78, 3,226,183, 6,233, 3, 82, 93, -100,148, 60,145,103,170,214,204,156, 56,140,230, 65,177, 98,125,224,158, 98,215, 28, 33,193, 2, 95,218, 51,181,114, 43, 82,181, -219,138,156, 36,235,162,219, 62, 33, 25,151,124,241,157,172, 45,231, 91,146, 5,142,144, 61,201,173, 11,240, 82,134,155,199, 48, -252, 25,200,223,132, 71,111,193,148,118, 49,171, 13, 17,218,251,205,232,205, 12,247,178,239,241, 13, 74,163, 23,197,206,210,228, -233, 97, 67,180,164,176, 24,225, 56, 33, 47, 70,232, 19, 28,253, 56,164, 27,144,255, 57,188,173,112,102,197, 24,245,136, 79, 87, -186,139,135, 8, 72, 12,222,169, 59,212,225, 56, 33, 79, 15,112,210, 27, 28,231,172,192,121,182,201,198, 84,157,128,183, 19,164, - 45, 69, 87, 91,119,110, 51,202, 93, 14,180,233,161,251, 2,131, 8,233,104, 69,122,238, 16,249,248, 17,124, 96,141, 28,251,173, -238,119,206,209,207, 93,160, 79, 97, 56,220,217,247,231,181,197,121, 94, 55,189,139, 91,108,150,124,157, 22, 48, 83, 93,206, 85, -119,111,228, 5, 6,212,216, 1,222, 92,242,104, 38, 60, 0,142, 58,228,232,109, 99,254,167, 31,135,250, 16,226,100,182,177, 86, -153,187, 87, 96,245,227,112,248, 0,185,245, 38,156,108,160,116, 22, 74,144, 89,132, 80, 75, 76,107,116,197,119,191,199,110,108, -147,131,212, 18,230, 58, 8,183,205,190, 17,123,235, 80,135,140,244,217, 61,235,216,133,177, 59,130,110, 5,195,211, 14,160, 89, -177, 43, 71, 13,103,153,128,137,240,202, 23,169,127,239, 2, 68,153, 58,216, 22, 37,231,189,227,161, 41,213, 69,118, 81,157,117, - 15, 64,179,103, 23, 84,127,238,100,113,180,200,242,163,186,149,170,250,239, 87, 31,165, 47,250,130, 16, 9,195,129, 89,214, 66, -112, 20,164,169,174,233, 7,131,157,148,130,150,217,241,179,182,127,143, 82, 9, 53,155,211, 36, 36,180, 89,175,180, 90,200, 71, - 8, 4,170, 81, 16,187,206, 10,216,118, 67, 87, 38,227, 86, 72, 96, 86,203, 48, 87,100, 73,166, 83,183, 36,105,240,236,117,143, -134, 85,215, 18, 52, 14, 56, 18, 60,216,200, 99,112, 99,220,123,238,100,249,251, 69,219,243, 39,110, 85, 82,162, 8,131,199, 73, -231,156, 25, 75,133,131, 19, 83,204, 95, 89, 97, 47, 18,208,216, 81,250, 3,202,184,161,110, 46, 97, 30,237,217,237,122,215, 20, - 4,106,158,168,121, 90, 70,228,138,236,249,211,237, 53,144,110,205,193,211, 31,176,206,188,186,112,102,222, 82,167, 43,211, 31, -136, 88, 0,145,234,210,208, 53,156,106,138, 61,253,193,145, 41,235,115,166,230,108,232, 94, 39,173,229, 82, 28, 70, 99,192,151, -216, 15, 38, 32, 75,201, 98,107, 83,231,224, 20, 99,206,235, 94,241, 43,165, 48,151,204, 52,141,204,211,200, 56,141,204,211, 68, -158, 70,166,217, 66, 89,230,105,164, 56, 69,174,204,217, 19,208,236,185, 79, 18,233,146,137,241, 66, 48, 21,122, 20, 33,245, 38, - 90, 77,238,139, 15, 41, 44,208,180, 6,189,156,107, 49, 50, 93, 41, 75, 81,175,217, 93, 7,213, 47,142, 14,161, 81, 9, 76,181, -178,205,153, 49,207,108,166,153,237,118,187,236,209,171,238,101,211,187,131,160,221,224,130,236, 10,122,236,122, 95,123,151,101, -204, 30, 84,233,162, 65,118, 26, 73,177,233, 4,170, 95, 94, 85,246, 4,114,109,240,187, 60,222,221,100,242, 73, 52,236, 34,146, -171,187,226,189, 68,220,182,232,229,253,247,137,236, 46, 39,241,191,190, 19,127,241, 84,132, 91, 65,184,145,132, 27, 81,184,161, -194, 77, 17,110,181, 2,142, 21,239,155, 34,156,138,112, 28,132, 35, 9,156,136,253,249,211, 40,156,248,143, 27, 34,220, 12,194, -173,160,246,251,190,102,190, 33,112, 67,132,227,160,220, 8,194,113,216, 1,213,140,178, 41,148, 1,226,148,137, 95,159,224, 27, - 5, 94,232,144,219,201,110, 10,199,130,156,116, 54, 66, 56,114,176, 75,136, 59,131,125, 21,184,172,200, 41,200,179,157,177,194, - 69,224, 72,118,144,152, 82,173,128,175,147, 7,131, 0,135,178,120,205,165, 19,228, 48,186,156, 95, 97, 37, 59,210,216, 81, 66, - 78,124,124, 17,131,237,161,213, 59,245, 65,224,197,140,156,126, 22, 89,253, 44,242,248,239,194,197, 37,140,221,174,168,171, 35, - 97,215,174,136,126,148,225,162,216,147,208,177,131,225, 68, 89, 8, 68,168, 88,182,252, 42,217, 4,227,165,100,249,219,167, 63, -101,221,156,254, 51,228,193, 5,220,139, 59,118,112, 47, 72,151,172,240,184, 13,164,185, 7,108,167,110, 62,122,121,186,223, 5, -171, 60,202, 38, 96, 27, 11, 58,249, 5, 33,239,167, 80,248,162,209, 79,140,150, 77,220, 0, 8,226, 8,210, 65,148,238,160, 39, - 61,117, 72,120,229, 8, 62, 50,216, 52, 96, 56,178,231,254,239,223, 55,246,247,145,160,219,106, 41,108,121,159,176,180,211,139, - 44,163, 57,159,206,150,186,119,107, 13,123,150, 77,109,246, 50, 53,222,115,221,203,155, 13, 30,206,114,127, 34, 60, 4, 86, 61, - 12,111, 34,235,119, 32,126, 55,212, 43,143,179,187,237, 95, 45,219,255, 63,252, 33, 88,125, 10, 57,120, 3,185,121,215, 46, 2, - 87,157,173,183,147,236,192, 70, 14,147,129,189, 46,190,129,133,122,123, 82,100,141, 41,216, 99, 15, 97,101,164,184,120, 8, 73, -145,222, 98,129, 9, 3,244, 7, 16, 87, 48, 28, 67,250,128,253,157,107,218, 2,247, 36, 79,111,193,209,111, 35, 95,191, 79,249, -221,145,121,112,190,145,238,128, 36,236, 29, 21,212,150, 70,119,253,247,218, 33,138, 91,122, 26, 72, 6,177,241, 98, 89,146,182, -118,133,254,122,244,227,206, 6, 69, 72, 4,228,154,207,177, 22, 71,226, 36,231, 60,212,217, 70,172, 49,144,162,137,138, 52,103, - 52,207,158,189, 29,237,206, 27, 3, 93,223,155,245, 43, 8,186,189,162,142,219, 5,120,147,124, 74, 98,247,116,211, 91, 4,137, -164, 97, 77, 23, 45, 37,209,194,140,124,255,233,223,131,132,214,169, 57,124, 38, 8, 93,136,212,152,124, 48,221, 14,210, 93,215, -190,140,228,155,207,216, 1, 47, 93,216,109,211,230,121,178,143,199,241,169,133,128,108,174,204,174,213,173, 44, 58,116,220, 88, - 86, 65,240, 56, 87, 47, 34, 50,172, 44,154, 51,103,167,218,201, 53, 4,171, 29,105, 70,166, 43,243, 76, 25,175, 80,223,193,147, -199,165, 3,148, 16,150, 53,138,236, 3,107, 28,116, 19, 82, 79,119,116,195,116, 14,101, 38,196,222,117, 1, 6,117, 73,195,138, -180, 90,145,134,181,105,104,124, 25,111, 96, 23,118,113,161, 13,110,227,220,244,170, 74, 45, 6,137,209,236,222,110, 7,238,228, - 82, 40,217,252,248,165,100,114,206, 76,243,188,216,215,218,153, 81, 29, 8, 99,124,126, 27, 77,167, 96,231,111,110,169,125,222, -249,182,110,124,204, 51,227, 52, 89, 71, 94,118,226,196,234, 86,228, 20,157,104, 23, 77, 15, 80,114, 89, 32, 54,165,148, 37, 63, - 93,247,114,214,245,218, 85, 87,174, 43,201,163,197,176,106,136,212,146, 45,118, 53, 38, 15,225, 17, 98,215,163, 18,252,235, 22, -114,245,201,212, 94,224, 13,206,101, 48,158,193, 76,157,235,222, 68,189, 94, 19,199,237, 79,195, 68,127, 63,149, 81, 43,123,118, - 6, 73,104,186, 24,239, 29,251, 79, 30,152, 7, 77,217,121,216,102,167,159, 53,207, 48,251, 65, 38,114,109, 62, 32,253,254, 94, -211,131,145,197,119,180,163,171,132,155,168, 38, 58, 45, 44,251, 97, 27,236,133,213, 89,169,157,223, 66,214, 66,221,100,228,139, -143,224,191,154,225, 47,220, 66,254,240,177, 33, 97, 7,133, 67,224,169,104, 66,184,135,197, 84,199,147,119, 15,231, 25,190, 22, -224,149, 98,130,187,251, 62,114,251, 64,135, 36, 31, 45, 94, 84,168,131,181, 46,219,201, 8,115, 39, 17,201,106, 98,166, 67, 69, -142, 48,232,204, 70,119,123,143,149,223,167,170, 63, 7,226, 2,184, 22, 18,127, 80, 33,125,175,221,156,198, 7,150,167,222,210, -223,148,107,163, 91, 83, 1, 71, 99,135,215,138,110,117, 71,191,155,247,148,136, 45, 29, 76,124, 49, 90, 35,172,110, 66,247, 12, -132, 19,179, 64, 61,245,142, 89, 80, 82,132, 97,199, 95, 94, 72, 80,109, 15, 93,188, 24,117,238,161, 79,113, 39,228,203,117, 39, -146,208,253, 24,198, 22,251, 19,216, 95,130, 5, 44,144, 33, 4, 33, 36, 11,191,137,170,164,190, 35,157,172,136, 47,174,225,101, -115, 52,208,221, 54,238,247, 91, 15,209,239,204,232, 45, 65, 71, 19,144,180,128, 24,221, 11,209,104,133, 92, 60, 80,164, 77,109, -117, 47,171,189, 61,198,208,132,143, 51,232,176,255, 24, 29, 48,164,230, 9, 45, 2,242,230, 21,233,171, 29,178, 93,163, 31,125, - 21,158,191, 11,235, 15, 33,250,174,189,118,253, 39,140,214,167, 87, 38, 76, 91,253, 40,244,159,132,245,223, 71, 14,255, 54,122, -120, 1,191, 51,192, 3,236,144,238,195, 46,212,103, 9,175,247,238, 61, 99, 26,141,195,100,236,239,244, 16,120,193,200,134,210, - 65, 60,242,194,254, 16,210,185,249, 99,131,123,211,235, 5,212, 71,182, 87,151, 97,175, 91,247, 99, 64, 11,100, 8, 63,127, 72, -252,229, 13,105,206,196,110,119, 20,233,158, 14,212,198,237, 74,173,114,141, 36, 29, 68, 40,209,215, 40,190, 83, 39,154,152, 76, -179,119,244,126,200, 62, 89,204,131, 23,155,165,132,148,226,182,210, 72, 12,214, 41,217, 97,157,169,115,203,185,174,206,156, 80, - 58, 17,122,183,245, 77,185, 50,215,153,176, 61, 35, 72, 37, 29, 28, 17,125,228, 91, 83,164, 22, 23,220,249, 90, 96,235,145,157, -157,216, 99, 78,193, 53,156,243,134, 88, 86,196,131, 3,122, 81,174,198,137,169,218,254,217,238,228,118, 27, 45,197, 82,216, 66, -234,232, 67,187,187,203,254,179,187,244, 66,230, 79,111,197,166, 45, 43,141, 62, 86, 66, 37,138,135,233, 0,243,197, 35,106,234, -137,167, 79,219,101,102,187,177,254,161, 78, 54, 98,245,203, 79, 93,220, 47,198,215,151,217, 50,231,107,176,125,108,197, 56,244, -193,149,250,241,224,152,154, 6, 74,158, 60, 44,199,188,212, 17,167,172, 9, 6,100,145,184,216,175,180, 88,167,106,159,155,194, -120,113,198, 60,207,196, 97, 77, 90, 31,218,216, 55,171,137,230,250,129,126,117,176,187, 84,227,246,171, 82,150, 85,129, 21,144, -232,199,126, 94, 70,241,210, 80,177,218,108,184, 97,185, 76, 52,116,176, 74, 52, 77, 78,132, 92, 11,185, 88, 81, 22, 7,235,104, -131,185, 52,139, 30,182, 30, 72, 41,121, 76,105, 3,162, 5,136,145,226,150, 56,234,142,159,174,150, 22, 99,174, 1, 17, 59, 7, -125, 18,177, 80, 21,231,226,217,231,181,129,138, 23,172,181,190, 39, 14,165, 57, 29,204, 19, 31,251,100,152,223, 50,123,170, 95, - 90,244,173,209, 53, 36, 54, 41, 48,232, 78,241,238, 95,170, 46,132,199,224,177,191,213, 59,120,125, 34, 39, 93,246, 69,114,123, - 72, 14,105, 19,199,186, 19,165,202, 19, 64, 26, 89,106, 11, 11,214, 54,201,159, 57,177,110,115,220,139, 20, 93,137, 21,250,141, - 31, 18, 90, 77, 53,221, 36,237,121,207,163,122,225, 75,171,196, 78, 16,134,141,175,245,202, 35, 12, 54,190,223, 86,179, 76,233, -214, 47, 2,213, 18,184,100,178, 81,172,122,166, 57, 43,207, 54,127,115,131,254,183,247, 8,175,101, 83,200, 63,213, 33,183, 65, -215, 30, 16,114, 50,195, 73,183,228,142,147, 3,122, 89,145,111,122, 36,233,211,130,156,217,139,172,207,116, 72, 23,208,251, 46, - 68,219,244, 22, 94,178, 5,142,246,118,229,163, 35,244,214,193, 46, 17,217,121,238,115,113,161,158,238,102, 65, 67,176,231,237, -150,194,193,128,198, 15, 34,245,109,184, 58,131,122,219,139,190,143,132, 27, 6, 23, 39,179,156, 4,184, 8,240,184,192,153,137, -176,164, 19,116,242,240,152,214,237,225,143,233,184, 21,216, 59, 86, 20,100,101, 86,167,147,223,116,113, 94,178,137,196,204, 46, - 12,102, 73, 23,245,199, 58,196, 29,206, 52,237, 21,160, 73,159, 72,103,107,170,217,230,121,119, 92,107,139, 10, 20, 33,184,238, - 64, 92, 69, 25,250, 72, 58, 93, 17,159, 61,130, 87, 6,228,165, 8,235, 15, 64,125, 26,228, 53,248,173,115,203,157, 63, 4,222, -245,203,157,243, 41,155,245, 72, 91,198,124,221,249, 51,117,190, 94,208, 5, 22,101,175,202,206,113,193,182, 58,132,123,239, 55, -240,139, 87, 18, 74,202,132,199, 91,226,183,129,199, 43,248,224, 4, 47,126, 25,189,249, 59, 48,254, 26,114,244, 39, 97,253,199, - 32,158, 88, 60,169, 94, 66,184, 9, 71,127, 17,186, 87,144,244,215,209,195,239,192,239, 14,112,127,176,149, 79, 44, 11,186,150, -196,226,148, 88, 46, 97,231, 21,189, 81,144,254, 49,164,167,108,127,207,104,157,121,124, 10,234,202, 46,103,245,204,247, 26,226, -223,240, 6,123, 99, 14, 79, 44,211,170,253,250, 56,195, 83,145,248,177, 3,210,171,103,244,201, 18,134,213,231,114, 82,119,130, -250, 39,243, 32,116,145, 70,136,167,129,217, 68, 65, 85,144,234,130,187, 54,134,220, 27, 9,239,168,113, 78,224,171, 24, 19,188, - 78,132, 96,192,150,230,199, 93, 40,122,154, 45, 67, 61,103, 98,201, 36, 81,151,175,236, 44,156,166, 31,153, 8, 87,103,132, 58, - 65, 50,159,180,122,196,102,238,214,150,125, 93,205, 67,158, 75, 38,186, 20, 38,137,144,162, 26,110,118,123, 70, 92,245,200,250, -144,174, 86,166,113,166, 54, 50,100,234,118, 97, 55, 77,229,222, 5, 27, 89,186,137,191,168,137,201, 8,182, 34, 48,124,194,110, -130,212, 46,218, 53,154,143,220, 38, 31,142,116, 85,200,103,247, 9,177,167,123,250, 37,242,249, 67,202,217, 67,148,108,154,133, -234,207,111,232,150, 52,178,178,185,128,209, 32, 66,161, 52,159,115, 52,145,149, 22,232,215,132,213,161,141,137,125,124,173,101, -182,243,187, 27,136,221,218,244, 6,181, 82,242, 68,215,173,145,126, 32, 76, 35,108, 54,104,193,161, 65, 48, 95,156, 17, 54, 23, -172,110,220, 54,130, 95, 81,194, 48, 16, 98,103,220,113, 79, 62, 83,137,246,245,102,139, 63,221, 23,233,181, 98,109, 2,200,226, - 52,205,176,211,146,180, 34, 89, 91,130, 90,112,253,231, 46, 66, 85,171,248,200, 91, 22,187,100,241, 14,187,122,163,176, 29, 71, -250,156,145,148, 22,174, 65,206,230,175,111, 48, 23, 80,139,115, 14,201,199,247, 38,218, 83, 17,230,106,239,145,154,235, 66,133, -171,194, 46,231,221,171,165, 44, 4,204,157,243, 38, 56,130, 51, 58,122, 86, 82, 52,151, 68,153, 13, 78,228,211, 35, 99,152, 88, - 64,203, 92,173,251,183,132,188,253,108, 3, 22,170, 94, 65,204,233, 80,202,110,229,245,196, 39,243,189, 81, 46,215,241,219,242, -158, 92, 23,217,233, 85,155,191,222,247,234, 73, 62, 59,236,172, 83,165, 9,127,194,174, 61,178,100, 69, 36,121,128, 69,183,231, -101,155,177, 78,119, 18,244, 74,204,198,213,174, 18, 91,255,199,139, 23,154,217,113, 86, 37,152,192,172,197,164, 94,250,210,160, -169,211,139,154, 4,255,188,160, 15, 43,220,155,169,255,203,187,132,111, 21,248,143,111, 27,176,230,164, 64, 15,122,146,224,150, - 34,103,201, 46, 23,219,178, 3,204,188,153, 65, 18,114, 71,208, 53,200,198,119,232,235,136, 62, 2, 30, 7,163, 94,181, 66,222, -169, 9,216,130,139,212, 98, 48, 15, 58,109, 58,225, 62,161,150, 6, 82,176,139,196, 36,214,233,197, 53,196, 59,232,230,171,246, -248,115, 52,160, 70, 51,242, 39,150,132, 46, 14,125, 10,208,205,240,182, 47,140, 7, 31, 17,174, 89,248,174, 18,247,140,255,205, - 62, 21, 79,119,163,216,244,156,141,243, 79, 4, 25, 13, 93,107,118, 20,221, 19,147, 7, 15,219,136, 86,220,163, 91,243,146,123, -190,103, 87,110,203,245,162,126,237,255, 74,176, 76, 97,143, 99,107,158, 72,131, 93, 8, 66, 36, 30, 13,164,103, 14,225,123,123, -248,184,192,141, 15,129,188, 2,221, 21, 92,158,195,151, 71, 56,182,168,220,154,125,158,190, 23, 62, 99,159,109,185,142,209,175, -215,169,177,251,221,232,190,182,206,132, 43, 62, 97,122, 82,120, 18,247, 72,116,165,160,219,217, 82,222, 30, 38,120, 45,194,119, -101,120,225, 53,244,198,127, 7, 71,255, 4, 57,253, 79,237,178, 36,157, 23,215, 4,171, 31,134, 91,255, 5, 18,254, 6, 28,252, - 30,250,214, 4, 15,123,184, 18,123,110, 26,145,176, 83, 27, 51,224,162,199, 9,179,185,173, 55,208,157, 65,255, 52,132, 99,243, -158,135,104, 35,246,144,236,107,212, 43,203,133,103,107,111,200,122, 14,241, 96,207,243, 86,221, 91,105,121,233,114,161,196,207, -174, 72, 95, 63, 39,170,237,122,155,235,174,236,239,228,124, 87, 29, 90, 8, 69, 27,165, 47,226,119,135,255, 4, 93,162, 62,197, - 85,209,203,110, 30, 75, 97,171, 94, 36,170,175,138,212,193, 40, 53,136,191,158, 5,149,184,219,145,135,106,190,245, 58, 19,169, -244, 2, 61, 74, 71,117,113,150,239,245, 85, 16,157,209,205, 76,145, 64, 9, 29,165, 95, 83,186,158,210,117,148,212,251,168,126, -178, 78, 46, 91, 84,171,173, 93,252,125, 48,142,212,199, 15, 72,167,119, 72,135, 39, 48, 63,244,125,241, 78, 11,160,112,205,247, - 6, 0, 0, 32, 0, 73, 68, 65, 84, 49,184, 97,162, 18,155,103, 29, 69,197, 30,143,120, 91, 84,170,169,151,235,222, 56,219, 38, - 67, 74,165,146, 3,100,148,185,216,207,234, 96,145,122,118,223,178,194, 79,110,145, 85,169,103, 15,145, 16,137,233,208,138, 65, -236,168,211,104,222,125, 42,193,241,162,180, 81,182,136,121,227, 99, 36, 29, 28, 83, 98, 79, 45, 27, 43,188,158,154, 23, 14, 79, -137,199,167, 22, 76,130, 16,181, 18, 75, 70,130, 21,248,164, 64,236,169,219,209,140, 66,221, 64,108, 62,236, 90,144,212, 35,125, - 71,201,133,105,123,102,148,180,174,115, 91, 86,211,140, 36,160,144,167,201, 46,101,173,140,168, 49,228, 21, 35, 57, 74,104,143, -223,223,155,254,121, 44,234, 98,200,230,111,246, 66, 95, 90, 90,158,191,171,170,178, 20,236, 37,248,196, 45,116,195,106,101, 98, - 63,133, 46, 26,226,181, 79,137,218,245,104,177, 48,157,206, 31,119,174,117,241,170,199, 16,152, 68,152, 37,163, 69,252,189,213, - 86,123,123,250,160, 16, 23, 85,191, 44,133,222,207, 53,215, 98, 52, 32, 82, 20,139,141, 53,164,114,113, 75, 97, 36,139,144,167, -217, 50, 13,212,166,207,237,123, 85,143, 57, 86,127,124,213,237,109,139, 64,245,154, 9,141, 39, 6,241,123,213,123,111,106, 43, - 79,136, 86,101, 15, 21, 41,158, 68,135, 4,146, 60,221,153,141,197,115, 51,101, 25,230,199, 37, 35,214,254, 59,129, 30, 1, 39, -246,123, 58,250,225,179, 5, 29,205, 78,181,241, 39,172,184, 98, 90,154,183,215,111,238,181, 56,204,195, 37,212,165, 66,238,224, - 42, 34,179,154,239,250, 74,208, 51, 51,182,203,187, 25,125, 56,195,215, 11,250,235,151,240, 11, 21,126,225,150,225,101, 15,214, - 72, 63,195,225, 6,110, 22,155,154, 94,120,203,178,241,162,123, 63,163, 29,200,237, 14, 93,137,217,194,186, 96,138,242,181, 90, -231,186, 31,113,218,186,111,221, 69,232,217,124,109,143,238,148,189,187, 25,129,183, 50,108, 29,144, 17, 86, 16,159,134,205,255, -128,206, 62,122,111,233,108, 77, 17,221, 40, 63,135,105,201, 80,215,199, 25,110,123,224, 71,241,189,123,220, 75,121, 80, 87,160, -143, 5,202,100,130,170, 32,222,226,216, 88, 74, 86,160, 41, 64,182, 34,187, 36, 59, 53,145,156,103,168, 19,204,174, 32, 43, 3, - 81, 48,101, 19,197,201,222, 69, 45, 63, 33,187,148,189,229, 78,139,180,117, 17, 10,157,137, 92,210,170, 35,124,224, 8, 62, 43, -200, 71, 20, 78, 62, 9,225, 15,184,253,240, 30,250,237,135,246,220,159, 84,244,194, 32, 55, 90,212, 17,148, 62, 5,216,219,163, - 47,238,169, 6,228, 41, 92,187,225,134,228, 5,223,255, 76, 81, 8,179,238, 30,110,244,174, 95,174,243,218, 85, 43, 53, 43,161, -155,141,104,246,122,128, 7, 17,222, 90,193,199, 20,110,127, 14,182,255, 17,220,250,203, 86,200,227,205,221, 88,160,255, 44,220, -252,107,208,253, 93,228,224,215,225,242,161, 93,222,198,176,176,235, 81, 7,249,204,205,203,105, 23, 66, 61,155,172, 91,239,174, - 32,173, 33, 29,237,177,118,111, 67,126, 8,122,207,108,138,201, 63, 95,136, 77, 11,228,198,222, 71, 57,154, 93, 50, 12,232,168, -200, 58,210,221,233, 73,143, 70, 82, 15,163, 24, 14, 51,239,157, 5,178,175,112,108, 59,111,159,180,148,182,142,173,234, 93,173, -109,214,203, 34,182,243,159,107,165,196,128, 70, 7, 0,249,254, 61,164,206, 46,198, 45, 69, 13,252,207,212,229, 82, 25, 82, 71, -210, 66,151, 71,250, 96,235,146,166,113,237,130,216, 40, 63,196, 69, 68, 84,137, 76, 69,153,166,145, 50,207,132,110, 64,250, 21, -161, 79, 30, 48, 50,195, 60, 81, 74, 97,148,200,236, 54, 62,213,194,106,115, 69, 12,239, 18,110, 62,139, 28,222, 64,207, 30,249, -229,195,188,222,109,159, 37,216, 69,163,230,138, 22, 49,223,178,183, 67,217,193, 58, 45, 83,220,161,243,246,171,254,121,210, 96, - 94,227,226,225, 42, 38, 26,180,196,179,242,238,219,164,227, 76, 92, 29, 19,179, 41,211,101, 24,208,121,164,206,147,249,245, 61, - 79, 60, 58,104,166,165,158,137,211,199,218,229, 54, 12, 3,113,107,241,169, 5,156,165,127,100,150,190,162, 80, 50, 41, 40, 49, -246,166, 28,247,120, 87, 9,193, 84,234, 85, 45, 92,135, 96,189,218,106,229,120, 86,150,180,176, 82, 10, 93, 48,203,214,226,135, -142,201,102, 26,253, 64,201,209,148,224,186, 19,181, 72,112,231,134,219,229, 52, 25,207,162, 20, 3, 14, 89, 18,155,186,207,126, - 39, 18,171,222,205,182,122,208,222, 95,210,200,161,178, 75, 41,139,170, 12,253,202,178,208, 75,118, 62,187,169,252, 39, 41,156, - 79, 19,211,102, 99,123,245, 90,220,183, 45,116, 41, 18, 83, 67,209,122, 38, 61,123, 99,119,246, 14,153, 86, 22, 27,255, 94,119, -227,112,123,109,146, 81,244, 60,117,173, 22, 43,232,125,215, 81, 99,100,158, 51,197, 83,239,212,147,227, 26,209,211,190,121, 49, -157, 69,158, 22, 32,216,251,152,215,118,112, 88,121,162,159, 82,150, 38,234,122,173,151,107,182,113, 43, 19,150,126, 39, 26, 72, -245, 31,159,155, 16,109, 91, 97, 16,244,212,228,233,114, 18,173,243,233, 61,194,180,207, 72, 26, 33,140,102,173,225, 96, 17, 81, -216,193,151,145,195,214,241,123,135, 88,247,158,188,136,143, 19,147,197,135,134, 54,186, 25,237,199, 60,219,223,155, 42, 92, 5, -203,153,190, 0, 57, 83,244,251, 11,188, 54,195,175,110,209,191,246, 46,252, 39,167,200, 31, 22,232, 94,178,127, 48,157, 33,135, - 87,112,115, 3, 23, 51,250,168,179, 11,194, 12, 60, 82, 52,101,228,116, 13, 71, 61,112,233,197,162,183,199,182,153,151, 17,180, -190, 91,144,219,158,186, 85,253, 29,222, 21,223,153,186,119, 92,124,153,187,194, 2, 74,186, 0, 79, 77, 16,191, 11,164, 71,207, - 95,133, 50,120,204,170,143,182, 27,133,167,224, 69,181, 71,211,108, 22, 59,181,189,187, 32,230,253,107,251,145,171,186, 40,189, -161,120, 12,212,108, 65, 46,116,126,177,138,215, 32,253, 18,108,220, 37, 26,118, 92,213,228,193, 53, 41,236, 86, 43,235,180,187, -234,205,205,163, 46, 59,145, 53,187,188,120,209,104, 32,150,186, 67,158, 74, 76, 72,114,180,228,193, 64,248,240, 33,124, 47,200, -203, 43, 88,127, 22,134,159,118,110,202,219, 80, 30,192,107, 19,218, 91, 46, 51, 89, 77,136, 87,119, 31, 34,220,130,116, 77, 44, -178,183, 62,160,218,122, 34,204,123,159,197,180,123,235,209,226, 97,219,174,189,161,101,221,195,101,225, 82,230,137,183,220,110, - 63,164, 99, 69,182,130,188,158,161, 30,192,139,207,160,183, 30,195,244,215,145,211, 31,128,131,159,131,254, 51, 54, 34,151, 0, -221,119,193,141,255, 16,214, 63, 10,235,127, 0,243, 91, 48, 95, 88, 46, 88,197, 46, 93,185,216,123,121, 59,249,180,198,191,177, -241, 17,116,247,161, 27, 96,248,184, 69,173,214,251,246, 89, 24,110, 67,125,206,186,240,120,195, 19,218,130,117,244, 76, 32, 79, -237, 41,220,142,253,239, 36,200, 51,233,217,142,225,225,184, 36, 26,102,125, 18, 99,177, 11, 38,145, 38, 40, 13,166, 97, 8,197, -186,240,220,254,148,238,124,186,186, 11,155, 55, 1,169, 68, 43,135, 49, 44, 16,146,216,175,220,222, 88,172, 8,122, 86,117,221, -110,108, 30,144, 58, 98,136,116,235, 21,253, 38, 35, 90, 41, 34,100,148,132,208,249,228, 54, 7, 33, 99, 95, 63, 87,101,150,202, - 84, 21,242, 68,205,153, 88, 10,105,181, 38,118, 29,162, 7,150,152, 88, 38, 74, 46,100, 13,126, 21, 9,118,151,218, 94, 17, 31, -223, 39,222,120,150,120, 18,200,103,143,208,146, 17,241,228,185,154,109,199,238, 69, 77,202, 46,183,160, 74, 34, 19, 12, 58, 35, -134,105,182,105, 84,103, 69,147, 93, 23,134,184,232, 84,227,178,139,182,240,147,153,233,241, 61,226,173,142,238,246, 51,212,237, - 72,222,156, 81,167, 9,165,216, 22,190, 20, 42, 74,242,240, 26,245,118,177,248,197, 83, 42,232, 52,162,235,186, 64,160,240,100, -178, 50,141,214, 37,214,108, 35,225, 52,216,152,221,249,225,161, 27,200,115,134,216, 25,242,214, 97, 62,161, 31,144,110,112, 21, -252,214,142,153, 97,181, 84,147,138,141,221,197,147, 38,237,130,160,132, 20,209, 26,208,146, 23,222,185,248,254,187,161, 79, 53, - 4,106,158, 45, 98, 85,213, 97, 97,102, 85, 22,183, 41,182,247,148, 56, 12, 70, 28, 0, 84,197, 46, 93,161,121,174,221,189,176, -153, 38,143,151,236, 25,231,217, 94,175, 61,198, 64,138,129,185, 70,247,146,183, 21,138,229, 32,196,217,108,123,178, 48,237, 27, - 48, 74,247,151,212,187,222,141, 29,205, 15, 60, 11,194, 49,185,134, 24, 54, 24, 79, 39,145,174,239, 40, 65,216,142, 51,121,158, -141,239, 32, 98,221,120, 41, 75, 51,166,106,180,191,156,103, 3,208,236,237,191,244,218, 86,253,253,202,188, 59,125,244, 58,219, - 93,126,255, 80,214,221,146, 76, 42, 41,255,103,247, 60, 64,163,101, 64, 67,186,217, 81, 63,177, 66, 38, 65, 31,168, 21,248,151, - 35,242,153, 11,120,230, 1, 60,229,251,245, 77,112,252,170, 23,255,222, 81,169, 7,209,160, 41,238, 5,151,232, 59,199,208,192, - 44,183, 64,111,130, 62,211,124, 71, 16, 51,112, 5,199, 35,114,235,161,117, 47,211,140, 94, 9,114,149,224,211,135,240,195, 25, -253,194, 22,253, 59,151,112,145,145,159,121, 3,134,207,194,252, 97,144,115,232, 30,195,233,183,144,225, 2,125, 24,224,210, 59, -230, 51, 69,229, 28,185,113, 12,199,199, 32,143, 64, 59,100, 18,152, 12, 79,201,161,143, 75, 71,239,128,211, 19,177,117,189, 79, - 27,162,154,130,254, 57,255,243, 67,128,213, 22,226, 7,161,220,131,135,111,128,222,112, 52,108,221,189, 18,157,123, 11, 79, 6, - 91,226,135,115,227,126, 39,168, 91,211, 3, 72,106,109, 86,241,152, 86,105, 50, 81,167,168,101,144, 35,175,116,157,141,111,147, -123,236, 7,215, 58,204,123,240,156,230,177, 79,126,129,234,124,175,222,187,107,160,205,106,103,174,239,212, 61,209,110, 9,143, - 40,209, 97, 75,123,232,200, 20,136, 7, 61,225,249, 3,248, 76, 64, 62,124, 4,199,255,186, 21, 60, 57,130,252, 22,212,119,208, - 71,111,195, 93, 67,168,106,246,247,153,115, 85,212,189,179,251, 26, 61,226,130,196,182,207,192,188, 71,215,107,111, 97,223,237, - 47,172,246,253, 27,174, 68,170, 68, 66,153,177,134, 98,199, 21, 96,107,118, 61,137,123,144,149, 4,108,183,240, 14, 72, 60,128, -139, 27,112,121,129,222,248,127,144, 91, 95,128,211, 79,195,240, 51, 38,164,139,183,237, 57, 95,253, 65, 19,209,213,183, 96,126, -219,196,109,122, 14,211, 59, 48,127, 7,166, 71,112,112, 9,121,130, 58,185, 88,114, 54,229,250,112,234,227,247,151, 33,222, 1, -189,239, 1, 46,207,239,101, 41,174,188,192, 42,232, 99, 83,205,203,137, 95, 40,159,130,176, 70,142, 2,122, 27,194, 65,164, 63, - 10,116,219, 74, 31,217, 9,224,124, 28,216,108,130, 97, 25,189,123,104,144,143,126, 85,212, 5,105,174,157,144,182,183,140, 22, - 43,234,163, 15,109,123, 12,159,128,132, 16,157,149,110, 89,222, 57, 8, 69,130,113,222,183, 27,159,230, 8,177, 42,131, 88,120, - 70,113,165,120, 16, 33,123,238,124,160, 90,104,139, 56, 49,109, 54,143,114,219,173,148, 32,200, 54, 35,117, 36, 12, 43,211, 80, -116, 61, 26, 35, 57,206, 72,217,141, 80, 53, 8, 85, 42,108,206, 9,161, 39,157, 60,109,249,227,103,239, 82,203,180,236,118, 89, -122,182,246,191, 64, 14,145, 18,123,136,206, 51,119,223,124,157,204, 99, 78,173,232, 60,249,228,171, 67, 67,178, 66, 59,141,228, -105,180, 49,181, 8, 26, 7,100, 56,176, 20,180, 16,145,254, 0,166,129, 82,206,208,249,138,234, 23,167,216, 2, 37,117,145,152, - 45, 22,166, 32, 66, 26, 6,223,250, 25,129,174, 19,219, 33,211, 69,139, 83, 45,149, 90, 11, 41, 4,210,224,118,179, 96, 49,183, - 90, 3,121,218,144,231,201, 67, 90,140, 67,222, 50,226, 91, 87, 45, 82,141,225, 30, 58,132,106,151,164,217,152,251,203,100,209, - 39, 10,213, 45,109,197,129, 44,173,211, 7, 40,217,126, 45, 40,196, 62, 89,134,185, 79,110,234,222,250,162,185, 11,218,122,176, -250, 78,189,214,234,162, 87,215, 22, 84, 53,130,228,102,195,161, 8, 93, 63,176,189,186, 34,133,106,222,120,148, 84, 42, 93, 76, -108, 82,100,154, 60, 66,182,148,107, 35,234, 90, 42, 34,213,243,213, 77,131, 81, 99,244,238,190, 46,103, 71, 88, 70,124,190, 78, -108,137,107, 46,252, 75, 2, 93,234, 33, 38,182,165, 48,141,166,115, 16,159, 52,213, 82, 22, 69,189,131, 33,188,160, 79, 80,178, - 71,184,202,251, 84,101,225,247,255,149,157,224,240, 61, 37, 95,158,164,206, 57,254, 86,236, 93,157,222, 28, 10,131,128,172,132, -203,217, 68, 54, 39, 23,149,227,175,101,228, 78, 68,223, 41,240,166, 16,222, 73,200,107,157,249,193,159,235,172,155,125, 75,209, - 11,181,238, 90,156,175, 94,197,154,248,163,100, 93,225,179, 29,124,184, 67,158,143,240, 92, 64,110, 95,192,241,125, 56, 92, 33, -253,202,196, 72, 50, 0,167, 80,111, 65,237, 44, 71, 58, 61,128,248, 22,178, 62,135,211, 11, 19, 94, 62, 51, 32, 47, 13,240, 67, - 35,252,230,140,254,195,251,200, 79,253, 6, 28,253, 33,152,111,251,119,245,105, 88,127, 19,137,111,193,186,162,151,189, 21,132, -179, 8,114,142,220,232,144,227, 15,160,188, 9,115,132,210,217,190,189,100,180,137,157, 26,101,173, 41,142, 22, 84,143,207,136, - 59,221, 65,193,181, 56,236,225, 37,216,190, 13,151,179,121,155,103,103,169, 87,221,243, 96,249,248, 93,231, 29,224,166,119,123, -215, 69, 70, 52,217,161,179,113, 26, 87, 10,168, 70,139,132,173,225,122, 36, 41,186, 43,234,235,178,203,234, 22,139, 76, 52, 56, -143, 88, 87, 19, 92,193,222, 57,239,189,139,150, 12,215, 42,105,218,217, 96, 22, 38,121,149,221,247, 55,237, 50,224, 37,186, 77, -174, 75,132,163, 30, 94,136,230,159, 63,252, 19,112,248,175, 65,184, 97, 62,191,250, 8,228, 46,188,117, 31,238, 71, 52,206, 54, - 21,169,142,222,100,207, 50,164, 59, 83, 73, 45,239,129, 44, 45, 67,135, 29,212,204, 61,242,169, 13, 20,148,128,184,163,162, 99, - 39,139,182,142, 65, 60,177, 75,167,138, 92, 41,154,108,215, 74,149,197,147, 47,219,201, 4,148, 53,193,213, 10,222, 88,161,113, - 11, 47,127, 14,121,233,203,176,126, 9,186,239,134,245, 79,193,240, 49, 43,200,241, 25, 72,243,110, 23, 80,183, 86,220,243,235, - 48,125, 9,174,190, 2,243,185, 93,180,106,181,223,159,223,128,122, 10,242,125,150, 32,135, 23,118,237, 77,161, 41,105,231, 75, -215, 75,223,235,191, 11,241,216, 39,240,207, 67,247,148,249,192,111, 77, 72,151,232,110,116, 12,155,145,173,191,204,197,239,127, -181, 81,192, 84,233, 16,215,183,170,125,207,170,230,195,142,178,224, 92, 9, 22,202, 98,171, 50, 64, 50, 82, 92,184, 21,213,161, - 50,209, 64, 49, 62,202,111, 65, 23, 69, 3, 58, 95,161, 87, 23,246, 34,198,158,160,217,146,207,242, 12,142, 47, 21,204, 53, 49, - 19, 23,145, 25,218, 64, 35,251,157,139, 46,137,181,137, 10,121,164,214,108,250,137, 24, 45, 5, 45, 68, 98,138, 36,191,184, 69, -157,161,206,204, 85,201,231, 15, 17, 2,221,173,231,209,212, 49, 61,124,199,172, 96, 13,154,227,139,214,140, 48,213,106,217,226, - 82,173,185,232, 43,148,108, 17,162, 37, 35, 49, 18,251, 21,169, 95, 19,251,142,128, 50, 79, 51,101,187,161,204,141, 27, 30,237, - 60,235,143,237,251,217, 92, 50, 94, 94, 16, 14, 79,208,148, 8,235, 3, 19,222, 77,163,119,130,118,177, 41,110,175,139,146,144, -186,139,133,141,253,202,146,156, 15,143, 77,161, 94,103,219, 86,250,202,138, 24,168, 57, 51,109, 46,145,228, 23,144,121,182,203, - 86,180,124,249,198, 20, 8,221,128,196,222,137,139,133, 24,211,178, 94, 80, 96, 46, 70,109,139, 41, 17, 83,191,139,143,109, 43, -171,146,151,110, 51,165,222, 0, 42,165, 16, 90, 65, 22,183, 16,214,234,107,181,234,142, 22,251,108,135,150, 59, 46,215, 5, 50, - 18,133,168,137,216, 60, 24,173,168, 7, 3,221, 32, 1, 41,133,227,213, 1,225,240,144,237,102, 67,170,149,213,208,147, 99,101, -202,133,131,216,177, 90, 37,178, 86,166,108,105,133, 82, 93,133,142, 93,124,164,212,197,142, 24,163, 77, 72,170,211,238,100,223, -162,201,110,220,237,238,111, 82, 52,246,252, 12, 76,211,104, 19, 17,173,182,230, 36, 44,217, 11,162,126, 33,118,164,112,206, 51, - 58,103, 87,247,239,119,233,240,126, 82,185,247, 5,186,235,123, 75,190,136, 92,203, 91, 87,103, 17,214,189,110, 62,189, 21,196, -132,209, 1,102, 17,206, 29, 73,254,114,169,156,204, 48, 31, 42,227,182,178, 46, 74,216, 86,228,204, 88,175,225,227, 29,156,128, -110, 10,234,150, 17, 38,181,157,229, 28,144,115, 23,101,189, 29,144, 47,119,104, 67,213,137,249,188,229,102, 64, 94,137,240,241, -183,144,167, 3,220,234,225,228,208,201,109,135,182,163, 14,213, 14,186,116, 12,221,165,249,122, 87, 9, 61, 94,193,139, 3,188, - 58,162,255,252, 2,249,254, 95,129,211, 31,135,242, 28,132,183, 64, 95, 48, 58, 87,119, 23, 89,159,163, 23, 9,198, 1,221, 36, - 36, 62, 52, 16,201,241,135,208,252, 13,184,244, 14,182,136, 21,175,206, 5,125, 97, 15,180,139,238,197,127, 6, 91,242,186,133, -128,185, 9,217,158,131,241,243,150, 16,215, 72,119,237,235, 37,255, 58, 3,206, 48,159,109, 60, 63, 66,221, 20,139, 25,157, 42, - 28, 90,161, 85, 15,131,145,117,176, 17, 96,239, 58, 5, 85,208,139, 93, 91, 29,143,161, 91,195,209,165, 21,234, 80,156,164,231, -175,120,111,227, 61,243, 98,123,236, 94, 31,247,114, 56, 23, 0,246,162,118, 38,201, 50, 94,213,108,121,198, 82,117,207, 35,110, -185,227, 97,136,166, 13,184, 9, 28,156, 88, 80, 74, 60,222, 61, 79,245, 18,174, 62, 15, 95, 25,161,118, 22,162,145, 45,129,139, -154,109,247,218, 40, 88,173,160,191,143,206,141,125,171,214, 94, 97,183,200, 86,159, 36,184,157, 50,136,189,150, 58,244,134,108, -173,101, 15,163,232,254,117,203, 30, 53,162, 93,181,110, 83,163,119, 15, 83,177,204,249,171, 10,155,138, 94,116,240,234, 0, 31, -201,240,241, 87,145, 27,175,194,225,175,192,241,207,192,225,207, 65,252,192, 46, 0,136, 96,171, 17, 57,134,248, 28, 12,159,129, -245, 59, 48,126, 1,166,175,192,252,200, 47,128,231,192, 55,129,135, 16, 62,224,182,134,167, 65, 31,250,184, 61,238,201,214, 71, -208,119,172,219, 15,207,218, 30, 33, 28, 64,255,221,208,125, 1,110,157,193, 97, 34,174, 35,235, 36, 92, 86,101,148, 29,156,208, -242,201,189, 19,209, 93, 90,147,237,132,155, 90,217,118,164,154, 2,237, 86,219, 12,134,185, 85,221, 96, 91, 89,149, 72,110, 40, - 88,221,241, 0, 10, 66,221,110,209,121,235,124,116, 43,248, 93,205, 12,209,192, 24,165, 76, 8,193,212,234, 18,152, 37, 90, 38, -184, 35, 67,231,118,181, 8, 46,102,107, 20,221, 96,157,162, 77,116,204, 54, 84,107, 33, 75,166,120,158,120,236,204,158,213,165, - 53,154,131, 21,220,170,212,243,119,141,188,120,243,121, 11, 49,121,248, 54,184, 47, 30,129,210,224, 60,190,239, 45, 45, 71,123, -220,186,165,205, 60,149, 49, 25, 52, 40,228, 12,213, 98,100,179, 88,174,186,148, 98, 26, 33,247,187,151,243,135, 6,149,113,145, -161,204, 91, 66,191,166, 59, 56,130,213,177,165,143,229,173, 61,247, 5,178, 4, 75,108, 22,217,189, 68, 53, 48,111,206,169, 85, -136,199,167,132,131, 3,168,106,202,238, 75, 3,217, 72,103,233, 97,217, 73,209, 18,237, 82, 48,231, 76, 17,179,237,117, 26, 40, - 90, 92, 75,225,153,236,177, 51,112,148,119,119, 45, 92, 71, 20, 7,204,224,130,174,157,117,172, 98,132,180,226,204,245, 90, 89, -138, 93,187,216,213, 90,125,252, 93,201,222,249,198,101, 50,178,163,185, 73,179, 89,138, 21,214,144,170,175, 48,118,161, 52, 49, - 37, 91, 35,186, 0,174,215, 74,127,116,196, 35,181,243, 35, 41,244, 93, 79,144,204,228,197, 57,170, 16, 16,102, 9,228,154, 77, -252, 89,138, 9,232,156,183, 27, 36,144,107, 48, 0, 78,140, 22,218,211, 40, 12, 98,176,153,184,100,181,219,132,163, 32,140, 45, -218,184,113, 1,170,173, 11,179,103,200,155,117, 54,184,138,223,136,120,117,158,237,220,148,253,204, 5,253,125, 67, 89,158, 20, -194,233, 30,146, 70, 91,216,177, 92, 23,212,233, 94, 14,235,110,199, 46,164, 92,119, 13,153, 79,136, 57, 87,184, 8,202,113,168, -200,161,145,155,250, 78, 9, 87,246,141, 49, 43,186, 13,200,105,178,189,113,169,232,166, 48, 7,101,219, 97, 99, 18, 12,110, 17, -178,216, 14,171,120, 49, 31, 77,224,171,239, 8,250, 53, 49,212,220, 65, 68,142,183,240,252, 6,189,115,128,222, 1,185,117,134, -156,142,200,177, 32, 55, 58,184, 97,200, 83,214,213,146, 41, 59,224,123,214,232,163, 30,125,227, 2, 41,255, 4,110,253, 36,240, - 33,224,235,118, 80,202, 51,112,112, 23,233, 94,131,241, 18,221,174, 97,234, 96,188,107,135,247,233,243,232,230,219,240, 86,179, -118,249,104, 55,184,173,173, 5,165,180,133,173,250,220,120,222,185,139, 12,243, 26,140, 57,191,253, 26, 20, 27,203, 49,122,167, -184, 0, 57,246, 98,239,166, 43,120, 87,225,145,101,160,163,216,158,121,107,193, 9,250,112,164, 62,206,200,105, 79,172,106,227, -177, 41,160,155,138,148, 7, 94,225,162, 21,144,238, 24,250, 75,239,212, 3, 18, 20,205,123,243,232,125,188,105,220, 89,217,180, -229,188,143,102, 43,220,221, 12, 93,229, 63,202,110,223, 94,118,153,206,162, 30,239,216, 59,136,103,104,170,108,113, 81, 76,133, -242, 8,242, 23,209, 55, 95,131, 55, 58,180, 47,158,205,222, 2,121,212,187,106, 27,131,235,123, 60,154,186, 3,203,236,143,214, - 91, 97,247,193,135, 54, 97,120,217, 9, 94, 68, 4, 73,189,105, 63,212,187,113,247, 6, 83, 48,116, 99,113, 75, 75,240,238, 93, -130, 57, 36,122, 19,124,105,142,246,189, 20,129, 81,208,175,173,224, 98,128,211, 13,220,120, 27,249,174,191, 13,183,127, 3, 78, -254, 42,244,175,248,251, 98,222,137,234, 8,118,131,235,190,203, 64, 50,235,127, 9,242,183,160,220,117,241,219, 5,112,215,191, -145,198,146,127,202,226,116,235, 3,127,160, 29,148,183,160,190, 10,241, 19, 54, 1, 48,107, 4,244,159,134,120,108,193, 69,167, - 25,190, 19,233,214, 66,188,220,187,208,181,240, 10,183,169,213, 61,158,123, 91,173,171,236,104,105, 82,132,162,217, 46,116, 41, -162, 41, 81,114, 37,116, 16,164, 67,163,197,103,106,158,151, 93, 59, 85,169,157, 91,143,218,175, 71, 59,220, 18,149, 21,202,160, -194, 40, 66,173,149, 46, 84,130,122,182,185, 43,200, 43, 38,168,170, 62,154, 13, 65,232, 37,120,114,154,113,212, 3,214, 81, 55, -135, 90,240, 81,166,184, 90,160,150, 74,183,205,196,213, 10, 82,231,154,146,217,198,204,103, 15, 64, 18,233,198,211,228, 24,168, - 15,223,129, 50,154, 64,207,159,131, 42,106, 90,128,118, 79,172,217,239,175,226,112,157,104, 54,172, 60, 81,199,201, 30, 75,191, -118, 61,139, 32,193,214, 1, 58,110,209, 98, 43, 6, 13, 54,233,210,108,162, 62,219, 21, 71, 66,234,157,193, 48,146, 75, 38,107, - 37, 68, 49,145, 56,129,185, 42,105,181,182, 46,143,128, 76, 19, 33,246,206, 49,168,132,213,218,117,198,197,209,179, 9, 73, 61, - 49, 36,106,176,132,187,185, 20,230,185, 16,253, 57, 43, 87, 23,196,212, 19,250, 97,161, 1, 6, 32, 13, 43,214, 7,199,244,131, - 41,205,203, 92,216,110, 47,152,234, 22,212,108, 93,177, 75,206, 52, 55,113, 93, 94, 10,187,217,197,196, 85,236,181, 20,211,171, - 56, 44,166,214, 76,206,101, 25,211, 43, 59,177,106,219,203,183,233, 95,104,113,184, 94,212, 67, 8,134, 82,173,106, 96,165,121, -230, 36, 38,230,213,138,203, 77,101, 44,133,224, 29,241, 14,233,106, 96, 35, 9, 16,138, 16,164, 16, 66,160, 22,115, 5,152,229, - 78,246,118,222,118,132,166, 96,197, 61,133,176,192,163,218, 78,187,248,101,165,199,244, 7,147,154,128,211,148,251,213, 60,232, -152,123,160, 46,148,189, 74,158, 38, 19, 41, 62, 9,130,218,211,189,255,126,241, 85,215,164,240,203, 17,168,123,244,184, 61,107, - 94,219,165,239,123,219,137,164,140, 18,171, 44,225, 45, 7, 2,227,158,248, 58,246, 74, 10,234,249,205, 14,175,152, 11,122, 47, - 35,183, 34,242, 84, 64,167,128, 94, 22,255,160,122, 98,155, 71, 3, 70,160,155,149, 48,219,184, 69,171, 80,170, 34,197,139,126, -157, 9, 36,170, 36,228, 91, 19,252,238, 21,178,186, 64,159,126,138,154, 14,225,236, 10, 25, 39,136, 21,121, 94,144, 31,238, 9, - 31, 79,200,109,139, 74,149,161,135, 27, 39,232,163, 11,228,221,127, 4,183,126, 2,228,135,128,239, 88, 34,151,222, 54,250, 90, -250, 58,210,223,181, 46,185, 14,144,223,134,238,121,228,185,231,168,211, 91, 22,215,170,150,181,110,241,134,123, 50,236,165,178, -236, 5, 65,204, 30,206,178, 6, 89, 31,217,179,250,240, 45,208,149, 23, 75,221,129,122,100,143,244, 57, 1,239, 22,184, 59, 81, -239,205,118, 24,138, 53,105,234,254,174, 58, 86,242,182, 16,238,111, 76, 97,189, 82,226, 16,144, 71, 64,249,246, 94, 92,216,129, -119,110,174,218,223,216,165, 67, 34, 59, 21,166,236,217, 21,147,119,234, 45, 70, 54, 59,108,122, 73,255, 48, 85,175,110,117, 23, - 49,235, 93,141, 68, 47,234, 67,176,130, 46,201,218,229, 62,219,250, 68, 39,179, 97,213,115, 24,191, 12,231,255, 7,124,181,122, - 22,113,177, 21, 67,118,213,187, 96,170,247, 37,157,109,135, 31,109, 42,214,253,205, 39,123,247,147, 86, 51,165,114, 45,124, 4, -113,238,123,114,127,109,112, 33,225,126,120, 71,195,200, 78,160,189,151,186,224, 47,118, 27, 13,150,106, 23,159,236, 43,141,222, - 11,252,121,133, 71, 17,206, 87,232,183,102,248,190, 47, 33, 47,255, 2,156,254,151, 48,124,175, 79, 40,182,123,159, 72, 23,128, -146,172,203,238,239, 88, 97,214,251, 54,134,103, 6,238, 3, 47,238,169, 75, 87, 86,184,235, 99,123,204,227, 47,217,107, 29, 94, -114, 40,142,211,136,210,203, 48,124, 8,142,222, 36,188, 88,224,247, 18,129, 64,175, 13, 60,180,203, 94,217, 57, 10,196,176,204, - 93,135,206,121, 73,255,106,118,180, 37, 26,178,218,123, 67,165,218,158,174,216,231, 90,243,236, 93,181,227, 96, 5,180, 75, 54, -222,205, 51, 69,108,252,184,184, 38, 69, 22,115, 73,213,221, 24,189, 74,100,174,118, 0, 22, 95, 21,181,184, 82,212,236, 67, 49, - 37, 75,124, 43, 21,130, 46,217,218, 79,180, 36, 14,231, 16,146, 40, 93, 80,164,108, 33, 24,141, 78,114, 89,102, 14,245,241, 61, -163,131,221,124,142, 26, 2,250,240, 77,170, 23,118,162,175,109,234,206,175,220,128,155,193,179,209, 21, 65,156,158, 70,205, 38, - 24,172,149, 48, 12,148,170,148,237,149, 23,243, 22,108,211,140,136,254,252,170, 50,111, 46,156,238,216, 91,135, 27, 7,234, 28, -209,121, 7,168, 81, 42, 50, 28, 18,143,111, 83,183, 87, 11,194, 54, 87, 69,231,173,237,200,135, 53, 97, 88,163,211,214, 10,181, -199,215,230,121,180,221,174,135,178,162,222, 93, 74, 52, 1,158,139,186,114,173,104,169,190,113,179, 51, 98,154, 70, 66, 76, 84, - 53,177, 92,243,194, 39, 9, 38, 78,108,179, 27,223, 99,151,190, 50, 59, 30,182,228,217,128, 62, 34,164,212,177,228,200,186, 82, - 61,123,242,155,209,220, 10, 82,101,209,115,180,136,224,253,177,251,114,220,170,193,131,156, 89,198, 58, 70,182,195,138,113, 59, - 82,146,178,157,103, 74, 53,197,119, 3,207,224, 83,170,152, 2,189,167,201,217,197,204,186,248,224,164, 78,117,204,116, 23, 2, - 41, 24, 80,104,246,149, 66,174, 74,214,106,184,217,170,164,104,175,205,182, 86,166,105,132,106,159,149,166, 53, 8,126,217,205, -165, 50,151,153, 50,206,203, 90, 67,222,131,137,227, 90,108,241,255,255,244, 93,223,143, 6,239,161,183,122, 77, 72,247,100, 54, - 67,202,106,246, 1, 92, 59,181,138,194,202, 39,182, 90,236,236,142,193,254,145,217,155,214,132,208,159, 27, 47,156,219, 29,114, - 51, 16,206, 3,105, 83,204, 82,227,206,175,169,133,170,181,129, 65,221, 75, 33,141, 74, 47,202, 80, 43,195, 69, 33,229,130, 30, - 4,131,153, 48, 33,103, 19,220,184, 65,205, 9,238,206,112, 57,193,215, 20,253,229,142,186, 78,200,103, 2,225,103, 6,228,149, - 1,185,145,144,131, 99, 56,223,192,227,127, 4,199, 23, 16,255, 21,235,134,228, 29,224,131,160, 31,131,238,235, 16,191,100,135, -102,237,188,176, 63, 67,120,233, 14,250,232, 30,250, 45,127, 90, 98, 53, 79,171,132,235,166,104,217,251,113, 96, 99, 24,142,170, -237, 70,235,119,224,209,235,118, 97,104,223,228,210, 45, 7, 59,195, 59, 15,152,185, 63,193,131,209,198,236,106,123, 17, 29, 43, -122, 81,151,119, 66,233, 76, 40, 21, 74,166,142, 16,106, 68, 30, 70, 75,241,210,173, 89,157,164, 55,144,137, 56, 20, 40, 98, 79, -190,232,142, 94, 39, 59, 56,138,237,211,221, 58, 55, 22,227, 10,140,126, 1, 96,207,210,150, 29,150,211, 9, 82, 93, 8,217, 70, -185, 93,178, 76,246,152,224,164, 26, 68, 39, 60,103,197,107,190, 11,243,215, 97,252, 71,232,215,223,129,111,117,104,200, 38, 80, -115,145, 90,187, 23, 45, 22,182,125, 24,195,242, 65,223,137,188,158,244,113,162,120, 76,237,245,203,146,186,237,205,132, 71,158, - 72, 87,154,229, 96, 9,232,178,127,116,202, 86,240, 15, 35,210, 86, 66, 88,106,156,133,235,120,136, 76,241,231, 45, 57,235,158, -106,169,111,191, 19,224,221, 1,253, 3,175, 35,159,250, 43,112,235,111,192,240,131,254,141,108,159,248,120,238, 41, 80,229,196, -138,182,220, 7,238, 1,103,192, 99, 12,196,236,170, 69,185,101,157,252,230,127,134,243,175,194,250,123, 32,157, 65,124, 23,240, -113,127, 56,130,245, 31,132,139, 47,193,203, 35,114, 59, 17,239, 37, 86,151,153, 74, 32, 39,155, 60,197,234,239, 45,191, 51,100, - 81, 84,178, 25,156, 90, 39,233, 89,246, 90,240, 84, 49, 7,180, 84, 47,166,101,246,199,229,172,247,152,208,212,147, 5,243, 91, -207,121, 73,247, 17,177, 78,125, 21,132,163, 40,196, 46, 50,230, 74,204,153,222, 95,132, 82,161, 96,200,204,186,151,198, 39, 46, -160, 18,117,107,142, 43,200,236, 82,224,118,161,234,151,203,246,150, 84,107, 26,146, 88,162,155,212, 66,157, 38,232,147,241,232, -167,201, 87, 48, 21,125,120, 23, 81, 33,221,126,150,148, 6,120,248, 29,202,120,229, 39,147, 34,209,120,228,197,253,243,193, 25, - 12,100, 83,125,167, 16, 44,128, 6, 59,200,101,125,140, 14, 3,170,151,212,121,182, 29,117,158,140,191,230,133, 4, 9,166, 14, -247,231, 39,231,130,150, 45, 93,234, 12,217, 28, 59,130,154, 98,181,184, 7,188, 63,126,202, 82,225,106,165, 27, 44, 47,160,186, - 98, 58, 68,131,161, 72,201, 84, 9,244,195, 26, 73,145, 92,148,162,230, 43,159,171, 82, 66, 90, 46,182,226, 66,179,154,231, 37, - 39,158,100, 2,213,113,156, 24,183, 38,232,139,157,103,140,135, 64, 74, 29,161,249,192, 29, 2, 20,170,177, 32,146, 11, 21,195, -106, 77, 85,101,158,103,230,121, 98,154, 39,242, 60, 51, 23,131,228, 52, 34,220, 16,141,155,110,200,146,202, 84, 10,197,197, 99, -141,250,182,104, 51, 60, 88,166,122,119,159,130,112, 35,118,220, 57,185,193,176, 58, 64, 46,206, 65,212, 26,199, 82, 40,185, 77, - 84,204,102, 56,187,159,191, 93,208,163,152,183,189, 11,145, 16,133,136, 16,196, 44,190,234,232,216,109, 41,100,173,204,213,126, -100,199,220, 26,144,199,214, 51,185, 90, 4,171,197,118,135,197, 5,160,130, 69,197,214,194, 60,153, 83,131,170,239,201, 57,223, -157,117,250,190,181, 92,121, 66, 71,212,178, 45,174, 65,107,119, 54,211, 38,254,181,231,184,219, 35, 83,216,229, 40, 77,186,151, -183,220,153,144,186,129,123,202,236, 60, 13, 49,224,132,224,184,187,168,196, 92,145,123,133,176, 22,228, 52,162, 87,149,244, 78, - 37,141,186,131, 95, 40, 20, 21,182,218,130,190,236,131, 28, 69,232,170, 48, 5, 97, 20, 88,169,178,218,206,164,109, 32,117,130, - 92, 5,228,234, 2,185,191, 37,164, 3,234,233, 9,156,246,176,157,237,240, 43,138,126,169,162,159,191,180,130,254, 99, 3,242, -199, 15, 9, 47, 28, 89,177,222,254,223,208,223,133,238,207,249,206,242, 45,235,106,229, 71, 64, 94, 6,249,191,172,216,215, 9, -230,123,144,158, 66, 62,125,104, 35,250,111,121,129,156, 20,142,117, 81,128,238, 60, 94,123,210,236,206, 70,222,196, 3, 24,127, - 13,222,245,217,112,206, 22,148,210, 2, 62, 74,181, 91,210,141, 30,206,172,168,235,189,217, 20,179,157,171,145,175, 10,122,149, - 45,196,229, 72,232, 6,161,230, 54,181,247,248,195,139, 4,211, 99,239, 0, 39,239,142,247, 96,192,109,204,238,182,165,133,247, - 73, 48, 11,212,202, 15,243,234,214,193,246,194,204,186,151,161,234, 74,250,162,206,149,110,194, 57,219,239,135,163, 1, 57, 30, -224, 52,192,199,102,228,230,243, 48,252,128,189,121,198,175,192,244, 91,112,247,171,240,197,104, 35,119,205, 6, 73,107, 30,206, -246, 33,174,126,107,189, 38,150, 50,145, 16,125,114,112,200, 94, 65,126, 2,169,212, 36, 46,193,209,189, 34,230,145,150,220, 38, -140,201,199, 34,126,201,137,178,227, 35, 87,215, 77,108,130,241, 10,210,222, 5, 97,244,223,155,125,138, 17,162, 77, 95, 92,163, -160, 43,167,142,223,235,224,159, 30,160,243, 93,228,123,254, 50,220,254,239,189, 99, 15, 30, 8,240,164, 89,165,209,150, 34,200, - 29,175,112,175, 66,253,135, 16, 62, 1,241,211,254,228,251, 56,103,254, 85, 19,207,233,224,153,222,231,246,186,139,133,166, 48, -124, 10,142,239,192, 7,207,144,143, 9,233,141,158,213,227,137,195, 45, 92,134,224, 73, 99,106, 20, 47,236,114,110, 22,225, 4, -201,248,223, 58,109, 13, 42,212,202,123, 21, 52, 68, 99,194,199,232,185,230,189, 21,172, 96,254,223, 18, 18, 37, 23,230,121,132, - 92,155, 81,194,144,193,173, 75,239,132,222,157, 77, 33, 4,250,176,131,251, 21,177,139, 70,245,241,121,179, 59, 5, 85, 7, 25, - 41, 81, 77,197,156, 21,230,178,231, 31, 14, 59,228,126,140,248, 24,217,132,102,226,241,129, 90, 11, 58,110, 32,249, 40, 62, 27, - 52,165,212, 74,126,124,151, 33, 6,134, 59, 47, 66,215,163,239,124,147,122,117,101, 95, 39, 38,235,220, 21, 35,208, 5,183, 62, -133, 74,234, 6, 82, 55, 32, 90,169,209, 86, 77, 26,204,179, 31,135, 3, 27, 55, 79,227,114,122,167,208, 48,204,182, 72,170, 82, -209,160, 11, 14,185,250,123,182, 32,132,174, 39,106,180,116,198,216, 33,195,154,105,220, 26,192,167, 27,168,106,232,211, 42, 70, -124, 11,254, 53, 66,111, 48,148, 80,246,146,192,250,222,222,183,165,154,250, 92,133,152, 58, 66, 63,120, 8,137,249,209,107, 41, - 30, 42, 98,153,228,193, 59,203, 24,109,205,144,231,217, 62, 50, 49,185,115, 66,137, 24, 23,126,118, 12,109,244,213, 68, 31, 19, -235,174, 67, 56, 98,170,133,105,158,153,199, 43, 74,174,204, 53,147,231,201,198,209, 98,192,150,117, 76,164,174,167, 11,150, 79, - 81,213, 10,120,192,179,228,177,245, 94,215, 69,142,250, 21, 7,253,138,208,117, 92,109,174, 88, 9,140,195,138,237,118,227,211, - 1,131, 7,141, 90, 25,199,140,186,143,188,105, 38, 50,202, 84,202, 50,221,169,110,163,221,239,122,131,135,117, 53,183, 72,109, - 83,164,182, 54,208,166, 44, 23,183,236,205,136, 71,181, 26,193,174, 24,129,111,206,239,203,106, 23,185, 38,102,127, 95,167,250, -147, 96,173,221,172,104, 79, 14,228,220,108,105,178, 96,221,249,213,209,110,207,237, 14,241,207,223,137,191,216, 7, 97,149,132, - 30, 33,133,221, 4, 37,185, 78,126, 42, 70,101,202,123,177,174,162, 98,109,126,117, 91, 87,167,200,133,137,195,178, 55,131,185, -194,168, 98, 31, 78,245, 4,210,197, 2,189, 75,128,202,200,222,206,204,189,196, 27,133, 77, 65, 98,129, 35, 69,110,172, 97, 53, - 88,251,209, 85,184,217, 33,199,197,118,160,191, 51,193, 63, 30,209, 71, 17, 94, 88, 35, 55,215, 16,222,132,250, 37,144, 79,130, - 60, 15,114,233,190,250,103,205, 62,196,125,144, 51,107,241,106,129, 97,128,167, 19,220, 47,240,157,178, 83,104,118,114,157,140, - 18,247, 82,193,146,219,247,110, 36,244,242, 46,252,222,149,253,165, 11, 47,148, 1, 47,164,158, 81,251,204, 0,239,108,225,219, - 35,250,206,214,195, 12,116, 23,160,162,246,231, 91, 55,194,228,225, 7,158,161, 28,110,245,200, 39,176,148,182,112,106,226,170, -139, 95,134,179,199,240,174, 39,194,213,186,167,214,247, 19,119,101, 20, 59, 57,237,209,181,195, 66,206,178, 97,114, 47, 76,168, -183,248,202,252, 16,221,117,249,118,179,141,177, 35,220, 92, 33,119, 14,224,165, 8,159,152,145, 23,143,224,232,167, 97,253,125, - 80, 46, 96,250, 50, 92,253, 26,250,169,114,251, 17, 0, 0, 32, 0, 73, 68, 65, 84,107, 27,120, 75, 80,201,232, 88,168, 91,191, -228,108,138,223,208,237,178,167,123, 84, 87,109, 35,180, 61, 32,133,244,105,137, 56, 92,118, 71,254,184, 44,149,104, 23,188, 32, -205,237,174, 1, 14, 79, 32, 87, 36,111,175, 97, 21, 5, 75,192, 67,157,177, 31,205,174,101, 95,203,158, 3,105, 56, 76, 45,254, - 92,218,141, 97,137,235,221,248, 42, 97, 16,184, 12,200, 55, 18, 12,231,200,237, 95,130,244, 65, 27,141, 91,138,203, 19, 81,137, -126,243, 88, 62, 65, 39, 16,158,183, 63, 91,254, 25,212,175, 65,248,144,173, 50,194, 83,144, 62, 11,252, 6,232, 35, 72, 47,218, -154, 37,220, 48,187, 32, 2,233, 0,134,111,131,124, 19,206, 70,248, 54,232,121, 70,199,153,243, 86, 12,171,239,138, 37, 80,131, -197,161,198,104,169,104, 90,157, 97,239,183,123,195,178, 58,239, 59,244,150, 15, 30,130, 23,115,203,238, 46,170,228,113, 36, 79, -219, 37,175, 92,154,205,209, 59,135,149, 8, 7,193, 21,241, 53,147,176,168,202, 73, 97,110,137,126, 33,238,184,222, 65, 12,247, - 42, 74,223, 80, 8,126, 47,173, 40, 99,109,124, 40,117,210,178,253,108,130,166, 96, 50,145, 40, 22, 45, 28,130,195,136,204, 98, -100,128,164, 97,103, 49, 82, 53,159, 55,133,238,240,148,178, 62,102,206,179,115, 16, 58,163,225,121, 54, 55,121,178, 93,109,236, -124, 20,109, 83,136,130, 51,188, 85,208,144,108,199,188,185, 68,203,228, 81,157,178,224, 70,139,154,184,144, 16,173,227, 13,174, - 71,113, 70,135,166,158,212,175,232, 87, 43, 66,236, 72,135, 39,164,147,167,200,170, 70,130,235,250,229,220, 41,213,226, 58, 67, - 12, 72,215, 67,232,150,176, 41,155,100, 24, 33, 79,252,223,104, 83, 21,130,115,209, 99,180, 11,198,108, 29,187, 41,213, 11,129, - 64,236,122,186, 24, 57, 60, 57,229, 71,127,254,207, 50,172, 15,120,116,247, 29,138,136,165,175,213,194, 39,127,234,143,240,185, - 95,250, 63,185,247,224, 46,119,239,190,205,219,119,223,226,157,187,111,114,247,193, 93,238, 61,188,207,221,119,239,114,255,193, - 61,206,206, 30,113,181,217, 50,205, 54,170,142, 98, 52, 56,245,154, 48,123,168,138,122, 34, 95, 31, 34,171,212,177,238,122, 14, -251, 21,167,195,138, 59,199,167,220, 58,189,197, 48,172, 44,222,118,115, 73,158, 70,219,159,107, 69, 84, 57, 61, 62,225,199,255, -220,159,229,213, 47,127,197, 59,244,178,156, 31,226,147, 18,107, 70,171,103,163,151, 61, 84,172,122, 70, 59,187,145,123,105, 49, -177,197, 71,239,117, 7, 31,114,146,162,106, 93,152,248, 5,152,243, 68, 25, 39,211,233,236, 21,230, 39,169,112,186, 31,210,242, - 62,230,181,182,250, 86,239,118,228,201, 77,186, 88,189, 21,194, 14,138,166, 21,149,226,188,196,221, 24, 89,130,144, 14, 61, 57, -178,209,185,216,195,186,103,255, 64,181,228,208,236, 93, 97,135, 9, 59,194,172, 12,239,100, 27, 91,222,244,177, 93, 18, 27,213, -136,144,189, 25,212,165, 25, 18,206,171,237,237, 69, 76, 68,227,182, 87, 70, 31,215,231, 96, 92, 23, 91,219, 9,177, 40,146, 55, -232,168,232,234, 20, 14, 14,108,204, 94, 42, 58,116,136,142,246,111,231,130,254,250, 25,250,165, 45,252,200,128,252,203, 55,145, -103,206,161,252, 77,208,159, 7,249, 12,240,192,138,123,120, 14,248, 9, 40,255, 0,120,219,104, 88,219, 13,178,234,145, 31, 89, - 25,138,251,181,209, 58,236,117,128,126,159,110,178, 36, 97,120,135, 28, 80,221,194,131,201, 70,186,115,221,117,191,157,236, 58, -227, 67,127,146, 31, 87,244,188, 80,183, 21, 58, 93, 70,210,210, 57,237,110, 72,190,151,171,132, 42, 30,219,231,212,178,123, 1, -206, 46,225,206,107, 86, 64,242, 35, 3,158,148,189,180,141,208,172,111,123,124,250, 46,182, 48,123, 15,219,241,123,226,236, 35, -235,232,168,206,104,143, 63,212,134,165,245, 98,152, 2,161, 27,224,233, 21,124, 12,120, 57, 35,199,119,224,240,143,195,250,199, -236, 11,108,127, 11,166, 47,163,191,253, 8, 94,239,160, 27,225,170,152, 16, 45,219, 30, 79,252, 18, 83,159, 12,104,121,226,131, - 32,186, 23, 10,148,146, 69,107,182,240, 16,252, 2, 20,158,128, 37,183, 55,123, 23, 27,208,244,186,114, 30, 15,142, 40,123, 41, -166, 62, 61,208,236,170,255,192, 46,143,122,210,189,165,216, 8, 99,112,156,170,203, 83,174, 50,162, 51,114, 25, 8,255,251, 33, - 90, 30, 33, 63,240, 11,112,243,207,195,240,115,198,122,151,190,209,115,124,106,224,214,207,234, 59,119, 18,132, 87, 44,160,167, -252, 42,148, 95,129,244,211,182, 91,239, 62, 3,199,127, 21,182,127,211,213,242,207,216,100,198, 4, 29,198,123,168,159,133,241, - 55,224,233, 51,228,131,137,244,118,199,193,163,137,195,154,217, 22, 89, 6, 18, 82,131,183,182, 74,165, 16, 82, 93,178,196,171, -159,110, 26,219, 94, 82,172,227,147, 72, 80,139,230, 44,192, 56,110,209,121,244,104, 83,217,177,173, 91, 78,128,182,139,153, 79, - 93, 36,208, 73, 32,105, 97,171,187, 97, 80,231,251,239, 33, 6,211,214, 44,251,241,176,100,193, 77,234, 69,172,217, 20,219, 39, - 79,219, 68, 1,178, 86,186, 8, 67, 8,203,251, 85, 37, 18, 82,164,211, 66,168, 74,174, 19,193, 5, 86,121,154,137, 85, 81,205, - 76, 15,239,153, 92,226,246, 75,172, 63,240, 41, 54,247, 95, 39,159,221, 71,197,233,107,193, 32,254, 18, 19,178, 58, 48, 11, 87, -181,116,175, 50, 57,195, 91,146, 61, 31,243, 72,168,217, 27,146,232,145,174, 30, 39,171, 97, 81,123,107,173,182, 74,243,209,110, -198, 86, 27, 21,208, 48,208,157,220, 38, 29,223, 68,227, 64,127, 96,194,194,178,189, 68,199, 43,164, 91,161,253, 26, 21,243,127, - 75,177,195,188, 74,235, 52, 27,107,223,172,117,209, 97, 84,115,182, 84,183, 34, 24, 49, 14,155, 58,118,222,185,183, 61,120, 5, -234, 60,115,231, 67, 31,226,222,183,223,224,198,179,207,112,118,126, 70,201, 51,115, 54, 75,223,118,115,193,246,226,140, 32,214, -241,215,146, 45,143, 93,240, 75, 68, 0, 13, 11,141, 79,213, 82,248, 68,108,114,145,186,142, 33,245,196,100, 89,236, 83,136, 92, -205, 35, 41, 68,250, 24,137,203,215, 80,130, 60, 32, 73, 96,136,145,148,204, 31,191,201,153,139,105,107, 32,154,156, 73,195, 64, - 86,184, 28,183,182,235,102,183,117,212, 70, 8,109,110,138,134,123,209,221,123,169,161,101,151, 81, 58,187, 11,234,114, 14,133, -176, 20,226, 36,130, 74,178, 49,125,206,228,236,197,188, 33,110,247, 36,112,239,217,152,251,170,104,247,165,229,125,187,244,107, -169, 86,187,227,215,173,108,238,244,105, 99, 78, 41,123,171,250,188, 56, 12,170,118,196,191,248,108,252,197, 5, 12,231,147,214, - 46,226,111, 12, 24,171,176, 45,215, 19, 68, 77, 16, 45,254,228, 9, 97,171,132,173, 46,208,139, 17, 97,204, 62,110,115,203, 75, -138,118,200, 92,150, 93, 10,105, 23,109,156, 63, 86, 97,198,240,166,234,170,249, 78, 28,112,226, 34, 48,161,194, 52,219,205,187, -239, 29, 18,131,225, 85, 59,103,167, 31,250,112,235,247, 38,248,167, 19,156,156, 34,207, 22, 24,126,211,111,188, 63,232, 42,162, - 11,199,111, 86, 19,212,213, 45,148,222,254,123,165,240, 76,130,111, 84, 56,159,144, 99, 15,151,175,251,123,117, 31,171, 15, 98, -187,245, 62,193, 55, 71,239,208,205, 14,101,194, 1,177, 98, 90, 5,158,239,172, 48,124,107, 68, 31,249, 62, 29,221,169,194,241, -224,149, 24, 60,103, 59, 32, 67,180,159,147,221,192, 67, 72,240,145,138,220,121,202, 70,189,243, 59,112,249,107,240,232, 18,185, -240,130, 85,116,201,243, 54,216,182,141,221,229, 32, 89,142,186,143,214,185, 40,240,200, 11, 88,187,117, 21, 89, 30, 11,209, 31, - 67, 76,132, 97,128,103, 87,240,169,138,124, 12,228,244,135,224,244,223,135,131, 63,108,225, 50,229, 62, 76,191, 14,111,126, 1, -190, 96,139, 83,205, 5,221, 90,148,171, 69,186,170,223,154, 93, 4,255, 62,206, 53,217,171,205, 44, 59,214,106, 62,125, 28,160, -145,134, 38,242,240, 27,185,143,113,147,253,121,243, 11,175,145, 57,195,188,181, 61,152,143,121, 23,108,108,240,215, 47,201,146, - 75,108,100,228,128, 36,208,209,237,136, 52, 53,121, 53,229,108, 8,203,250,135, 90,209, 41,163,204,212,115,144,175,172,145, 56, - 33,183,190, 8,252,115, 35,233,213, 51, 8, 87,166,123,224,166, 91, 42,216, 79,189,246,125,245, 33,132,143,218,239,235, 35,239, -198,171, 89,222,226,167,128,215,124,236,126,211,185, 14,106, 23, 6,141, 48,253,142,237,232,231, 25,222, 86,228,108, 70,230,202, -165, 68, 54, 26,125, 5,100, 7,166, 86, 93,118,189,209,139,186, 6,179, 50, 73, 50, 21,181,136, 41,223, 69,132, 50,110, 41,243, -104,176,147, 58, 47,128, 20,133, 37,230,182,229,109, 55, 15,173,101, 5,217, 62,180, 75, 70,227,218, 54,243,131,143,183,187, 0, - 67, 74, 38,158,107,217, 59,162,118,166, 99, 54,162,162, 59,105, 74,117,161, 86, 11,193, 67, 96,242, 27, 97, 75, 91,171,109,194, -226,224, 16, 66,192,254, 87,221, 38,213,155, 77,169,157,179,121, 50,192,206,250, 24, 57,186, 77,206, 35,249,234,177,189,231,146, - 21,116,186,149, 89,213,230,217,244, 3,139,247,210,214,105, 33,245,198, 77, 7, 98,234,209, 52,144,250,193,214, 20, 68,106,195, -202, 56,196, 71,177,177, 61,146, 60, 1, 77,136, 53,219,158,247,232,212,148,241,213, 34, 75,231,201,166, 76,105, 88, 17,134, 3, - 52,152,205,171,230,108, 43,147,102, 41,116, 91, 95,241, 34, 37,213,147,241,180, 46,113,163,165, 84,166,105, 75,222,110,141, 35, -239,244,183,121,158,184,188, 60,231,226,236, 17,151,151,231,124,215,247,125, 47, 95,250,229, 95,166, 91, 13, 76,219, 13,143,238, -221,163,230, 76, 74,137,151, 62,249, 41,190,241,197, 47,129,192,234, 96,205,103,127,226, 39,249,232, 15,254, 0, 47,127,242,187, -121,250,165,151,120,240,250, 27,148, 60,115,122,251, 54, 63,241,243,255, 6,111,127,235, 91,228,113,228,163,223,255,253,188,240, -202, 39,120,245,171, 95,225,114,179, 37,163,124,236,135,127,132, 23, 62,253, 41,158,254,232, 71, 56,122,230, 25,222,126,253,117, -202, 60,241,194,167, 63,197, 83, 47,191,204,219,111,188,193,166,100,230, 24,248,238,159,253, 89,190,246,255,126,137,243,237,150, -139,105,203,229, 56, 50, 78, 19,164,200,243,159,120,133,223,250,220,111, 56,163,222,214, 16,171,195, 67,126,250,223,252,183,248, -237,223,252, 60, 90, 43,253,225, 1, 63,249,103,255, 28, 95,249,252,231,153,114,230,248,246, 45,254,224,207,254, 44, 31,248,232, - 71, 88, 31, 29,241, 67,127,244,143,242,213,207,255, 6,170,149,211, 59,119,248, 67, 63,251,175,242,145,239,249, 30, 94,248,240, - 71,185,247,198,235,104, 41,188,242,131, 63,196, 51, 31,122,153,215, 94,125,149,113, 28,137, 49,240, 39,255,237,127,135,175,125, -241,139,104,173,220,124,250,105,126,236,231,254, 20, 31,251,222,207,242,226, 71, 63,202,155,223,252, 22,121,158,249,228, 15,254, - 32, 31,250,196, 39,248,246, 55,190,137, 96,143,237, 79,254,165,127,151,223,253, 23,255,194,116, 22,123,133,123, 73, 50,117,171, - 97, 59, 21,131,236, 5,194,198,232,239,193,249, 9,202,220,110,127, 40, 18, 73,165,168,147,152, 92, 20,109,124, 2,170, 43, 87, -199,106, 2,236,169, 81, 71, 27, 67,165,205,253,147,141,156, 58,103,156, 23,129,109, 22, 11,125, 51, 70, 2, 81,149, 80,205, 76, -211,183, 20,209,176,171, 37,179,154,253,102,242,244,167,161,229,167,208, 40,116, 94,100,100,134,237, 35, 52, 29, 64,191,182, 67, - 38, 21,100,188, 50,113, 91,113, 21,213,105,178,162,255, 63,222,167,126,254, 24,249, 83, 7,200, 7,127,201, 44, 67,250,167,125, - 60,122, 31,194, 7,129,143, 64,250, 42,228, 45,228, 21, 16,145, 91, 21,254,196,128,254,157, 9,125,187, 88,142,123,220, 59,135, -219,146, 35,248,188,112, 84, 43,144,213,139,116,131,181, 68,159, 57,117, 30,229,250,218,136,190, 53,161,103, 5, 93,155, 93, 10, -164,189, 70, 46,110, 46,118, 82, 13,150, 14, 39, 93,103,227,248, 34,168, 6,228,221, 10,243, 55,160, 92,238,120,169,169, 29,220, - 46, 51,214,186, 3,221,236, 61, 86, 93, 38, 7, 62, 73, 16, 7, 7,101,191,101,121, 11, 45, 37, 44, 1, 52, 97,232,224,176,183, -203,196, 7,129, 27, 63, 6,199,255,129,165,197,169, 47,161,235, 25,108,190,136,190, 54,195,198,149,240,179,123, 56,103,143, 64, -156, 43,185,168, 79,127,246,111,181,187,118,125,129, 46,197,134,199,109,169, 74,106, 24, 98,143,153, 36, 13,176, 26,108,143, 62, - 79, 80,231, 37, 34, 87,106,240,184, 96,221,237,180, 90, 37,106,226,187,102,122, 15,126, 9,242,236,102,185, 84,116,112,159,248, - 16, 96,170,214,197,119,134,182,211,130, 93,146,250,201,112,183, 83,166, 94,100,216,206,166, 21,249, 95,123,226, 55, 11,242,211, -175, 34, 79,127, 27,214, 71,112,122, 8, 39,127, 12,248, 99,254,133,254,191,186,222, 45,214,178,235, 58,207,252,198,156,107,173, -189,247,185, 86, 21, 89,188, 20,201, 98, 21, 69, 21, 73,241, 38, 81,150,168, 72,109,155,146,124,105,201,185, 57,134,221,128,186, -129,142,131,110,244, 67, 39, 8, 16, 32, 15,121,243, 67, 16, 32, 15,121, 72,128,228, 45,221, 9,130,238,192,157,216, 29,199,136, -218,138, 36, 43,113,219, 84,100,138,142, 69,145,180, 68,177,138, 34,171,120,169,219,185,159,125, 89,107,206, 57,242, 48,198, 90, -123,159, 18, 93,130, 64,137, 85,117,206, 62,231,236, 53,231,184,252,255,247,223,107,130, 57, 61,230,164, 55, 50,248,251,209,119, -179,253,239,197,139,192, 47, 67,121,217,232,114,218,250,199, 73,182,130,105,158,128,230, 42, 92,188,140, 60, 82, 19,174,143,216, -152,103, 78,119,202, 60, 86,148, 90, 73, 26,157,144,149, 76, 35, 32,209,166,110,154,157,228,102,187,232, 92, 58,219,119,183,166, -188,214,156,145, 98,138,119,237, 61,183,254, 83,139,197, 29, 11, 30,140,210, 79, 70,250, 85, 74,244,125,126, 43, 13,109,132,226, -227,164,133, 66, 72, 86,240, 86,177, 70, 82, 59,188, 71, 75, 81, 22,142,229,108,197, 34,115, 85, 44,136, 38,123,182,118, 12, 80, - 7, 75, 54,235, 9, 90,201,149,230, 22,214,178,116, 84, 12,164,219,188,160,202,137, 80,143,232, 70,149,137,223,114,135, 30, 94, - 39, 86,145,209,250,221,196,115,151, 56, 30,111,208,221,252,177, 41,220, 43,227,142,247,121,232,161,167,140,149,132, 84,145, 56, -217, 68, 70, 19, 11, 73,233,230,180,139, 25, 93,107, 14,129, 76,241,248, 9, 25,224, 35,254, 54,243,206,214, 19,198, 98,244,130, -170,161,180,115,114,136,132,102, 50,236,190,213, 85, 37,154, 18,185, 36,114,182,137, 87, 73, 29, 85, 93, 19,234, 49, 85, 61, 54, -138, 98, 76,195, 52,128,156,137, 33, 18, 37,146,154, 17, 26, 42,142, 14,118,153,207, 14, 17,137, 44,102,199, 94,152,197,129,132, -182,125,215,221,160,176,243,193,251,140,214,198, 60,112,233,113,174,190,241, 3,162, 10,113,109,157,170,170,104,214,214,200, 41, -241,220,207,253, 34,111,189,250, 42,239,189,117,133,110, 49,227,220, 35, 31,225,153,207,127,129,151,190,250, 31, 56,220,221,225, -181, 23, 95,228,147, 95,252, 34,111,190,252, 50, 23,159,124,138,255,255,183,126,139,201,218, 58,109, 78,124,242,191,255, 18, 63, -250,147, 63,225,221,203, 87, 40,100, 30,190,244, 56,143,124,252, 89, 94,254,143,255,145, 27, 47,190,200,207,127,229, 43,236, 77, -167,212,170, 60,240,177,143,113,237, 71, 63, 98, 54,159,179, 40, 5,205,137,113, 8,104, 29, 76,136,157, 50,109,215, 90,110,188, -136, 71, 47, 20, 83,241,123, 30,124,202,133,236,202,118, 84,249,228, 23,127,142,239,191,248, 71,188,119,249, 10, 79,124,234, 83, - 54,173,136,145, 40,129,207,126,233,151,248,225, 75, 47,241,238,149, 43, 60,241,252,167,121,250,167,127,154, 23,127,239,247,120, -253,123,127,202, 23,127,245, 87,105,231, 54, 33,190,240,228, 83,188,119,249,178, 21, 72,192,103,190,244, 37, 94,121,241, 69,174, -253,232, 71, 60,243, 23, 62,199,115, 47,188,192,183,191,250, 85, 46,191,242, 10,191,244,235,191, 78,252,207,127, 64,234, 22,124, -228,233,167,249,241, 15, 94, 39,185,192,111,245,204,147,161,103,148,225,200,150,213,229, 97,127, 94,149,229, 92, 64, 48, 59,158, -196, 56,152,179, 80,165, 42,120, 44,170, 91,181, 23, 62, 46, 24,251,244, 49,123,211,146, 28, 8,145, 87, 48,230, 5, 15, 70,203, - 30,189,238, 49,153,237,114, 61, 11,197,167,208,193,238,219, 94, 76, 67, 92,222,143,149, 96,251, 58,215,160, 45,130, 75,164,150, - 12,197, 37,102, 53,117, 72,119,132, 78, 64,227, 6, 28,131,182, 53,194,194, 42, 16, 85, 24, 39,116, 18,225,158,132, 94, 62, 64, -254,143, 9,242,215,198,132,167,191, 13,117,130,252, 63, 88,144, 6,173,141, 63,117, 10,241,170,115,232, 39,208,173, 33,231, 90, -248,139,235,232,239, 30,193, 65,134,237,149, 60,244, 30,126, 82,123,149, 51, 93,185, 36,211,170,242,221,193, 36,181, 5,125,232, -213,150,114,203, 61,158,163, 62,170, 83, 76,141,153,250,200,213, 94, 44,237,179,164,144,173, 2,170,163, 93,248,183, 35,204,111, - 66,153, 25, 78, 52,142,140,128, 85,121,164,107, 81, 55,112,251, 62,165,128, 76, 2,172, 85, 54,241,136,149,245, 61,125,136, 79, -101, 88, 89, 19,154, 69,164,246,207,215, 91,215, 38, 13, 92,140,200,133, 14, 78, 61, 9,155,255, 43,212,247,184,101,203, 79,205, -124, 5,110,127, 0, 59,166,196,215,146, 41,157,243,181, 83,166, 28, 38,186, 69,166, 11, 70, 30, 43,170,119,136, 69,164, 39,188, -218, 94, 59, 47,203, 80,233, 25,239, 14,201, 65, 18,116, 5,201, 17,105, 70,230,122,104,231, 72, 59,245, 34, 83, 44,124,130,100, -223,207, 85,164,131, 56, 5,168, 91,193,133, 54,203,149,133,246, 35, 41, 17,100,156,125, 93,209, 71, 13,123, 78, 65,235,158,252, -218, 58, 36,157,250, 90,170,206,196, 80,136,127, 84,168,174, 84,196,231, 21, 57,119, 0, 15, 28,194,163,255, 10,214,254,173,147, -228,190, 4,205,151, 45, 97,143,145, 19,227,122, 94,111,190, 67, 66,147, 13,157, 28, 31,128,176, 14,229, 74, 31, 41,104, 84, 66, -198,208,156, 55, 47,252,230, 13,120,100,143,120,101, 68,115,212,113,122,127,193, 94,154,179,183,112, 44,104, 31,214,225,151,176, - 89,253,178,119,239,234, 35, 73, 89, 42,227, 83,231, 63,222,176, 92,229,244,188,217,149,104,223,210, 79, 83,252,105, 14, 82, 17, -130, 41,234, 51, 74,194,247,249,161,178,174,180,168,213,176,185, 80, 99, 35,219,156,178, 1, 19, 17,186, 12,173, 7, 97, 20, 39, -174,225, 32, 18,139,173,112,113,179,119,249,125, 8,203,188,152, 22,101,210,199,162, 6, 43, 46,178, 8,170,166,224, 46,139,169, -233, 3,154,145, 1, 86,114, 71,218,123,159,160,133, 90,206,178,121,250,126,218,166, 97,113,251,154,141,142, 83,231,171, 18, 75, - 24, 11, 36, 66, 51, 38,174,159,178,216,208,249, 33,101,118, 76,119,180,107,246,174, 30, 30, 41, 50,132,178,104,233, 69, 86, 12, - 92,115,113, 34, 98, 41, 74,110, 2,180, 11,255,250, 2,218,182,228,146,173, 95, 11, 1, 98,133,212, 99, 36, 7, 98,207,189,232, - 83,213, 98, 99, 5,151,139,205, 52, 39, 35,224, 41, 3,252,198,232,139,153, 24, 2,245,120, 98,233,217,205,200, 39,131,145,140, -249,170, 31,126,242,105,222,191,252, 38,177,110,184,126,245, 93,158,252,220,207, 48,158,172,209,205,230,158, 22,105, 69,205,104, - 50,225,236,131, 15, 50, 90, 95,227,177,231,159, 39,251, 74,161, 20, 19, 65,171, 42, 63,126,237, 53,238,186,239, 62,158,251,133, - 95,224,197,223,249,119, 38,252, 3,154,209,152,123,207, 63,196,120, 60,230,169,207,126,118, 56,163, 66, 12,204, 75,226,120,119, -151, 55, 95,123,157,241,189,247,240,246,235,175,243,204, 3,231,248,246,239,254, 46,243,163, 35, 34, 66, 21, 45,227, 92, 36, 80, -151, 66, 37,194,233,201, 4, 29,143,135,248,214,241,120,194,168,170, 89, 27,217,191, 27, 53, 35,154,170, 98, 99, 52,166, 26, 53, -156,189,251, 44,179,235, 55,217,222,216, 96,255,221,247, 24,127,234,211,108, 78,214,169, 70, 35,182,238,186,139,119,174, 92,102, -145, 18,127,246,202, 43,252,244, 95,250, 75, 28, 31, 31,161, 7, 7,236, 93,191,193, 3, 15, 95,224,189, 43,111,241,200,147, 79, -242,221,255,244, 45, 10, 74, 61,106,216, 58,125,134,171,111,252, 8,128, 31,191,241, 3, 62,255,203,191, 98,209, 23,139, 5, 87, - 47, 95,230,226,199, 30,231,205, 87, 94,225, 35, 79, 63,195, 55,255,237,191, 57, 49,154, 15, 39,158,120, 93,225,116,200, 9,171, - 90,191,110, 12, 49, 64,170,135,181, 71, 47, 30,237,105, 70, 90, 18,149,246, 0, 8,135, 66,244, 54, 52,245, 70, 47,137,178, 80, - 25,104, 95,209,127, 63, 9,236, 36,223,133, 23,243, 41,110, 87,246,185,107,241,148,163, 21, 24, 91,238,201, 93,253,125,181, 18, -104, 83,121,128, 91,167, 58,160,233,219, 98, 92,147,152, 10,212,213,202,168,201,159,148,217,145,117,100, 97,211, 14,230,131, 5, -210,167,179, 29, 36,168, 5, 61,213,152,113,241, 22,240, 59, 35,202,124,130, 60,251, 50,178,190, 3,229, 43,230, 97,103, 14,241, - 89, 59, 40,203, 21,179,139,149, 49,116,155,200, 37,129, 47,102,120, 57, 25, 61,173, 89,129,180, 52,193, 70, 10, 85,128,195,206, -170,155,232, 21, 80, 15,117,214,108,161, 30,141,123,252, 14, 91,116,209,218,186,160,117, 65, 88, 16,116,179, 70, 22,217,246,235, - 43, 63, 64, 67,109,249,188, 58,250,232,228, 38,144,102,118,184,199, 53, 11,248, 88, 27,193,150, 26,160,166,213,101, 54,119,194, - 46,159,245, 8, 19,243,152, 59,205, 99,153, 31, 95,123,124,168,152,149, 15,169, 96,228,127,118,173,134,115, 17, 30, 93,192,246, -189,176,245,235, 80,159,243,253,112,178,139, 38,239,195,236,235,232, 78, 54,175,127, 40,104,167, 30,228,167,148,189, 68,187, 40, -119, 92,232,186, 28, 50,137,220, 17, 51,200, 48, 46,151,168,195,221, 38, 39,242, 6,253, 13,218, 46,236,123, 61, 26,153,182,160, -237,236,235, 45, 62,158,119,105,118,112, 43,138,136, 85,182,182, 28,119, 87, 66, 27, 93,124,233, 69,155, 65,155,205, 96,112,106, -130,108,143, 12,243, 58,243, 50, 86, 58, 35, 48,116, 17,138, 41, 81,187,166,161, 85, 33,146,105, 54, 43,154,219,145,234,155, 45, -241, 66, 38,110,213, 48, 73,240,192, 46, 92,216,133, 7,255, 57,172,127,221,194, 98, 38,191, 8,241,140,119,223,126,185,175,202, -252,135,242,187,179,117, 81,124,108,153,184,134,216,220, 43,156, 50,209, 92,125, 31,242,208, 1,156,171,136,183, 27,214,102,137, -179,154, 57,204,234,186, 21,165, 45,203,172, 55,165,143,209,237,147, 0,123,126, 80,111,116,183, 29,156,250, 8, 79,122,142,129, - 8,145,228, 53,150,107, 75, 98, 52,176, 74,172,136,149, 80,185, 13,104,142,208,246,133,173,216,239,143, 67,178, 21, 93, 81,166, - 40,157, 6,203, 74,215, 94,226,144,201,206,239,183, 37, 69,241,145,186, 37, 83, 23, 9,182, 25,113,112, 76, 31, 2, 51, 47, 74, - 69, 96, 96,147, 21,122,124,153, 91,147,132, 76, 36,183,115,155,238, 52,107, 72, 61,182,139,245,120,215,212,247,245, 58,147, 83, -247, 19,183,238, 35, 95,253, 30,229,248,144, 48,218,160, 84, 35, 52,181,212,107, 27,200,250, 22,237,238, 7,164,131,219,196, 30, - 96, 83,213, 70,170, 83, 37,137, 89,167,162, 31,186,134,225,237, 87, 60, 38, 62, 52,149,127, 64, 99,101, 66,183, 98, 81,176,185, -100,210,124, 74,187,152, 19, 84, 9,205, 4,169, 71, 72,157, 8, 85,141,132,202,134,110, 33, 24,128,167, 20,180,180,214, 71, 56, -193, 71, 17,138,102, 82,215,145,146, 93,184,226,209,165,177,174,141,135,142,129,188,138,143,235, 65,184,255,226, 35, 20, 85, 30, -122,226, 99,131,214,225,129, 75,143,243,206,107,223, 55,226,160,170,179,228, 27, 20,248,246,239,252,123, 74, 49,149,120,215,195, -104,234,134,146, 77,176,182,121,247, 89, 22,139, 5,213,104, 68,151,179, 77, 89, 60, 13,242, 91,191,249,155, 75,209, 90, 16, 98, - 12,142,183, 21,174,188,246, 42,159,254,249, 95, 96, 49,155,114,251,198, 13, 62,120,255, 93,155,112, 12, 34, 53, 43, 46,214, 23, - 91,204,231,115,142,142,142,136, 49, 16, 99,101,221,122, 49,132,107,116,106, 98, 83, 87,182,206,173, 34, 77, 85,185,150, 68, 76, -157,159, 51,109,201, 28,204,103,144, 90,166,243, 25, 59,251,123, 20, 85, 42,135, 42,145,109,137,242,214,107,175,114,241,169,167, - 56, 62, 56,160, 30,141,184,113,237,218, 9,189,199, 29, 75,240,225, 40,251,225,127,253, 19, 62,247,229, 47, 51,155, 78, 57,216, -185,205,209,222,222,114,156, 46, 63, 25,163,170, 3,138, 97,121, 70, 14,186,160,212,111, 91, 60,191,190,116,148, 54,163,234,193, - 57,254,193,170, 62, 11,186, 56,169,169,117, 65,123,113,182,118,239,224,202,197, 8,174,136, 13, 11,167,157, 53, 53,123, 30, 98, -118,166, 86,102, 89,140,184, 26,150,152,199,192, 74,152, 91, 30, 72,163, 52, 50,232, 34,136,186,172,186, 43,143,193,107,139, 9, -166, 99, 87, 8,199,201,226, 79,163,154, 85,132, 98, 23, 56,251, 48, 81,116,109, 11,109, 54, 96,182,139,134,108,232,233,133, 34, -251, 45, 52, 53, 90,101,184, 90,224,183, 18,188,211,192,207, 92, 65,238,251,167, 16,255, 6,228,243,214, 49, 5,239, 72,202,187, -118,177,231,117,208, 45,228,217,128,238, 31, 88,234,219,186,227,100,139,239,211,215, 21,198,121, 57,114, 15, 43,182,173,122,165, - 20, 27, 11,236,122,130, 87, 40,131,175, 87,181,216, 30, 55,138,117,210, 51,247, 99,213, 50,132,158, 80, 44, 7, 90,251, 64,149, -164,118,129,233, 28,170, 51,208,156,131,230,199,134,138, 61,170, 60, 79,158, 97, 68, 34, 19, 87,222, 79,188,219,119,100, 34,125, -208, 75, 21,236,117, 39,123, 24,192,255,252,168,130,123,106,120,116,129,156,217,130,237,191, 98,232, 83, 60,148,135,177,253,239, -238, 7,112,252, 14,124, 48,182,105, 68,127, 58, 31, 36,216,107, 73,243, 76, 23,196, 56,227, 3,220, 35,252,185,236, 5,237,249, -198,125, 74,104,210, 15,205, 62, 16,108,156, 38,101,102,130,166,186, 70,218, 14,105,154, 21,213,126, 24,234, 93,211,128,217,229, - 98,223,131,176,236, 60, 75,180,247,215,154, 87,165, 71,166,166,229, 32, 89, 97,116,255, 22,108,174,193,222, 20, 22,115,116,102, -246,162, 50,222,134,109,235,116, 75, 46, 44, 82,102, 33,133, 73,187,203,104,119, 78,220, 47, 84,167,107,194,164, 65,190, 95, 17, -238,169,225,217, 57, 60,245, 6,114,246,159,192,228,119, 97,227,127,129,241,231, 44, 9,142,185,173,136,250, 75, 91,100,168,192, -151,123,156,213, 75, 93, 44,238,119,125,211,145,193,155,200,227,251,196,107, 13,213, 97,199,233, 46,115,186,134, 15,186,101,184, -224,176,233, 9, 22,211,154, 89,126, 72,193,222,123,170,142, 23, 30, 58,114, 67,103,230, 42,130,227, 64,251,102, 32, 98,234,117, -154, 53, 68, 51, 81,109,106,212,166, 68,171, 66, 23,204,122, 36, 34,228, 80, 51,207,230, 69, 87,167,196,165,178, 76,145, 54,134, -249,114, 63,172, 20, 15,141, 49,117, 62, 30, 0,212, 39, 93,149, 96,112,151, 84, 10,173, 71,196,214, 30, 36,131,132,161, 46,182, -241,189,160,177, 70,101,196,162, 93, 80,230, 51, 98, 46,196,181, 45,104, 38,174, 10,159, 18,118,174, 81,159, 57,207,246, 71,127, -150,246,120,135,249,254, 7, 38, 0, 28,109, 16,183,239,231,232,250, 27,164,131, 93,123, 7, 86,181, 77, 58,162, 19, 12,179,119, -216, 18,237,162, 18,161, 83,233, 33,234, 75, 15,134, 7,233, 80, 10,217,213,225, 82, 85,142, 91, 53,159,126,145, 72, 46,201,242, - 18, 22,115, 83, 14,171, 9, 30, 99, 48,129,220,224, 32, 50,111,128, 89,228,202,138,109,180,255, 79, 74,102,193,115,155, 86,151, - 23,230, 74,113, 30,193,125, 23, 31,225,248, 96,159,151,126,239,255,179,221,127, 46,108,157, 57,205,199, 63,255, 5,222,251,225, - 15,134, 85, 70,140,145,156, 50,183,223,123,159,139,207, 62,203,155, 47,127,151,128, 48,170, 71,172,157,218,102,239,246,109, 82, -215,241,228,103, 63,203,238,205,155, 92,254,250,215,248,220, 95,254,203,236,253,246,111, 51, 59, 62, 38, 45, 90,110,190,123,141, - 75,159,254, 52,175,127,231,191, 16,138, 82, 85, 53,219,103,239, 97,127,103, 23, 68, 56,222,223,167,109, 23,124,252,103,126,150, -151,126,255, 27, 14, 36, 98,136,101,205, 69, 41,218, 17,218, 57,139,174,101,255,248,136, 16,123, 71, 1,132,227, 35,142,231,115, -102, 34, 28,238,239,114,246,177, 75, 28,205,102,220, 58,216, 7,224,250,141, 27,212,119,159,225,250,155,151,121,252,177,143, 50, -157,207,217, 63,180, 92,249,189,155, 55,121,240,194, 69,174, 94,126,147,243,151, 30,227,198,181,171, 67,223,124,245,205, 55,120, -238, 11,159,231,241, 79,253, 20,151, 95,125,213,126,126,222,141, 31,222,222,225,193, 71, 31,229,218,229, 55, 57,127,233, 18,215, -223,189, 54,156, 83,123,183,110,179,152,205,248,169,207,127,129,151,190,249,141,159,244,158,175, 68,172,246,239,143,176, 18,132, - 51,140,233,139, 82, 74,187,100,202,101,203,101,248, 9, 85,158, 64,252,159,207,202,111,200, 0, 21,147,165,181,217, 59,234,165, - 69,192,206,187,185,159,215,187, 25,142,146,189,128,181,101,250,231,240,162,131,255,157,190, 1, 18,159, 80, 39, 12, 96, 48,142, -125, 67,234, 36,160,126,141,235,127,183,239, 40, 34,182,131,211,185, 45,248,165, 95,242, 47,178,169,161,103,157,121,113, 39,155, -254,244,154, 93, 34,140,100,136, 17, 52, 52,107, 7, 55, 90,120,179, 69,119,199,112,230, 24, 57,253, 26,132, 79,128,222,239,115, -222,202,198,157,204,236, 51,151, 13, 8, 99,228,108, 11,187,157, 47,123,197,170,155,211, 25,182, 55,145,250, 44, 92,191, 5, 31, -184,244,107,102,228, 52,233,179,211, 43, 79,174,123,171, 93,114,242,143, 12,190,208, 11,219,164, 10,198,108,239,245, 3,213,138, - 48,175,216, 44, 81, 42, 49,166,254,153,136, 60,211,192,246,207, 65,117, 47,200, 20,218,183,108,133,208, 9,210,133,229, 52,161, - 10,200,164,130,237, 10, 78, 69,168, 93,100,213,181,230, 47,156,103, 15, 35, 95,138,188,169,131,253,112,238,169,225, 98, 65,206, -173,193,246, 47,192,214,175,153,160,203,140,236,254,207, 3, 56,250,199,232,251, 87,225,213,218, 71, 50, 11,116,127, 65,185, 62, -163, 59,232,232, 68, 78, 96, 74, 7,251,211, 10,237,108, 53,254, 80,124,228, 27, 60,130,146, 85, 27,199,202,155,190, 7,213, 72, -233,119,148,193, 10,128,245, 45, 19,247,165,185,125,140,222,230, 35,158, 41, 95, 87, 78,157,115, 59, 91,175, 49,232,127, 30, 56, - 77,174, 3,102,115,216,107, 97,154,208,173,109,116,115, 11, 93, 84,104, 25,153, 96,179, 82, 56, 94, 80, 22,135,148,249, 33,233, -240,128,197,209, 49,157,118,148,144,208,160,148,131,142,178,200,232,108, 78,185,221,193, 85, 8,239,215, 48,202, 72,184, 9,229, - 15, 32,127,207, 82,254,234,251,188, 96, 10, 12, 34, 14, 89, 29,199,223,145,242, 32,209,216,230,205, 12, 38,235,176, 89,193,232, - 26,114, 53, 32,183, 11,210,218,131,191,147,127,114,176, 95, 92,145,219,111,241, 42,177, 78, 86, 9,253,118,156, 74,139, 89,161, -212, 70,232, 18, 45,105, 45,231,228,148,174, 96,197, 84, 51, 70,169,168, 52, 49,198, 20,193, 93, 81, 19,198,185,120,135,170,161, - 84,145, 46, 21,218,146,232, 52,120, 71, 30, 28, 60, 82, 67, 61, 54, 38,124, 78, 3,152, 70,135,253,162,119,235,110, 13,235, 11, -141, 24, 2, 29,193,115,208, 25, 44,115,161,106,208,102, 76,142, 21, 89, 42, 24,109, 18,214,182,144,102, 66, 71,164, 45,133,174, -109, 45,164,195, 5,115, 97,253, 52, 52, 91,166,234,143, 53,245,169,243,132,241,182,197,110,174,159, 69, 54,207,177, 56,248, 0, -157,238, 33,213,200, 44,128,174,207,208, 1, 88,184, 98, 73,213, 62,216,100,185,142,147,170, 34,122,193,145,179,137,226,200, 9, - 66, 69,219,117,180,211, 3,180,155,123, 62,183, 27, 53, 67,244,160, 20, 67,159,246, 96,151,148, 18,109,219,210, 45, 22,204,167, -199,180,243, 25, 41, 27, 4,165,148, 52,124,191, 76,156,106,122,148, 80,213, 4,137, 75,218, 90, 8, 60,254,153,207,240,254, 59, -239,176,119,253, 58, 82,148, 24, 43,186,197,130,139, 79, 61,195,225,206, 46,139,249,156,135,159,120,130, 43,223,123, 5, 68,185, -241,246, 59,156,123,228, 35,124,244,211,159,230,252, 19, 79,112,254, 99, 31,163,107, 23,236,124,240, 1,247, 94,184,200,131,143, - 61,102, 99,243,233, 49,169, 77, 60,254,252,243,188,243,250,235, 20, 85, 62,248,241, 91, 60,116,233, 18, 79,126,246,115, 92,124, -234, 41, 62,242,236,179,148,212,113,251,250,141, 33,212,165,168,114,246,193, 7,248,211,255,244,159, 17,145,161,136,233,173,106, - 34,194,104, 60,230, 99,159,126,158, 71,159,121,134, 75,159,252, 36, 31,253,196,115,220,119,225, 2,111,189,246, 26,179,227, 41, - 63,245,197, 47,242,192, 71, 30,101,127,103,135,211,247,222,203,171,223,249, 14,165, 20,110,223,184,193, 39, 95,120,129, 11, 79, - 60,206, 98, 58, 99,227,212, 54, 63,248,238,203,136, 8, 55,223,123,159,231, 94,120,129,199, 63,241, 28,163,241,152,151,190,241, -117,243,236,139, 33,114, 55, 79,159,225,226, 19, 79,242,226,215,126,143,206, 21,247, 0, 55,223,123,143,231,126,246, 5, 30,123, -238, 19, 52,163, 9,127,252,245,111,144,187,165, 80,170,148,196,125,231, 31,246, 75,125,229, 90,239,247,230,186, 44,212,205, 94, - 43, 67,218, 27, 20,180, 24,208, 71,115, 70,115,177,233, 65, 89, 30,139,119,198,178,202,215,158, 8,238,100, 19, 55, 2,217, 27, -114,236,211,229, 24,237,110, 42, 42, 28,103, 99,167,180,142, 54, 79,197,124,166,107, 22, 0, 70, 19, 44,152,160,241,255, 95, 71, -131, 80,244,217, 40,243, 2, 71,157,208,212, 54,205,150,225, 11,179, 14, 95,188,147, 16,167,119, 54,149,176, 30,237,227,244, 71, -122, 40, 86, 93, 88,225, 30, 28, 12, 48, 34,159, 61, 11,227, 13,194,205,219,132, 60,181,139,169, 75, 54,199,111, 92, 25, 62,183, -110, 84,198, 53,124,124, 11,249, 53, 37, 92,216,130,240,119,161,108, 3, 87, 65,255, 12,202,159, 65,158,131,158,178,220,248, 42, -163, 7,111,195, 27, 83,219,185,111, 70,184,119,134,172, 63, 15,213, 58,250,221,175,193, 15,124,113,121,208,162, 11, 65,198,254, - 77,220,176,177,189,190, 62,183,113,205, 88, 41,215, 22,232, 97,235,223, 36,183, 78,172,185,229,236,184,179,241,117,113,108,172, - 11,107, 66,172,137, 90, 33,207, 52,200,175,222, 5,231,254,161,121,162,211,251,176,247,127,195,193,107,176,187, 7, 55, 28,112, -211, 57, 68,103,171,130,123, 35,108,175, 25, 11,159, 29,216,219, 71, 63, 72,182, 63,233,220,166,208, 22,175,101,196,138,128,243, - 1,185,168,112,230, 83,112,234,111, 65,125,214, 5, 93, 35,255,175, 64,247, 13,184,254, 15,208,239,204,224,135, 53, 58,202,148, -119, 15, 41,239, 77, 73,211,100, 30,227,158, 10,118, 7,140,161, 47, 78,195,157,118,110,207, 62, 14,189, 7, 90,203,137,183,108, - 16,245,221,187,215, 96, 26,236,144, 10, 35, 27,185,111,157,182,143, 49, 59,132,118,134, 52,209,240,251,157,207,174,106, 43,242, - 36,228, 37, 19,134, 98,107, 11, 95,230,155, 11, 67,209,206,225, 45, 97, 12,219,247, 16,238,218, 68, 70, 29,204, 14,225,248, 24, -142,230,232,180,163,107, 23,204,115,199,188,133,105,142,164, 16,105,164, 48, 10,197, 38, 82,165, 16,179, 18, 90,165,150, 64,179, -209, 80, 93, 92, 71, 46,141,224,241,130,220,159, 77, 80,119,215, 23, 97,243,239, 0,231,253,133,237,184,118,161,156, 4,224,175, - 94,234, 18,252,207,101,224,107,176,243,127,193, 31, 28,192,127,152,211,190,115,204,124,119,198,149,185,114,173, 27,190, 84, 27, -115,159, 48,215,136,193, 8,253,132, 80, 15, 85, 9,170,212,177, 2,137,116, 85, 67,201,234, 74,248, 68,168, 27, 15, 3, 9,238, -193,174,153,148,150,237,104,153, 81,139, 46, 81,122, 68,103,168, 13,246, 34,193, 97, 29, 11,180, 88, 7, 79,221,216, 69, 93,212, - 88,240, 69, 93,188, 85, 6,104,136, 12, 19, 28, 83,145, 23,191, 32,131,152,194, 62, 75,164,195, 70,196, 81, 19, 35,148,170, 54, - 94,189, 18, 40,213,136,220, 76,204,187,156,230, 44,102,199,204,230, 51,139, 12,117, 1, 92, 61, 89,103,114,247, 67,212,247, 92, -178, 61,243,108,207,244, 1,107,103,144,102, 29,169,215, 8,163, 45, 22,121,202,222,229, 63, 98,250,254, 27,148,174, 51, 17,112, - 20, 82,202, 44,146,141,188,163,168,193, 85,130,251,178,251,176, 71,223,167, 7,255, 58, 59,195,167, 81,215, 13, 97,125,155,174, -107,209,197,220, 79,105,219,165,211,140,237,176, 31, 82,238,252,231,158, 90, 52,183,110,227, 54, 73, 0, 0, 20,143, 73, 68, 65, - 84,148, 34, 36, 45,228,118, 97, 3,168, 88,217, 88, 62,119,182,202,236, 35, 68, 9, 38,104,172,226,114, 18, 83, 12, 27,155,181, - 80,138, 18, 84,137, 85, 53,248,157, 87, 5,172,154,242, 96, 9, 43,217,241,172, 49,184,118, 74, 45, 72,166,109, 17,132,132,105, -105,144, 37,185,173,248,170,199, 92,192,209, 95, 87, 15,128,137,131, 13, 13,129,103, 95,248, 89, 14,119,118,121,227,229,151, 93, -223,106,187,250,226, 83, 92, 99, 93,232,128, 1,238, 33, 49, 61, 96, 94, 7,130, 91, 30,158,152, 8,182,134,168, 27, 23,184, 41, -143,125,226, 57,238, 58,247, 0,223,250,119,191,181,130, 34, 81,183,101,174,184,114,188,161, 69,101,128, 7,157,200,164, 24, 2, -167,194, 74, 28,234,242,215,243, 63,255,115, 28,237,239,241,250, 75,127,220,211, 50, 78, 92,234, 22,152, 85, 78,116,229,246,204, -151,165,239,183,156, 28,213, 7,249,240, 0, 87, 1,226,255,116,143,252, 70, 41, 75, 55, 84,235, 65,247,189,158,181,232, 50, 64, -126, 0,130,233, 82, 5,223,219,207,154, 21, 1, 93, 29,100,240,165, 87, 97,136,170, 53,155,138,255,249, 53, 15,109,235, 59,243, -232,175,200, 39,103, 78,181,147, 97,132,100,144, 26, 75,115,106,135, 41,183, 29,186,228, 14,230, 29, 58, 30, 19, 70, 19,100, 92, -112,181,136,141, 27,212, 42,104,197,225, 34,109, 66,110, 39,104,182,144,251, 91,100,242, 18,196,159, 54, 92,167,140,150, 57,214, -154, 65,215,160, 84,200,218,189, 80,239,218,152, 98, 35,192,166, 32,213, 11,168, 28,192,229, 55,224,182,197,107,234, 84,151,190, -243, 70,150,222,240,219,254,141, 27,121,103, 56,205,195,190,161,135, 72, 12,251,136,185, 99, 59,251,216,214,108, 15, 68, 40, 53, -242,164, 32, 79,220, 11,155,127,213, 45, 78,107, 14, 33,123, 7, 56,178,203, 57,123,183, 62, 10, 86,128,108, 41, 52,150,195, 13, -115, 11,148, 57,102,176,109,245,168,114, 68, 60,121, 45,194,195, 9, 57,117, 31,156,250,235,208, 92,242, 11,221,125,214, 52,144, -175,194,254, 63, 66,175,222,130, 63,173,161, 18,244,120,134, 94, 61, 38, 29,182, 6, 29,186,227, 66,239, 15,136, 62,136,236,206, - 11, 29,196,196,111,245,200,197,129, 50,168,224,135,200,227,254,177,232,167, 73, 18, 9, 82, 76, 52, 50,217,128,122,205,108, 61, - 17, 83,204, 7,223, 53,245,203, 42, 7,114,144,210, 82,124, 71,131, 6,235, 36,181, 4,114, 87, 76,103, 18, 27,186,102, 68, 75, - 36, 29, 29, 34,239,189, 79,220,187,137,132, 57, 18, 19,228,130,116, 9,237, 90, 27,129, 22,161, 43,202,162,179,177,170,132,138, - 80,217,116, 39, 99,153, 10, 11, 32, 31,117,132,253, 22,217, 83,228, 70, 5,135,149, 9, 61,229,135,150, 2, 23,239, 7, 57,229, - 93,123,239, 67,253,144, 8, 8,193, 83,104, 4,248, 17,116, 95, 51,102, 68,125, 8, 83,129, 27, 25, 89,100,154, 82, 56, 54,150, -211, 16, 71,176, 90, 35,244, 65, 38, 1, 37,107,191,223, 86,167,136,171,139,178,106,138, 56,227, 59, 54, 84,163, 53, 74,172,124, -215, 25,168, 66, 69, 29, 3,212, 53,139,148,200,169, 91, 78, 6,197, 72,101, 37, 4,114,168, 76, 65,174,106, 35,228, 80, 65, 51, -182, 11,189, 51, 31,190,198,106, 96,193,179,146,117,173, 3,188, 37,250, 22, 44, 24, 18,194,187, 89,234, 6,173,199,150, 92,216, -152, 29, 45, 52, 35,114,181, 70,231, 72, 92, 45,230,175, 78, 57, 15,212,182, 28, 43, 82,206, 44,142,118, 72,135, 55,200,221,212, -215, 1,141,189,230,233, 1, 90, 18,117, 51,102,114,234, 33,214,238,255, 24,163,237,123,104,182,238,162,222, 58, 99,144,152, 24, - 73, 18,141,111,158, 18,161,182,253, 81,155, 50,201, 67, 84,204,198,102, 93, 95,246,139,169,138,129, 48, 94, 3,177,215, 64,207, - 50,175, 71, 84,155,167,237,235, 8,113, 24,207,171, 90,166,121,106,103,134,110,142, 21,197, 45,108, 18, 42, 19, 36, 74, 48,255, -122, 8, 67, 76,170, 41,194, 77, 13,158, 82,103,162,186,254, 76,207,217,190,197,209,177,182,170, 43,113,200,206,114, 24,152, 1, -118,134,246,187,237, 97,134, 52, 68, 40,171,107,133, 60,226,214, 71, 45, 85, 8,196, 24,169,171,134,170,170,137, 49,154,234, 60, - 70,215,189, 8,147,141,117,126,230, 87,126,133,170,174,120,229, 15,255, 16, 41,101,136, 96,101, 69, 21,190,234, 55, 31, 94,171, - 95, 76, 58, 92,236,197,255,185, 12, 61,137, 34,220,251,240, 69, 62,251,229, 95,226,177, 79,124,130,245,237,109,190,243,251, 95, -167,157,205,221,147,174, 39,102, 98,220, 65, 6, 63,113,125,202, 79, 70,172,157, 80,171, 3,147,245, 9,191,248,149,175, 80,215, - 53,223,253,214, 55, 61,120,102,229,163, 13,225, 50, 38, 90, 45,165,184, 93, 49, 19,244, 36,251, 93,244,142,215, 35, 39,197,118, - 43, 71, 41, 85,151, 78, 98,236,122,126,118,111,182, 81,215,120,173, 69,165, 66,152, 88, 68, 55,173, 66, 85,150,152,240,232,123, -244,210, 87, 26,209, 84,183,197, 73,155, 82,150,128,179,222,127, 87,245,182,181,232,184,144,180, 92, 37,247,138,191,164, 98, 66, - 9, 79,240,201, 78,154, 66,133, 88,148,177,100,154, 32,196,197, 20,185,117, 11,125,244, 33,202,214, 25,194,219, 59, 80,101,251, - 36,211, 76, 41, 9,245,240,134,144,149, 48, 93, 32, 95,223, 65, 55,238,129, 47, 28, 32,155,127, 31,194, 63,128,112,193, 20, 9, -113,102,177,151,150,254, 97,130,183,187,158,131,197, 31,155, 80, 45,110,219,158, 91,111,218, 40, 27, 93,222, 96,125, 85,149, 87, -102,157, 99, 96, 38,118,153,175, 87, 70,201,155, 39, 47,187, 92, 4,167, 5,105, 34, 26,141, 90,102,251,119, 29, 86, 20,140, 3, -220, 93, 96,116,214,132, 83,106,144, 12,234,103, 97,237, 53, 88,236,193,214, 14,180,161,143, 32, 50,210, 79,179,102, 59,240,176, - 6,229, 86,239, 59, 90,122, 7,219,108, 55,236, 72, 96, 43,194,217,130,108, 52,176,246,180,167,144,173, 42,179, 71,198,206,223, -255,167,176,243, 22,252,176,178,172,251, 73, 66,119, 22,164,221,150, 69, 22, 22,142, 37, 45,189,170, 61, 47, 7, 79,154, 79, 18, -147,134,177,124, 83, 27,212, 35,119, 4, 77, 72,231,127, 34,248, 28, 73,117,233, 53, 95,189,226,138, 26,132, 40,156,177, 13, 73, -231, 3,255, 92,160, 88,199,130, 84,198,131,239,171, 10, 26, 84, 91, 83,205,106,182,148,173,106,141, 44, 53,121,148, 41,243, 57, -105, 49,165,235, 22,104,155, 16, 45, 36, 85,210,190, 50,234, 10,213,182,225,114,117,180, 70,216, 89,163,242, 31,255,184, 4,242, -162,208,118,137, 46, 4, 66,105,169, 82,242,247,117,160, 4,165, 27, 5,186, 89,102,237,234, 1,163,157, 57,213,187, 19,226,187, - 99,228, 17,129, 91,151,225,252,255, 6, 27, 79,195,250,223,134,209,199, 65, 55,176, 42,236, 14, 58,133,170, 23, 89, 11, 96, 27, -218, 11, 48, 63,182, 81,252,227,251,200, 59, 19,226,113,102,179, 43, 60,144, 50,135,153,161, 32, 22,129,174,232, 18,144, 24, 92, -197,175,106, 26,115, 9, 67,170,116, 6,130, 11, 85,173,129,243, 4,171,156, 76,208, 85, 27,149, 44,136,146,170,134,188,104, 79, -226, 56, 52,147,169, 40,120,184, 8,110,195,241,189,179, 21,183, 35, 7,195,231, 19,159,183,191,228, 76,104,214,239,163,173, 96, - 42,106,130,188, 92,212,108,141,201, 68, 97,165,170, 81, 34, 85,176,174, 56,229,153, 51,231, 11,162,201,212,229, 65,236,245,100, -179,183, 81,236,235, 91,236,188,143,222,122,151,166, 25, 51,185,231, 97,226,221, 23,236,210,235,166,148,116, 68, 61, 63, 96,180, -253, 0,167, 31,120, 10, 46,126,202, 72,155,199, 59,164,233,174,101,122, 75,225,224,237,239,113,240,250, 31, 80,186,185,125,189, -214,222,158, 8, 60,200, 67, 46,196,200, 58,249, 60,243,247,113, 70,170, 17,113,188, 14, 33, 14, 9,134,169,107,237,185,241,221, -106, 46,197,207,201,228,243, 85,179,253,169,154, 69,173,228,100, 53,184, 66, 8, 53, 69,194,176,186,210, 82,252,251, 40,148,148, - 41, 41, 13, 16,155,226, 9,112, 20, 87,218, 59, 6, 68, 42,139,173, 84,205,195,179, 91, 74,182,199,169, 40, 33, 88,170, 27,197, - 86, 12,217, 9,108,125, 7, 29,253,243, 13,187,254, 21,112,145, 96, 78,128,249,241, 49,223,252,215,255,122, 73, 41,140,113,165, -192,232, 19,253,138, 39,179,249,191,115,244,107, 63, 9, 24,136,113,220,193, 96,247, 49,224, 7,239,188,205,187, 63,126,203,240, -180,168,137,225, 60,183,160,172, 38,175,200,114, 3,234, 42,174,225,212, 9,238,250,232,215, 46,114,167,151, 71,140,123, 49, 63, - 62,230,171,255,242, 95,220,153, 67,228,103,142, 39, 82,149,178,178, 79,255,201,174, 91, 62, 36,141, 90, 62,164,182, 88,157, 26, -196, 95, 59, 35,191,177,114, 23, 81, 84, 92, 76,179,252, 48, 69,122,138,233, 82,189, 46,158, 83, 82,123,167, 93,133, 59,232,164, - 14,248, 80, 21,162, 95,222,115,160, 51,232,243, 32, 28, 23, 31,129,170,202,224, 93,199,181, 91, 61,220,102,136,253,246,138, 80, - 4,114, 49,241, 85,231,189, 91, 29,148,208, 38,100,123,140,158,218,132,133, 32, 83, 27, 47,167, 89,161, 45, 74, 30, 2,125,149, -208, 58, 77,231,106, 7,247,157, 70,206,237, 64,248,190, 7,193,172,219, 65, 41,135,160, 9,180,241,113,224, 3, 48,234,160,188, - 13,163,187, 44, 18,179,251, 51,248,254, 45,243,156, 39,139, 79,181,149,168,152, 0,174, 14, 48, 9, 72,171,182,107,207,138,172, -245,249,237,101,105,143, 11,190,243,141, 1, 90, 69, 23,101,217, 70,169, 18,186, 72,220, 30,193,103, 4,121,240,203,208,124,198, - 15,243,108, 1, 31, 36,104,223, 48,171, 83,206,144, 42,216,176,179,158,234,148,239,211, 11,148, 35, 88,204,236,116,239, 60,118, -117,225, 42,248,141, 10, 78, 87,112,182, 67, 54,239,134,237, 95,134,230,209, 21,239,180,235, 14,142,254, 61,236,255, 14,122, 5, -248, 81,132, 81, 70,119,231,148,183,166,204,167,137,105, 37,203,159,151,172, 20,140, 75,178,204,201,203, 92, 34, 52,181,189, 23, -218,185,141,199, 87, 43, 96, 31,201, 15,221,252, 48,167,247,199, 45, 23, 83,186,111,157,177,215,167, 45, 34,174,202, 76,221,160, -150,215,226, 57,226,145, 65, 16,148, 67, 69, 38,208,117,129,182, 8,139, 54,209,150,138, 69, 28,145,230, 29,186,232,108,215, 92, -143,161, 94, 35,175,175, 3, 19, 36,172,193,230,105,244,244, 22,170,181, 69,238,142, 54,208,209,216,136, 97,237,140, 46,181, 14, - 45,233,195, 78,150, 99,188,206, 81, 10,165,205,232,222, 2,217,203,200, 13, 8,183, 26, 91,135,196,235,208,125,219,116, 11,245, - 37,115, 57, 12,155, 91, 61, 57,250, 80, 32, 31,128,174,195,252, 6,164, 41, 84,135,246,189,154, 67, 56, 86, 38,179, 66, 46,194, -129,211,177,196,159,231,158,221,222, 63,119,253, 92, 81,252,251,171, 30, 4,161, 37, 19, 37,208,169, 69,157,230,212,145,125,132, -155, 85, 77, 36, 86, 50,165, 30, 89, 49, 95,140,245, 93,213, 13,161, 30, 91, 65,147,179, 75, 68, 26, 67,120,106,191, 47, 78,246, -214, 12,209,108,112,197,188,216,214,228,219,251, 67, 98,133,198, 6,141, 53, 37, 68, 47, 24,151,196,107, 27,231, 6,183,197, 25, -115, 92,157,168, 86,210,130,182, 93,176,104, 59, 82,215, 13,103, 93,231, 84,180, 92,242,137,227,209,104,190,166,234,158, 30,239, -113,188,251, 62,237,241, 46,121, 49, 37,205, 15,232, 22, 7,148,197, 1,165, 77, 4, 10,213,218, 54,213,218, 22,218, 76, 88,164, -150,195,119, 94,165,189,125,205, 18,189,220,150,167, 43,151,141,122,152,141,132,218, 46,170,236,225, 38, 10, 18, 26,194,100,157, -148,149,118,122, 76,110, 91,114,106,173,160,141,145,210, 45,204, 99,175,253,152,214,169,127, 69, 45,246,115,177, 48, 22,121,234, -134,175, 45, 97,244,190, 16,140,113, 79, 63,133,237, 89,232,197,155, 42,199,169, 90,181, 96,111,138, 80,138, 9, 81, 67, 88, 42, - 58,180, 12,123, 95,213,158, 15,178, 18, 19, 26,130,107, 54,204, 47, 31,162, 79, 86, 92, 32,105, 95,235,146, 22,104,218,190, 66, - 46,217, 63,127, 89, 82,215,202,178,251, 46, 62,234, 79, 57,155, 13,210, 39, 16, 69,203,201,203,109, 40,254,151,180,194, 62,210, -117, 16, 80, 34, 38,200,212, 37,222, 82, 87,135, 96,194,159,219, 26,175,102, 22,220,121,177,202, 48, 75, 60,121, 9,171, 23, 57, - 57,123,131,233,209,181,171,221,182,252, 57, 23,251,234, 72, 63,172, 20, 8,114, 39,184,171,183,136, 39,189, 67,127,227,173,114, -118,133,169,122,188,118, 39, 66, 22,165,113,147, 63,197, 47,247,136, 43, 84,197, 85,155, 12,123, 16, 16,114,112,223,186,199,109, - 15,239, 23,150,222, 89,252,135, 85,178,244,233,167,148, 96,132,179, 94,204, 45, 62,205, 54,152,196, 73, 42, 89, 31,215,185, 22, - 10,241,189, 91,150,115, 50,222, 64,171, 9,180,153, 84, 23,102,179, 98,163,216, 74,204,150, 92, 67,140, 5, 61, 90,192,191,217, - 71, 31,186, 11,121,248, 77,232,254, 25,212,127,199,160, 52,122, 8,114, 21,149,100,157,110,190, 5,213, 83,176,113,205, 58, 3, -237,108,244, 63,235,145,163, 50, 92,194,140,117,169, 54, 92,175,160, 46, 72, 93,108, 93, 48, 23,194,134, 80,180, 50,178, 92,244, - 93,166, 4,100,108,195, 1, 57, 84, 74,107, 99,248, 16, 60, 93,109, 29,228,116,128,250,169, 21, 31,179,223,152,245, 5, 27,177, - 87,199, 48,105,173,192, 88,199,242,214,171, 45, 8, 99,175,158,202,242, 93, 91, 28,124,211, 99,185, 54, 35,156, 74,200,198, 24, - 38, 15, 65,243,209,147,254,233, 48,134,242, 30,204,127, 27, 14, 18,114,121,100,157, 65,238, 40,239,206,232, 14, 59,142,235, 48, -144, 7,195,138,223,242,206,234,178, 63, 0, 52,212, 48, 89, 71, 84, 41,243,163,161,122, 47, 62,153, 17,239,110,150,251,196, 21, -193,167,167,179,105, 12,150,161, 45,238,251, 72,153,178,232, 92,116, 98,193, 27, 84,160,173, 65, 98,148,198,212,192, 57,163, 33, -144, 52,210,230,204, 98,158,205,227,158,167,134, 35,158,108,194,246, 61,200,120,203,246, 94, 85,160,180, 29,139,212, 82, 4,154, -157, 41,213,193, 28, 25, 67,104, 2, 85,183, 32, 79,143,168,167,199,196,156,233,146, 37, 27,106, 48, 28,107,232,148,170, 95, 51, - 33,148, 90, 56,208,194, 34, 41,107,187, 83,198,199, 45,205,126,162, 62, 90,135,182,130, 75,183,161,252, 38,164,107,112,234,127, -135,234, 60,203,242,120,101, 80,216, 43,172,217,132,250, 60, 76,119,160,190, 9,247, 76, 9, 15,140, 8,199, 74,245, 72,228,163, - 63,110, 57,124,187,227,182, 31, 74,181,152, 54,134, 30,215,186, 18, 23, 53,236,238,176,233,152,148, 66,206, 45,226,113,162,214, -176, 25, 87,190,170,215, 41,117, 77, 14,134, 72,149,201, 6, 50, 50,123, 83,234,195, 90,202, 2, 41, 74, 53, 26, 51,143, 21,121, -145,125,100,107, 84,181, 72,182, 68, 50, 44,228,163,223,153,139, 11,134, 76,197, 30,220,239,157, 78,112,244,251,189,238,208,145, -133,202,172,110,209,146,219, 52,103, 83,224,135, 72,215,119,177, 57,123, 66,157, 34, 33,218, 26,167,105, 28,153, 57, 67, 36, 82, - 98,197,124,122, 64, 59, 63,182, 67,245,246,117,234,102,196,120,227, 20,245,218,186, 89,204, 98,133,134,138,249,236,136,195,253, - 29,186,195,219, 72,106,105,234,106, 56,248,251, 17,116, 63,186, 78, 30, 16,130,191,182,130, 9,224, 66,109, 43,141,110, 62,179, -167, 46,171,165,186, 53, 35,194,168, 38, 39, 79, 15, 43,198, 43, 86, 31,177, 11,129,210, 45, 12, 22, 20, 2,129, 72, 81,191,240, -130,217, 72, 11,153,180, 48, 80, 72,239,147,215, 21,252,168, 1,136, 12, 31, 44,190, 50, 34,103,219,209,135,224,151,231, 10, 26, -216,135, 94, 41,217,247, 56,136, 5, 1,101,177, 68,189, 12, 6,202, 81, 23, 73,245,190,121,197,109,103, 1, 41, 66,161,144,197, -236,124, 37, 89, 78, 64, 22, 49, 12,110, 63,154,246, 19,163,167, 71, 87,206,224,207,217, 47, 21,231,172,232,202, 9, 51,116,251, -125, 80,140,120,234,166,163,145,139, 90,250, 30,197, 3,118,134,221, 32, 39, 46,119, 86, 39,199,171,207,133,234, 9,152,187,172, -172, 3,150,151,188, 23, 28, 89, 7,209,164, 14,207,127,127,225,203,106,146,203,135, 95,232, 39, 38,154, 39,163, 86,249,144,110, -190, 18,150, 88,115, 5,162,119,180,125,135,149,220,157, 85, 84,153,187, 21, 35,246, 49,156, 43, 1,102,161,156,172, 88, 50, 56, -245,201, 35,234,130, 12, 49,135,165, 8,217, 65,104, 41,247, 1, 50, 66,206,253,110,207, 71, 30,193, 35,191,157,203,210,174,252, - 94,171, 38,130,239,173,112,227,190, 16,208, 5,178,183, 71,184, 59,192,233,177,229, 49,239,103, 22, 36, 42, 85,195, 91, 74, 48, -241,155, 22,164, 42,112,245,136,242,255,212,196,191,117, 14,214,126, 31,218, 39,160,254,239,128,123,209,176,239,249,215, 78,133, -209, 5,132,207, 66,249, 19, 68, 94, 71,231, 71, 62,238, 54,117,106,207,106,151,226, 34,133,224,227, 12,140,246, 38,168,143,209, - 2,225,116,176,177,111,242, 78, 7,207,173,245,232,178, 92,220,209,157, 10,210, 4, 56, 19, 96,173,177,137,193,157,144,146,224, -246,182,120, 3, 70,199,214,161, 78,214, 32,222,109, 40, 87,169,122,138,143, 67,110, 86, 60,132,184,200, 97, 91,145, 83, 1,154, -187, 96,252,156, 5,136,244, 69,128, 7,171, 16, 94,130,173, 15,224,242,196, 26,248,168,148,119,231,228,155, 51,142,138, 50,147, - 64,209, 64, 20, 99, 83, 87,206, 30, 64, 7,186,171, 63,128,246,160,105,255,186,114,242, 17,154, 12, 35,225,101, 66,156,117,168, - 69,252,101,228, 21,255,122,191,112,106,156,128,150, 11, 26, 4, 73, 29, 37,116,214, 97,228, 76,153,183,100, 21, 91,231,164,150, - 92, 53, 38,200, 91, 36,148,108,151, 69,168,208, 18,173, 88,235, 90, 27, 76,164,117,239,246, 35,154, 10,218,182, 16,133,197,236, -136,210,205,105,214, 55,168, 51, 4,233,136, 58,165, 74, 51, 66, 84,234, 98, 19,166,226,180, 68, 77,182,159, 46, 98,212, 51,196, - 38, 83, 37, 11,243,168,116, 33,144,187, 12,183,142, 8,149, 18,159, 62, 5,111,143, 96,122, 12,247,253, 33,164, 93, 56,243, 55, -161,126,220,160, 67,204, 86,142, 28,119, 36,200, 1, 52,103, 96,116, 14,202,109,228,204, 85, 19, 73, 86, 35,184, 84, 51,254,127, - 11,231,175,117, 28,182,194,169,173,200,250,134,240,246,245,196,113, 42,196,149, 89, 99,208,129, 91, 73,150,229,161, 26, 17, 74, -172,109, 50, 82, 7,170, 56, 34,132, 10, 25, 79,172, 72, 41,153, 60,157, 65,233,108,215, 94, 58,178, 66, 83, 69, 66, 53, 34,212, - 35,114,206, 70, 6,172, 70,230, 17, 87, 99,251, 84,165,163, 42, 86, 52, 8,193,133,117, 14,157, 9, 66,171, 22,127, 73,172, 16, -137, 68,205,132, 98,151, 70, 17,177,132, 53,239, 38,135,208,152, 24, 40,146,172, 83, 11,193, 20,254,173,141,223,251,130, 79,170, - 96,187,249, 30,255,170, 74,116,140,107, 81, 69,114,231,163, 99,243,130, 47,186, 57,233,224, 22,245,254,117, 82,234, 92,100, 86, - 28,184,229, 86,186,186,182, 66, 72,151,125,146,138, 69, 2, 19,107, 75, 99, 19,147, 39, 22,130,249,218, 39, 19,138, 6,186,249, - 20, 41, 9,234,145, 63,162, 54, 34,238,186,133,235,153,116,105, 79,114,190,123, 94, 76, 13,149,234,168,227, 32,134, 7,206, 33, - 90,177,163,105,165,243,237, 63, 70, 25, 86, 44, 5, 99,185, 15,200, 81, 53, 49, 27, 85, 88, 78, 24, 68,150,184,229, 40, 22,203, - 91,242,112,111,100, 31,147,103,247,164,211, 39, 46, 14, 86,186, 94, 72,230, 22, 69,207, 15, 89,105,148, 79, 76,135,251,177,123, -242, 98,163,191, 44, 69,130,133,249,212,129, 42, 42,165, 24,195, 68,125,242, 80,252,230,151, 21,229,109, 20, 59,107, 66, 8, 30, - 52,150,141,139,191,210, 41,235,170, 79,124,229,198,236,179,173,202,170, 13, 93,197,166, 84,114,114, 19,102, 76, 4, 91,211, 81, -124, 93,184,114,201,243, 19,161, 46, 44,167,120,119, 52, 60,171,191,130,124,152,165,247, 67,215,250,214,169, 31, 55, 99,143,171, -243, 75,156,147, 6,122, 17, 12,168,224,202,211, 62, 15, 35, 4, 60,159,246,164,149,173, 31, 17,228,202, 15,135, 21, 1,156, 6, -232,212,254,206, 34,152, 15,126, 53,124,171, 13,134,151,173,221, 13, 86,130,208, 58,192,170, 79, 21, 13, 46, 69, 76, 89,152,149, - 62,213, 73,152, 71, 24,141,204,110, 86,102, 25,142,167,118,209, 54, 99,142, 42, 56,168,231,108,199, 68,138,197,194, 43,114,182, - 73, 67, 21,140,137,254,189, 5,242, 85, 8, 63,127, 6,194,255, 9,245, 8,229,148,197,110,102, 44,166, 85, 1,221, 1, 61,131, -148,123,160, 92, 69,247, 61, 18,117,226,106,233, 54,192,196, 30, 88,201, 1, 98, 99, 29,124, 29, 96, 35,217,174,156,226,104, 62, - 65,199, 54, 62,211,206, 61,127,199, 70,246, 73, 90,152, 42,132,160,140,163, 81,160,170, 51, 35,132, 13,131,161,228,206,161, 37, - 44,243,174,203, 5,208,183,109,252, 94, 31,129,222, 13,229, 44,228, 26,178,115,192, 91,160,173, 44, 43, 92,176,203,188, 17, 24, -215,176, 85,144,250, 12,132, 75, 32, 79, 56,236,127,230,212,131, 9,112, 13,184, 2,225, 65,152, 30,193,180, 51,108,254,187,133, - 89, 27,217, 13, 21,173,135, 6, 84, 10, 18, 77,225, 91,245,218, 12, 89, 42, 55, 75,191, 43, 15,181, 29,242,173,239,240,134, 14, -205,246,116, 34, 86, 56,200,170, 58,190,146,165, 13, 78, 21, 73, 9,105, 54,109,140, 15, 38, 8, 28,103, 72,115,138, 38, 83, 51, -231,134, 86,160, 75,138,230,128, 38, 19,205, 5, 41, 86, 68, 4,123, 42, 83,172,209, 81,131,106, 68,170, 9, 18,199, 72,137,132, -186,166,228, 22,169,106, 66,108, 16,153,210,141, 55, 56,102,196,248,104,202, 72, 23,132, 74, 41,163, 26,109, 43, 19,126, 5, 60, -198,177,191,122,237, 98,143, 81,135, 17, 83, 9,234,227,111, 37, 53,208,102,101,235,160,208,124,107, 1,177,134,251, 38,240,241, - 22, 46,188, 2, 71,127, 15,238,254, 31, 97,244, 5, 23,200,245,130,152, 9,148,202,222, 19,237, 28,242, 6,232, 57,136,187,112, -166,131,131, 0,223, 92,160,135, 35, 54,239, 19,206,239, 22,170,179, 53,177,142,108,205, 91,230,199, 38, 26, 12, 94,108,228,232, -157,156,101,225, 26,180,135,128,214, 53, 42, 53, 49,103,234,209, 58, 57, 86, 6,173,242,100, 52, 45,157,129,167, 42,161,202, 32, -213,136,166, 25, 33,227, 53, 74,168, 77,156,149,210, 32,172, 11,193,170,246,162, 62,146,212, 66, 83, 5,106,137,110,135, 19,239, - 2,173,174, 75, 89,145,186, 49, 21,179, 91,238,106,181,168,214,164, 86,241,169, 55, 36,189,163,102, 92, 85,148, 24, 72,177,177, -140,237,197,145,169,235,251, 17,188, 8, 41,249,197,225,107, 6, 81,235, 80, 67, 85, 67, 12, 84,185, 16,163,216,123, 32, 84, 20, - 45,132,212, 50, 86,163,227,117, 41, 83,123,176,199,137, 5,170, 10,181, 79, 60,113,156, 39,161, 50, 77, 64,172,236,140, 81,140, - 24, 87,215,104,206,228,182,163,116,115,155, 86,169, 35,124, 83, 50, 59, 90, 93, 13,153, 8, 37, 23,218,156,144,197,140, 74,198, - 52,205,216,214, 17,210, 43,215,109,141, 58, 68,145,170, 12, 98,189,129,209,224, 19, 48, 45,106,130,212,176,220, 17, 7, 49, 55, - 78,201,166,235,137,209,255,174,150,225,239, 20, 45, 52,120,170,157,247,187, 37, 91,145, 19,156,126, 22,252,153,214,254,107,241, - 75,183,191, 4,203, 80,248, 26, 2,119,200, 84, 17,251, 59,157, 22, 74,178,113,181,222, 57, 98,247, 88,212, 97, 53,224,171, 89, -237, 87, 40,234,119,146,219,225,138, 64,151, 11, 33,117, 52,121,252,231,129, 50,126,162, 61,150, 21,206, 91, 24,174,127, 25, 46, -255,129,232,231,106,117,209, 1,200,177,154,139, 53, 12,213,238,188,140,131, 79, 10,250,187, 83, 79,216,207,181,223, 24, 15,161, -113,194, 10, 6, 91, 87, 9, 31,246,235,191, 1, 3, 19, 63,235,194,153, 66, 72, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, +int datatoc_splash_png_size = 229594; +char datatoc_splash_png[] = { +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, + 0, 0, 0, 8, 90,206, 70, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111, +102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66, +139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, + 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243, +157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, + 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28, +135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, + 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, + 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, + 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0, +132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, + 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17, +224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0, +225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0, +160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95, +192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, + 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34, +137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, + 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, + 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, + 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, + 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, + 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, + 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129, +178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161, +231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34, +172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, + 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, + 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, + 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228, +195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, + 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, + 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3, +244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, + 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222, +170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103, +169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, + 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, + 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, + 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, + 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170, +107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109, +250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67, +165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, + 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50, +231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89, +165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182, +169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, + 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, + 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, + 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135, +220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103, +181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, + 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3, +137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130, +229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, + 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, + 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, + 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, + 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47, +209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144, +188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103, +230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, + 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18, +194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60, +184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229, +133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220, +120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, + 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167, +201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91, +188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78, +109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157, +239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, + 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, + 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182, +123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87, +184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247, +233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39, +253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192, +119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, + 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151, +242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, + 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, + 45,219, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,116, 73, 77, 69, 7, +220, 4, 26, 17, 37, 54, 89,161,235,246, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,123,184,110, 87, 93,223,251,249,253,198, + 24,115,206,119,173,189,119,216, 33, 23, 18,238,225,242, 88,180,162, 36, 94, 16,139, 96, 55,167,199,123,233, 49,248,148,199, 43, +167, 36, 94,122,144, 99,213,192,169, 85,218,199,138,212, 99,165, 96,149, 68,212, 90,107, 61,199,160, 85,171, 88, 32, 41, 94,224, + 40, 98,138, 90,193, 90, 32, 4, 80, 2, 9,201,190,173,245, 94,230, 24,227,247, 59,127,140,119,101,175, 44,118,246, 45, 59, 9, + 9,243,243, 60,235, 89,239,251,174,249,142, 57,199,156,115,141,239,239, 54,199,128,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, 51, 71, 30,138,157,250,175,191,228,133,100,127, 25, + 74,135,250, 27,248,251,255,238, 63,136,224,211,229,152,152,152,152,152,152,120, 24,137,186,255,198, 55, 63,159, 99,219,255,149, + 35,219,206,254, 11,224,162, 11,133, 50,254, 71,198, 99,215,202,139,110,220,154, 46,201,196,196,196,196,196,196,185,161, 15,250, + 30, 63,118,235, 38,183,223, 6,119,254,205,130, 15,255,213,156,219,110,157,227,225,197, 12, 7,255,220,127,251,165, 79,159, 46, +201,196,196,196,196,196,196,195, 69,212,191,253, 29,191,205, 76, 95,201,190,110, 3, 33,114,231,199,140, 91,255,114,206, 50, 63, + 9, 75,127,233,191,253,210,255,109,186, 44, 19, 19, 19, 19, 19, 19,103,143, 60, 84, 59,246,215,127,241, 87,176, 44,111, 98,229, + 61,181, 44,232, 6,229, 9, 79,141, 92,248,232,142,186,122, 45,218,189, 66,190,242,245,171,233, 18, 77, 76, 76, 76, 76, 76,124, +154,139, 58,128, 95,127,229, 83,216, 14,111,102, 89,159, 78,174,115, 66,128,203,159,172, 60,230,242, 1,203,127, 70,240,191, 47, + 95,241,134,219, 30, 46, 39,211,221,175, 4, 14,174,223,222, 42, 34,183, 62,146,111,158,207,180,254, 78, 76, 76, 76, 76,162,126, + 58, 97,248,177,207,221, 36,165,255,192,220,191,150,236, 75, 48,184,244,241,194,101, 79,152, 17,100, 36,149,175,150,191,119,253, +219,206,179, 24, 93, 1, 92,113,134,155, 31, 22,145, 91,206,176,221,183, 1,135,214,111, 95, 33, 34,175,121,132,139,250,103, 84, +127,207,211, 57, 19, 17,153,158,244,152,152,152,120, 64,136,247,123,144,122,251,243, 34, 31,237,250,147,254,241,248, 40,236,239, + 28, 46,133, 75,129,163,203, 19, 70, 68,191, 95, 72, 43,129, 11,193,239,122, 57, 31,249, 72,207,150,253, 47, 24, 35,135, 63, 9, + 27,251,150, 60,234,226, 68,237,222,234,255,229, 31,255, 32,253, 95,188, 90,158,255,187,229, 60,245,251,106,224, 71,207, 98, 32, + 6,184, 17,184, 73, 68,110,152,110,155, 71,132,184,170,136,216,158,168,195, 55, 0,207, 94, 27,124, 7,129,158, 19,117, 39, 6, + 44,128, 15, 2, 63, 37, 34,215,159,147, 21,125, 26, 65,119,247,207, 91,223,159,135,128,199, 2,151, 0, 35,240, 49,224,189,192, + 59,128,223, 18,145,191,186,143,239, 95, 14,124, 33,240, 5,192,149,192,229,192, 69,192,163,129, 79, 2,183, 2, 31, 2,222, 2, +252,242,238,115, 48, 49, 49,241, 25,236,169,251,171, 94,165, 28,184,249, 26,170,252, 83, 68, 46, 34, 4, 67, 4, 84,219,143, 8, +132, 32,168, 66, 88,191, 87, 5, 93,127, 38, 2,178,179,173, 86, 66, 88,225,178,137,236,218, 54, 4, 48,148,161, 75, 72,253, 61, +102, 92, 45,207,125,253,157,231, 97, 64,191,238,108, 68,125, 15, 55, 1, 47, 18,145,195,147,167,254,200,233,175,175, 45,183,179, +224, 40,240, 66, 17,121,251,121,218,255,229,192, 79, 0, 47, 58, 67,227, 64,206, 67, 63,222, 7,188, 82, 68,126,115, 26, 10, 39, + 38, 30, 25,156,123,245,251,163,110,254,110,208,159,166,112, 9, 38, 66, 37, 80, 37,180,223,235,215,133, 64,241, 64,246,246,122, +244,192,104, 74,118,101,164,125,222,126, 58,114,221,135, 59,109, 10, 26,105,191,221, 65,197,200,117, 69,213, 47, 99, 46,255,195, +111,254,174,103, 61, 0,231,225,166, 83,252,236,229, 16,240, 54,119, 63, 56,221, 62,159,209, 92, 0,220,236,238,223,112, 30, 4, +253,179,129,247,156,169,160,159, 71,158, 1,252,186,187,127,221,116, 57, 39, 38, 30, 25,156, 83,248,221, 95,133, 98,254, 29,204, +179, 83,115,166, 26,136, 72,243,251,165,249,255, 66,243,184, 17,230,185,110, 16, 20,125,244, 37, 16, 35, 84, 71,154,135, 14,106, +237,119, 85, 80, 95,191,151, 29, 15,158,126, 72, 43, 4,168,140, 84, 14, 66,186,197,111,126,217,119,240,229,255,230,250,243,149, +155, 20,145, 23,156,102,208,221, 9,215,239,228,225,175, 4,174, 1,166, 28,242, 35,147,191, 1,126,151, 22,162,126, 55,240, 17, + 90, 2,233, 31, 0,255, 24,120,210,206,173, 3,252,146,187,191, 93, 68,238, 56, 71, 65,127, 10,240,118,224,226,245, 71, 35,240, + 70,224,215,104,225,246, 79, 2, 3, 45, 20,255, 12,224, 57,192, 87,159,162,201,143, 1,239, 90,255,220, 2,220, 14,220, 1, 28, + 3, 30, 71, 11,205,191, 10,120,250,174, 62,252,123,119,255, 2, 17,249,159,211,165,159,152,120,120,115,238,225,247,215, 61,231, + 90,142, 47,223, 64,169,107,241,222,213,154,200,137,215,165,218,124, 68,101,255, 65,100,255,254, 19, 97,247, 16, 16, 13,160, 2, +178, 78,149,171,180,144,187,106,107, 76, 35,125, 63, 91,177,179, 29, 65, 16, 81,134, 24,193,222,196,252,130,111,145,175,125,213, +252, 28, 6,210,123,133,223,239, 43,148,185,231, 59, 87, 0,127,194,137,106,239, 91, 68,228,170, 61,219, 76,225,247,135,207,177, +119, 34, 50,238,122,191, 5,252, 50,112,157,136,220,125,154,239,254, 24,240,189,187, 62,122,179,136,124,213, 57, 28,131,172,141, +135,231,174, 63,250, 0,240,149, 34,242,254, 7,184,239,195,250, 94,254,236, 93, 31,255,107, 17,249, 39,211,144, 56, 49,241, 25, +232,169, 3,200,203,222,121,189,255,235,103,221, 76,208,167, 98, 42,136,237, 42,184,209,245,235,186,162,219,124,246,106, 57,252, +232, 70,154, 97,102, 77,180, 5, 48,195,199, 45, 36, 8,250,248,103,162, 23, 63, 21, 57,240, 24,100, 56, 0,101,133,109,223,137, + 31,191,157,213,157,255,179,103,181, 5, 97, 6, 82, 65, 3,178,101,116,155,253,215,179,239,216,147,253, 45,223,251,101,242,247, +254,239,237, 7,220,250, 17,185,213,221,111, 92,123,232, 59,222,250,249, 24, 96, 15,238,105,235,150,147,229,235,207,161,221,221, + 21,254,231,244,184,217,249,104,227,193,232,239,158,227, 60,163,246,118, 11,250,250,253,190,179,184, 23,190,207,221,159, 67, 43, +170, 99,151, 40,159, 45,223,186,235,187,119, 3,207, 23,145,191,126, 16,238,229,165,187,127, 63,240,219,187, 62,190,106, 26, 14, + 39, 38, 62,131, 69, 29, 64,190,231,191,125, 96,237, 93,156,124,176,253,133,175,253, 92,150,229, 27,247, 5,167,152, 55,111,123, +185,196, 87,219, 80,183, 9, 79,255, 59,196,171, 94, 76,120,242, 23,127,202,119,119,146,253,126,247,109,148, 15,222, 76,253,240, + 59,145,208,129, 59, 46, 48,206, 71,186,141,238, 74,130,191,217,255,228,154, 67,114,213, 13,249, 65, 56, 95,231,229, 57,236,181, +176, 93, 67,171,114,190,242, 36,127,191, 21,184, 1,184,225,190, 4,202,221,127,116,215,119,111, 20,145, 27,118,181,123, 13,123, + 30,217, 91,183,249,154, 51,169,222,119,247,107,128,235,238,163,141, 83, 30,215, 3,209,223, 83,244,245,186,117,187,187,235, 27, +110, 2, 94,240, 32,220, 11, 63, 4,188,117,253,122,243, 28,219,120,217,174,215,215, 61, 24,130,190,139,255,182,231,253,231, 77, +195,225,196,196,103,184,168,159,114, 32,255,185, 23, 92,203,214,242, 13, 20,169,165, 58,158, 87,248,114, 14,101, 5,209,233,191, +242,149,196,171,254,225,233, 13,135, 11,159, 68,186,240,127, 71, 31,243,185,148,119,191, 17,180, 54,201, 23,129,209, 70, 54,210, +115, 57,188,241, 67,192, 15, 60, 8,231,107,183,120,156,147,119,233,238,135,128, 95,217,211,214, 94,174,160,165, 7,174,113,247, + 23,221,199,115,242, 87,114, 34,244,125,211,250,145,172,235, 79, 17, 65,184, 2,184,222,221,175, 20,145,107, 79, 33,190,215,175, +197,247, 84,199,117,181,187,191,224, 65,236,239,201,250,250,182,211,180,249, 64,243,174,221,183,233, 57,220, 7, 87,237, 18,210, +187,128, 95,124,144,143,127,175, 17,252,201,105, 56,156,152,152, 68,253, 83, 7,171,235,191,122, 3, 91,188,158,109,127, 9, 85, + 86,120,174,190,181,181, 65,201, 32,142, 36,232, 95,248,106,194,231,156, 72, 65, 30, 91,172,120,203,159,222,198, 91,254,236, 54, +238,222, 90,144,130,240,183, 46,191,144,175,189,234,169, 60,235, 41,151, 1, 16, 30,255, 5, 72,183,159,252,142, 31,135, 46, 2, +222,220,249, 69, 46,164,248, 79,253,237,255,231,191,147,231,255,196, 7, 30, 48, 35,165, 9,222,213,123, 60,194,179,109,227,234, +181,192,237,230,150,117, 91, 59, 70,194,110,111,246, 10, 90,165,253, 11, 78, 51, 1,206,193,117,187, 59,158,245,141,235,118,119, + 4,113,247,113, 95,227,238,183,222, 71,254,251, 71, 79, 34,232,187,219,218, 57,182, 43, 79,210,143, 7,171,191, 7,247, 8,250, +225, 93,199,119,197,131,248,191,243,249,187, 94,215,115,248,254,151,239,122,253,159, 68,228,193,158, 18,249,153,123,222,255,233, + 52, 28, 78, 76, 76,162,126,239, 65,252, 13,207,125, 26,171,173, 55, 83,244,169, 56, 11,234,220,201, 43, 48,131, 24,144,178, 77, +122,206, 63,186,151,160,255,209,251,111,231,251,126,233, 15,184,245,147,199, 25,250, 68,138,138, 58,252,217, 71,239,230, 77,127, +248, 63,248,154,171,158,194, 63,187,250,239,176,209, 39,244,210,207, 34,126,206,139, 40,239,249,121,216,127,233, 78,133,189,225, + 2, 37,252, 27,224,171, 30,136,147,180,203,131,221, 45, 26, 55,156,101, 27, 87,172,219,216,225, 86,224, 90, 17,217,107, 28,188, +102,143,119,187,179,239, 83,229, 60,175,219, 37,192,215,238, 13, 97,175,247,253, 43,187,196,243, 58,119,191, 87,168,123, 29,114, +191,102,143,248,190,104, 79, 30,125,247,177, 29,122,136,250,123,221,174,246, 94, 33, 34, 55,158,228, 90, 61, 24,236, 46,148, 59, +151,185, 19,190,112,215,235, 63, 88, 31,251, 69,180, 60,251,215,175,239,181, 3,180, 92,251, 7,105, 5,117, 63,127,158,234, 26, + 34,247,158,167,193,128, 31,158,134,195,137,137, 73,212, 79, 12, 20,255,246, 75,255, 87, 22,254,235, 20, 34, 90,231,148, 17,106, + 89, 87,180, 11,120, 69, 46,122, 60,241, 11,191,249,158,239,188,255,227,135,249,230,127,251, 22,238, 88, 20, 54, 54,103,228, 16, + 72, 41,208, 5, 33,120,135,212,194,175,190,235, 3, 4, 85,126,248,197,207,107, 30,251, 83,159, 79,253,171,255, 2,117, 11,210, +190, 38,236,181, 22,130, 28,242,223,127,249,101,242,220,215,222,126, 14,131,220,117,167,248,243,161,147, 8,216,201,196,233,116, + 92,191,199,187,188,234,190,242,210, 34,114,211, 58,188,189,227,145, 94,233,238,215,156, 38, 31,126,147,136,188,232, 62,218,187, +213,221, 95,177,110,111,199,219, 61,180, 54, 2,246,138,229,142, 96,190,224,100,199,183,235,216,254,228, 33,236,239,173,247,213, +222,249, 40, 50, 60,131,251,229, 82,224, 43,118,125,244,230,115,104,230, 25,187, 94,255,249,250, 89,241, 55,210,102,127,219,205, +101,235,159, 47, 5, 94,233,238,111, 0,254,201,217,122,246,238,174,180, 71,218, 62,159,246, 72,219,231,237, 18,244,239, 21,145, +247, 76,195,225,196,196, 36,234,248,245, 87, 38,150,179, 31,102,229,223, 79,145, 21,161,172,168, 45,212, 78,218, 41,119, 19, 60, +143,196,167, 63, 23,217,119, 98,204,122,197, 47,189,147,247,255,245, 81,184, 96, 31, 71,183, 10, 72, 37, 8,108, 4,225,162,205, +200,193, 89,228,130, 11,246,241,235,127,252,126,158,247,217, 79,228,208, 51,159, 12, 33, 18,174,120, 46,229, 79,127, 1, 54, 15, +128, 91,155,160, 38,133,142,108, 95, 7,188,225, 28,186,113,166,179,203,221, 64, 43,212, 58, 43, 65, 95,231,128,119, 27, 6,175, + 56,157,248,136,200, 45,238,126,195, 46,177, 61,116,154,232,192,181,167,105,239, 38,119,191,133,123,135,186,119,142,239,234, 61, + 81,136,215,156,234,248,118, 29,219, 53, 15, 81,127, 95,243, 96,136,247, 41,120, 39, 16,214,175, 51,240,221,231,208,198,133,123, +188,246, 55,112,250,220,124, 0,190, 11,248, 60,119, 63, 36, 34,203, 51,184,247, 78, 53,151,195,123,214,215,230,173,211, 80, 56, + 49,241,200,224,126,173,167,238,175,251,162,199,113, 60,189,147,101,253,126,178,207,145, 90,169,185, 13, 61, 81, 32,136, 16, 69, + 36, 40, 18, 5,189,252,115,238,249,238,135, 62,113,132,223,249,211,143,192,198,236,196,179,233, 33, 80, 81,142,175, 42, 31,186, +115,206,173,119,204,201, 46, 88, 8,220,252,223, 63,124, 66, 0, 46,122, 42,190, 56, 6,148,117, 8,222,161, 24,216,189, 66,154, + 15, 4, 87,175,189,200,179, 13,241,238, 22,184,195,103, 49,127,252, 77,123,246,125, 95,220,114,134, 97,217, 91,238,227,152, 14, +237, 17,216, 51, 57,190, 27, 31,162,254,222,250, 80,206,191,239,238,191, 14, 60,101,215, 71,175, 20,145,173,115,104,234, 81,187, + 94,191,118,151,160,223, 12,124, 29,109,178,155,110,253,251,235,128,255,186,107,251,231, 0, 63,121, 63,187,242,139,192, 63,156, + 4,125, 98, 98,242,212,219,224,246,250, 47,126, 14,243,122, 51, 89, 19, 81,230, 4,107, 94,179, 35, 20, 17,162, 56, 65,214,179, +195, 85, 36,118,232,193, 39,220,243,253,219,238, 60,198, 98,158,225, 64,207, 61, 83,208,237,248, 20,170,224,206,145,173, 76, 30, + 11,143,187, 32,114,124,121,162, 88, 87,246, 95,218,156,150,213, 54,204,246, 11,224,228, 2,145,103,186,191, 74, 69, 94,117,182, +139, 84,188,226, 20,127,187, 98, 45, 82, 59,139,124,220, 83,253,125, 22,222,226,161,251, 16, 86,206,192,187,190,151, 7,124, 31, + 5,100,103, 26, 57,184,245, 20,125, 60,171,182,246, 30,219,131,216,223, 91, 30,170,127, 22,119,255,169,181,192,238,240,123, 34, +242,227,231,193,160,158,173,127,255, 11, 17,249,161, 61,219,221, 1,252, 38,240,155,238,254, 47,128,127,182,254,252,219,220,253, +181, 34,242, 23,231,184,255,111, 2,190,105, 29,189,249, 54, 17,249,239,211,112, 56, 49,241, 25, 40,234,254, 43, 87, 7, 62,252, +161,239,225,120,249, 87, 84, 25,233, 89,162, 38, 84,119,178, 9, 65, 58, 18,135,169,190, 73, 12,205,107,183,181, 27,226, 39, 22, + 89,187,228,130, 13, 66,151,168, 6,184,112, 98,222,247,245,111, 23, 8,202,246, 60,243,225,229,146,254,153,187, 14,213, 43,120, +134,178, 4, 61, 0, 94, 5,170, 83,253,114,126,231,174, 4,156, 85,190,241, 76,102, 66, 91,231,221,175, 91, 11,251,206, 35, 85, +103, 58, 97,199,238,199,204,174, 88,207,196,118, 46,220, 87,132,224,254,134,162,207, 73,132,215,219, 94,249, 32,247,247, 33, 17, +117,119,127, 45,240, 29,187, 62,122,159,136, 60,239,126, 52,121,156,123,135,224,223,118, 18, 65,223,123,159,254,160,187, 63,123, +125,189,148, 86, 84,247,189,167,249,142,172,143, 63, 2,143, 95, 27,112,255,136, 54,207,188,174,175,213,187,221,253, 37, 34,242, + 31,167, 33,113, 98,226, 51, 72,212,253,250, 43, 47,224,182, 15,190,137, 81, 14, 33,178, 96, 22, 64, 17,178, 57,171, 26,233,180, +163,151,151,130, 95, 65,229, 21, 56, 75,180,133,223,201, 25,251,228, 7,208,199,127, 1, 0,127,235,177,143,230,139,158,118, 9, +255,223, 95,222,217,230,131,119,105,115,191,123, 51, 2, 0,176,230,233, 47,239,222,230,105,143, 57, 49,190,251,177,143,193,234, + 24,140,115, 95, 91, 4, 96, 56, 10,204,142, 63, 32,107,196,139,200,107,214, 94,228, 78,254,253, 76,138,215, 78, 38, 78,103,179, +150,251, 67,193,225,243,176,237,195,169,191,103, 34,232,175,167,205,249,190,195,135,248,212, 71,194,238,175,168,191,238, 12,191, +247,186, 93, 70,216,243,207,226,254, 45,235,227,254, 16,109, 33,154,235,105,147,231, 36,218, 18,179, 55,184,251, 31,138,200,135, +166, 97,113, 98,226, 51, 64,212,253,199,191,240,153,220, 85,255, 51, 69, 30, 79, 10,115, 6,109,226, 57,154, 51,214,129, 65,150, +204,228,107,229,255,248,227,183,248,143, 95,245,195,152, 8,130,180,202,119,129,168,248, 39, 78, 68, 10, 85,133, 31,120,225, 85, +124,229,251,126, 11,150, 25,250,174,109,199, 90,212,141, 22,206,223,154,243,249,207,120, 44,223,244,101, 39,166,169,182, 59,254, + 18,247, 12,117,108, 27,186, 3,166, 32,183,243,188, 39,141, 15,212,201, 90, 11,251,238,162,186,171, 57,203, 71,219,104, 33,240, +115,125, 44,233,240,195,240, 30,123, 88,247,215,221,127, 26,248,246, 93, 31,253, 13,240, 89,107,145,188, 63,252, 53,240,196, 93, +239,255,232, 12,191,183,123,187, 39,220,143,123,249,119,221,253,135,128, 31, 89,127,180, 73,155, 37,239, 91,167, 97,113, 98,226, + 17, 44,234, 14,194,143,125,254, 75, 88,214,159,193,164, 48, 11,115,122, 21,220,157, 69,117,204, 55,217, 23,254,138,153,124,141, +124,251,187,214, 11, 81,200, 7, 16, 7,199, 81, 17, 84, 96,216,160,222,246, 14,226,225,219,144,131, 79, 2,224, 43, 62,255, 73, +220,240, 29,207,231,229, 63,251, 7,204,143,172, 96,232,219,218,235,238, 48,102,152, 47,120,214,103, 93,202,155,190,239,171,216, + 28, 82,107, 58, 47,168,239,251, 85,164,235,219, 92,240,110, 96,214,188,244,232,239, 57,135,124,250,217,114,211, 46, 79,233,208, + 57,124,255,134, 71,250, 66, 47,143,148,254,186,251,207, 1,223,182,235,163, 79, 0, 79,223, 59,111,252, 57,242, 23,180,130,183, + 29,142,156,225,247,118,111,119,193,253, 60,134,223,222, 37,234,112,158,214, 51,152,152,152,120,232, 56,125,245,251,143, 95,117, + 13, 89,223, 8,186,100,127,202,204,130,224, 56,219, 21, 84, 54,217, 8,191,198,197,242,133, 39, 4, 29, 24,120, 47,218,210,220, + 64, 19,234, 24,161,108,145,223,241, 19,247,106,254,165,127,247,179,249,195, 87,127, 61, 47,255,234,191,205,147, 47,236, 25, 60, +179, 79, 43, 95,242,180,139,248,201,239,252,114,126,255, 95, 94,205,147, 47, 61, 49,118,149,119,191, 17, 63,114, 27,164, 30,164, + 89, 14,148,245,243,240,226,183,124,154,158,231,251,170, 58,127,184, 31,223,161,135,105,127,207, 68,208,127,121,143,160,223,185, + 22,244,249,121,218,197,222, 25,220, 30,117,134,223,123,212, 57, 24, 2,247,197,222, 80,251, 19,167, 33,113, 98,226, 17,236,169, +251,245, 87,110,112, 71,253, 17, 76, 70, 14, 4, 72, 34,100,119,230, 57,208,105, 79,210,127,197,144,127, 64,190,241,150,123,207, + 35, 29,237,189,136,126,148,106,143,193,189, 14, 93, 88, 34, 64,191,143,229, 71,126,127, 40,239,124, 45,241, 57, 47,191,103,243, +207,125,226, 69,252,196, 75,158,203,171,191,169,240,241,187,183,233, 82,228,242, 11, 63,117,141,140,250,190,223,160,252,249, 47, +194,176,177, 54, 73, 66, 43,208,171, 38,120,206,168,255,214,131,112,206,206, 37, 63,188,187,160,236,144,187, 31,124,136,159,179, +222,203,173,187,142,239,140,188,181,245,179,232, 15,215,254,158,174,111,191, 6,188,112,215, 71,119,173, 5,253,216,121,220,205, +127, 6,126,138, 19,143,178, 61,123,253,217,233,120,246,174,215, 31,190,159,199,240,185,123,222,191,111, 26, 18, 39, 38, 30,201, +158,250,130,139,112, 14,130, 20,204,157,121,117,230,165,163, 19, 97, 63, 47,146,239,254,163,235,228,218, 91, 62,101,117, 52,185, +246,150, 57,189,188, 30,241,196,178,250, 58,136, 47,168,138,108,236,167,254,249,191, 39,223,244, 3,248,252,222,107, 72, 12, 41, +242,164, 75, 47,248, 84, 65,207, 11,234,187,126,138,242, 7,255, 18,233, 59, 36,132,182,132,123,234, 33,103, 48, 75, 80,223, 44, + 47,184,225, 35, 15,240, 96,191,183,232,235, 76, 35, 3,123, 31, 19,187,230,211,236, 62,216,125,124, 7,215,211,182,158,171,151, +254,112,232,239,169,174,241,111,157, 68,208,159, 42, 34, 71,206,231,126, 68,228,111,128,119,236,250,232,101,103,248,213,221,219, +221,124, 63, 15, 99,239, 92, 0,239,158,134,196,137,137, 71,178,168, 95,190,248, 56,179,112, 27, 73, 54,216,206, 27,152,109,176, + 33,199,217, 31,158, 43,215,254,241,141,167,142, 1,116,111, 36,112,148, 85,137,100,107,207,171, 7,218,148,177,155,251,177, 15, +254, 14,227,175,126, 51,245,189,191,138, 31,251,155,147, 15,176,219,119, 98, 31,188,137,241, 63,189,132,242,158,159,129, 97,128, + 16,219,100, 51, 34, 32, 73, 88,100, 33, 56, 56,175,124,128, 7,251,157, 69, 83,118,115,227, 25, 14,224, 55,114,239, 98,177,235, + 78,227,233, 62,216,220,200,189,139,210,174, 59,131,115,113,221,195,184,191,247,213,175,183,114,239,245, 3,118, 60,244, 35, 15, +208, 46,119,207,183,126,200,221,255,249,105,142,239,159, 3,127,119,253,182, 2, 63,123, 63,250,250, 82, 62,117, 38,188,223,155, +134,196,137,137,135, 55,167, 12,191,203,139,222, 55,250,245, 95,250, 60,150,249,123, 48,125, 44,157,190,155, 89,250,121,121,201, + 31,156,118, 1, 11,249,206,119, 28,246,159,122,246, 75, 89,217,175,176, 85, 10, 81, 33, 4,105, 46, 54,176,113, 0,202, 81,242, + 59,126, 4,233,246, 33,143,254, 44,244,194,167, 64, 28,192, 50,118,228, 35,248,157,239,133,229, 17, 72, 9, 54,119,213, 4,237, + 20,187,143,234,244,116,120,121,181,124,205, 47,252,229, 3,232,157, 31,226, 83,215, 23, 63,204,217, 85,190, 95,203,189,231, 94, +127,219,122,153,209,155,206, 96,255, 87,175,197,242, 1, 41, 56, 19,145,195,238,254, 26, 78, 60,174,119,200,221,175, 63,217, 18, +173,107, 65, 63,147,101, 79, 63,109,251,123, 31,251,125, 59,240,188,147, 8,250,221,247,163, 77,223,117,142,229, 36,231,253,173, +238,254, 27,156,152,208,230, 7,221,253, 75,104,143,173,253, 33, 45,103,254, 40, 90,200,253,101,123,162, 35, 63, 41, 34,239,223, +179,191,219,104, 11,191,252, 30, 45,148,126,247,186, 31,199,105,115,202, 63,150,246, 40,222,119,113,239, 85,230, 0,126, 81, 68, +222, 52, 13,137, 19, 19,143, 96, 81, 7,144,107,223,241, 17,224,229,231,212,250,119,254,225,155,248,201, 47,122, 45,197, 95,206, +177,113,193,254, 78, 8,180,162, 54, 28, 82, 66, 82, 2, 55,252,174, 63,163,220,113, 11, 59,211,202,137, 70,136, 29,108,238,219, + 51, 82, 2, 99,197,109, 6, 26,122, 40,111,103,177,120,213,253, 28,208,253, 28,190,118,237,217,228,137,215,179,165, 93,203,137, +149,203,118,132,238, 38, 90,184,122,119, 40,127, 39,204,127,136, 19,185,233, 87, 60,192,247,194, 13,220,123, 25,212,107,214, 97, +248, 27,118, 29,219, 33, 90, 40,253,224,218, 19, 63,204,125,228,224, 31, 6,253,221,203,243,246,188,127, 52,112,215, 89,220, 26, + 79, 19,145,115, 89,250,247,155,214, 66,252,172, 93,231,248,116,233,143,183, 2,223,119,146,207,159, 8,124,203,250,231,108,120, + 23,240,210,105, 56,156,152,248, 12, 16,245,251,229, 1,130,123, 42,223,143,166, 75, 24,253,197, 28, 27,151, 62, 4,100, 8, 45, + 12,191,227,187,136, 66, 55,156,122, 53, 11, 7,204, 97, 85,177, 99, 35,179,203, 46,133, 80,111,161,196,127, 32, 47,186,113,124, + 16,207,217, 45,107, 65, 63,235, 74,123, 17,185, 97,215, 4, 54, 7,207, 98, 16,127,192, 89,123,235, 47, 90,123,215, 87,236, 18, +219,147, 45,118,115,152, 54, 35,217,143, 62, 92,251,251,233,130,136, 28, 95, 27, 79,175, 3,190,241, 52,155,231,245,118,175, 56, + 15,207,201, 3,124, 4,248, 9,224,103, 30,130,245,220, 39, 38, 38, 30,110,162,222, 60,253, 91,178,191,234,121,223,194,197,203, +191,166,240,253,233, 88,102, 92, 25,186, 17,219, 42,110, 1, 68,228,228,235, 83,173,157, 36,175,109,193, 22,159, 87,116, 62, 50, +187,232, 32,108, 12,191, 6,199,190, 85, 94,248,155,199, 31,132,243,116,211,218, 51,189,105,239,250,221,231, 40,236, 55,209,194, +249, 87,115,250, 48,246,141,235,253,223,248,128, 95,171,182, 68,235, 85,107, 17,190,230, 20,231,226,218,245,182, 15,235,254,126, + 26, 9,251, 97,218, 60,236, 63, 9,188,152, 54, 83,220,229,180,245,212, 15, 3, 31,160, 21,197,253,172,136,156,170,226,253,113, +192, 23,209, 86,125,123, 22,240,152,117,196,225,209,192, 98, 45,226, 31, 93,255,188, 19,248,127,206,147,113, 48, 49, 49,241,233, + 50,158, 60,152, 59,243,159,254,146, 47,255,240, 29,243,155,159,120,176,167,172,156, 18, 5,134,128, 68,109,158,187,238, 58, 28, +119,168,224,197, 96, 89, 9,217, 72, 73, 56, 86,225,192, 19, 47,123, 49,127,241,121,255,175,188,234, 1,159,104,230,129, 63, 39, +205, 75,219, 27,194,190,149,182,186,217, 77, 15,225,113,237,132,195,119,175,137,126,211, 25,174, 6,247,176,235,239,196,196,196, +196, 36,234,231, 50,168,191,238,139, 14, 48,200, 55,176,240,255, 11,243, 39,181,169, 97,221, 81, 53,148, 19, 34,109, 40,102, 74, +123, 24, 14,130,222, 73,228,181,204,134,159,147,111,251,221,143, 79,151,110, 98, 98, 98, 98, 98,226, 33, 22,245,123,196,253,205, + 95,209,243,209, 35, 79, 39,219,215,131, 60,135,234,151, 97,246, 40,156, 14, 36, 19,229, 40, 65, 62,129,249,159,210,201, 47, 83, +134,247,202,119,253,238,214,116,201, 38, 38, 38, 38, 38, 38, 62,205, 68,253, 83, 68,254,237,207,139,220, 70, 36,220, 29, 24, 54, +141,195, 99, 57,217,196, 54, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19,159,134,200, 51,174,124,182,111,198,128, 16, 48,173, 36,132, 98,224, 46,168, 10,130, 80, 53, 35, 34, 4, 7, 71, 49, + 51,196, 21, 19,192, 4, 13,142,168, 32,110,136, 7,140, 74, 64,113,218,228,242, 70,193, 92, 81, 93,175,157,238, 17, 23,199, 13, + 36,128, 6,144, 42,184, 64, 80, 48, 4,149,128,148,140,170,146,113, 36, 9, 81, 3, 54, 86, 28, 33,196, 64, 80,197,221,136, 34, + 72, 72,168, 84,106, 5, 84,136,193, 32, 37, 48, 8,102, 24,142,152, 83,129, 90,156,216, 13,196,206,160, 10,227, 98, 4,169, 72, +138,168, 42, 86, 42, 67, 18, 86,217,136, 8, 32,148, 24, 81,169,152,181,229, 96, 85,149,106, 70, 10, 74, 12, 29, 8,152, 26,162, +142,102,197,107,197,113, 92, 5, 17, 65, 76, 17,117, 60, 40, 29, 48, 86,195, 67, 59,167, 34, 14,169, 67, 16, 52,130, 84, 99,149, + 43, 33, 40, 73,132, 98, 21, 65, 41,222,182, 79,106,140,213, 8, 4,170, 27, 42,142,116, 9,149,132, 68, 69,168, 4, 17, 16,193, +179, 3,134,163,184, 26,193,149,226, 5,178, 97, 26, 41, 86, 32, 8, 82, 32,198, 13,106, 93,146, 98, 36,231,140,171,162, 81, 41, + 89, 25,130, 96,140,228,234, 68,237, 48, 55,132, 17,243, 72, 80,197,172, 29, 47, 65, 48, 23,130, 5, 68, 12, 79, 66, 39, 80,106, +129, 16, 81,119, 52, 38, 4, 3,119, 28,152,197, 30,196, 89, 25,164, 88,177,209,209, 16, 25, 98,192,131,226, 84, 98, 23,240, 10, +101,171, 16,250, 72, 13, 70, 48, 65, 61,226, 81, 9, 17,194,160,212,121,165,170, 48, 4,161,122,160,246, 78,153,103,186, 16, 48, +119, 82, 7, 33, 5,198, 45, 33,170,227, 22,136,189, 80, 23,133,106,198,232, 25,137, 3,170,129,153,116,100, 27,241,100, 12, 26, +153,111, 87,102, 73, 40,106,120, 31, 25,106,207,241,213, 28,239,149,224, 61,212,140,104, 66, 80, 22,121,129,231, 5,146, 4, 43, +145, 40,138,107,193,179, 48,204,122,132, 64,208,142,176,161,232,166, 33, 38,196, 18,136, 30, 81,150,228,156,232,146, 51,103,100, +195, 35,210,193,188, 20, 54, 82,164, 22,167,142,130,121,134, 90,177, 20, 97,125,175,205,100, 31,230, 35,227,184,100,144,136,118, +142, 75,162,100,167,134,202, 16,123,204, 32, 5,199,197, 41, 49, 49,235,103,248,124, 27,168, 20,153, 97,121,139, 94, 55,169,238, + 44,243,138,136,179, 18,240,234,172, 22, 35,243,178,196, 67, 96, 53,102, 58, 82,235,119, 20,196, 4,241,158, 28, 70,168, 21, 92, + 16,119,172, 75, 68,156, 52,204, 24,231,133, 24, 19, 42,134, 27,148,114, 28,151,192,254,212, 51,175,130,139, 17,220, 41, 53,211, +111,236,163,138,224, 57, 19, 24, 64,231, 96, 17,179, 64,149, 66,192, 48,173, 72,136,248, 98,196,112, 98, 12,120,113, 42, 70,215, +109, 50,142, 43, 76, 42,158,231,228,218, 35, 1, 66,239, 96, 25,169, 51, 54, 14,244,132,234,184,247, 8, 75, 8,138,121, 32,120, +164,248,138, 46,129,229,192, 42,103, 66,116,136, 3,238,149,152,122,196, 12, 74,197,235,138, 18, 7, 60, 67,218,220, 64,210, 2, +219, 90, 33, 26,112, 2,157, 20, 86,210, 49,136, 16, 83,135,108, 84,108,140, 48, 86,250, 65, 40, 18, 80,239,232,170, 18,162, 16, + 58, 69, 7, 97, 49,135,253,170,212,206,128,192,144, 2, 75,139,132, 40, 12,226,140,222, 35,131, 18,115, 32,106, 38,104,101,181, + 50,186, 11, 34, 62, 42, 65, 21,197, 81,141,232,160,104, 5, 73,129, 94, 20, 69,144, 46,226, 42, 28,216,119,128, 75,174,120, 26, +161,219,100, 83, 29,237, 20, 87,240,218, 86,196,222, 89, 33, 68, 12, 98, 0, 23, 40,208,198,239,245,235,163, 35,204,111,191,131, +188,125, 4, 74,225,242, 75,246,179,113,217,227,219,178,155, 14,189,182,149,181, 29, 16,111,223, 3, 48, 64, 79,236,226,158,247, + 59,220, 97,112,215,109, 71, 41,199,111,103, 51, 85,158,240,228,199,146,102,143,186,103, 57,207,184,254,237,235, 31,217,245,158, + 93,109,237,252,125,231,253, 22,112,251, 49, 88,222,254,113,124,251,110,158,116,105,199,129,199, 94,177,103,239,231,206, 28,248, +139, 59,224,174,247,221,138, 47, 63,132,213,145,229,241,145,213, 18,186,153,145, 92,217,178,145,186,170,132, 44, 44,181, 82, 61, +113,112, 83,176,101, 97,107, 25,160,135,217,190,202,246,177, 66, 62,186,192, 83,160, 32,228,156, 9,117, 69, 73, 16, 45, 81, 74, + 69, 60,226, 62,103, 94,141,168, 33, 96, 94,193, 42,110, 70, 9, 9, 95, 75,177,139,129, 41,110, 1,193, 17, 12,167, 96, 4,144, +138, 22,105, 23, 31,199,115,187, 90, 81, 29,171,142,168, 98,193,241,234, 36, 9, 68,192,220, 41,102,168, 20,100,125,183,136, 10, +216,218, 40, 16,193, 49,130, 56,138, 82, 36, 80,176, 54, 32,186,128, 56, 34, 1, 9,109, 95,213, 10, 65, 3,174,138,215,145, 16, + 19, 67, 82, 22, 94, 49, 4,169, 59,119, 73, 32,186, 81,196,137,162, 72,114,140, 21, 99,110,219,196, 62, 96,197,209, 10, 65, 29, + 51, 97,185,172, 16, 64,136, 84,119,118, 44, 16,181, 74, 49, 3, 23, 98, 8, 20, 51,198, 58, 71, 60,172, 13, 15,197,172,160,162, + 84,109,119, 93, 66,112, 19,170, 56, 4,161,152, 17, 98, 51,108, 2,160,234,212, 90, 40, 4,196,140,190,182,155, 83, 35,140,185, +130, 7,164, 90, 19, 73, 2, 99,109,255, 21,230,138,138,224,226,168, 9, 34, 32, 53, 83, 1, 98, 34,105,196, 40,132, 20, 41,165, + 80, 75,197,165, 73,124, 12, 74, 41,134,122, 64,196,201, 24, 90, 22,136, 56, 6,132,152,176, 82,192, 42,169,119,106, 81, 74, 81, + 16, 71,125, 5,162,152, 8,181, 26, 34,138,132,128, 85,163, 74, 37,104,162, 83,200, 56, 88, 96, 52, 7, 2, 18, 28,149,136, 89, +165, 75, 16, 70, 97, 25,140, 76, 70, 67, 64,139,161,213, 80, 87,162, 10, 5, 67,172, 82,170,227, 69,219,181, 28, 34, 85,160,221, + 81, 21, 87, 16, 81, 40, 5,173,142,204, 54,232, 74, 37, 84,195, 8,248,214,138,144, 34, 34,134,141,134, 75, 71, 17,167,214, 17, +173,138, 41,140,163,209, 97,104,175,200, 50, 16, 36, 17,186, 66,193, 81, 42, 37, 11,115, 28, 73,149,133, 25,213, 5, 86,134,204, + 64,106, 66,138, 97, 33, 99, 82,208,226, 64, 36,152, 99,105,131, 33, 4,150,227, 10,250, 8, 42, 4, 79, 84, 45,116,217,200, 86, +241, 85, 96,179, 15,228, 18, 17, 95, 33,170,104, 80, 82, 40,148,218, 17,107,192,197, 24,151, 77,192,243, 16,145, 33, 96,115,129, +133, 81,180, 32, 57, 17,168,136, 58, 43, 91,226,181, 66, 7,163,102, 82,223, 81, 74, 66,124, 65,159,148, 98,214, 78,227,198,126, +242,184, 98, 35,175, 8, 6,161,219, 96, 21,230,164, 34,140, 37, 81,125, 69, 82,129, 3,130, 45, 29, 89, 26,149, 66,148, 14, 17, +131,220,145, 68, 17, 81, 34,198,144,122, 86,181,176, 44,153,154,149,212,181,235,148, 60,224, 14, 86,115, 51,206, 6,197,234, 8, +197, 48, 53, 98, 8,184, 7,138,197,102, 36, 26, 12,155,145, 98,210, 6,225, 84,214,134,121, 97,158, 71, 72, 25,177,128,214,200, +104, 43, 92,155,193, 59,132, 72,149,230,104, 20,182,152,197, 77,130, 11, 53, 4,196,141, 28, 3, 27,169,195,163, 83,114, 38,165, +158, 66,161,203, 3, 26, 14, 82,226,138,213,202,241, 82,232, 21, 60,100, 74, 72,104, 46,108, 70, 67,124,160, 74, 70,180, 9,222, +184,189,160,239,155, 97,140,247,136, 87, 52,129,231, 45,130, 9,157,244,152, 3,106,104, 84, 54,131, 50, 35,176,240, 74, 25, 33, + 5,101,227,130,158,154, 35,145,128,233,156,106, 70,169, 1, 17, 97, 22,149,110,191, 50,206, 29, 49,163, 80,137, 54, 35, 81,200, + 25, 86, 14,110, 14, 22, 33, 8, 81,193,164, 3, 10, 86,122, 66, 16,196, 87,132, 46, 34, 26, 48, 7, 29,148,128, 19, 98, 27, 79, + 59,109,162,254,184, 75,102, 92,246,232,125, 59,126,222, 9,101, 10,167, 81,174, 93,250, 23,103, 48,118, 3, 62,143,204,122,229, +226, 11,247, 33,247,165,143,167, 88, 70,108,239, 46, 55, 20,182,162, 32,154,184, 96, 51,210,207,134,189,187,190,167, 73, 57,197, + 46,246,254,125,216, 49, 8, 4,102, 93, 96,223,129,254,188, 9,250, 78, 63, 20, 67, 37, 51,142, 5, 23,135,160,232,144,169, 42, +148,209, 89,137,226,139, 37, 49, 10, 51, 13,212, 8, 43, 27,145, 89, 33, 34,108,244,251, 24, 23, 78,204, 66, 60,216,115,220, 20, + 61,178, 77,206, 75,180,131, 80,132, 84, 42, 5,160, 23, 60, 12,232,209, 54,118, 18, 93, 24,189, 32, 33, 80,202, 72,144,216, 60, +219, 44,132,232, 77,144, 69, 41,213, 16, 5,241, 74, 8, 97, 61,160, 86,188,130,144, 48,140,234,165,157, 46,119,180, 86,204, 20, + 83,193,212, 80, 73,116,209,169,185, 98, 89,144,224,136,183,193, 90, 83,243,250,161,137,183,249, 72, 8,177,121, 98, 82, 17, 4, + 43,160, 98, 72, 74, 4, 4,138, 99, 46,136, 68,130, 26,213, 42,230, 70, 76, 1,119, 3,183,118,114, 67,196, 9,104, 6, 87, 24, +196,192, 2,243,177,137, 44,106,164,117,255, 86,185,121, 77, 30, 65, 76, 49, 45,184, 8, 62, 58, 53, 8,157,116,184, 84,170, 26, +234,144, 80, 50, 32, 24, 86, 64, 58, 80, 89,123,174, 34,184, 40, 54, 22, 92, 3,162, 80,115,165, 6, 39,136,182, 78,135, 74, 40, +134,155, 19, 28,138, 85,114, 16,162, 4,188, 52, 27, 83,215,215,198, 9,212,154, 81, 29, 80, 42,149, 74, 34, 98, 42,132,181,209, + 69,234, 8,185,144,164,226,237, 62,162,100, 67, 36,145,218,101,193, 77,154,160,136,163, 81,219,117,145,178, 54,186, 28, 86, 75, + 98,136, 24, 32, 10, 49, 8,102, 5,204,233, 82, 36,133,158,108,149,106, 43, 84, 65,107,187,190, 18, 59, 58, 28,241,102, 36, 84, + 7, 47, 11,148, 68,236,148, 50, 86,138, 56,196, 66,174,138,105,196,179,182,123, 77, 32,168,225, 69, 40,161, 35, 38, 69,139, 97, + 94,154,137, 89, 33, 12,134,187,175,163, 64, 21,130,226, 42, 12, 42,100,131,229, 24, 72,201,232, 85, 41,193, 72,230, 8, 29, 70, + 65, 81,130, 56,213, 5, 29, 3,170, 21, 83, 71,171,144,199,140,199, 64,113, 65,134,212, 12, 31, 7, 33,131, 68, 74,133, 96,129, + 24, 7,188,203,216,106, 65,172,206, 56, 86, 48, 69,187, 64, 93,140,224, 78,181, 37, 21, 37,136, 50,200,140, 72, 68,122,195,163, + 17,101, 64, 28,180, 24, 57, 25, 81, 19,148,204, 56, 55,116, 16, 92,218,144, 54, 90, 4,182,169,171, 76,236,135, 38,110, 26,216, +232, 19,171, 60, 82,139, 0,133,144, 18, 93, 13,140,221, 72, 94,122,139, 54, 85,103,136, 27, 88,223,162, 56,178, 12,224, 25,137, +198,134,110,144, 25,169, 37,179,181,117, 20,145,136,153, 19,107,198,234,146,161,239, 24,139,177, 57,236,167, 75, 74, 8,219,220, +181, 5, 38, 17,153, 45,177,197,138, 98,214,238, 7, 89, 65, 78, 72, 52,164, 19,108,116, 48,193,213, 17, 29, 17, 87, 98, 73, 16, +156, 20,140,133, 5,108,233,104,116,200,205,129, 16,171,200,144,136, 12, 20, 12, 47,112, 32, 14,132, 40, 88,141,200, 40,152, 71, +162,100, 74, 82, 54, 57,128, 5, 69,171, 49,218,136,196,129, 33, 21, 74,152, 45,132,206, 0, 0, 32, 0, 73, 68, 65, 84,134,130, +161,150,154,225, 29, 55, 9, 30,168,158,177,224,216, 88,233, 92, 25,125,132,170,136, 11,165, 38,102, 93, 36,234,140, 81, 87,100, +150,196,174, 25,202, 33, 42,121,229, 12, 62, 50, 22,225, 88, 40, 72, 74, 72,137,132,188,194, 7,197,123, 40,150,168,121,197,108, +232, 9, 36,196, 97, 75, 42,137,128,211, 81,226,138,228,138, 17, 25,231, 32,131,181,254,199, 68,172, 61,190, 90, 82,108, 36, 12, + 3, 27,125,100,126,108,100,216,175,120, 89,177, 56, 26,233,135,125,172,100,139,200,140,125, 34,216, 56,178, 10, 25,181, 30, 24, +208,148,200, 46,104, 41,120,152, 81, 99,193, 54,149, 20, 90,164,178,212,136,104, 7, 81,233, 53,227,174, 68, 87,212,123,138,173, +218,184, 33,176, 49,219,184,223, 34,230, 14, 17,167,170, 50, 75, 5,233,186,243,163,142, 6, 1, 33,196,200,108,166, 64, 58,111, +194, 27,189, 69,136,251,160,104, 63, 59,175, 33,240, 12,248,104, 32, 5, 73, 2, 57, 34,201,217,140,137,237, 60, 50, 95, 25,209, +132,112, 32,177,176,202,254,208, 67,133,237,121,102, 51, 69,102, 27,153,213,246,156,149, 37,234, 0,146, 87,244,195, 1,124,182, +193,102, 12,172,242,113,134, 24,169,161, 71, 10,216,226, 24, 58, 40, 78, 79,184,248,242,199,189, 42,184, 67, 8,132,144,214,230, +140,180,171,100, 77,116,171,181,176,178,155, 83, 76, 8,205, 97,195, 69,144, 16,136,170, 32,149,160, 1, 83, 5, 1, 85, 65,109, + 45,208,193, 16,148, 24, 90, 72, 54,168,131, 74,243, 40,125,237, 29,227, 84, 7, 9, 10,190, 35,122,218,140, 39,131, 24, 20,241, + 10, 26, 80, 73, 68,117,240,230,185,167, 96,136, 64,206, 21,213,212, 66,153,205, 72,166, 90, 94,135, 95, 42,238,118, 79, 56, 72, + 20, 52, 40, 81, 3,201,156, 42, 80,130,160,185,133, 49, 53,208, 68, 57,128,187, 99, 98,152,131,107,109,131,101, 16,148,128,136, + 18, 66, 66,131, 96,162,184,129,209,172, 99, 80,194,144,112, 3,151,128, 74,160,223, 49, 23, 37,180,200,131,183,192,208, 50,151, +181,161,232, 72,208,123,194, 69, 81, 4,119, 72,125,104,226,183, 78, 77,168, 8, 49, 6, 50,153, 32,144, 52, 96,234, 72,140,136, + 37, 60, 59,117,157,242,136, 24, 65,140,106,172,195,243,173,241, 22, 41,112, 28,195,131,222,243,223, 41, 30,240,224,235,176, 88, +135,215, 54, 24,137, 8,230, 80, 28, 60, 8, 93,144,102,144,105,139, 24,152, 22,204, 13, 93,219,219,170,237, 62,170,107, 67,135, + 42,196,168,212, 10, 42,130, 56,152,121, 75,219, 84,161,186, 99, 82,137, 33,160,181, 9,176, 72,215,250, 26,104,169, 2,169,168, + 42,177, 8, 67,215, 65, 53, 82, 20, 66,151, 64,132,152, 4,143, 78,165,182, 72, 67,181,118, 28,210, 53,227,195,155, 72, 5, 42, + 21,165, 70, 65, 93, 49, 75,107,195, 66,200,238,148,209,155, 33, 87,154, 97,164, 65, 24,203,146, 90, 90, 28,171,235, 59,198,177, + 67,106, 33,134, 21, 49, 9,145,216,162, 0,120,187,249,196,241, 42,100, 31, 97,149, 9,149,102,212,248,136, 6, 33,154,225, 30, + 41, 54, 50, 11, 61, 42,144,151,115,164, 55,162,119, 88,140,164, 78, 72, 26, 16, 77, 44,243, 72,175,149, 88, 67, 51,102,131, 81, +179, 99, 99,166,132,245, 45, 37,142, 57,228,170,104,105, 6, 56,140, 72, 7,203,226, 4, 21,186, 24,161, 42, 85, 71,186, 16,209, +126,147, 36, 10,181,162, 58, 32, 33, 35, 29,100, 9, 96, 35,106, 29,117,125, 93, 86,197, 64,157,136,224,182, 66,106,166,139, 3, + 85, 34, 85,156, 56, 11, 12, 26, 48, 15, 52,231,196, 72,169, 39,132, 22,161, 49,105,158, 51, 4, 60,116,148,146, 41, 94,233, 66, +130,212, 17,131, 82,165, 25,113, 9,195,125,164,170,160,125, 34, 13,145, 96, 61,206,136,166,158,104,142,122, 32,196,158,236, 43, +136, 74,112,167, 75,137,209, 43,170,134,164,128, 75, 5, 21,108, 29, 65, 81,117, 82,216, 71,220, 31, 49,148, 90, 87,136,104,139, +178, 8, 72, 12, 72, 14, 72, 48,102,113,134,133,136,185, 19,135,128,149,130, 86,161, 51, 33,151, 72,112,135, 40, 72, 85,114, 82, +250, 40,104, 84,164, 8,163, 21,106,132, 46, 6, 52,130,107, 64, 67, 15,227, 72,139,111,128, 72, 70, 29,182,142, 45, 80, 4,180, +237, 67,150,109,140, 29,235, 72, 68,217, 63, 27,144,226,160, 1, 87,129, 89, 71,119, 96,131,222,157, 52, 27,145, 62, 18,170,209, +139,225,170,216,152, 91,100, 72, 2,226,153,150,172, 11,132, 36,136, 87,220,133, 62,118, 12, 93,224,178,199, 94, 66,236, 55,239, + 95,184,217, 96,117,108,142,231, 21, 7, 6,101,227,224, 5,187,130,227,231,206,162,192,246,177, 5, 82, 22, 92,120, 32, 18,103, + 7, 56, 31, 43,134, 87,224,248,182, 49, 46,183, 56,144, 50,251, 46,220, 0, 61,127,194, 62, 7, 14,127,114,197,226,232, 39,208, +186,162,122, 97,116,163, 46,173, 69,107, 11, 68, 83,100, 22, 24,151, 6,209, 32,130,198, 64,170,138,140, 45, 50,231, 1,186,153, + 98, 57, 51,120,101, 65,166,174, 70, 0, 74,236, 25,116, 31,149,163, 20,132, 89, 80,182,115,104, 41, 99, 7, 84, 28,188, 34, 85, + 64, 11,168, 32,180, 27, 72, 2,168, 27,182, 14,149,123,139, 8,163, 65, 9, 40, 42, 21, 68,209,216, 18, 44, 6,205, 43, 10, 45, +119,163, 82, 17, 81, 92,192, 11,136, 10, 65, 13,173, 45,239,107, 34,168,213,245,128,100,168, 87,140,174,185, 75, 72, 19, 87,179, +182, 83,111, 97,122,139, 1,220, 16,111,225, 89,237,215,255,104,158, 49,154, 97,209,199, 1,195,201, 99,203,233,167, 24, 81, 49, +178,173,197,168,253, 15, 1, 66,178,128, 25,100, 42,186, 54, 42,106,169,120, 21, 8, 17, 73, 16,170, 96, 82, 16, 17,180, 40, 33, +181,208,183, 81, 1, 39, 6,193,139,144,146, 96, 18, 48,171, 48,142, 4,119,172,229, 12,168,166,232, 0,120,203,241,162,181, 69, + 64, 16,240, 74,146, 72,112,193,196,113,132,168,130,161,140,235, 28,101,144, 4,234,160, 78, 10,138, 72, 36,155, 50, 55, 35,136, + 32, 11, 71, 67, 37, 36, 35,214,204,106,177,164, 20,105,209,148, 46,210,185,224,154,192,154,248,182,136,132, 33, 57,147,171,161, +162,104, 52, 76,192, 10, 80, 70, 36, 65, 29, 91,193,131, 32, 20,117,130,107,179,140, 4,138, 4,188, 84,116,108, 3,156, 37, 67, +108, 64, 44, 35, 49,210,249, 58,252,149, 12, 51,176, 90, 90,152, 57, 42, 93, 82,106,161, 25, 77,181, 16,102,145,202, 72, 94,180, + 16,127, 87, 33, 87,199, 99,165,154, 82, 86, 43,178, 87,168,129, 71, 93,114, 41,179,161, 71,189,133,222,157, 74, 44, 61,171,229, +136,132,192,124,107,139, 35,199, 14,115,241,129, 11,216,216,127, 33,113,136,204,139, 96,186,194,189,226,121, 64,107,166, 22, 37, +132, 64,246, 17,207, 66, 55,236, 35,216, 72,233,106,171, 37, 88,129,121, 69,212, 48,115, 66,106,198,103,223, 57,154,103,148, 49, +163, 93,108,225,100,153, 33, 82,112,150, 96,153,108,153,152, 4,141, 3,110,134, 89, 33,224,104,129, 94, 7,114,202,120,215,163, + 40, 99,206,168,182,218, 1,201, 16,101,133,210, 17, 58, 33,231, 37,209,157,232, 27, 88, 52,130, 25, 30,193, 18, 4, 29,216,164, + 96,157,226, 75,167,154,161, 10, 41, 10,133,145,129,158,226,173,102,102,149, 3, 99,103,136, 86,186,110,131, 32, 6,203,109,114, + 82,138, 24,125,153, 19, 36,145, 23, 6,193, 41, 33, 65, 93, 17, 76, 48, 13, 12, 7, 34,203, 99, 11, 66, 80,124, 72, 45, 58,150, +157, 28,115, 11,183,214,132,229,138, 6, 65, 67,196, 10,172,130, 35,217,113, 7,106,203,169,215, 82,137,234, 20,221, 32,212, 17, +145, 64,164, 99,105,133,125, 18,161,135, 42, 35, 86,123,162, 87,164, 66, 30,141,101, 57,134,171,145,106, 33, 12, 1, 31,157, 98, +133,160, 61,125, 72,184,143,148,108,184, 20, 10, 80,151,145,106, 17,234, 18, 15,134,155,182,240,184,174,232,150,155, 20,113,146, + 25,150,156,210, 41,113,169,140,101, 36,165, 25, 49, 12,148,228, 40, 1,219, 42,172,242, 10, 73, 61,244,138,174, 42,157, 26,101, +213,181, 52,145, 6, 76, 87,152,117,104, 86, 86,186, 69,223,247,212, 26, 17, 23,246, 15,129,185,101, 40,134,123, 38,151, 99,224, +137, 62, 5,204,149,216, 67,234, 18,226,133,100, 1,223,152,161, 2,155,117, 31, 23,236, 75,228, 26, 40, 41, 82, 93,232, 6, 88, +149, 37, 54, 79,196, 26,136,105, 70, 89,174,176,218, 97,227, 18,157, 69, 98, 23, 72, 37, 82,212, 8,235,208,147, 14,218,234,138, + 66, 27, 7, 85,133,161, 31,208, 24,238,191, 72,174, 12,183,220, 66,204,225, 60,122,188, 25,130,228, 86,247, 19,187,243, 34,232, + 0,163, 67,205, 25,165, 69,255,206,103,232, 29, 96, 81,161,140, 43,200, 14, 21,162, 27,169, 58,121,128, 88,148, 33, 26,177, 87, +200,142, 23,167,215, 22,117, 17,135,229,170,213, 72,213, 84,169, 73, 25,150,128,110,176, 8, 66, 89, 44,240,110,147, 78, 5,182, +182,240,176,197,144, 18,197, 20,179,237,150, 14,243,236, 72,171,179,193,204, 48, 23, 34, 9,113,167,120, 37,122,128, 10, 30,148, +128,224, 33, 16,104,131,176, 10,152, 85,220, 50, 30, 59,172,180, 80,137,136, 96,230,205, 80,160,121, 71, 74,165, 90, 11, 57,160, + 96, 30, 81,154,215, 95,165,229,131, 93,215,169,107,109,161,172, 10,116, 2,174,134, 75, 11,135, 7,137,205, 10,201,133, 40,130, +133, 0, 94,176,108,184, 43,130, 83,154,107,140,120,110, 65,135, 38,153,235, 1, 21, 98,140,136,181, 34, 45, 36, 16,164,146,243, + 58, 68, 27, 66, 43,226,208,132,135, 57,234,218, 78, 78,113, 98,132, 92, 65, 44,224,238,100, 27, 81,137, 80, 5,141,130,173, 11, + 71,188,100,136,235,188,185, 53,175, 30,175,120, 85,138,192,204, 34,172,163, 6,226,235,200, 4, 21,143,129,234, 21,163,229, 34, +171, 11, 85, 2,142,209,187, 32,162,212,104,120,113, 20, 39,163, 84,247,230, 20, 38,109,121,181, 58, 71,114, 97,235,174, 35, 28, + 93, 56,166,105,157,247, 83,130,172,232, 59,101,163, 75,136, 36,232, 20,109, 81, 91,196, 91,184,220,204,176,146,233,250,141, 54, + 8,187,227, 46, 68, 81,242,168, 96,133,216, 69, 92,157,156,141, 72, 32, 4,163, 72,110,213, 48,157,226, 43, 16,150,184, 58, 93, +140, 72, 85, 36, 9, 57,183, 99,237, 52, 98,177,146,205, 24,250,117,200, 51, 84, 74, 54,242,209,109, 86, 11,103, 57, 63, 78,149, + 74,201, 74, 33, 35, 14, 73, 19,102,198,162, 20, 66, 63,240,216,191,189,159,139, 83,224,240,145, 45,114,110,181, 19,243,220,138, + 37, 85,157, 59,238,254, 4,159,248,228,156,143,221,113,152,139, 47, 57,194,229,151, 95, 74, 31, 15,160, 68, 86,217, 48, 90,205, +128, 57,184,143, 80, 58,186, 32,200,114, 93,216,153,148,213, 88,214, 69,142, 70,135,160,161, 67, 66,162,150,177, 69,146, 98, 70, + 98,162,230, 22,209,137, 82,154,129, 59, 12,212,149, 65, 17, 74,134, 33, 8,197, 90, 78, 83,130, 48,154,160, 98,132,210, 68, 99, +206,146,160, 51, 54,102,155,228,178, 98,244, 57, 51,113,146,119,172,182, 71, 66, 12,164, 16,168, 94, 40, 53, 97, 35,152,141, 40, +149,148, 18, 35, 74,210, 68,208,142,101, 90, 32,106,176,161,248, 86, 79, 13, 21,239,156,148, 21, 99, 73,144,129, 26,149, 90, 51, + 67,104,255, 95, 99,201,196, 24,232, 59, 90,196,101,110,148,222, 41, 8,154, 51,113,232,216, 62,226,140, 94, 40, 46, 45, 85,102, +218,238,237, 40, 12, 68, 68,157,101,172, 45, 99,105, 35, 26, 64,181,167, 19,165,178,164,118,145, 90,189, 21,116,166, 74,117, 39, +185,226,253,128,196,142,213,184,160,235, 35,174,180, 98, 82, 15,168,131,149,136,164, 74,164,178,169, 61, 75, 45, 4, 43, 56, 25, + 98,196,169,148, 12, 50,174,240, 80,208,216, 82, 31,203,177,165, 29, 24, 91, 4, 43,169, 98, 99,165,168, 48,247,138, 82, 80, 45, + 84, 47,120, 21,196, 5,247, 76, 74, 9,196,201,203,145, 82, 34,155,177, 9,161, 97,132, 90, 8, 4,180, 11,164,101, 97,177, 79, +176,226,212,186, 34,154, 65, 89,146,221, 24,147, 96,219, 75, 82,236,240, 46,112,248,216,162, 85,129,244, 74, 41,129,161, 19, 98, + 63, 99, 89, 35, 33, 4,102, 41,160, 67, 34,120, 70,150,137,126, 38,212,234,196, 82, 89,149, 86,243, 84,103,145, 92,140,152, 51, +221,178, 96,143,158, 51, 31, 35,157, 9, 34, 61, 27, 51, 97,105, 3, 75,131,125,174,152, 20,186, 16,241, 40,116, 8,193,109,157, +110, 19, 52, 70, 74, 23,208, 24,136, 97,184,127,161,119, 90,244, 46,210,156,180,216,199,243, 18, 38,223, 41,241, 21,167, 21, 70, +167,254,188,137,110,109, 46, 22, 90,141,141,205, 8,247,243, 28,156, 36,107, 64,174,160, 82,112, 9,237,127, 63,209,198, 74, 12, +117, 97,233,176,223, 13,143, 66, 89, 22, 74, 16, 66, 8,132,141,202,220,156,154,141,205, 0, 94, 11, 93, 13,148, 85, 75,225,185, + 47, 9, 86, 89,216,136, 14, 70,239, 61,228, 57,177,223,135,149,163, 68, 81,199,188,133,217, 53, 40,238,165, 9,145, 52, 15,189, + 82, 17,147,245,223,104, 5, 71, 42, 4,243, 86,249, 41,134,135,208,170,111,173, 21,184,137,180,220, 89,147,127, 97,180,102,165, +107,144,150,159,174,235, 66, 55,117, 28, 71,221,113,109,129, 96, 49,199, 5, 52, 42,110, 45,103, 94,139, 19, 66,196,131, 80,169, + 68,105, 66, 83,173,213, 74, 6,109, 21,247,230, 17,213, 76, 31, 91,248, 78,140,117,117, 56,132,216, 34, 4,209,149,162,237, 31, +216,220, 40, 53, 55,143,199,149,178,174,206, 15,162,212, 85,133, 24, 33, 4, 48,195,179,145,139, 97, 34,120,208, 22,209,200,144, +146, 81,181, 21,178, 17, 90,214, 98, 92, 23, 15,105, 13,116, 23, 62, 1,205,119,177,216, 62, 70, 76, 45, 82, 81,106, 38,105, 36, + 68, 69,106, 5,107,245, 8, 82,155,181,232,102,172,162,183, 10, 85,175,184, 86, 52,117,212,172,152, 87, 66, 7,190,180,118,103, + 26,152,103,146, 37,198,213,156,213,124,155, 99, 71,140,227, 34, 36, 85,162, 45,201,101,108, 6,140, 71, 86,139,192, 34, 69, 98, + 76, 72, 15, 27, 49, 49,196,158, 16, 91, 38,176, 87,216, 30,141, 82, 43, 42, 21, 13,161,213, 69, 72, 70, 61, 96, 34,237,105, 2, + 17, 36, 54, 35,174,138,173,207,181,208,229, 30,247,138,197, 66,136,161, 21,255,100,103, 8,210, 12, 17, 51, 98, 23, 17, 89, 23, +139,212,130, 70, 97,156,111,115,236,174,227, 28, 91,117,108,110,238, 99, 85, 90, 74,194, 37,162,235,168, 69,174, 43, 68, 19, 49, + 69, 44,175,184,228,130,253, 60,254,224, 38,159,252,248, 17,114,128,228,235, 28,183,116, 28,191,235, 19,220,126,231, 81, 54, 30, +117, 57,125,136,204,183,143,241,209, 15,222, 70,234, 6, 46,126,204, 99,216,119,193,197,140,139,145,236, 5,233, 3,193, 21,245, +246, 79,213, 6,249, 2, 99, 11,193,166, 52, 80,124,196,149, 38, 72,210, 19,146, 65,137,228, 58, 18,226, 58,239, 43,125, 75,199, +228, 12,181,195,195,136,228,130, 81, 89,209, 55,175,192, 50,173, 74,197,113,109, 69,137,102, 70,116, 1, 70,198, 26, 49, 5,199, + 88, 89,100, 30,150,116,162, 4, 15,204,197,232, 76,153,251,146,141,125, 61, 41, 43,110, 17, 20, 66,173, 48,182, 58,128, 16, 91, + 97,107,222,106,181, 24,125,236, 24, 87,149, 81, 42,251,117,134,176, 65,149, 5,163, 45,241,212, 17, 61, 17, 61,224,181,213,115, +228,117,137,178,148, 17,151, 74,145,196,184,204,140,101,217, 60, 62,239,218,255, 69, 40,136,111, 96,186, 36,206, 6,202,184,162, + 11, 27,104,167,176, 20,136, 21,195,113, 81,100, 95, 66, 77,137, 25,146, 27, 43,235, 90,154, 65, 2, 30, 35,186, 26,177, 0,193, + 33, 91, 33, 58, 80, 29,223,232,137, 56, 35, 35, 53, 27, 9,199, 70, 97,236,105,199, 98, 61, 49, 26,162,165, 25, 85, 52,195,175, +172,203,181,163, 67, 10, 21,186,196,106,158, 33, 20,130, 7,156, 72,214,142,104,133, 49, 26,189,206,208,218,147,217, 34,142, 70, + 77,173,202, 91, 81,138, 85,250,184, 46,160,204,133,124,116,201, 50, 26, 93,104, 79, 33,104, 22,170, 23,196,135, 22,205,202,149, + 16,133,162, 74, 20, 39, 58,148,174, 99,144, 30, 75,129, 46,118,100, 59,202,102, 95,153,177,201, 98,181,141,205, 43,165, 70,220, + 70, 58, 89, 17,242, 6,139,232, 16,140, 33,111,128,192,106,105,216,152,241,141,128, 95,160, 32, 61,145, 14, 17,167, 4,103, 89, +188,229,247, 99, 70,139, 16,246,117, 45, 74,164, 66, 52,109, 85, 55, 30,128, 74,180,136,122, 97, 24, 28,237,226,121,144, 49,199, + 35, 68, 51,250, 20,206,155,231, 43,214, 82,181, 73, 32,166,120,222, 68,215,141,123,106,185, 82, 60,191,185,122, 0, 51,168, 37, +227,222, 34, 51, 26, 34,203,229,146, 96, 10, 38, 84, 10, 94, 71,142,199, 66, 23,133, 42, 66, 94, 25,186,168,204, 54, 54, 16,151, + 22,145, 21,133,161, 99, 57,102,198,156,155,147,103,199,241, 60, 96,195,128,213, 5, 98,133, 65, 58,142,215, 57, 33,116, 68,168, +248, 58, 92,237,102, 45,204, 46, 77,108, 52,134, 86, 69, 46,180,220,175,182,240,141,172,159,101, 48, 49, 68,194, 58,111,211, 66, +164,110,134, 75, 59,200, 90, 11,130,182,112,181,234,218,238,106, 23, 9,113, 4,199,204,113,137,136,210, 30, 45,145,102, 73, 86, + 49,204, 29, 83,105, 85,182, 42,235, 4,124,179,130,146,180,160,183,212, 17,183, 64, 81,232, 82, 69, 44, 96,165,162, 8, 53, 52, + 35,195,112,130, 64,169, 74, 22,133,149,177,180,202,108, 22,169,185, 80,150,137, 16,140, 40, 21,243,212,142, 73, 13,169,173,224, +206,173,172, 31,229,232, 91,228,193, 10,170,177, 21,212,137,181, 71,235, 20,186, 96,216,168, 56, 74,176,140, 5,184,236,241,151, +242,180,164,252,201,159,207, 57, 94, 13, 66, 19, 58, 17, 65,157, 22,154, 39,147, 84, 25,173, 34, 26,136, 49,144,180, 85,255, 86, + 10,120,171, 63, 48, 17,124,149,169, 93, 98,232,218,113,206,196, 89,141,115,142, 29, 94,114,116,203,200, 12, 84, 32,132,140,212, + 5,243,197,138, 85,117,204,140, 64, 89,187,229,129,161,235,209,206, 24,187, 13,134, 80,233,251, 68,232, 2,105,150, 72,177,165, + 94, 70,175,104, 49, 66,215, 66,239,129, 86, 84, 41, 2, 86, 28, 9, 52,207, 77,157, 32,130, 86, 33,196, 74,169, 21,207, 1,145, +138,105, 32,104,165,140,161,229, 81,125,132,234, 20, 11,104, 39, 88, 94,113,228, 19,135, 57,124,236, 24,139,165,209,111, 30, 64, + 67,199,170, 44,201,117, 36,174,115,143, 59, 6,147,149,150, 30, 25,129,237,197,130,203,159,113, 25,183, 94, 52,227,246, 59,182, + 8, 2, 46, 17,100,201,209,163, 71,208,126,131, 11, 47, 24,216, 47,129, 44,151,176, 61, 6,238, 62,114, 23,135, 63,244, 97, 46, +185,248,110, 46,189,248,113,244, 27,155,148, 85, 69,129, 24, 30,133,198, 57,105, 44,108, 85, 3,156, 32,177, 25,169,210,211,245, +153, 82, 86, 88, 30,233,215, 79, 95, 72, 8, 4, 28, 82, 68,215,145,140, 81, 87,212, 26, 8,204,168, 97, 78,151,189, 21,235, 69, +176,249,255,207,218,187,245, 72,150, 29, 89,122,159,217,190,156,227, 30,151,172, 11,139,108,146, 98,179,187,213, 45,116, 79,235, + 50, 45, 13, 4, 12,160,145,158,244,191,248,167,244,162,223,160, 7, 61, 8,141,145, 26, 28, 77, 95,201,170,188, 71,132,187,159, +115,246,222,102,122,176,157, 73,189, 8,146, 80, 25, 0, 1, 22,193,204, 10,143,112, 63,123,219,178,181,190, 69, 60,252,138,226, + 24,228,202,169, 14, 52, 17,198, 38,187,145, 60,129, 62,210,184, 49,198, 1, 57,179, 12, 65, 49,186, 88,236,189,173,199,234, 32, + 85, 74,137,207, 88, 58,194, 72, 34,181,211,110, 3,115,167,214,196,182, 59,105, 93, 89,134,179, 15,208,250, 68,238, 17, 61,124, +249,120,144,189,160,201,227,194, 41,194,154,160,229,193,117, 55,212, 20, 74, 65, 84,168,165,177, 15,167,230, 19,227, 56,208, 90, +176,110,160, 21, 21,165,228, 74, 86,167,177, 33, 75,165, 31, 27, 75,209,240,215,164,133,235,209,201,201,145, 28,254,154, 36, 11, +167, 7, 97,219,122,188, 95,186,114, 28, 66, 89,194,157,109,105, 39, 17,207, 26,241, 48,104, 30,227, 25, 89, 64,151,132,111, 66, +247,103,170, 36,106, 94,105,182,113,236,157,211, 90,226, 18, 91, 43,227,114,197, 51,120,235,177,225, 77, 57, 46,128,169, 96,118, + 76,149,232, 20,134, 51, 49,202,249,132,121,166, 30, 79,116,205,208, 43, 35, 13,134,221,232, 71,167,171,226, 61, 46, 93, 55, 55, +180,213, 48,227, 46,149, 86, 22, 28,227,180,156,121, 76,149,151,219, 65, 33, 33,154, 73,169,208,172,177,206, 11, 3,174, 92,183, + 78, 25, 23,100,141,203, 15,251,142,202,142,164, 19, 47,251,134,237, 78, 57,125, 5,115,152, 89,164, 80, 30, 23,188, 11,108, 30, + 41,128,118, 69,234,202,121, 45,216,101,196, 51,112, 81,212, 19, 36, 97, 59, 58, 15, 57, 97,110,120,142,213, 78,169,133,161, 66, +113,229, 84,214, 31,125,160, 25, 17,243, 13,123,129,144, 74,249, 98,211,174,185,225, 54, 88,138,198,100,246,165, 14,117, 15,191, +137, 26,228, 90,190,184,252,126, 52, 16,107,148,228,108, 12,220,102,242,234, 20,178,134,238, 32, 46,236,215, 65, 90, 42,231, 82, + 80,117,174,190,115, 60, 93,184, 63,159,177, 62,120,105,157,243, 93, 98, 32,120, 63, 81,229,160,237, 66, 83, 71,181,160,253,129, +131, 27,221, 55,106, 46, 28, 71, 33, 35, 25,241,136,148,185, 15, 64,195,192,164, 26,147,245,208,207,175,215,220, 64, 50, 88, 11, + 73, 91,115, 28,248,128, 15, 99,140,216, 53, 38, 28, 12, 4,197, 60,166,244, 33,131,146,231,131, 61,129,245, 61,114,133, 26,242, +157,247,129,251, 64,139,226, 3,116, 76,243, 93, 6,119,101,152, 32, 24, 41, 73,196,153,188, 77, 9, 59,178,219,106, 48,114, 39, +229, 18, 89,249, 41, 81,187,199, 69,193,136, 9,188,211,201, 25,150,145, 66,174,215,185, 66, 72, 48,218,148,163,177,240, 18,244, + 78, 31, 29,205, 25,247,200,124,138,247, 57, 65, 11, 84,193, 40,168, 59,102, 74, 34,145, 5,154,109,180,174,164,212,120,243,219, +255,149, 81,157,125,186, 11,173, 77, 53,255, 56,200,178,132,241,110,116,208,138,168,161, 73, 25,195, 73,150,145, 20,145, 48,215, +144, 94,146,128,166,152,168,205, 26,251,190,241,241,165,241,225,121,103,179,153, 2, 72,141, 36, 59,182, 15, 46, 35,162,125, 70, +248, 25,134,132,148, 37, 46, 92,143, 3,237,198,222, 52,190,191,227, 64,114,226,252,205,119,220,221, 87, 62,190,190, 6, 43, 64, + 51,168,227,219,193, 48,161,219, 65,169, 43,146, 50,227, 0,211, 48,196,173,185,114,120, 28,246,174,130, 74, 15,222,193,209, 99, +106,177, 30, 43, 30, 28, 90, 39, 73,231,250,242,129,167,167, 15,124,120,238, 28,230,136, 56,185,111, 56, 95,163,105,161, 95, 14, + 70,106, 97,104, 36, 51, 92, 65, 58,221, 28, 21, 37,201,193,127,253,159,255,148,209,158,249,159,254,231,255,157,102,160, 90, 24, +199, 21,183,196, 87,231, 19,169, 29,188,125,121,225,116,122,224,235,175,190,227,187,239,254,154,143, 47, 47,188,249,253, 63,242, +230,245,191,231,143,126,246, 13,223,126,253,115,206,143, 95,209,246, 43, 38,198,186, 22,206, 30,174,119, 81, 71,108,167,212,130, +250,202,170,202,166, 47,136, 74, 68,182,214, 21, 90,199,219,149, 83, 17,182,230, 72,202, 20,156,222,183, 88, 65, 45,153,126, 27, + 72, 17,252,172,113,136,102,197,117,128,118, 92,194, 45, 47,119,138, 30, 70, 59, 6,235, 84,202,142, 22, 70, 20,243, 48,144,105, + 90,168,230,248,165,179, 87, 69, 52,209,111,142, 90,225,112,200,107, 24, 45, 87,117,182,222,232,125,112,174,225,141, 41, 77,216, +211,206, 80,143,239,161, 43,195,116, 94, 94,130, 49,208,198, 1,182,144, 79, 39, 82, 51,196,148,209, 54, 68, 79, 48,156, 49, 12, +147, 75,172,157,172,163, 37,179,228,132,221,118,242,233, 1, 31,141,197,157,230, 70,202, 15,148, 82, 40, 52,158,111, 27, 85, 87, +198,233, 32,159,156, 59, 18,125, 52, 76, 50,218,140,242,237,137,227,221,109,122, 38, 10, 35, 37,178,117,106, 79,236, 52,198,136, +235,185, 72, 13,207, 65,135, 68, 39,167, 76,111,225, 77, 41,154,169,107, 24, 1,251,238,184, 14, 54, 55, 82, 3,225,140,248, 65, +202,141,145, 11, 73, 51,218,149,221,110, 44,114, 66,232,160,157,222,194,124,123,115,167,111, 59, 75,238,100, 81,110,192,144, 30, +198, 57, 95, 88,115,194,252,133,113, 50,170,148,240, 27,245, 22, 23,226, 82, 57,110,157,236,194,230, 87,186, 23,216, 14, 74, 27, +108, 98, 28, 99,193, 77, 41,192,177, 30,208,157, 98, 32,169,144,238, 31,177,214, 24, 55,208,154, 72,105, 39,121,230, 65, 87,158, + 85,209,190, 65, 90, 80,132,147, 14,236,225, 76,139,253, 17,101, 41, 88,118, 14,230, 10,205, 18, 57,103, 54, 19, 74, 10,246, 72, +169, 25, 73, 57,100,136, 84,168,107,249,209,123,234, 49, 71, 83,117, 67,220,191,200,142,254, 15,151, 5, 34,107,159,132,255,231, +140,220,255,255,175, 62, 96,140, 78, 86, 35, 45,235, 23,219,213,127,250,121,140, 14, 58, 58,189,247, 80,185,213, 73, 35,225,123, + 35, 37,167, 38,199,199,160,120, 5, 51,174,215,131, 34,194,157,172,152,108,112, 26,220,146,147, 13,218, 21,172, 56, 35, 95, 41, +205,120,113,168,115,197,109,150,200, 86,131,111,144, 43,164, 51,233,143,126,241,199,191, 41,105,198,246,199,244, 87,167,216,111, +171,134, 49, 42, 79,121, 69, 16,146,204, 7, 64, 4,168,208,153,197,150,252, 73,130, 23, 82, 73,161, 90, 11,184, 42, 57,101,210, + 92,195,185,143, 48,181,187,204, 76,110, 10,202,129, 7,140, 6, 97,238,160, 53,114,242,238, 1,234, 40, 5, 45, 74, 34, 99,222, + 2,176, 66,194,100,238,173, 73,136, 38,134, 9, 41,205,139, 9,196, 63,139,146,167,187,144, 17,113, 49,106,138, 9,208, 70,236, + 86, 82,152,119,204, 13,173,225,106, 55,111, 97, 28, 35,148,134, 54,122, 56,180, 61,192, 25, 38,241, 51, 48,226,127,179,153,217, + 30,238,211,221, 45,236,163,243,254,186,199,228,111,134,117, 67, 25,177,103,105, 7, 46, 66, 82, 97, 31,206, 24, 17, 49,241,102, + 52,179,152,142, 36,209,123,184, 85,201,153, 84, 29,235, 79,124,120,243,196,247, 31, 14, 94,122,130,162,241, 90,180,225,182,113, +244,169,136, 76,233, 74,145,128,226, 0, 18,118,248,216,253, 15,167,143, 3,243,193,222, 99,106,249,197, 79,127,202, 47,190,174, +188,127,190,177,223, 54, 94,158,223,113,187,190,240,244,241,137,231,203,133,143,207, 23,158, 95, 94, 24, 14,119,107, 65,181,198, + 95, 54, 52,128, 55, 22, 38, 30, 18,216, 16,186, 55,204,103,254,212, 59,163,117,182,231,143,124,120,255, 3,223,191,121,207,251, +107, 15, 94,193,132, 29,229, 82,249,238,155,175,184, 91, 86,142, 99,139,181,132,135,145, 83, 61,110,111,214, 27,244,198,162,133, +191,249,203, 95,241, 39, 63,251,138,191,251,199, 39,222, 94,247,144,133,199,198,240,131,156, 43,215,219,198,205,140, 54, 58,151, +203, 27,164,191, 80,214,133,199,243, 79,233,238,188,121,243,129,143,111,127, 79,178,198,122, 87,169,158,240, 97,116, 31, 97,128, +114, 35,159,214, 80, 85,134, 98, 73,200,222,145, 2, 62, 4, 59,224,126,133,214,226,189,159,165,162, 53,147,221,208,113,112, 76, +178,131, 15,137,196, 69, 62, 49,134, 35,214, 25,110,228, 97, 12, 22,202,168,228,210,145,228, 88, 75,184, 77, 16,202,112,164, 19, +123,113, 19, 24,194, 41, 47, 52,160,119, 71,151, 18,224,166, 30, 38, 69, 39,140,120,153,140, 46,149,222, 19,106, 78, 89, 6,189, + 31,244,121,105,204,106,212, 84,241, 84,177, 53,226,160, 41, 37,214,101,165,213, 20, 81,206,139,177,245,193, 16,165,181,131,205, + 99,253,208,183, 13, 81, 39,245,202,146, 87, 82, 54,198,176, 88,215,168,147,181,224,201, 89, 24, 36,133, 77, 2, 16, 85, 82,162, + 97, 20, 77, 20,207, 32, 39,228,214, 64, 11, 3, 98,191,222,143, 48, 18, 10,248, 72,241, 41, 55,167,239,161,106, 68,230,253, 96, + 45,113, 57, 53, 83,146, 41,146, 70,172, 79,236,142, 61, 53,134,117,116, 79,180, 30, 23, 74,119, 65,164,179,141,131,222, 65,165, +134, 74, 54,182,112,199,219,224, 44,101,174, 27, 21,215, 59, 78, 53, 5, 19, 33, 43,231,122,138, 11, 14, 22, 23,251, 28, 74,136, + 31,134,168,146,206, 25, 29, 59, 93, 29,219,140,209, 15, 52, 45,145, 18, 34,163,230,140, 69, 24,217,168, 67,168, 89,112, 93, 66, +124,172,133, 69, 5, 74,198,215,133,180, 9,181,156,201,154, 80,205,184, 20,138,215, 88,103,121,192,183,150, 44,156,239,148, 75, +111, 12,115,106, 2, 58,200,110,164,109,160,165,224, 38,156, 22, 9,181,117,178, 31,210, 92,107,230,148, 88,180,240,147,111, 31, + 88,239, 31,127,156,153,205,224,242,124, 99,244,131, 34,131,135,199, 59, 72, 63, 62,210,214, 28, 46, 79, 59,118,220,184, 95,149, +122,119,255, 69, 14, 95, 3, 94,110, 70,191, 94, 41,222,120,120, 40, 72,185,251, 98,135,122, 3,222,188,111, 92,222,190, 99,180, + 43,230,198,190, 31,140,209,226, 12,114,231,198, 32, 75,101,119,167,103,163,223, 2,110, 52,138,176,109,141,102, 47, 17,183, 59, +223,177,223,174,232,166,140, 28,166,206,228,149, 38, 3,247, 28,151,190,179,210, 7,236,151, 39,182,235, 59,210, 79,126,254,199, +191,201, 51,130,150,210,148, 89, 85,113,139, 55,130,194,220,241, 41, 37, 41, 62, 65, 48,174, 78,174,133,164,142,183, 17,123,107, +143, 75, 64,164,205,226, 67,230, 6,168,199,100,251,233,224,158, 57, 53,145,132,206,195, 81, 68,200,154,227,154,147, 4,117,139, +184,146,228,121, 11, 49,242, 8, 83,153,121,184,237, 19, 57, 60, 0, 51,226,158,210, 39,192, 73, 2, 27,177, 91,148,136,108, 73, +174,244,214, 34,202,229,130, 73, 33,143, 1, 35,148,130,125,239,241, 32,241,120, 45,195, 27, 54,156, 82,115,196,213, 90,143, 7, +108, 73,145,145, 86,157,119,145, 78, 74, 11, 69,116, 26, 8, 7,185,156,226,114, 82,148,156, 64, 75, 66,143,142,117,137, 67,214, +253,243, 53, 41,139, 48,136, 41, 85, 20, 36,231,184,116,184, 7,145,202,231,238, 80, 5,177,141,203,199, 55,252,238,119, 55,158, +246,133,161, 9, 77,176,172,137, 36,141,190, 31, 28,157, 9, 15,154,210,213,167,108, 54, 25,153,196,189, 16,114, 45, 36,202, 17, +106,137,217, 96,223, 55,236,104,177,191,237,198,245,227, 19,111,222, 63,243,114,221,216,154,209, 71,120, 28,122,173,124,245,211, + 87,124,247,112,230,184, 28, 17, 69,148,198,104, 35,124, 9,132,223, 33,232,119,142,123,199,108,208,219,193,203,251, 55,124,255, +230, 53,239, 94,118,204, 39,188,100,102,236, 98,194, 87,198,237,133,235,229,153,235,237,133,125,116,122,111, 28,183,157,253,104, +225,129,240,240,129,124,124,255,145,114,255,138,255,225,191,251, 11,164, 57,127,247, 47,111,177,105,154,234,214,200,170,180,227, +160,245,142,245,206, 72,202,211,118,227,118,123,135,182,141,188,156,184,187,251, 9,221, 18,191,127,253,134,167,119,175,201, 58, +184,171, 39, 60, 45, 72,249,164, 74,229,136, 90,114,101,120, 35,175,107, 92,230, 90,163,139,211, 70, 67,150,204, 72, 43, 93,149, +214,118,250,110,152, 36,134, 57, 72,162, 46,105, 78,186,113,120, 38, 58,201,136,139,154, 84,234,146, 40,192,229,104,168,198,131, + 1,132,243,114,199,176, 22, 83, 62,198,209, 7,121,105, 84,237,248,176, 88,222,137,179,222, 45, 20, 45,248,216,201, 82, 64, 50, +186,196,231,184,212,160,199,221,118,167,150,206,216,226, 66,172, 8,199,209, 81, 9,176,210,162, 74, 19, 56,110, 59,214, 6,123, +151,152, 50, 59, 28, 42, 28, 22,123,110, 12,186, 27, 85,149,130,241,210,246, 9,131, 2, 41,107, 76,251, 9,106,169,164,147,210, + 53,179,228, 21, 45,130, 22,200,150, 89, 79, 5,245, 51, 71,143,125,124,213,206,209,156, 70, 99, 61,173,161, 94, 20, 1, 73,184, +159, 41,169,227,218, 16,141, 72,220, 80,193, 74,161,158, 18,227, 24,225,201, 73,130,143,193,190, 95, 16, 27, 36,113, 54,187,146, + 90, 24, 29,199,100, 72,157,114,162, 42,168,156,130,135,224, 21,207,137,162, 39, 76, 13,242, 2, 42,172,229,192,250,136,103, 70, +238,100,171,140,222,232,214, 24, 12, 48, 67,172, 49,124, 32,229,196,184, 12, 36,133, 54,182, 15,199,178,147,151,149, 98,145, 54, + 89,238, 86,242,169,178,172, 15,152, 15,244,124, 38,141, 65, 42, 80,101, 33,121,192,142, 74,142,100,140, 75,227,252, 80,208,180, +224,117,144,186,208,125, 65,178,179, 32,124,120,110,200, 80, 30,214, 66, 61,192,199, 96,152, 80, 78, 39,238,139,144,242,140, 28, + 39, 72,154, 40, 75,250, 67, 28,182, 86, 78, 53,243,147,111,191,161,252,200,156,250,165, 67,219, 54,122,111,172,234,220,189,122, + 12,114,214,143,252,218, 28,110,151, 6,125,231,126, 77,148,243,221, 23, 57,212,119,224,118, 25,180,118, 35,251,193,227,227, 25, +201, 95, 46,206,118, 1, 62,126, 24, 92, 63,126,192,246, 23,108, 42,219, 85, 74, 92, 32,187,147,125,112, 28, 17, 51,190,211, 28, +145,229,220,185, 28, 7,173, 9, 71,235,148,121, 33,189,202,141, 62, 4,233, 27, 89,140,161, 3, 93,148,109,187,210,112, 84, 23, + 56, 6, 42, 43,102,144,126,254,235, 63,251, 77,118,139,105, 78,102, 28,102,146,162,196,231, 1,238, 80, 74, 72,211, 17,237,153, +128, 62, 15,171, 62,104, 76,204, 30,121,116,149,136,100,105,170,177,167,159,230, 57,155,217,100, 33, 12,105,174, 22,217,113,211, +153, 37,118, 72, 97, 30,242,153, 96, 27,102,152,196, 60,220, 90, 28,180, 72, 69, 75, 33,137, 33,195, 24, 90, 98,183,157,156, 42, + 51,235,169,147,234,227, 4,121, 46, 43, 62, 12, 41, 74,170, 14, 1,181,194, 11, 20,141,201, 62,238, 17,131, 97,142, 90, 28,174, + 41, 49,205, 14,142, 89,153, 59, 62, 71, 78, 9, 29, 3, 36,192, 47,137,200, 98,143, 20, 7,166, 72,162,148,105, 36,235, 3,213, +128,139, 4,148,102, 34, 19, 75, 32,119,179, 13, 84,202,140,158, 52, 92,116,238, 92, 35, 38, 40,169,128,238, 92,223,191,225,251, + 15, 74, 75,103,114,145,160, 82, 45, 5, 31, 55,142,126,224, 54,147, 6, 30,153,250, 88,129, 88,208,222,122,251,188, 53,178, 57, + 57,206,197, 18,195,140,251,187, 7,206,119,143,116, 73, 52,235,236, 47,239,121,243,225,194,112,161,164, 76, 78, 53, 94,203,112, +126,249,103,127,194,255,248,239,254,138,124,249,200, 63,188,121, 14, 85, 39, 71,244, 44,140, 45, 13,233,113,120, 41, 17,227,186, +188, 60,241,254,245, 27,222, 61,239, 33,181,187, 78, 73,109,174,111,156,112,233,139,243,244,114,225,233,118,176,247,192,219, 98, +206,152,223,103,146,132,106, 60,152,250,232,216, 72,252,155,191,249, 19,254,252, 63,253,138,223,254,159,239,121,253,230,198,178, +158, 89,180,208,143, 78,235, 35,176,182, 2,226, 33,165,154, 65, 27,141,214,175,164,190,115,127,126,164,222,125,195,232,198,247, +191,251, 23, 62, 60,255, 64,173,194, 82, 79,156,239, 87,164, 75,100, 13,106, 76, 76, 48,200,233, 20,138,210, 72,120,239,164,225, + 28,214,113, 14,100, 12,108, 76,184, 82, 50, 24,161,110, 45, 57, 50,195,162,145, 6,168,249,132,138,145, 37, 83, 52,115,140,128, +205, 8, 32,169,134, 95, 37, 67,206, 74,183, 20,239, 53, 13,200, 75,235,138,187,163,106,104,174, 72,201,236,251,129,118, 65,244, +158,230, 91, 92,106,135, 33, 57, 81,199, 74, 75,145,141, 85, 73,193, 65,144, 68,210,206,210, 65, 88, 35,159,223,161,183, 78, 58, + 58,187, 42,154, 51, 99,187, 49, 36,194,227,169,198,251,191, 44, 11, 99,190,223, 4,199, 60,145,215,138, 53,135,197,144,155,161, + 57,211, 44,179,236,241, 75, 30,101, 48,154,227, 73,200,167, 76,245, 48,145,157,214, 48,138,110,251,152,175,121,141,201, 56, 41, +194, 17,176,161,226,184, 4,177,177, 31, 7, 70, 99,108, 7, 34, 70,235, 13, 90,103,219,247,121,216, 6,186,121,248,192,123,227, +192,240, 84,201, 75,152,106,207,229,142,114,127, 79,146,196,146, 6, 35, 13,234,162,192, 96,223,198,140,240, 54,250,109, 48, 10, + 28, 7,248, 1,105, 52,198,128, 65,236,121,157,142,119,195,122,193,117,204,149,228, 58,221,246,149,122, 62,145,123, 40,116,105, +209,216,169,114, 38,175, 43,232, 32, 31, 3, 22,161,166, 12,135,209,115, 13, 38, 65,114,238,152, 70,222, 53,209, 94,174, 88, 18, +186, 11,125,187,114,151,148,230, 61, 20,128, 83,172, 96,214, 85,233, 75, 9,111, 75,118,200, 9, 75, 78,238, 33,127,202, 52,250, +253,225, 80, 47,156,150,194,119, 63,251,246, 71,187,202,119,131,118,219,176, 54,184, 95, 19,235,195,195, 23,217, 81, 31, 6,219, +181,225,253,202,227, 93, 37,175,231, 47, 35,189, 3,215, 91,103,220, 54,238,115,227,252,245, 99, 80,195,190,212, 62, 29,120,243, +177,113,121,251, 26,111, 47,184, 88, 80, 39, 85,233, 30,135,114,247, 66, 27,157,189,109,144,140, 13,197,181,114,186, 9, 66, 67, + 74,130,182, 96, 99,199,250, 9, 49,199, 82, 97,116,231,168,141,211,178, 80, 53,135,113,243,184, 34,154,113,137,132, 81,250,217, + 47,126,254,155, 58,163,106, 17, 61,179,216,239,105, 24,204,116, 2, 45, 2, 37, 30,147,183,144, 99, 7, 15, 49,221,231, 68,177, + 21,194, 0, 0, 32, 0, 73, 68, 65, 84,132, 16,135,122,210, 12, 89, 80,151,208,230,221, 64,193,199,204, 47,234,188,107,185,144, +116, 58, 1,125, 26,211, 84,241,110,100,137,105,210,231, 3, 3,203, 65, 66, 83, 38, 99, 62,205,195,111, 96, 34, 51,203, 62, 66, +142, 99,238, 4,154,131,102,180,132,201, 79,154, 51, 98,150,142, 15,153,134, 41,200,124,238,180,201,193,150, 47, 57,216,243,180, + 64, 78,182, 17,152, 63, 98,202,144, 20,210,188, 90,142,125,158, 13, 36, 7,234,154, 4, 57, 39, 20, 13,167,123, 82,220,131, 37, +143,200,204,250,134,220,214,123, 76,202, 33,203, 58,147,178,139, 23, 69, 44,190, 79,215,248, 51, 99,127,225,233,253, 51,175,159, + 18,105, 89, 88, 39,188,231,180, 56,139,237,188,108, 59, 71,159,224,155,222, 17,143,139, 80,100, 11, 36, 30, 64, 62,232,198, 52, + 57, 6,109,207, 49, 82, 86,212,149,245,116,207,207,190,125,197,154,225,250,244,150,119, 79,183, 88, 93,168,163, 58,141, 26, 34, +172,175, 94,241, 55,255,234, 79,248,235,111,132,191,255,167,183,188,185,244,240, 37,244,184, 68,237,163,135,234, 51, 34,171,127, +187, 62,243,238,245,247,188,126,247,204,203,209,255,192,120, 22, 72,162, 51,187,173, 80, 79,156,214, 19,231,229, 20,108,112,133, + 84,106,252,238,166,146,148, 83, 10,208,141, 74, 80,187, 4,110, 47,207,252,228,171,159,242,223,252,247,127, 5,183,157,255,240, +247, 55,150,124, 98,185, 91,192,149,247,239, 63, 48,218, 17, 25,243,137,239,209, 65,236,231, 81,142,113,176, 31, 47,120,187,178, +148, 68,215,149, 91,203,124,255,230, 45,251,245, 61,171, 36,238,238, 86,212, 66,137, 74, 54, 87, 36,214, 49,155,188,128, 18, 80, +165,173, 53, 24,157,165, 46, 65, 81, 28,193, 2, 72,105,161,151, 18, 10,211, 17,236,248, 69, 43, 37,215,169,153,236,116, 61, 2, +102,148,133,179, 69,212,104,117,195,108,160, 18, 24,213,172,137, 83,130,158,192, 69, 67,121, 74,137, 84,238, 56,174, 7, 41, 67, +173, 39,204,157,180,148,144,216, 70,164, 20,186, 55, 52,103, 52, 13, 84, 22,154, 25, 49, 64,198,229,128,212,217,122,167,119, 99, +191, 29, 52,119,218, 62,240,113,196,159, 21,165,230,130,119,137, 11, 77, 73, 48,110,248,161,236, 99,114,255,213, 97, 55, 18,209, + 7,208,236, 50,209, 90,157,230, 7,226,133, 34, 66,147, 22, 88,227, 4, 89, 19,125, 20, 46, 91,172, 27,214,114,166,232, 96,244, + 62,213,190,129,143, 78,167, 80,122,101,140, 27, 41,221,147,125,208,199, 17,208,165,174,200,114,194,250, 96,169, 43, 57, 87,210, + 42,113, 33, 28,193, 67, 88,242, 61,140,142,211,233, 22,234, 68,215, 45,232,126,163,115, 88,166,237, 1,231,233, 54, 98, 79, 47, +112, 52,167,106,152, 26,135,218,132, 7, 13, 82, 73,147, 73,176,204,174, 9,101,121, 88, 88, 79, 25,151,232,108,168,229, 1,181, + 74,150, 70,185, 91,112, 18, 37, 67, 27, 91, 12, 58, 61, 46,111,167,197,130,137,225, 7,212, 19,227, 58, 56, 68,216,125, 96,215, +128, 15,229, 57, 28,136,194,122,206, 36, 93,145,243,202,114,142,157,184, 29, 70, 89, 75,100,128, 37,145,151, 66,150,132,245, 88, +129,174,121,198, 3,179, 33, 20,114, 41, 60,156, 50, 63,249,238,187, 31, 61, 85,111,221, 57, 46, 27, 98,131, 87,119,153,188,222, +127,145,195,113, 27,112,123,217,200,182,243,234,171, 19,146,215, 47, 38,143,239, 91,195,142,141,251,234, 44,143, 15, 95, 4,148, +243, 57,163, 14,188,121,119, 99,123,247, 6,250, 5,213,248,252,185,135, 15,196, 59,236,109, 64, 13,117, 73,119,135,214,216,135, +177,239,161,138,221,221,175,236,109,208,201, 20, 77,236,126,227,118,187, 48, 42,228,177, 34,239,131,155,208, 44,206,179,163,237, +164,227, 66, 27, 78,250,238, 23,127,252,155,172, 97,116, 19,141,188,117, 87, 13,200,134,195, 32,226,108,250,153,160, 27,211,171, + 38,254, 80, 86,226, 51,163,155,130, 80,198,176, 57, 5, 8, 33, 46, 71, 30,219,108, 96, 35,136, 96,146, 34,215,109,170, 72,142, +189,152, 89,144,112,212,163,168, 69, 82, 69,179,196, 11,159,178,212,128,192, 97,166,112,144, 74,206,104, 17,100, 26,243,196,161, + 58, 12, 29,225,206,111, 62,127,168,134, 90, 24,234, 28,157,228,179, 17,248, 71,162,112, 37,101, 16, 73, 44, 89, 40,165,196,116, +167,160, 86,130,158, 39,177, 23,197,162,232, 70,240,136,228,232, 64, 72,168, 6,136, 70, 52,152,232, 17,145, 82,188,143,208,185, + 71, 60,140,149,248,128, 53, 59,102,236,203, 25,189,135, 44,159, 37, 28,251, 30, 12,252,254,252,158, 31,222,124,228, 67,187, 99, + 89, 22,138, 6, 63,191, 36, 7,105,124,120,186,226,158,240,110,147,159, 31,174,236,214,108,210,231, 36, 32, 55, 22,135,178, 58, + 33,188, 10, 81,194, 49,226, 66,247,234,171,123, 30, 11, 60,191,125,207,219,231,107,196,144,194, 66, 5,169, 96,110,156, 31, 95, +241,175,255,171, 95,243,215,191, 56,241, 15,191,253, 71,254,246, 31, 46,104,138,233, 90, 45, 12, 90, 38, 30,234, 73, 63,184,124, +124,205,239,191,255,158,151, 13, 36, 71,114, 32,105,130,233,189, 20, 55, 68, 11,229,124,226,254,116, 71,241, 17, 4, 64,159,166, + 76, 15,243,141, 38,141, 98, 16, 55,210,188,140,184, 12,178, 42,219,209,184,236, 27,255,230,191,248, 51,254,242,175,190,229,119, +255,241, 13,175, 95, 46, 0,188,249,151,127,226,210,131,116,182, 93, 55, 70,143,134,138,154,227, 33, 45, 3,198,112,172,135, 99, +191,181,141,170,202,221,253, 35, 57, 21,158,159,119,190,127,251,154,109,127, 38,139,112,119,122, 69, 90,163,244, 39,149, 37,232, +103, 99, 4,157,109, 57,131,134,161, 79,114, 65, 75,236,191,145,138,233,129,140,240,108, 8, 30,101, 38,147,160,152,212, 40,185, +208,243, 18, 46,239, 38,156,139,114, 48, 24, 85,177,173, 97, 30,114,111, 94, 78, 52,115,236, 56,230,132, 44,148, 82, 81,194,189, +175,245, 28,148,186,180,161,169,112,186,143,226, 28,245,240, 79,248, 24, 72,170,127, 88,249, 12,129,222,217,186,114,244, 29,134, +209,117,193,199, 62,119,193,225,117,144, 92, 81, 21,122,115,186, 24, 9,227,216, 15, 52, 79, 21,204,194,125,143, 10,122, 90,241, +174, 12,185,198,229, 88, 87, 22, 79,129, 17, 30,202,112, 13,197,100, 31,108,222, 3, 63,124, 28,152,183,224,253,223, 58,253, 8, + 41,183, 75,167,219,224,104,157, 84,207,208,199, 76,153, 58,102, 11,186, 36,116, 77,104,201,164,126, 71,169, 30,252,126,107,180, +230,208, 91, 68, 51,147,210, 83,199,124,224,118,144,180, 82,206,103,186, 23, 60, 13,164, 15,112,229,104, 71,196, 12,151, 68, 26, + 74,254,116, 9, 55,133,106,184,100,170, 66,170, 9,215, 19, 73, 50,233,161,178,228, 28,193,250,102, 97,100,237, 18,114,191,221, + 40, 89, 96, 81,218, 17,189, 25,227,118,141,105,138, 6, 75,194,196,233, 28,216, 40,148,226,241, 57, 78,137, 45, 53,114, 77,156, + 61, 62, 44, 41,223,147,150, 5,151,194,121, 89, 65, 32, 77,224,150,245,206,233,241,204, 87,119,117,238,234, 35, 26,103, 29, 36, + 23, 74,137,213, 27, 9,114, 73,212,146,209, 82,184, 63, 23,190,250,201, 79,254, 63, 64,222,255, 95,228,230,230,244,219, 6,214, +121, 56, 23,210, 23, 66,174,222, 58,244,109, 35, 99,220,223,175, 19, 62,243,227,191,118,135,253,210,232,251,198,195,234,212,187, +199, 47,234,126,127, 30,240,241,245, 70,187,188, 71,199,206, 49, 66,249, 13,119,103,248,167,180, 57, 69,160, 23,192, 22,170, 54, +146,102, 92, 42,244, 78,187,193,182, 95, 72,106,208,158,113, 63,200,174,212, 81,169, 52,154,100,246,108, 80,149, 85, 10,126, 90, + 16,140,109,111,164, 63,250,229,175,126, 83,167, 28,158,202,167,232,153,131,197,193,226, 56,202, 39, 51,154,207, 29,237, 60, 64, +244,211, 99, 63,220,213, 89,226,160,235, 76,227,154, 77, 64,205,136,195,206, 52,114,159,154,210,116,207, 70,169,131, 78, 73, 81, +211,116,183,165,233,138,247,224, 52,151, 20,113,187, 46, 66, 21, 13, 24,136, 8, 42, 1, 39,183,225,164,160,174,130,148,207, 25, +224, 56,212, 74, 28, 78,243,242,145,178, 32, 75,228,137, 73,144,194,189, 23,235, 7,155,251,250,249,109,228,156,200, 58, 39,238, +225, 20,145, 9, 68,144, 56,112,150, 40,106,137, 86,180, 68,111, 18,136, 70,130, 79,173,181,196,195,212,199,103, 50, 31,163, 5, +105, 78,230,129, 59,129, 13,138, 99, 35, 94,143,228,184,184, 28, 31,222,240,253,251,157,139,223,177, 36, 37,219,136,105,211, 7, +162, 74, 27, 78,235,246, 25,160, 98,163, 7, 27, 94, 50, 74, 96,110,101, 86, 35,137, 50,131,183, 66, 74, 30,175, 95,227, 50,180, +220,223,243,221,227,153,231, 15,111,121,255,180, 49,200,136,134,244,173,105, 65, 53,184, 0,223, 60, 86,254,244,107,184,188,254, + 23,254,151,255,227, 13, 77,239,169, 37,246,152, 34,147, 79,128,209,182, 11,223,191,254,158, 55, 31,158, 57, 92,200,105,101, 89, +114,196, 2, 61,156,178, 99, 56,185,156,169, 53,202, 95,232, 7,173,221,184,109, 55,182, 30,201,134, 49, 26,163,199,110,124,111, + 61, 34, 96, 46,225, 46, 79,159,248,254,202,203,229,198,119,223,126,197,127,249,111,255, 21, 15, 57,243,219,223,126,207,232,198, +239,191,255,129,189,109,172,229, 12, 26,110,246,118, 8,189, 53,212,133, 82,148,148, 66,212,145, 20, 68,249,222,110, 88, 31,148, + 2,231,135, 7,100, 57,113,185, 28,188,121,251,134,235,126, 33,171,243,187,127,254, 39,222,189,123, 77,126,184, 99,189,123, 64, +204,104,199, 17, 49,173, 37,146, 26,227,165,227,222,105,132, 41,212, 49, 52,101,146, 70,140,209, 61,179, 22, 33,151, 5,242, 9, + 21, 33, 81, 57, 21,161,105,236,208,185, 29,236, 99, 74,210,122,162,141, 29,183, 35,218, 4, 61, 83, 52, 14, 77,151,131,161, 14, + 35,212,129, 90, 21, 70, 35,155,177,155,208,110, 1, 86,146, 44,156,165,206,188,249,137,222,133, 62, 12, 27,141,177, 43,116, 24, + 82,209, 26,200,225,156, 43, 58, 34,115,109, 10,205,140,202,220,221,165,232, 15,136,230,174, 20, 23,153,229,132,245,142,217, 21, + 92,112, 47,152, 24,187,120,168,114,253, 22, 14,125, 39,168,106,158, 2, 99,235,157, 99,187,209,231, 37,135, 68, 76,184, 37,163, +235,153,180,174, 60, 44, 25,177, 40,124,145, 10, 69,150,144, 53,113, 82,143,203,134, 9,152,109,120, 19,178, 39, 6, 78,239, 55, +246, 35,214,103,234, 18,158,143, 34,209, 46,119, 75,140,110,152,100, 10,176,148, 59, 52, 21,180,119,146, 68, 33,213, 82, 22, 74, + 81,114, 93,144,226,148,165, 70,204,177,197, 67,116,164, 6,217, 41, 61, 46,113,174,142, 14, 67,178, 51, 90,168, 42, 57, 45, 88, + 3,219, 27,150, 66,113, 9,207,148, 80,124,197,233,228,164,148,116,226,160,147, 79,128,157, 88, 84,112, 93, 65, 51,119,165,196, +243,151,131,181, 46,164, 85,216,172,227, 93, 56, 37,184, 63,135, 65,115,213, 26,112,163, 54,216,247, 61,220,248, 22, 3, 80, 94, + 99, 40,114, 19,178, 22,190,126,120,224,225,171,111,126,212,158,218,129,151,109, 48,182, 27,202,224,225,126, 65,203,143,159,168, + 29,184, 29,206,126,121, 33,211,184,127,188,155, 5, 33, 95,224, 80,183, 80, 0,218,177,241,234,164,148,243,151, 65,207,126,250, +250,216,224,195,247, 31, 57, 46, 31, 25, 22, 30,160,222,183,207,235,236,222, 15, 14, 55, 40, 3,187,118, 6,138,228, 26,165, 85, +190,177, 62, 20,236,230, 52,235,129, 79,214, 78, 89,206,184, 20,218,209,105, 99, 58,229,207, 9, 1,246,113, 71,118,193, 24,120, + 55,210,207,127,253,171,223,100, 9, 3, 20, 8,210, 7,166,130,203,136,221,110, 14, 83,143, 78,221, 92,146,198,110,203,163, 34, +212, 92,226,128,246, 22,132,180,185, 7,246, 17, 92,243,195, 12, 73, 57, 14,154,208,211,113,157,211, 60, 97,124, 15, 73, 56,218, +209, 66,110,148,207, 85,176,242,201, 54,255, 89, 45,152, 13,102, 30,111,113,243,112,119, 39, 36, 80,130, 2,221,123,152,238, 44, +118,151,163,119,146, 57, 75, 46, 72,142,190,185,236, 97, 96,242, 96,148, 70,117,234,228,102,143,201,173,143, 3,153,144,206, 83, +180,101,185, 89, 60,240,146, 34, 35,152,240,197,149, 49, 39,208, 92, 34, 69, 32, 4, 49,206,198, 17,181,163,125,150, 1,142,168, + 97, 49,137, 70, 40,108,204,127, 71, 33, 73,138,239, 99,127,225,229,221, 91,126,120, 50,142,114, 71,214, 20,134, 64, 21,180, 6, +125,205,199, 39,183,125,200, 73, 89,125,250, 1, 18,154, 11,238,113,251,142,182,179,120,109,193,150,158, 30, 9,210, 36,224, 9, +167,101, 69,198,141, 55, 31, 94, 48, 41, 81,127,235, 18, 28,253,164,147, 69, 32,220,158, 95,248,251,127,120,205,255,246, 31,223, + 97,245,145,199,243, 18,211,143, 4,233,239,216,158,121,255,246, 7, 94,191,123,226,178,247,104,246,211,132, 36, 69, 69,241, 17, + 40, 90, 16,202,178,176,164,224,110,111,251, 78,235,141,214, 7,109, 76, 50, 95,104, 31,216, 24,180, 17,233,136,164,177,246,145, + 89,235,203, 84, 34,156, 65,223, 7,255,237,191,254,115,254,147,255,236,103,188,253,251,247,188,127, 26,172,167, 59, 62, 60,189, + 13,233,122,185,139,203,164, 10, 93,102,196,110,214,215,230,186, 48,124, 48,182,142,229,232, 34,196, 6,163, 55, 42, 11,231, 90, + 89,239, 94,241,124,217,249,253, 63,255, 51,255,242,230,137, 15, 79,207,188,188,127,139,238,141,188, 20,150, 83,161,212,115, 72, +197,251, 49, 83, 17, 35, 46,159, 6,201, 67,169,193, 21, 41,137,178, 46, 48, 7,188, 92,107, 48,249, 75, 71, 74, 67, 85, 24,150, + 25, 45,222,167,154,227,194, 52,128,146, 18, 75, 73,147,116, 56,216,221,195,244,169, 53,240,198,147,140, 37, 41,162, 50,163,119, + 12,101,247, 9, 80, 74, 7,151,173, 49,142,198, 62,118, 26, 61, 62, 87, 93, 73,185, 64, 9,102, 66, 73,209, 2,213,109,144,150, +130,179, 70, 15,132,100,178, 57,229,156,226,242, 59, 12,203, 70,201, 57, 34,167, 12,218, 0,247,112,173,251,126,155,165, 73, 39, +250,245, 5,115,231, 54, 47,167, 39, 3,100,165, 21, 33,105,225, 84,239, 57,165, 96,173,215,243,202, 82,156, 37, 9, 53,175,208, +110, 44,105, 33,105, 20, 48,221,218,193, 96, 80,189,145,115, 72,252, 62, 90,168, 47, 20,250, 98,220,246, 78, 59,118,100,173,168, + 20,180, 31, 51,154,154,162,242, 56, 65,249,116,209, 79, 74, 87, 37,157,156,251,165,198,192,144, 21,107,123,148,162,152,224,150, +162, 25,173, 57,102, 29, 43, 13,245, 76,239, 59,189,197, 26, 99,120,163, 51,104,173,161,203,138, 30,206,201,157,203,104,113,233, +211, 40, 13, 93,203, 35,217, 59,156,141, 85, 43,126,190,103, 77, 5,183,138, 13,227,188,102,146, 13,140,142,155, 82, 93,169,119, +133,156, 42,101, 12,110, 99, 96,162, 88, 55,214,187,196, 90,114, 76,249, 34,108,219, 1, 14, 85, 3,193,253,105,109,133,164, 32, +126,162, 44,185,240,245, 55, 15,220, 61,188,250,209,241,173,235,203,134,143, 3,177,193,253, 93,249, 34,135,186, 1,151,203,160, +237, 23,150,228,156, 31,239, 34, 78,253, 37, 20,128, 22,235, 2,252,224,225, 36,228,211,195, 23, 59,212, 13,120,251, 60,120,121, +251,129,126,123,194,245,192, 13,154, 55,220,140, 91,100,138, 73,187, 49,186,224, 57, 33,214,233,215, 70, 74, 80,236, 64,110, 7, +151,124,163,100,160, 4,246, 58, 12,171, 55,118,110,136, 8,235,114,162, 90,134, 22,102,200,177, 95,240, 60, 11, 93,126,241,171, + 63,254, 77,206,130,247, 9, 90, 17, 80,153,249,115,143, 9, 85,230, 55,130,199, 58, 86, 73,145,145,251,212,127, 62, 26, 46, 66, + 65,104, 12,204,108, 78,227, 18,187,230,249, 7,117, 70,220, 2, 63, 26, 83,146,230,104,120, 83,205, 32, 22, 38, 21, 98,207,158, + 36, 98, 24,195, 66,138, 21,241,217,228, 54,235, 54, 5,146, 24,185,204, 7,189, 24,101,102, 4, 99, 47, 62,240,168,152,195, 83, + 16,166,134, 43,244, 56,116, 69, 67,150,180,217,102,230, 18, 7, 50, 54,226, 48,243,136,233, 49,156,180,230, 72, 75,245, 6, 35, + 20,135,195,156,164,179,192,195, 52,254,172,198, 37, 39, 17,255, 46,153,197,195, 18,237,163,241,115, 67,166,115, 54,104, 96, 42, + 35, 30, 54,217,145,253,194,229,253,123, 94, 63, 43,190,124, 77,201,225, 91,144, 42,212,236, 44, 26,185,251,162,144,147,115,180, + 30, 56,206,225,116, 9,156,171, 8,179,109,106,129,148, 16, 41,164,153,106,136, 5, 74, 40, 10,104, 20,183,200,216,217,183, 78, +159,107, 15,119, 65, 74, 33,231, 48,239,185, 15,108,236, 28,189,179, 53, 48,148,187, 87,175, 56,175, 65, 46, 43, 24, 79, 79,239, +120,251,246, 53,111,159, 55,246, 99,252,161,207, 88,102,251, 15, 62,163, 84,153,156,194,233,123,236, 55,142, 99,208,137,139,134, + 77, 42, 68,236,217, 37,204,137, 51, 44, 33, 18, 70, 41,141,107, 35,130,145, 85, 98,253,146,224,195,135,143,252,252,155,111,249, +171,191,249,107, 22,223,249,219,255,240, 3,235, 87, 95, 49,172,243,238,237, 59, 78,245,140,150,130, 89, 99, 73,133, 92, 23, 26, + 25, 27, 29,119, 35, 91, 40, 80,119,223,252,148, 68,229,216,119, 64,113,139,149, 64, 54,103,173, 11,229,238,129, 82,214, 32,141, + 53,231,253,135, 15,188,123,251,154,236,177, 75,247,180,124,246, 44,160, 5,179, 68, 73,160,158,217, 37,100, 89,201, 11,248,129, + 91,167,214,115,236,178,246,184, 48,230, 44,220, 47, 43,205,156, 46, 7, 42, 5, 87,161, 22,199,114,157,253,242,138,246, 96, 64, +104,206,129, 80, 62, 6, 57, 11,110, 71, 56,193,139, 81,134, 17,214,177,152,198,155, 89, 32, 94, 75,142,131,175, 57,121,241, 89, +242, 19,114, 78,145, 80,206, 78,231, 20, 60,136, 96,189, 66,107, 28, 30, 85,183, 73, 15,132,120, 93,133,216,221, 38, 61, 49,218, +142,154,145,189, 68,221, 41,141,126, 4,134,150, 36,208, 52,126,247,101,137, 53,132,103,214,116,130,121, 73,233, 57, 69, 67, 96, +118,154, 58,158,102,197,241, 22,151,151, 75,187,197, 10,165, 40,216, 65,201,145,135,247,158, 73, 56, 71,119,108,148,160,198,141, + 24, 30,196, 18, 69, 42, 73, 7, 53,215,112,229,159, 86,210, 90, 65,160,158, 50,230,131,181,156,177, 17,125, 22, 34, 11,251,113, + 65, 70,152, 24,247,100,193,207, 16,197, 24, 52,219,163,220,167, 29,100,117,100,100,172,244, 96,124,175,161, 92,164,188,146,125, +150, 93, 49,184,171,149, 36,142,231,133,186, 4, 81, 81,114, 13, 72,149, 20,178,158, 73,205,104, 62,168,167, 66, 46,198,118,117, +178,220,179,172, 9,201, 25,215,134, 47, 53,222, 83, 18,126,165, 36,194,178,172, 92,175, 27, 46,137,214, 6,251,136,231,120, 73, +225,141, 74, 37,124, 62, 90,148,148, 43,226,137,245,156,249,230,155, 87,172,231,251, 31, 45,101, 95, 47, 59,214, 27,201, 7,247, +143,167,185,106,251,241, 89,239,235,181, 99, 19, 96,116,186,191,255, 34, 57,245, 1, 92, 54,167,111, 27,222, 14, 94,221,159, 72, +203,249,139, 77,233, 59,240,246,217,184,124,124,130,237, 18,173,165,210,241,214, 57,134, 99,195,232, 61, 81,117,198,200, 55, 97, +180,144,209,181, 24, 55, 41,236,123, 39,149,196,169,221, 33, 45,206, 76,109,141, 37, 59,139, 59, 62,140,135,229,196,199, 22,230, +228,193, 51, 57, 59, 69, 6,173, 85,210,207,127,249,235,223,100,241,217,170,149,230, 35,127, 26,226,116,230,153, 93, 63,115,210, + 61, 71, 32,234, 83, 67,154,166, 0,184,248,164,195,137, 76,119,173,164,233,148,143, 73, 91,197,201, 85,131, 2,103, 97, 14,227, + 83, 97, 12, 78,250,108,139, 87, 52,167,217, 16, 22,187,250,148, 35,202, 70,207, 33,183,123, 64,104,164,132,105,169, 16, 46,114, + 60, 5, 2, 54, 7,113,202,124,174, 1, 36, 26,198,240,196,154,163,174, 51,226, 94, 18,120,206, 52,226,112,183,216,125,135, 50, +173, 33, 37,210,195, 84,214,227,181, 40,225, 98, 31, 62, 62,119,244,154, 27,163,183,248, 89, 77,226,158,155,127, 86, 19,178, 66, + 55, 67, 36,227, 62, 72,174, 84,141,150, 52, 21,157,253,240, 80,188,115,123,122,207, 15, 79,224,245, 43,238,214, 68,182,131,163, + 13, 74, 86,170,166,224,101,167, 18,253,188, 71,103,140,193,214,162, 61, 15, 15, 32, 65, 38,248,250,250, 9, 4,132,144,103,163, +156,187,135,179, 94, 9,251,191, 38,124,174, 34,100,170, 23,193, 4,136,201,207, 90,163,247, 3,179, 96,247,187, 15,114,202,124, +243,234,107,150, 53,115,123,249,200,235, 31,126,199,155,247, 79,220,142,160, 0, 78,205,103,174,116,194, 80,232, 61, 10, 87, 96, + 70,111, 70,195, 70,195, 52,135,188, 63, 2,151, 26,239, 51, 1,140,148, 38,141, 76, 34, 94, 41, 26,168, 75,239,125,122, 2,210, +103,179,102,223, 7,125,119,254,221,191,253, 11,190,249,246,158,223,254,221, 91,110,251,224,171,239,190, 98,223,111,188,121,251, +142,122,119,199,185,174,180, 54,102,212, 50, 24,246, 46,112,220, 26,121,169,252,228,171, 71,220, 32,157,239, 17,148,219,229, 25, +243,198,101,108,140,118, 99,205,153,243,233,196,178,222, 5,189, 78, 59,173, 27, 31, 62, 62,241,238,205,247,152,118, 78,165,134, +107,220,163, 64,164,164,130,201,193,222,111,104,248, 74, 3, 60,131, 99, 18, 85,196,203,242, 42, 98,154,222, 98, 66,235, 53, 74, +121,206, 5,107,209,120, 70, 79,152,237,172, 37,209,123,195,106,133,226, 36, 51, 20,168, 10,187, 27,169, 40,119, 9,172, 21,134, +100,140,193,184, 5,213,106,200,244,122,144,163,166,216,227,146, 80,207, 41, 14,163, 20,128, 35,241,132,244,184, 26,163,131, 49, + 34, 39, 94,172,133,252,108,209,113,208,145,105,168,212,240, 85,176,208,251,141, 92, 10,230,194,178, 60, 34, 39, 65, 44,192, 86, +154, 50, 89,194, 75, 66, 45,108,227,134,181,141,190, 55, 6,157,158,133,222, 21,219,247,152,186, 15,184,141, 35, 96, 61, 30, 21, +184, 90, 22,250,209, 88,169,216,128, 81, 98, 37,151, 52,145,179,178,230,168,115,246, 52,168, 90,201, 37,136,119, 94,149,187,111, +238, 88,206, 95,131, 57,165, 84, 76, 50,230,137,210, 58,121, 73,136, 21,246,125, 99,152, 35, 26,172,237,228, 3,187, 54,124, 12, +142, 61,158, 5,195,140,156,239, 73, 90,102,220, 87, 24, 54, 34,123,223,149,164, 21,179,152,190, 68,157, 37,159, 25,101, 97, 89, +239, 73, 73,105, 35, 46, 97, 41,215, 88, 1,202, 64,170,227,116,138, 9,178, 27,141, 28,106, 89, 54,154, 43,150, 19,146,161,220, +165, 96, 65, 12,153, 42,152,211,250, 76,248, 88,128,182,114,157,105,133, 20, 41, 19,213, 32, 62,230,153,135, 63,157, 78,124,247, +237, 43,202,143,220,127, 15, 96,187, 70,157,239,162,198,253,171,251, 47, 18,103, 27,192,229,229,192,142, 27,143,119,153,114,250, + 50,113,182,144,245,141,125,219, 88,232,188,250,250,203,100,234,255,239,206,250,119, 47,131,151,247,239,144,254,204,176,142,249, + 65,107,131,225, 97, 12, 94,134, 65, 82,142,222, 32, 39,198, 28,168,245,206, 40, 71, 97,147,134,228, 19,151,235, 7,204,118,210, +169,146, 10, 92, 71,133,154, 89, 87, 56, 88, 56,182,157,158, 78, 28,118,163, 54,165,114,166, 31, 27,233,143,126,253,167,191, 17, + 27,241,166, 34, 42, 53,133,142,248,236,244, 78,241, 97,205, 42, 72, 9,135,117,128, 68, 20, 77, 37,100,120,201,224,105,190,121, + 34, 98,225,248,140,197,197,154, 59, 14,104,141, 27,227, 52,105, 33, 26, 86,127,241,120, 96,127,218, 39,143,152,144,181,196, 20, +178, 38,197, 38, 39,155, 36, 44, 41,118, 43,158,162, 45,204, 45,104, 91,136, 80, 74,138,102,247,230, 36,139, 73, 82,210, 64,166, +155, 85, 83,166,141,241,185, 49,202,103, 78,187,225, 32,153, 44, 6, 57,232, 85, 54,140,241,233,118, 51,121,190, 33, 99,199,161, +159,138,146,137,135, 80,184,145,132, 36,177,146, 24, 35, 34,122,154,102, 73,138,133, 92, 28, 38,189,129, 17,125,235,145,213, 14, + 95,194,126,125,207,235,247, 59,123,126, 96, 41,130,183, 43,221,102,116,173, 36,242,186, 70, 92,237,176, 9, 52,216,184,236,159, +192, 26,193,218,207, 51,238,229,113, 46,198,195, 24, 67,137, 61, 59, 50,163,137, 54,232,163,147, 83,249,124, 25, 49,139, 24, 98, + 89, 42,171, 68, 87,116, 31,141,222,123, 0,125, 36, 38, 87, 93, 42,143,143,103,246,143,239,120,251,254, 3, 47,123,159, 53,169, +194,108, 83,137,184,154,235,140, 74,198,229,108,244, 30, 44,248,209,233, 30,242,225, 12,212,199, 84, 53, 83, 15, 50, 49,181, 50, +223, 79,238,127,152,208,153,221,235,228,144,244,179, 72,228,159, 83,230,242,124,229,207,127,253,115,254,244, 23, 63,229,223,255, +237,247,120, 55,202,186,112,247,240, 53, 31, 62,188,227,122,121,102, 21,193,146, 16, 1,131,142,122, 9,247,183,100,214,211,137, +177,109, 28,125,231,103,223,125,203,126,188,240,244,252, 68,242,224,235,119,139,142,238,225,157, 90, 18,181, 44, 20, 57, 81, 31, + 31, 35, 31,189,117, 62,188,127,226,249,205, 91,220,140,243,249, 14,213, 5,147,157,156, 18, 99, 8,165,220, 35,122,224,166, 72, + 15, 21,163,228, 26, 80, 32, 29,113, 72,137, 4, 74,119, 24,213,207,120,115,116,169, 88,219,105,132,236, 45, 53, 62, 35, 41,105, + 92, 2,204,217, 61,250, 24,232, 6, 86,241,147,176, 95,119,246,190, 35, 53, 7,134, 57,173, 17,215,179, 68, 57, 37, 78,121, 33, +165, 65, 45,137, 53, 21, 78,181,208,232,228, 28,210,251, 49,169,141, 93,132,228,241,158,237,233, 76,187, 93,145,114,130,217, 29, + 97, 12, 52, 71, 79,173,106,172,112,244,148,145,146,162,184,198, 50, 3, 67, 37,145,203, 39, 18, 86,163, 15, 65, 77,241,234,100, + 25, 28, 91,143,194, 17,140,194, 9, 23,167,206,244, 13,229,204,242,120,162, 28, 35,212,155,156, 89,214,202, 16,229,148, 11,185, +206,139, 90,214,248,121, 29,157,243,114, 38,223, 69,203, 99, 53,165,239,142,136,113, 46,130,245,131,253, 22,196,175, 97,129,164, +109, 54,224,232,108,121, 67,134, 96,187,210,116, 71, 60, 32, 62, 94, 4, 60,147, 21,242, 57,192, 89, 34,131,106,137,187,122,130, +188,132, 17, 82, 64,181, 83, 82,102, 80, 67,221,233,141,146, 34,203,238,226,208, 5,125, 88, 41,165, 35,195,105, 67,168,118,166, +123, 99,179,142,100, 65,233, 12, 87,210, 41,158, 71, 92, 59, 39, 34, 22,120,119, 58, 33, 67, 57,223, 9, 11, 5,177, 66, 87,161, + 86,161, 2, 78, 92, 46, 85, 61,146, 7,249,140, 76,236,118, 74,202, 79,127,246, 77,168,121, 63, 50, 75,126,220,110,120, 31,156, +146,179,190,186,255,209,198,187, 79,123,239,237,218,160,109, 60,156, 43,105,253, 50,230,187, 1,236, 55, 99,236, 55, 22,233,156, +191,186,155, 62,172, 47,231,124,127,255, 97,231,246,241, 25,179, 43,105, 24,251, 17,229, 69,184, 71,111,135, 57, 62, 18,173, 25, +189, 26,168,114, 90, 19,126,105,112, 51,198, 82,192,141,179, 15,242,131,210,155,193, 67,133,182, 33,253,160,249,100,248,203,153, +114,223,240,125, 32,102,244, 82,121,185, 61,147,126,249,199,191,252, 77, 78, 25,199, 41,146,167,227, 56, 0, 45, 51,199, 70, 77, + 50,203, 90,102,174,108,182,158,185, 59, 99,180,248,115, 4, 81,234,147,179,156,153,199,158,231, 8, 54, 34, 22,149,136, 15,213, +167, 26,214, 20,218,234,148,187, 67,214,206,162, 65,219, 74,153,146,106,132, 16,220, 98, 79, 44,128,134, 81, 76, 71,236, 44,155, +199,148,169, 50,144, 20,117,169,237, 48, 44, 65,205,204,250,206,193, 16,159, 77,110,132,145, 77,130,210, 35,204, 3, 57, 11,181, + 8,160,180, 99,246,181, 47, 33,161,125,202,232,227,225, 42,151,153, 16,208,154, 35, 27, 58,223, 50,161, 14,132, 67,247,147, 67, +223, 62,253, 76,230, 62, 75, 92,208,249,128, 12, 6,126, 66,182, 39,222,188,123,226,201,206,172,235,138,200, 1,250, 64, 93, 87, + 78, 69,226, 16,203,153,146,230, 30, 63, 11,183,163,197, 94,102, 86,201,250,188,212, 12, 62,237,210,136, 30,233,249,223,221, 71, + 52,216,165,169, 94,104,250,220, 96, 87, 92, 49,205, 44,229, 76,146,192,208, 90, 50,124, 68,164, 39,215,105,244,243,136, 33,113, + 92,121,255,225,194, 97,243,226,166, 78, 22,226,205, 75, 96,135, 83, 42, 56,134,245, 49, 47, 50,161, 96, 32,142, 72, 72,144, 19, + 59, 19,112,162, 79,198,190, 32,228, 68, 92,201,163, 3, 62, 37,137, 73,222,237,115, 79,187,166, 0, 22, 5, 19, 64,217,246,141, +119,111,174,252,236,241, 91,126,120,234,188,185,117,124,100, 78,167,202,215,175, 30,121,121,255,196,219, 15,239, 80,235,148, 20, +177, 49, 27,241, 26,115, 81, 94,173, 75,252,253, 34, 12,107,124,124,251,251,176,124,214, 18, 43, 41, 66,250,210,148, 81, 58, 62, + 6,231,245,158,191,252, 87,127, 77, 89, 31, 57, 90,244, 4,140, 49,248,248,252,204,243,135,183,208, 27,231,187, 51,230,131,101, + 93, 40, 57,212, 45, 52,212,147,122, 82,210, 90,195,252,216, 59,218, 13,187,171, 68, 82, 84,241,209, 41, 98,228, 53,147,146, 82, +151, 59,180,109,104,130,118,219, 81,115, 32,199, 69,210, 19, 57, 27,157,198,216,194,221,223,218,160, 38,157, 77,116, 43,119, 37, + 6, 19, 95, 66, 49,169, 89,209,228, 84, 73,228,147,194,112,108,115, 68, 15,250, 41,222,187,126, 52,218, 40,209,231,224,198, 80, + 71,107,139,136, 41,134,247, 78,174, 10, 82,195, 69,159, 27,154,203,188, 56, 94, 97, 3,134, 49,124,199,247, 30,117,200,122, 48, +134, 49,100,208, 92,201,221,232,107, 70,205, 98, 60, 39,161, 90,209,101,153,139,111,135, 10,107, 78, 49,225, 62, 20, 70, 90, 66, +245, 51, 33,149, 51, 70,116, 83,156,171, 66, 86,110, 71, 15,114,221,225,116,223, 3,185,236, 30,106,227, 17,201, 15, 75, 7,200, + 65,117, 97,183,198,232, 97,248,181, 49,137,113, 37, 62,199, 82, 3,222, 18, 43,192,206, 90, 11,178,199, 64,112, 62,223,115,244, +206, 16,161,164,131, 98, 9, 77,117,254, 39,214, 77, 34, 3,145,194,214, 14, 22, 9,178, 99, 87,195,142,107,184,249,147, 82,100, +161,209,161,116, 74, 90, 33, 13, 44, 9,203,140, 16, 10, 70,154, 0,172,135,181,210,247, 57,141,175,209, 18, 56,122,139,109,201, +140,103,105,214, 32,125, 78,179,165,171,225,196,244,126, 94, 51,223,125,247, 93,164, 87,126,204,225,219,103,178,100, 52,238, 42, + 44,119,247, 95,196, 73,190, 15,216, 46, 55,164, 31,220, 63, 44,164,186,126,177, 73,250,122,109, 28,251,198, 89, 7,167, 87, 15, + 97,174,248, 66, 95,215, 1,207,111,174, 28,207,207, 28,219,133,214,119, 68,156,162, 18,102,206, 99,160,199, 44, 26, 27, 10,199, + 96, 79, 87, 60, 37,122, 83, 90,143, 40, 49, 26,113,228, 37,156,157, 60,191, 24,119,122, 34, 23,103,219, 19,180, 65,117, 99,244, + 29, 77,142,101, 37,231, 29, 25, 78,250,229, 47,130, 40,247,169, 82,214, 60,220,210, 62, 31, 98, 34,177,219,140, 46,233,185,207, +211, 40, 50, 17,145,144,234, 36,118,220, 99,102, 41, 17,155,221,219, 68,172,205,137, 15,201,188, 39, 12,143,189,178,164,132,228, + 20,123,198, 56, 11, 80,145,184, 79,249,148,217, 25,211, 44, 21, 7,165, 70,112, 30,245,105, 12, 27, 81, 52,195,136,202, 82,235, + 19, 51, 27,139,101,178, 36, 58, 18,132,174, 17, 53,118, 41,167, 48, 2,150, 28,153,239,217, 21,239,201,145,254,105,122, 54,172, +123, 76, 28, 40,189,219,188, 80,232,188,137,202,244, 19,204,137,115,150,222,216,236, 73,119,226,161,208, 71, 32,101,139,214,200, +210,231,248, 25,139, 70,146, 0,132,108,131, 15, 31,222,242,182, 47,172,231, 71,178, 93,130, 4,118,119,230,254, 28,123,123, 23, + 69,117,230, 84,243,224,182, 53, 30,191,251,150,159, 62, 40,207,215, 3, 47, 57,186,237,213, 62, 99,106, 53,197, 78, 92,100,102, +232,165,144,209,144,211,221,200, 17,226,143,219,123, 45,228,178, 6,209, 78, 51,163, 93,113, 83,150, 28,149,154,102,145,107, 64, + 19, 62,226,247,220,198,248,124,128, 99,246,153,158, 38,170,164,148,195,213, 48, 34, 74, 52,204,131, 38,244,121,205, 19, 44,127, +199, 35,190, 40, 18, 63,115, 62,173, 74,130,176, 87,210, 92,189, 76,233, 65, 98, 81, 31,239, 21, 52, 50,226, 81,161, 67,206,137, +119,207, 87,174,214, 40,245, 1, 43,153,222, 12,117, 37,173,153,111,127,242, 71,148,122,226,249,253, 71,246,219,141, 97,141,164, + 81, 67, 9,157,164, 70,213,194,253, 82,120,126,126,226,195,243,109,238,139, 97,201, 37,218,148, 60, 86, 38, 46,177,242,209,190, +211,219,133,135,135,123,190,126,248, 26,175, 57,136,134, 24,219, 24,188,127,247,150,203,211, 91,126,120,255,134,203,211, 7, 94, + 61,124, 75, 22,101,213, 4,218, 73, 75,101, 41, 29, 79, 78, 41, 5,205,153,147, 59,137,138,136, 80,178, 98,139,225, 71,166,158, + 50,181, 15, 88,148, 29, 71,252,204, 41,101,250,112,134, 54, 16,225,184, 70, 50, 37, 75,162,215,168,128, 37, 25,244,142,148,130, +150, 66,219, 27,107, 86, 30, 78,143, 49, 85, 6, 11,149,253,118,176,155,161,107,193, 70,141, 9, 97, 56,201,157,182,117, 6, 78, +118,103,116,103, 77,137, 67,140,163,141,104,169, 59,194, 12,232, 75, 66, 70, 66, 77,176,237, 8,229,203, 58,189, 53,122, 15, 40, +202, 90, 79,244, 91, 24,208, 82,142,125,250,189,156, 98,106,215,204,178, 70,186,225,112, 1,233,104,141,202,222,220, 2,153,139, +164, 48, 92, 14, 65,220,103,236,199,241, 50, 88,214,130,155,243,114,233, 65, 18, 20, 24,253, 32,137,114,219, 59,169,128,250,194, + 97,141, 54,241,201,203, 88, 73,146, 25,185,144, 69,194,211, 42,144,181, 34,213, 89,150,133, 59,114, 96,161,211, 3,153,196, 54, + 58,139,174,211, 56, 12,249, 20,184,103, 63, 42,182, 4,131, 65, 60, 74,139,106, 25,220,246, 29,146,112,242, 2, 37, 98,114,150, +140, 69, 86,144, 74,223, 6,148,140,165,140,141,134,186, 83, 83,101,185, 95,144,107,163,121, 37,201,194,227,253, 29, 57,175,236, + 87, 11, 86, 65,178, 48, 72,137, 98,105, 80, 36,179,212,244,185,238, 25,148, 60,235, 86,133, 17,165, 59, 37,113,127, 90,248,246, +187,111,127,244,129,118, 61,140,227,186,225,222,185, 95,132,114,254, 50, 40,215, 91,119,110, 79, 55, 10,141,199,135,245,139,236, +233, 63,161,103,111,215, 70,219,119, 30,171, 83,191, 16, 40,231,211,215,135, 1,207,239,158,185,189,188,167,219,117,174,106, 60, +146, 18, 67,105,195,104, 24,108, 54, 89, 7, 70,219, 58, 91, 19,134, 42, 99, 7,218,129,152,210,113,210,128, 75,106, 72,191,197, + 37,180,117,154,247,168,250,178, 30, 60, 15, 75, 84, 41,228,205,184,108,157,244,211, 95,253,234, 55, 49,129, 79,110,123,138, 3, + 91,103,107,155,169,205, 58,210,192,185,106,154,230, 50,137, 76,183, 50, 93,225,201,144,233, 34, 23,209, 9, 9,153,242,111,138, +155, 51,234,209, 64, 69, 0, 33,146, 70,155,144,216,192, 44,140, 44, 62,101,111, 62, 81,213,231, 78,213, 37,148, 2,225,211,222, +218, 63,205,120, 84,173,161,144,103, 69,107,130,209,162, 77,110,238,185,162,127, 60, 12,126,154,192,109, 96,157,153,123,158, 59, +220, 2,185,199,255,247, 19,182, 69,101,102,231, 53,178,242,146, 52,100,102, 79,177,211, 23, 24, 71,240,219, 37, 23,176,128, 87, + 0,241,218, 82, 10, 68,174,197,170,192,109,204, 28,119, 68,218,178,134,114,113,123,121,205, 15, 31, 21,150, 7,214,124, 99,140, + 78,210,194,253, 67,230, 62,199, 19,166,148,200,188,215, 42,200, 56,216, 44,243,167,191,254, 57,127,241,179, 51, 31,158, 95, 72, +185, 96,162, 81, 85,170,137,154,211,108,199,171,224,198, 34, 39, 28,167,141, 3, 81,231,180,172, 33,197, 79, 31, 68, 42,143, 36, + 45,129,185, 84, 99,223,142,160,251,169,211,134,205,140,117, 28,112,189, 7,217, 79, 38, 26,183,207,200,158,207, 75,153, 68, 75, + 14, 71,239,211,103, 56,189, 22,159,126, 99, 18,235, 2,183,120,109, 41,110, 68, 97, 84,156, 74,202, 39, 47,169, 32, 1,244,209, + 50, 47,155, 51,111, 79,236,216,179,166,144,247,137,247,211,209, 54, 46,205, 57,127,251, 45, 53, 29,108,109, 76, 45, 34,113, 42, + 5,236,153,223,255,240,154,158,206, 65,240,243, 35,154,208, 12,142,163, 49,128, 54, 58, 79,215, 27,157,130,229,144,205,197,102, +175,124,157,181,181,226,244,126,176,245,198,251, 15,207, 60, 63,253,128, 31, 55,150,186,112,126,120,164,212, 51,210, 99,197,177, +217, 96, 63,140,219,214,232, 45,254,254,203,243, 19,248, 96, 52, 99, 59,140,197, 21,205, 80,178, 80, 40,140,179,224, 35,133, 25, + 12,153,242,233,137, 61,117, 90,107, 97, 56,235,133,231,237,138, 75, 96, 40,123,219, 35,167,236,137,221,123, 64, 96,114, 71, 83, +162, 8,156,151,202, 82,132,180, 38,210,150,232,121,196, 82, 99, 24, 67, 50,142, 48,198,160,156,148,100, 97,194,204,186,176,117, +240,201,117,239, 51,145,178, 31,145,101, 95,180, 83,164, 32,189, 35,139, 96, 86,233, 71, 35,173, 2, 68, 73, 81, 78,144, 78, 5, + 19, 97, 41, 18, 81,215, 82, 57, 45,103,196, 14, 50, 9,207, 37, 64, 62,154, 41,231,132,105, 34,175, 37,216, 17, 71,184,207,149, + 83,148, 10,181,151,184,231, 81,162, 65, 15,235,208,156, 0, 0, 32, 0, 73, 68, 65, 84,177, 74,112,231,107,124,207,251,177,115, +140, 62,115,249, 17, 87,236, 35, 16,198,247,247,143,104,183, 32, 36, 86, 67, 45, 69,215, 69,118,106,173,161,170, 17,112,160,240, +115,156,168, 75,194,118,101,200,142, 18,234, 66, 78,194,186, 22, 18, 97,140,141, 5,154, 97,148, 9,205,137,247,254,222,250,132, +211,212, 0,118,141,192,132,186, 53, 50,202, 80,167, 75,166, 72,166,181,134,211, 40,227,142, 69,238, 40, 94, 88,213,217, 83,226, + 62,215,160, 54,110,157, 94, 66,177, 40,139,145, 74,225, 76, 32,136,179, 42, 82,167,163, 69, 62,213, 70, 15,178, 46,225,223, 24, + 78,201, 5, 69,185,187, 91,249,250, 39,223,254,168, 3,205,128,203,173,195, 30, 13,118,231, 69,169, 95,224, 80, 55,224,122, 29, +244,237,138, 90,231,254,254,244,197, 50,234,183, 6,251,243, 13, 27,141,115, 26, 44, 15, 95,102, 93,240,233,251,254,248,113,240, +244,254, 45,215,203, 71,220,110,140,225, 12,194, 32,235,238,216, 30, 24,232,156, 43,151,100,108,210, 65,207, 84,203, 12, 57, 16, +239,113,158,173,112,108, 87,252,188, 34, 35,207,129,106,112, 53, 35,157, 87,250, 6,153, 30, 83, 44, 3,124, 99,219, 14,140, 74, +142,178,140,140, 43,140, 22,192, 2, 36, 32, 6, 33, 55,199, 84,101,115,207, 53,154, 71, 60,109, 76, 82,172, 31,179, 60,100,238, +224,125, 10,186, 46,243, 97, 30,221,235, 35, 15,100,132,147, 93,243, 4,192,244,246,217,192,134,135,123, 91, 52,238, 0, 99, 56, +163, 27,170,138,149, 76, 50, 65,122, 72, 86,185, 6,183,122,180, 30, 49, 27,143, 31,148,154, 96,173,205,143,215,108, 46,114,229, +255, 98,237, 93,123, 52, 75,175,243,188,107, 61,167,189,247,123,168,170,238,158,158,238, 25,246, 12,135,164,117, 0, 21, 69,176, + 12, 57, 78, 16, 56, 65, 28, 36,254, 89,250,158, 31,148,111, 9, 16, 5, 65,108, 41,144,109,201, 36,101, 82, 34,103, 56,167,158, + 62, 85,213,123,218,251, 57,173,124, 88,187,155,148, 19, 3, 6,212, 5, 16,232, 30,206, 84, 87, 23,234,125,247,243,172,117,223, +215,213,229,237,224, 95, 17,111, 62,225,222, 42,210,189, 25,142,156, 85,112, 82,143,212,160,235, 11,221,210,187,189,118,156, 38, + 66,247,116,223,241, 42,166,143,244,206,242, 4,206,211,123,167,149, 66, 8,182,211,124,203,161,199,217,139,205, 5, 59,224, 4, +103,183,133,170,157,168, 30,231, 61, 75, 57,243,205,155, 76, 30,158,112, 21, 27,189, 46,228, 62,112,117,181, 97,183, 77,104,110, +132,104, 24,203,224, 6,180,158,121, 94, 60, 15,110,174,217,199, 70,240, 3,211, 52, 50,202,200, 33, 47, 28, 15,106,226, 24,105, +246,144, 14,110,245, 64, 43,229,114, 36, 4, 33, 14, 9,212, 17, 69, 81, 31, 33,237,136,126, 64,122,179, 85, 75, 93,152, 9,168, +111, 76,155,192,249,214,104, 71, 97, 8,107,226, 94,168,170, 56,111, 1,157,134, 9, 34, 88, 25, 6,181,118,171, 59,245, 53,236, +182,194, 99, 84,127,195, 54, 48,249,143,190, 11, 64,233,186, 91, 71,204,244,164,118, 37,183,112, 94, 45, 54, 38, 14, 3, 26,196, +156,228,235, 65,176,181, 85,213, 91, 59, 89, 28, 55, 15,191,199,147,143, 62,195, 17,240,218,205,102, 36,153, 40,112,255,230, 21, +127,253,215,255,158,219,195,194,199,159,124, 68, 62, 31,185,125,121, 7,162,132, 21,116, 84,202, 66,238, 14,117,129, 16, 26,173, +130,223, 4, 50,130,228, 74, 60, 45,104,202, 12,209,222,244, 75,237,208, 26,247,247, 11,151,185, 48, 29,239,185,222,236, 25,175, +118,164, 71, 55,248, 49, 81, 46,103,206,231, 35, 93, 50,175,223,124, 65,153,247,116, 17,210,113, 99,164, 48,113,236,246,123,110, +198, 13,222,119,198,171,192, 62,222,176,117, 9, 66, 98,236, 66,118, 51,151,195, 5, 29, 71,234,165, 50, 5,199,161,157, 77,135, + 28, 70,202,229,100, 7, 27, 25, 40,209,177,241,142, 73, 32,151, 78,138, 29, 25, 35, 73, 96,110,150, 95,113, 67, 64,115, 91, 91, + 44,178, 78,223, 34,165, 22,220,108,172,131, 32, 43, 73,141,153, 82,103,156, 58,150,174,108, 92,167,246, 21,106,228,225,146, 11, + 42, 74,184, 40, 62,101,163,203,181,128,164,104, 36,186,105,196,183, 74,203, 51, 18, 58, 18, 35,254,210,105, 37,147,210,214,216, + 23,222, 19,157,199, 23,240,217, 1, 21,205, 51,125,116,180,230,104,117,102,179, 79,176, 52,154, 8,146, 23,220,176,208, 24, 88, +150, 78,136, 29,189,171,118, 89,240,222, 4, 39,105,161, 75,178, 31,171,105, 32, 70,143,199, 19, 71, 7, 13,138,118, 24, 61, 42, +138,234, 72, 47,133,208, 65,252,150, 48,218, 4,169,149, 72, 61,157,112,201,209, 23, 71,218, 0,101,139,196,194,220,192,235,130, + 23, 65,245,138,210,160, 75, 65,154,135, 9, 26, 13,157, 21,170,226, 39,129,165,208,195,218,134,105, 3,234, 3,234, 43, 3, 5, +239, 39, 51, 72,198,100,221, 14, 87,152,181,155, 55, 91,103, 84,132,235, 7,158,118, 41,156,123,197,109, 19,253,226, 81,231,152, +181,224,147,160,206, 91, 77,211, 55,155,126, 57,143,200,250,176,232,230, 85,120, 75,248,156,166,244, 15,166,168,153,150, 66, 41, +221, 4, 65,113,156,222, 91,152,173,170, 53,133,220,154,157,120,111, 6, 53,125,155,113,106,248,228,223, 43, 73,110, 1,230,174, +132,102,104,178,222,213,104,157,189,210,122, 51,252,114,178,203,205, 41, 23,187,176, 54,143,239, 13, 21,165, 95,128,224,209,166, + 52, 7,131, 75,118, 49, 40, 11, 65, 71,203,173,232, 45,253,238,192,180,221, 35,243,192,236, 20, 39, 25, 45, 30,134, 66, 57,207, + 4,175,250,110, 79, 28, 87,159,138,168, 73, 49, 88,109,106,173, 22, 16,103,207, 94, 58,244, 98, 29,206,181,174,166,130, 73, 79, +180, 34,106, 2, 17,161,128,170,225, 15, 67,180, 14,122,235,132,232,214, 52,185,183,207,169,205,248,234, 85,233,213,106,107, 66, +131, 30, 86,198,183,213,234,236,135,213,250,226,174,175,220,111,177,209,180,169, 79,109, 23, 6,110,213,200, 86,180, 55,196, 69, +240, 66, 47, 29,188,217,146, 84, 76, 15,104, 9,253,106,211, 4, 21, 22,239,209,238,109, 4,220,141,231,174,193, 66,122, 56,251, +111, 92,239,235,215,101,245, 43,137,163, 5,238,180, 17,130,103, 22, 79,207,118,115,117,216,186,192, 98,119,141, 82,173,134,133, + 26,121,173,228, 51,175, 95,188, 97,241, 55,220, 92, 69, 56, 29,200,213, 18,227, 67,176,233,200,116, 51, 33,231, 76,139,142,109, + 80,222, 28, 50, 67,216,241,225, 46,145, 23,211,243, 13,227,104,189,242,197, 49, 36, 69,122, 48,132,110,179,215,152,119, 29,213, + 11,155,113, 36,166, 13, 93, 42, 57, 47,224, 60, 46,140,196,112,133, 11, 66,110, 71,142,167, 51,222,119, 98,114,228,166,112,168, +134,225, 12,214,221,174,181,173, 35,244,142,214,181, 26,167,106,107,136,174,235,238,118, 29,169,175, 92,255,213,135,135, 58, 75, + 94, 59,177,232,158,136, 61,252, 13,112,180, 86, 45, 68,241,226,105,116,188, 58,154,216, 94, 40,215,130, 11, 48, 18,185,190,217, +178,217, 36,238, 79, 51,247,135,153,162,194,239,254,232, 25,143,159,126,194,254,106, 71, 12, 74,111, 11, 75, 9, 4, 47,120, 31, + 56, 30, 15,252,228,167,127,205,183,207,143, 56, 47,188,250,234, 23,212, 90,184, 95, 50,131, 56,156, 84, 92, 80,198,100,201,255, + 40,118,112,244, 13, 90, 46,168, 83,162, 79,212, 22,201,217, 42, 77, 33,218, 11,207, 77,145, 82, 5,109,157,211, 60, 51,247,204, +118,185,231,106,220,113,189,191,226,234,217, 15,185, 28, 78,124,247,237,231,156,151, 19,167,243, 61,165,194, 16,108,151, 22,135, + 45, 75,109,148,113,166,247, 78, 58, 94, 49,189,250, 14,105,103,246,215,215,140,251, 61, 83, 24, 80, 2,229,120,162, 19,152,107, +161,212,108,147,161, 34,184,224,205,166,230, 6,118,195, 68,168, 25,100,102, 28, 61,177,120, 22, 42,151,106, 83, 44,154,141,170, +123, 24,232, 93,168,117, 97, 76, 1, 41,153,193, 55, 84, 43,151,222,240, 89, 57,182,163,153,234, 42,148, 10,113,152,104, 37, 51, + 13, 27, 46,161,112, 57,207,196, 20, 8, 41,209,234,140, 2,195, 48,225,199, 68, 61,157,215, 62,187,178,204, 74,242,129,158,187, +185,190,135, 68,107, 29,245,217, 36, 37,120,114,185,216,254, 63, 76,198,158,183,183, 16, 54, 94, 24,247,137, 59, 61,209,115, 6, + 95,105, 26,145,147,146, 70, 51, 51,150,101,161, 55, 72, 65,144,170,196, 94, 41, 68, 82,132,222, 2,105, 52,133,107,208,140, 79, + 55, 44,249,140,248,193, 42,187, 4,156, 70,194, 38,194, 37, 91,160, 85,149, 56,141,244,122,161,104,103,240,227,218, 16, 1,245, + 23,106,177,209,118,211,198,232,175,172,142,232,160,196,134,239,145,128,105,147, 93, 84, 36,116,166,228,169,205,177,212,142,236, + 35,110, 46, 12, 91, 71,244,123,202,105,198, 57,101, 12, 19,190, 38,138,191,167, 54,207,102,124,136,200,140,195,147, 37,163,135, + 13,110, 10,184, 12, 75, 93, 51, 23,100,196, 21,171, 6,146, 40,245, 98, 32, 32,181, 85,133,138,245,117,157, 42, 99,136,104,176, +160,165,143,254,189,220, 76,123,181,195,181,211, 70,140,239,231, 1,169,216,148,184,105, 35,122,236,150,247,158, 62,122, 55,171, +166,168, 29,160,222, 39,116, 38, 96, 53,202,170,141, 0,152, 75,180,226,131, 82,171, 88,134,108,116,212, 37, 83,179,226,134, 70, +111,142,208, 3, 69, 51, 41, 57,212,205,212,115, 39,223,123,154,116, 54, 13,156,102, 52,120,242, 41,147, 52,162, 94,168,151,133, + 22, 60,132, 4,151, 45,165,157,104,162, 56, 42,193,112,149,197, 70,139,128, 91,251,177,130, 61,225, 43,153, 16,236,116,195,186, + 39,106, 52, 27,109,173, 26, 64, 36,208, 74, 71, 29,132, 16,173,114, 20,236, 13,177, 75,160, 54,219, 13,138,211,149,126,230, 32, + 85, 75, 83,183,138,115, 38,164,160, 90,138, 79, 93,164,162, 12,211,202,121,175,138,123,215, 7,175,168,243, 52,181,240,151,136, +210, 74, 39,122, 99,228,170,179,221,110,148, 64,117,250, 91, 61,121,135,115,149,218, 96, 8,158,236,108, 79, 39, 42,120,137,107, +168,160,209,168, 68,231,169,174, 35,205, 32, 52, 54,219,111,180, 12,201, 59, 60,141, 86, 59,173,174, 61, 34,215,145, 22,200, 75, + 39,186, 96,181,174, 21,174, 19,213,129, 87,154, 42,181,153, 34, 50,138, 65, 85,110,111,239,185,171, 55,108,246, 27,250,229,110, +245,129, 79,140,201, 19,146, 1, 90,118,227, 68, 74, 3, 46, 53, 94,125,247,154,251,182,225,211, 15,119,214,223,119,194,233, 88, +104, 75,103,209, 78,232,137, 18,172,119,174, 56,162, 56,242,114,226, 88, 23,123,160,199,209, 86, 37,216, 56,176, 57,199,184,125, + 72,116,142,186,156, 9,117, 54, 8, 75,105,214,207, 94, 10,111, 58, 86,171,112, 1, 5,150,197,152,248, 93, 27,170, 30,215,140, + 43,208,189, 39,136, 39,250,192, 37,159, 44, 91, 97,155,164, 53,181,110,117,186,190,190, 49,202,186,139,183,204,134,173,125,186, +128,107, 54, 14, 29,136, 4, 31, 86,213,165,185,203,187, 86, 90,233, 28,142,182, 18,122,124,179,225,102,136, 60,127,147,249,244, +163, 71,124,255,147,199,220,157, 13, 47,234,156,129, 57, 74,104,148,211,137,191,249,233, 79,248,226,171, 23,116,239,233,234, 56, +228, 70,171, 22,218, 43,189,153,151, 32, 43,181, 84,134,209,250,244,226, 28,195, 96,237,138, 75,235,171,108,168,225, 67, 50,118, + 66, 85,186,171,164, 80, 9, 49, 32, 14,154, 88,230, 98, 62, 23,150,124,199,208, 46,108,183,145, 63,252,189,223,225,248,209, 15, +249,119,191,250,183, 28, 95, 63,167,204,197, 12,116, 75,134,218, 40, 30,206, 71,147,190,236,107, 39, 15,182, 83, 59,180, 11,254, +190,144,176, 7,158, 79,145,221,246,134, 48,142, 68,157,232,173,146, 82, 66,106,103,244,138, 31, 43,190,221,147, 91,103, 28, 18, +170,182,246,202,213,214, 46,222, 21, 74, 24,161,204,180, 84,208,217, 17,186,146,253,145,224,214, 38, 73, 53,192,252, 92, 10, 18, + 28,125,182,206,189,132,142,250, 74,119,141,238,149,168, 3,108, 4,231, 61,158,142, 31,134,117, 85,213,233,213, 17,125,160, 55, + 80, 87,137,226,233, 67,160,229, 11,189, 71,146, 66,205, 51,179, 84,252,232, 8,249, 98,253,122,141, 72,174,228,160,116,159,144, + 57,147,203,137,154, 61, 89, 26,161,218,131, 35,197, 96,175, 81,245,171,234, 21, 92,175,214,227,239,208,124,198, 15,129,228, 70, +100,241,244,101, 97,196, 51,108, 70,154,120,124, 28,215,189,246,133, 92, 33,184,102,232,102,201, 84,109, 36,133,114, 94,167,129, + 9, 90, 91,144,230, 57, 29, 10, 93, 10,174, 55, 3, 70, 57,207,162, 51, 78, 58, 18, 61, 65, 18,218, 58,205,219, 84,202,139, 64, + 74, 28,238,206,164, 52,154,149, 16, 33,142, 3,229,212, 8,155,137, 16, 45,104, 28,213, 81, 68, 72, 97, 48,192, 77,155,145, 49, +224, 43,180,161,242, 34, 31,153, 14,138, 31, 38,100,177,247, 65, 31, 60, 9,207, 69, 59, 99, 44,196, 24,105,218,137, 56,196, 69, +243, 30,104, 32,165, 96,196,130, 38,132,104,245,197,127,240, 3, 82, 49, 76, 50,188, 19,117,189,175, 49,118, 47,213, 2,126, 81, +215,138,235,123,250,220,213, 50, 90,210,186, 17, 76,223,227,135, 98,218,236,185, 45,228,101,198,105, 99,166,209, 22, 19, 59,233, +224,184,116, 91,221, 8,192, 18, 80, 95, 8, 77,200,173, 83, 60, 72, 27,216, 70, 71, 47,103,188, 84,106, 19,250, 16, 88, 80,252, +224,241,167,145,115, 57, 81, 59,164,232,208,185, 82,229, 2, 97,160,229, 76,233,130,255,248,123, 31,255,169,243,193,116,153,205, +120,212,125, 69,138, 54, 93, 49,140,106, 35,210,190,222,170, 44, 53,237, 8,193,170, 70,109,133,202,184,213,177,142, 55,146,153, +116, 93,249,236, 22,110, 97,165,197, 53,175,246, 67, 32, 66,175, 6, 59,113,221, 33,174, 65, 20,171,190,121,235,121, 39, 93,193, + 35,120,186,184, 21,148, 33,171,126, 13,106,209,149, 96, 84, 86,189,162, 82, 90, 67,156,199,247,183,196, 49, 59,144, 4,231,201, +205,186,212,136,174,228, 55,121,167,115,117, 43,119, 30, 81, 67,151, 74, 64, 74, 71, 89,113,150,235,238,150,119,123,225, 68,213, + 66, 88, 3,134, 94, 28,126,221,201,251,181,166,103,251,102, 59, 41,183, 86,109, 31,175, 74,155, 79,188,188, 43,200,120,197, 20, + 10,229,178,160,126, 98, 24, 60,219,113,228,106,123,195,131, 93,196, 41,164,125,192, 45, 51,223,124,119,100,247,240,134,135,215, + 86, 80, 75,195, 68,140,202,113, 46,220,221, 53,122, 85, 98,156, 24,134,104,221,213,229,158,115,153,137, 97, 36, 72,162, 73,197, +105,183, 55,201,165,146,136,136, 20,242,229,118,173,124, 29, 41,117,166,148,202,146, 51,173, 89,106,221, 33,212,108, 62,110,149, +192,219, 45,245,176, 25,240, 62, 48,164,193, 76,110, 33,226, 98,176, 44, 65,107, 52,167, 70, 41, 19,123,227, 77,105, 32, 14, 35, +105, 53,156,133, 20,240, 26, 86,245,235,218, 54, 72,182,143,199,117,212, 89, 8,206,123, 35, 27, 10,118, 0, 80,148,203, 92, 56, + 29, 27,181, 41, 75, 45,220, 31,143,108,135,145,176,217,160, 62,210,115,166,137,144,203,194,207,126,246, 83,254,246,243,111,209, +110, 52,182, 20, 35, 72, 71,123, 49,152,145,246,117,226,100,154,222, 90, 42, 53, 23, 90,111,150,139,116,107, 86,192,217, 52,200, +175,147, 30, 33,128, 10, 37,219, 21, 64, 86,170, 97,112, 9,245, 32,210,241, 21,142,167, 25, 87,207,164, 49,179,221,239,216,236, + 62, 68,188, 77, 83, 28, 74,147, 70,203,246, 90,201,173,114, 60,221,115, 57,157,112,174,173,239, 20,202, 82, 60, 48,144,253,192, +253,225,142,229,124,103,100,169, 52, 18, 35, 20, 26, 74, 39, 18,237,117,179, 17,252,108,220,112,141, 74, 41,182,234, 74, 27, 11, + 98,245, 10,163, 4,164,122,150, 82,173, 75,191,116,156, 36,156, 31,232, 90,113,123, 96, 10, 22, 66,107,142,184,217, 98,241, 71, +161,135,193, 82,232, 68,156,102,100, 12,150,155,136,214,210,232,151,133,228, 71, 42, 5,102,243, 26, 72,116,168, 84,131,229, 68, + 33,185, 70, 67,136,206, 16,194, 52,123,207,169,125,193,251,181, 38, 75, 49,252,101, 12,140,110, 3, 67, 67,162,183, 27,189, 11, +184,224,153, 82, 52,229, 50,141,208,197,192, 55,210, 24,156,195,169,237,242, 25, 2,227,176,179,213, 93,178, 53, 83,111, 66, 15, +224,134, 72,107,153, 58,155, 70, 53,120, 69,170, 82,165, 65,117, 4, 77, 88,102,223,168,123,154,148,232, 12,158,227,147,178, 29, + 61,213,216,182,248,102,225, 84, 47,113,205,181, 20,240, 35,174, 70,226,198,193,118, 36,148,209, 0, 89,107,109, 48,142, 29, 29, + 10,179, 15,248, 56,224,107,194, 75,161, 56,243,200,187,170,176, 56,130, 84, 74, 15,196, 41,130,247,180,216,240,189,179, 29, 7, +210,218, 16, 65, 64,170,172, 18,164,128, 56,143, 19, 69,188,213,224,164, 59,196,123,198, 96,151,155, 90,140,108,169,189,161,221, + 58,248,186,106,101,123,239,166,247,125, 11,132,106,214,238, 64,237,193,120, 56,205,148,243,133,222,236, 18, 48, 6,240, 49,218, +231,105, 54,169,163, 91, 6,138,110,107, 53,222,253,175,255, 71,191, 94,255, 28,237,156, 78, 11,243,233, 72,235,141,128,178,153, + 60,178,234,168,109, 2,184,166,170,223, 62,148,126,251,215,191,245,103,216,191,219,222,253, 25,115,173, 28,238,238,169,203,153, + 90, 26,187, 36,196,193,173, 47,255, 21, 58,182,254,187,218,215,223,247,110,149,219,110,129, 79,233,246,189, 65,187,129,171,218, + 98,123,237,190,240,234,246,200,171,175,190,166, 93,142, 44,101, 54,175, 1,166,189, 46, 43, 46,188,148,198,164,163, 61, 83,170, + 48, 80,185, 20, 71, 37,144,253, 66,111,222,104,151, 17,186,116, 66,247,132, 24, 8, 85,144, 90, 89,152, 87,179,101, 99, 94,238, +109,138,206, 98, 97, 97,239,168, 53, 34,255,248, 79,254,169,138,128, 35, 89, 95, 87, 27, 46,173, 50, 10,170,237,101,154,233, 0, +123,179, 78,185, 95,245,149, 34,138, 19,227, 88,235,186, 51,238, 98,181, 15,183, 66, 93,140,233,110,183, 38,209,106,123, 36,100, + 29,195,218,120, 66, 80, 18,145,172,198, 37,183,222,171,221,182,189,216, 77,163,175,193,243, 48,136,213, 2, 48,237, 99,105, 74, +242,171,182, 53,154, 76,161,245, 12, 62,224,213, 27, 85,206, 55,180, 90,231,185,172,225, 25,112,150, 5, 96, 13, 8,174, 16, 25, + 31, 2,162, 29,231, 2, 42, 74, 45,141,142,105, 84, 85, 21,223, 45,184, 37,222,140,114,185,101,124, 48, 88, 71,173, 11,218, 43, +154, 38, 6, 44,124,211,232, 80, 28,177, 53,106,232,212, 10,125, 62,113,247,230,192,177, 71, 66,240,164, 16,236,166,231,163,145, +129,134,137, 71,251, 29, 15,158,236,184,142, 2,243,204, 47,191,124,197, 65, 3,191,251,253, 27, 6,140, 66,212,125, 96,255,112, +199, 39,207, 62,100, 94, 22,126,254, 55,223,240,205,151,183,116,215,185,191,189,227,254, 92,113, 49,144,196, 12, 92,189, 58,122, +203,148,118, 1, 25, 72, 18, 80,189,112,169,198, 31,118,171, 13,202,148,173, 74,119, 32, 62,226,124,176,219,116, 20,188, 4, 66, +156, 8, 49,146,250,133, 16, 77,135,121, 58,156,185,203,103,122,177,159, 19,197,148,160, 67,154,152,246, 15, 25,130, 67,186,133, + 45,123,235,228,118, 38, 4,143,230,198,156, 15,134,221,204,133,230, 58,209,123,252,218,146,104,213, 24,228,226, 45,187, 48,164, + 4,210,233,249,109, 34,223, 86, 54,193, 15, 60,184,218,240,236,179,143,121,250,209, 99,188, 68,242,188,240,197,231,255,129,159, +255,237,183,204,181, 17,130,189,209,246,154,185,212,106,121,143,117,207,111, 43,124, 35, 2,246,110, 15,105,191,194,115,146, 55, +163,218, 48, 38,210,176, 65, 92,226,156,179,101, 80,104, 68,226,138,243, 84, 92,232,108,162, 35,140, 17, 45,157,224, 2,121, 61, + 68,110,146,227,230,225, 21, 63,248,209, 63,225,227, 15,127,192, 79,127,246, 51,126,250,147, 63,167,181, 51,243,220,200,221,234, +116, 90,237,251,238, 35, 36, 23,232, 30,130, 11,124,244,224, 41, 31, 62,251,152,195, 82,248,246,215,223,226,164,176,217, 15,124, +248,228,134,113,119, 5, 52, 82,179,230, 74,140,133,161, 58,170,122,102, 21,130, 52,212, 39,170,131,168, 11,168,163,245, 8,203, +197, 24,231,254,154, 62, 52,150,218,104,185,208,187, 35, 77,202,229,190, 48,207, 5,231, 6,100, 16,134,193, 49,183,140,214, 72, + 28,192, 5,101, 57, 84, 98, 20, 92, 11,184, 96,182,197,218, 45,240, 24,186, 85, 15,115, 5, 13,224,180,226,157,163,150, 21,246, +219, 4, 55, 54, 52, 37, 60,142, 86, 32,174, 80,168, 69, 34, 67, 40,204,165, 48,140, 14,252, 72,175, 11,236, 34,105,217, 16,106, + 51, 44,180, 52,186,206, 70,216,171, 35, 90, 10, 23, 61, 19,212, 81,157, 18, 72,224, 27,251,155,107, 4,200,217,110,175,189, 23, + 46,165, 25,162, 90, 23,250,165,211,100, 50, 54,194,249, 76, 73,230, 52, 24,123, 96,110, 5, 25, 13,140, 85,206,103, 84, 19,187, + 52, 82,139,241,220,157, 56, 52, 10, 27,153,112, 18,200,114,100,114,129, 62, 14,148, 82, 13,235, 57, 23,226, 48,112,208, 78,208, + 78, 8,157,185,155,219, 94,164,225,250,150, 77,176, 6, 72, 79, 14,215,140, 27,210, 5,194,236,240,131, 55,250,216,224,153,118, + 9, 93, 26,251,171,196,118,187, 53, 6, 1,202,169, 54,122,233, 76, 67, 88,223,232, 45, 64,235, 69,136,206, 14, 63, 49, 13,108, +118, 87, 12,155, 45,209, 5,134, 33,174, 25, 32,123, 27, 53, 13,182,188, 67,114, 27,144,204, 52,216, 96,105,238, 37, 55,150,203, +140,167, 24, 88,203,193, 24, 71,226, 56,174,156, 1,227,120,200,170,249, 21,237, 22,160,133, 53, 13,110,236, 1,123, 62,246,245, +230,175, 44,165,145,151, 25,213,178,242,250, 97, 72,145,148, 70,203,143, 96,239, 55,172, 86, 81,227, 4,172,244, 73,187,117,226, +188,253,190, 54, 12,195, 45, 22,216,190, 44,153,220,214, 26,104, 91,195,142, 41,154,176,104, 37,128,249, 53, 96,108, 68, 75, 11, + 52,235, 26,206,126, 75, 30,117,216,123, 83, 45,157,214,141,196,153, 91,229,112, 56,146,207,103,180, 67, 94,238,232,181,177,244, +197,190,175, 57,115, 90, 58,165,195,164,198,251,168, 93,105,161,144, 91,197, 55,199, 44,149, 54, 47,104,233,232,220,241, 67, 34, +171,162,139,229,130,154, 83,212, 37,106,153, 73,237, 72, 13,137,188, 40,193,101,146, 27,112,186,225,112,233, 4, 60,184, 6,226, + 12,151,233,125, 64, 12,251,182, 30,160,196, 52,158,186, 62,136,213,198,190,193,121,187, 89, 59,197, 55,187, 57,175,193,111, 28, +182, 95,213,102,181, 11,156,141, 51,155,116,154, 66, 32,226,164, 83, 90,179,174,177, 88,189, 67,170, 65, 68,130,170, 5,217,196, +186,230,189,234,138,104,181, 29, 44, 98,101, 40,175,224,162,163,118, 99,140,186,106,149, 39,137,130, 22, 5,223,169,171,161,204, +137, 82, 89,171,122,218,240,206,217,168, 30, 71,136, 17,105, 6,215,176,191, 60, 54,198,112,109,117,126,219,227,191,228, 70,115, +246, 55,116,189,210,194,250,179,175, 38,171,233,107,194, 81,180,144,187,183,206,127,183, 19, 99,247,118,102,243,189,112, 58, 31, +120,125,158, 9,131, 77, 64,156,139,124,248,236, 99,126,248, 36,242,213,243, 55, 28, 46, 70, 24, 90, 46,141,205,205, 21, 85,207, +220,150,194,135, 79, 31,178,219, 6,122,133,210, 33,183,194,155, 23,119, 68, 21,158, 61,189,230,191,251,231,191,195,223,252,249, + 79,248, 63,254,213,175, 56, 20,251,123,215,124,160,187,192,146,141, 14,215, 69,152,246, 15, 40,185,161, 33, 49,164, 71, 56,109, +108, 18, 68,183,167,123, 33, 14, 66,242,147, 49,238,241,196, 24,184,222,236,241,253,196,210,149,143, 30, 61,100,255,240, 17,191, +254,226, 87,188,124,254,115,142,135, 25,231, 76,217,107,239, 10,138,184,176,190, 64,148, 39, 87,137,221, 52,210, 27, 84, 81,122, +117,204,125,224,246,213, 61,113,216,144,245, 68, 95,188,237, 44,223, 78, 8,188,153,242, 66,240, 54,150,247,158,228, 6,162, 87, +114, 83, 98,180,150,198, 82,212,218, 24,181,240,234,238,200,221, 95,253, 7,190,251,246, 27, 62,251,225, 15, 56,190,121,195, 47, +127,249,156,162,126, 37,123,193,156, 45,145, 42,111, 15,117,210,141,132,232,141, 53, 47,234, 0, 59, 60,212,214,233,165,211,122, +166,107, 51,157,110,143,248, 48, 48, 36,161,185, 8,117, 13,203,225,168,222,214, 57,167, 44,248, 92, 72,174,227,118,118, 88,234, +115,225,178,192,252,197, 75,122,254, 11,182,229,192,213, 16,248,236,247,126,159, 23,175,190,134,151,175, 24,150, 70,205,149, 51, +198,137,118,217,179,184, 6,201,177,148,198, 47,191,253,146,231,175,191, 51,167,122,156,136, 97,226,124, 82,126,253,197, 61,195, +230,150,237, 56,176,219, 25, 86,212,181, 29,135,190,224,123,182, 67,247,104,185,142, 20, 18,174,173, 73,236,188, 32, 91,111,150, +181,102,118,188, 97, 35,228, 38, 40, 19,238,210,236, 48, 31, 27,212,153,126,114,104, 77, 48,128,250, 66,203, 2,203,170, 68,238, + 74, 41, 21,183, 84,220,184, 67,130,195,245, 76,149,128,244,190,134,181, 28, 58,122, 82, 15,184,218,104, 24, 84,133, 20,209, 62, + 32, 61,179, 25, 39,123, 64, 22, 71, 74,153,206,250, 48, 15, 25,127, 89, 8, 4,244,210, 8,221,122,253, 18, 27,218, 7,156, 12, +244, 65,232, 4,114, 63,217,216, 63,108,145,126,164,167,134, 27, 28, 77, 43,109,174,120,159,104,139,194, 80,137,201,147,231, 5, +231, 54, 16, 58,157,153,218,133,144, 60,251,152,152,213,102,115, 73, 3, 5,135,204,129,141,223, 24,115, 35, 41, 68,193, 21, 71, +236, 66,211, 6,110,198,249, 9,231, 2,185,119,244,188,144,198, 72, 62, 93, 40,181, 49,137,199,185, 74,214, 66,239, 35,123, 73, + 44, 68,216, 52, 54,203,194, 57,235, 10,245,218,129, 43,140,181,147,221, 66, 26, 6,130, 58,230,161,208, 91,163, 94,172, 55,162, +107,181, 23, 32,151, 74,107, 54,205,202,189, 17,147,113, 24,172,138, 30,108,186, 25, 12,154,244,217,167, 79, 25,119, 59,203,205, +185,191, 63, 66,254, 79, 13,187, 85,127, 59, 32, 7,111, 78,141,203,237, 27,200, 51,163, 87, 62,124,250, 16, 23,211,187,113,252, +223, 11,214,175,159,248,237, 69, 90,248,205,239,215,172,178,173,247, 20, 14,135, 74, 62,220, 82,150, 51,251, 77,100,255,248, 49, +235, 95,130,183,133, 98,149,245,146,254,150, 60,250, 31,125,237,111,191, 70,126,251,255,187,116,252,253, 29,173,204,212,211,153, +205,118, 96,251,193,211, 85, 57,186,174, 4,215,209,120,183, 71,224, 59, 50,237,187,223,175, 24,209,149, 93,198,170, 76, 33, 3, +241,168, 28,190,121,206,237,203, 23,104, 83, 83, 80,107, 32,151, 76,108, 48, 52, 79, 10, 74,166,178, 28, 51,195, 54,174,153,163, +192,185, 20, 98,154,240,123,207,252,221, 27,100, 26,205,236, 86, 79,164, 33,112,186,204, 12, 98, 7,253,243, 44, 36, 54,184,208, +201,203, 5,138,210,162,101,209, 70, 46, 4, 45, 86, 11,235, 88,210,208,189,109, 15,119, 11,201,161,214, 11,118,218, 45, 69, 42, +209,118,202,125, 33,134, 64,236,145, 69, 43,174,139, 33, 40, 49, 69,166, 56,179, 10, 21,116,149, 44,168, 5,179,122,165, 75,195, +221,124,159,199, 79,119,132,239,126,193,237,221, 66, 94, 41,111,165,152,235, 56,186, 0, 94,168,173,173, 99,207, 21, 20,175,150, +126,173,125,237,123,235,219,106,157,141,139, 90, 16, 11,167, 57,123, 49, 86, 21, 59,153,121, 7,161, 49,226,232,117,237, 75,123, + 7,165,161, 53, 91,149, 47, 56,186, 58,162,218,184, 92,131,167,151,182,214,251,148,228,253,187, 84,119, 15,106, 86,171, 98,253, +116, 13,109, 29, 83,129, 84, 69, 93,165,213,182,170, 56,101,229,225, 67,206, 71,222,220,207,246,102,229,140,177, 63,183,133,152, + 2,159,126,176,231,245,171, 11,151, 96, 1,187,229, 60,147,243,158,211,253, 9,117,194, 52,118,164, 36,187,121,135,194,208,133, + 75,133, 55, 47, 46,124,247,252, 21,121, 57,112,251,230,200,177,101, 42,145,205,213, 53,195,240, 17,227,110, 71,108, 74,247, 27, + 30, 63, 29,105, 57,227,227, 3,166,209,116,156,155,224,216,143,194,233,112,161, 15,141,122, 94,168, 75,177, 20,243, 24,217,166, + 72, 88, 10,231,166,228, 10,249,246, 43,190,187,124,199,163, 15, 62,225,112,255, 13,231,195,188,134,251, 96, 57, 85,156,218,109, +156,222, 41,253,204,175,190,250,156,201, 79, 54,213,241,158,253,144,120,248,228, 41,109,223,121,121,247, 10, 39, 19,226, 22, 66, + 55,117,103,237,157,174,133,174,158,205, 52,224,125,229, 50, 55, 98,178,174,190,102, 91,179,168,179, 10,182,213,233,154,101, 36, + 66,228,243,111, 94,241,226,187, 87,116, 34,248,129, 81,140,127, 94, 90, 69,155,241,213,181,174, 15,243, 96,167,250,156, 27,162, +142, 48, 4,162,216,122,201, 5,251,249,107,189, 65,238,156,156,237, 88,125, 60,179,217,111,152,198, 68,239, 35, 75, 83, 74,201, + 72,171, 6,254, 33,209, 91,179,126,246,125,198, 71,207,176, 25,232,203, 2, 26,121,254,245, 29,255,215,225,223,178,189,222,243, +193, 7,223,227,143,126,231,191,230,244,236,196,207,254,230,255,225,112,120,205,206,121, 74, 86,230, 57,147,187, 64,181,250,211, +118,191,195, 77,137,211,156,233,231, 91, 6,119,100,156,182, 16,182,156, 46,142,195,171,215, 4,255,138,221, 46,240,193,135, 79, +217,222, 60,164,103, 97, 28,149, 62, 56,164, 15,208, 22, 92, 18,195,185,119,135,250, 72, 88, 42, 61, 42,185, 11,254, 50,163, 26, +169, 90, 89, 56, 81, 69,136,110, 66,134, 11,101,169, 20, 85, 38, 29,232, 61,147,151, 78,150,142, 95, 9,148, 41, 77,228,222, 13, +225,234, 38, 46,189,224, 91, 35, 12,137, 65, 44,180,118, 90, 26,179, 8,227, 54, 34,205,147,162, 39,215, 19,174,116,116,101, 94, +184, 96,171, 36, 51,166, 41, 62, 90, 37,182,204,153,180,210, 14,139,216,109,155, 0, 99, 20,106,134,190, 8,248,245, 34,160,158, + 86, 79, 12,147, 55,158,194,178, 18,219,100, 67, 26, 35,181,103,114, 29,232,154,105,106,246,199,152, 26, 73,141,107, 81,215,134, +135,170,133,159,162,236,233,156, 44, 12,150, 2, 82, 22, 14,171,195,126, 8,129,232, 38,232, 23,102,215, 17, 57, 65,223,224, 89, +208,222, 40,217,222,159, 92,140, 52,159,112,181,208,150,133,144, 2,115,176, 73, 81,157,149,179, 10, 34, 35,174,100,154,220,163, +161,147, 59,116, 77,204,189,145,156, 99,127, 61,177,100, 24,106,199, 93, 69, 74, 43,112, 92,136, 42, 20,233, 22, 70, 12,158,193, +139,129,131, 48, 72,150, 80,109, 20,222, 60,155,109, 98,187, 27,121,247,148,252,207,253,144,191,255,235,221,228,169,167,128, 22, +199,205, 62,146, 82,250,255,255,119,127,251,247,242,255,253, 60,191,253,145,128,182,241,212,131, 35, 57,199,213,126, 98, 76,239, + 39,128, 39,123,199,155, 75,164, 44, 23, 54, 81,120,250,225,213, 74,102,252, 79,125,209,255, 25,201,184,223,250,136, 15,132,243, +113, 3,183, 54,106,111,173, 17, 92,183,231,150,131,202, 66, 85,211, 15, 15,227,192,133, 70,200, 6, 40,211,236,136,189,225,212, + 49,107,160,151,198,226, 35,221,121, 42, 51, 83,186, 70, 91,229,124, 62, 16,101,160,141,145,214, 97,138, 19,205, 29,105, 64,208, + 6, 82, 9, 72, 64,187, 85,195, 80, 27,135, 27,176, 69,215, 7,207,111, 78,226,226,223,178,160,237,225, 85,115, 55,110,122,244, +171,113, 76,215, 96,142, 1, 25,196, 54, 7,246,205, 18, 27,109,202,218,135,141,215, 19,255,244, 71, 3, 90, 59,255,231,193,147, + 75, 93,247, 32,150,149, 94, 88, 59,180, 88, 45,160,169,165, 61, 11,134,124, 29, 86,132,172,190,181,159,173, 99, 62,215, 61, 52, +103,193, 21, 17, 11, 19,168,195,171,101, 6, 84,108,183,228,215,248,150,137, 74, 32,144, 80,148, 20,131,237,128,106, 69,151, 70, +105, 74, 28,162,165,191,155,237,123,213,250, 48,208,131, 1, 92,168,182, 55,246, 66, 41,213, 58,253,235,138,129,184,106,106, 85, +209,156,185,125,115,207,220,197,198,171,206, 88,216, 46,116,234,114,226,197,107, 3,215, 12, 14, 52, 54, 30, 93, 13, 60,255,245, +151,252,242,249, 29,223,251,222, 99,174,252,136,216, 2,159,136, 16, 55, 66, 34,161,151,204,151,223,126,203,183,183,158, 97,247, + 33,207,158, 13,140,155,200,102,119,195,211,135, 31, 19,250, 75,106,105,108,246,143,120,188, 83,238, 15, 13, 63, 36,235, 55,135, + 5,233, 59, 62,120,240,132,211,237,183,168, 84,206,167,204, 82,132,135, 15, 34, 75, 13, 56, 45,156,142, 7, 38,119,197,249,118, +230, 94,224,245,221, 29,165,125,201,245,163, 15, 89,202,133,122,119, 33, 86,232,206,192, 30,178,238,139,123,173,204,173, 83, 5, +194, 48, 88,199,190,156, 40, 29, 62,124,250,148,165, 47,220,189,186, 35,141, 19,251, 39, 55, 60,222,236,153,219,153, 90, 27,115, +174, 72, 47,212,114,176,158,109,207,168,139,164, 56, 26,108,200, 25,105, 76,213, 14,109, 90,161, 75, 99, 28, 6, 11,250,105, 39, +104,125, 71, 71,140,206, 83,196, 24, 5, 78, 45,124, 89,155,173,123,140, 34,215, 40, 75,179,209, 94, 11,132,232,136,201,227,137, + 72,231, 55,233,101, 41,248,124,193,249,138, 15, 27,118,155,145,214, 70,242, 92, 56,231,217,252, 1, 3,148,236,173, 94, 89, 50, + 50,175, 23,165,201,168,103,151, 86,241,167, 19,103,253,134, 20,132,103,159,126,159, 44, 63,226, 23,191,240, 92,110,111,137,210, + 96,240,208,205, 4,214,186, 73, 87, 66,239,108,167,200,253,171, 19,103, 50,234,149,121, 62, 19,211,196, 52, 68,106, 75,188,124, +213,248,244, 89,224,191,255,111,254, 11,190,254,106,225,215, 95,124,129,159,103, 52, 25,238,151,170, 52, 41,198, 93, 56, 55,170, + 87, 82, 82, 74, 45,104,177,145, 37,173,216, 36,172,119, 46,125,161,183,130, 72, 68,244, 66, 62,159,216,142, 35, 36,103,156,246, +220, 56,246,142,215,133, 97, 19, 8,221,147,123,181, 86,197,246,194,166, 64,149, 13,121,117, 66,187, 41,146, 43, 76,216, 42, 45, +166, 61,226,222, 18,221, 28,177, 13, 84,159,201,117, 97,231, 70,122,168,148, 37,154, 2, 21,165, 85,199,226, 10,155, 20,169,117, + 32, 55, 8,226,240,162,148, 48, 83, 79,141, 9, 79,145, 64,189, 52, 6, 47, 44,234, 9,169, 83,101, 49,110, 69, 72, 68,160,208, + 9,170, 12,147, 50,215,192, 16, 3,253,156,113,226,136, 18,136,201,209,202,217,234,177,226,233, 58,195,185, 33,233,134,105, 43, +116,127,162, 31, 27,199, 80,112,234,112,107, 77,142,222,236,230, 30, 60,185,116,118,219, 0,186, 48,207,103, 66, 26, 72,126, 64, + 93,101,179,153,168,179, 77,166,252,232,105,167, 25,241,106, 68, 74,231,113,169,211, 90,199,247,200, 56, 25,235,130,148,104, 9, + 6, 17,171, 95,118, 88,162,216,168, 91,212, 46, 55,213, 19,213,232,147,186,218, 13, 85, 29,209, 57, 82,112,239,165,155,109, 83, + 73,193, 59, 37,165,247,135, 90, 53, 16,154,154,215, 35,186,247,155,100, 91, 41,169, 99,114,198, 22,121,143, 31,162,230, 53, 9, + 81, 40, 81,232,217, 88, 5,181, 43,205, 85,220,228,209, 2, 41,120,206,135, 76, 27, 59, 18,149,249, 62,211,165,112,159, 43,211, + 60,225,135,107,122, 60,145,231, 66,174,129,160, 39, 98, 63, 83,167,100, 83,171, 83,133, 90,169,139, 18, 73,136, 92, 33,189, 51, +235, 75, 90,247, 4,203,217,187,117,119, 32,171,188,161,129,120,235, 8,162,148,254, 54, 92,102, 22,175,176,142, 41,187, 58,202, + 90,229,120,235, 43,119, 33,144,187, 85,219,188, 24, 53, 76,176, 91,182,215,182,186,213, 11,237,203,159,243,151, 47, 26,199,165, +113,210, 0,120, 27, 43,138,165,157,107, 95,189,211, 40,149,138,119,201,240,170,221,161, 65,233,222, 35, 90,240, 43,143,158, 20, + 44,108,215, 21, 13, 22,194, 19, 44,136,215,189,141,229,181, 89,200, 69,180,209,107, 51, 84,105, 10,120,160, 96, 98, 4,233, 54, +185,144,224,145,170, 80, 11,172, 8, 72,130, 5, 41,130,136,213, 76,188, 5,201,188, 26,109, 77, 13,132, 71, 93, 7, 62, 70,224, + 50,111,124, 76,142,211,249,204,113, 54, 97,188, 23, 49, 64,133, 11,140,211, 64,156,103,158,191,236, 70,105, 15, 70, 58,223,248, +192,203,243,137,221,163, 27,158, 93,143,228,243,145, 30, 6,134,209, 64, 42,139, 40,151, 55,247,124,243,229, 87,124,125, 91,217, + 61,250,148, 31,127,250, 41, 59,119,100,190, 8, 15, 30, 61,226,251,223,127,140,151, 45,195,112,205, 16, 13,143,248,193,179,107, +250,233,200, 57,159, 16, 29,169,217, 19,244,150,229,248,156,187,251, 35,210, 34, 46,116,190,188, 63,115,127,123,226,249,171, 23, +156, 87,118,254,155,187, 35,211,246, 17,127,240,123,191,207,139,151,207,153,166, 27, 30, 95, 63,102,185,124,201,114,233,212, 90, + 80,177,108, 66, 91,150,181,139,217,168, 50,211, 46,179,237,140,123,227,117,110, 44,203,133, 42,157, 82, 23,246,219, 27,126,248, +193,150,124,127, 75, 43,149,152, 28,187, 97,194,249, 29,139, 62, 96,218, 87, 88, 50,199,124,166,148, 19,221, 53,162, 19,196, 37, + 98, 12,212, 94,109,189,211,100, 21, 17, 57,194, 26,232,113, 43, 74,246,173,151,160,213,167,232,226,155, 0, 0, 32, 0, 73, 68, + 65, 84,186,202, 69,148,249,178,188,203, 0,172, 99, 41,106,179,176,214, 82, 33,214, 72,244,201,110, 99,193, 91,165,175, 84,222, +220,118,206,177,178,153, 58, 83,111, 12,195,192,180, 1,252,192,124,185,160,221, 52,188, 78, 70, 68, 60,151, 6,163,118,164,118, +130, 55,129, 78,111,141,115,168,188,249,234,115, 94,221,191,226,225,230, 33, 63,254,236,199,188,120,245,146,207,191,254, 37,190, + 84,198, 26,169,106,120,225, 90, 50,103,239,169,151,204,225,124, 97,179, 73,235, 77, 22,180,102,142,186,224,157, 7, 31,120,117, +127, 96,106,183,252,238, 15,174,249,238, 54,112,188,205, 68, 63, 0, 3, 77, 51, 45,116,244,220,172,254,184,233,180, 73, 72,135, + 78,119,142, 28, 60,174, 8,205, 25,249,177,157, 23,186,183, 62,190, 11, 74, 41,157, 67,111,140,209, 51,121,161,143, 27,106,175, +136,139, 84, 32,104, 33,106, 36,138,174,248, 82, 33, 36,199, 92,108, 36,153,170, 51, 74, 93,244,208, 21,113,205,118,241,151,138, +138,226,195,192,198,121,212, 69,230,243, 61,210, 61,161,193, 38, 57,114, 17, 78,253,100,254,136,104, 65, 52, 41, 51, 45, 37,164, +129, 63,216,161,165, 95, 41,204,138,171,198,205,143, 10, 26, 19, 15,175, 71,218,253,204,105, 57,147,134, 29,163,120,100,155,141, + 27,209, 51,209, 39,102, 10, 62,218,250, 7,223,105, 37, 32,173,227,227, 6,212, 24,241, 14,161,212, 74, 44,145,209, 11,111,234, +194, 62,238, 25, 60, 28,231,194,176,162,109,235, 82, 8, 42,232, 37,210,163,225,179,196, 16,133,148,150,153, 15, 5,141, 66, 98, + 64,116, 70,130,163,185, 61,131,203, 6, 16,202,129, 81, 38,218, 94, 57,149,194,213,146,136,163,103, 41,153, 97, 81, 24, 28,121, + 85, 41,143,209,209, 75,195,135,213,133,209, 43,226, 6,188, 58,155, 21,123,243,115,140,195,240, 94,170, 92,189,241, 14,171, 44, + 62,188,183,228,123, 51,119,239, 90, 29,126,143,135,133,102, 18, 43,237,106,214,192,247, 88,103,123,251,253,168, 75, 65,178,146, +112, 84,103, 14, 16, 15,171, 62, 90,104,115,129,161, 66,171,200, 57,145,211, 9,137,157,155,184,161, 92, 22, 14, 75, 37,244,194, +168, 19, 34, 5, 23,142,244,101,196,121,101,108,133, 69,205, 89,192,180,193, 87, 37,169, 50,183, 78,145, 74,240, 3, 53,207, 4, +241,178,238,190,223,142,216,205,184,212,213,172, 78,234, 87, 47,185, 84,196, 41,210, 76,161,105,138, 84,115, 68,235,197,234, 28, +160,212,213,126,230,145,119, 61,105,149,117,183, 44, 14,149,130, 83,168, 53,243, 77, 49, 30,185,139,235, 55,184,155,121, 77,187, +141,208, 21, 11,226,104,111,150,104, 45, 25,113, 29, 47, 30,105,171,118, 82, 65,122, 67, 84,222,189,233,246,158,141, 9,191,250, +224,163, 54, 58, 98,114,249,226, 25,130,208,214, 23,152,115, 3,195,184, 80,230,138,184,145,224, 44, 11,144,165, 91,197, 39, 8, +165, 55,122,245,118,243, 6, 8,193,146,209, 88, 8,144,106, 19,138, 46,224,194,154,150,247, 14, 23, 11,173, 53, 68, 61,121,201, + 28,239,103, 74,119,248,224,172,175, 47, 74, 91, 42, 51,157, 55,218, 41,110,226,131,199,143,217, 12,129, 93, 28,209,229,196,165, + 41,159,125,111,135, 32, 28,150,204,178,187, 37,104,162,168,114,119, 58,145, 79,183,224, 29,209, 37,150,195, 29,122, 62,162,215, +143,184,122, 52,242,120,215,120,254,139,191,224,246,120,207,245,195,135, 28, 94,191,230,238,116, 15, 56,142, 47,110,121, 57,223, + 35, 45, 48,151,194, 93,158, 57, 31, 47,168,223, 16,156,112, 56,188, 65,221, 6,239, 2,231,243, 29,196,200,245,205, 13,231,195, + 29,151, 95,191, 36,250,196,227, 15, 54, 44,151, 87, 12,155,107,182,227, 53,111,222,220, 83,242,133,174, 74, 19, 27,251,133,232, +233,162, 4, 31,161, 27,198,214,133,136,138,112,123,184, 71, 93,224,131,199,143,121,180,247,188,185,123,131, 75,201,152, 7, 8, + 72,161,207,103,188,247,236,182,137,253,205,142,204, 3,154,192,221,241,142,118,188,112, 57,158, 41,205,126,166,222, 98,132,173, +139, 42, 76,226,169,210, 87,231,128,163,161, 56,231,136,235,232,170, 43,140,163,167,230,133, 57,159,215, 0, 79,179,234,102,240, +104,239,212, 90,169,181, 83,170, 35,166,193,132, 57,186, 6,126,106,231,112, 42,228, 82, 25,242,145, 41,109,205,117, 62, 13,180, +232, 40,231, 66,233,179,245,194,155,144, 83, 34, 47,103,130,235,140,219, 45,146, 6,242,165,211,107,231,245,252,146,101,184,231, +230,234, 3,126,248,241, 51, 30, 60,249,144, 95,253,242, 23,124,247,213,175,108,202,211,141,243, 95,207, 51, 89,154,253,247, 77, + 56,206, 11,187,158,240,222,116,181, 45,116,130, 43,252,228,167,191,224,127,249,250, 75,254,240,199,191, 67,238,137,187,251,215, + 60,251, 56,152,248, 71, 10,161, 56,212,123,242, 88,233,151, 66, 95, 44, 65, 47, 93,160, 21, 74,174,184, 20,232, 14, 42, 21,201, +102,246,243,120,210, 52,160,116,230,101, 38,165, 13, 49, 89,184,116, 35,194,210, 27, 65, 70, 36,102,196,205,248,106, 19, 53, 23, + 22, 66, 11,118, 0,174,157, 28, 70, 74, 47,140, 30,130,118,232, 1, 31, 6,186, 84, 46,254, 68,104, 66, 47, 2,206,209,186,163, +251,128,111,133, 54, 8,177, 22,130, 38,250,156,193,157,145,228,105, 44, 56, 38,226,160,108,100,162,230,198,152, 18,110,232,168, + 23,162, 14, 76, 97,143, 43,138,198,196, 85,216,176,180,108,142,246,162, 56,215,145, 48,146, 23,101, 63,108, 40, 78, 17,201,148, +158, 16, 55, 16, 6, 11,226, 85, 87,105, 10,213, 45,118,248,172,149, 57, 42, 33,141,212, 94,201, 89, 33,101, 46, 25, 66, 52,152, + 72,108,214, 50,137, 33, 18,156,226,139, 24,135, 30,184,132,202,134, 64,239, 23,116, 22,148, 1,124,230,152,103,118,211,142, 24, + 70,106, 61,209,151,142,186,100,134,200,121,161,208, 40, 2, 62,155,130,185, 59, 97,174,142, 49,232, 58, 93,180,158,130,247,213, +204,128,226,241,193, 40,140,105, 24,222,211,197,215,182,216,206, 89,192,236,189,222,122, 81, 98,116, 86,117,126,143, 23,117, 86, +157,247, 48, 37,112,239,247,166, 94,129,210, 96, 94,102, 84,243, 58,106, 95,109,127,205, 84,220, 41,136, 29,244,214,192,120, 61, +119,152,177,149, 80, 98, 61, 44, 94,208,243, 9, 21,143,134,209, 50, 38,245, 76,190, 52,115,157,197,145, 50, 95, 24, 17,154, 36, +186,102,118,178, 48, 47, 9, 74, 33,188,213,152,178,142,187,173,186, 96,105, 93,213,183, 28,116,163,206,185,181, 54,211, 86, 40, +162,170,141,185,139, 42, 90, 76,255,232,165, 89,149, 77,220, 10,165, 49, 53,171,180,138,226,236,240,224,132,222,140,252,228,188, + 37,220, 75,175,224,141,195,237,180,210, 74, 53, 88,107,179,100,169, 91,205, 70,218, 61, 82, 58,221, 23, 92,243,246, 64,139,158, +226, 77, 46,163,173,155, 62,178,234, 59, 77,108, 83, 35, 99, 5,111,201,205, 75,183,155,178,174, 83,129,232,120, 39,148, 81,111, + 78,227, 94,236,156,225, 92, 48,213,108, 92,245,120,226, 77, 76, 82,127, 35, 38,113, 35,180, 57,211,155, 37,233,113,221,220,232, +107,107,195,139,178, 28,143,220, 93,108,228,233, 48,162, 85,171, 5,194,200,144, 70,110, 79, 71, 26,194,205,190,113,245,120,207, +142,206,231,207, 95, 18,226,200, 78,193,111, 34, 79,159, 92,113,238,157,210,133,122, 56,177,220,189,100, 84, 71, 72,202,183, 34, +196,155, 71,132,135, 91,158, 62,126,204,131,169,242,191,253,217,255,202, 95,254,236,107, 74,213, 53, 84,209,233,221,163, 52, 46, +189,174,181, 21, 37,249, 13,105,152, 56,157, 43,251,107, 8,131,231,114, 11, 41,194,213,102, 99, 63,100,226,216,196, 13,196,133, +211,124,199, 79,255,238,231,196,233,199, 92,239, 28,175,110, 95, 16,167, 71,108, 54,157,194, 29,165,102, 91,181,104,135,158,241, + 45,216,142, 58,138,137,113,176,202,200,120,253,128, 79,158,125,196, 70, 27,132,198,227,239,125, 76,242, 11, 63,251,217,175, 24, +227, 53,143, 30, 61,100,188,113, 92,164,115, 56, 95,200,243,137, 33, 14, 12, 99,100,218, 79,180,237, 53,249,177,237,195, 47,203, +204,114,190,163,148,217, 40,128,210,169,242, 22, 44,220,223, 25,222, 88,229, 58, 34,235, 97,221,129,119,137, 97,176,122,212,144, + 6,190,123,249,138, 90, 77,218,225,131, 85,181,186, 90, 29, 51, 14,137,249,124, 90, 51, 30,222,180,172,199,202, 44,194,121, 48, +242,221, 48,141,120, 34,131, 27,209,222, 76, 13,235,236,166, 45, 18,169,205, 50, 2,129,198,224, 42, 62,153,106,248, 84, 59,167, +215,223,226,106,230, 15,254,232, 79,248, 71,223,255, 1,255,247,191,249,115, 62,255,249,207,168, 45,227,106,165,214, 74,143, 66, +164, 24,205,208, 77,156,114, 1,223, 73,222,113, 51,108, 24, 55, 35,151,176,240,226,245,129, 63,251,215, 63, 99, 63,221,144,235, + 17, 74,224,201,147, 39, 48, 42, 41, 59,188,199,176,175,210,169,235,129, 62,215, 74,114,142,150, 28, 93, 61,229,188,216,222,177, + 38,136, 1,164, 34, 61,210,106, 70,163,160,174,145, 5,212,123, 46, 21, 82, 15,248,208,209,182,161,185, 70, 8,112,153, 51,181, + 8,211,102, 96,190, 40, 83,135,222,239,113, 29,168,137,162,157, 56, 40,213, 43,173, 47,232, 18,169,106,171,155, 56,174,204,245, +229,200, 18, 61,234,130, 85, 44,213,188,241,145, 64, 45, 74,139,142,164, 35, 77, 10,110, 18,246,189,209,139,189, 9,198, 93, 36, + 58, 71, 28,109,250, 66, 83,226, 40,248,139, 35, 37,135,243, 59,196,123,242, 50, 35, 1, 6,201,108,156, 90,186,248, 24,232,233, +158, 92,133,121,153,237,176,129,135,146,173, 19, 78, 67, 92, 66, 90, 97,230, 66,242,215,104,241, 56,181,214, 76,113,138, 50, 83, +197, 17,103,203,138,180,113, 32,106,132,102,194,153, 26, 29,122, 46, 4,151,136,161, 24, 88,139,137,114,236,212,233,130, 96,168, +223, 62, 12, 28, 90, 37,180, 74,242,137, 69,132,201, 71,162, 55, 10, 89,241,214,174,209, 85,112,229,189, 85,141, 21,129, 33,162, + 18, 72,152,207,225,253, 0, 98,116, 21, 57, 57,156,123,127,224,153,183,163,236,232,176, 16,219,123, 59, 40,240,206,103,146,134, +248, 94,153,239,239,190,248,214, 9, 42,148,238, 87,145,217,140,246,142, 31,132,114, 86,250,232,208, 18,161, 44,184,220, 9, 17, +162,223,112,204, 51,135, 89,217,108,141,255, 94,212, 66,143,209, 69,226, 20, 56, 29, 11, 62,120,124,132, 38, 3,147,107,228, 83, + 33,231, 35, 56,161,106,100, 18,161, 57,143,127,242,241,179, 63,117,171,251,218,250,111,224,157,185,183,197, 12, 47,120,233,102, + 87, 91,173, 94,172,183,112, 89,185,222, 56, 33, 40,248, 24,214, 94,222, 91, 15,246,202,123, 71, 44, 84,214, 21,159, 44, 93,252, + 86, 32,227,188,208, 44, 48,189,126,143, 61, 33, 40,173,151,213,190,253,182, 59, 14, 62, 8,189,216,237,207,211,105, 88,253, 66, +215,213, 0,206,173,100,183, 64, 8, 98,174,234,102, 55,123, 3, 13,216,169,169,117, 93, 37,124, 22, 82,160,175,180, 31,105,136, +247,182,131,213,190,138, 29, 58,222, 5, 28,209,186,243, 98,172,251, 49,122,188, 56,242,178,224,180,217, 63, 95,215, 11,244,183, +249, 66, 49,133,109, 47,220,223,222,113,119, 89, 57,250, 30, 68,237, 13, 58,142,215,236,166,145,203,249, 72,169,230, 35,254,228, +217, 67,250,253,137,159,124,241,138,171,199, 87, 92,109, 34,189,192, 54, 12, 32,149, 87,223,125,195,229,238,192,126,218,177, 77, +194, 97, 41,188, 60, 71,158,126,250, 49,159,110, 39,166, 48,161,209,241,191,255,235,191,228,245,105, 38,134, 64, 85,235,216, 26, +251, 89, 12,250, 19, 6,162, 19,124, 8, 76,211, 64,203, 11,187,253,150, 71,187,129,195,221, 17,112,124,248,240,198,120,234,151, +153,235,155,107,112,112, 58,157,208,222, 56,156, 23,110, 30,127,194, 54, 69,122,155,121,252,232, 9,215, 87, 27,198,205,192,163, +253, 67,110, 30, 62, 34,110,182,236, 54, 55, 92, 93,223,176,219, 95, 49,110, 30, 18,199, 29,126,152,248,193, 39,223,227,233,206, + 76,120,207, 30,124, 72,155,239,120,241,242,142, 95,126,241,156, 95, 63,255,154,239, 94,189, 68,157,227,225,245, 13,131,120,118, +211,158, 39, 79, 63, 98, 59,110, 57,207, 71,180,204,196,160,236,167,128, 23,101, 26,182, 12,227,142, 56, 77,208,161,174,252,239, + 94, 43,104,121,151,152,125,219,117,181,116,125, 96,136,145, 31,254,232, 51,254,229,191,248,103,252, 79,255,252,143,249,248,227, + 15,121,115,123,226,116, 60, 89,231, 22,101,179,221,240,227,223,255, 3,126,239, 15,255,128,113, 51, 50,207, 51,151,249, 12,210, +236,103, 16, 59,149,231,150,201,115,166,213,106,110,117, 17,115, 26,136, 95,101, 71,246, 38,219,178, 99,206,243,106,214,170,164, + 56, 81, 74, 38,231,133, 23,199, 59,190,187,253,154,157, 86,246,219,107, 14,249,100,149, 29,181, 26,140, 91, 25,237,193, 55, 74, +158,209,106, 60,137, 90, 26,231,185,224,189,242,112,220,226,188,103,110,133, 92,102,230, 92,184, 63,192,231, 95,127,195,213,228, +185,249,248,134,185,128, 86,193,119,200,218, 45, 15,147, 45,223, 50,248, 72, 81, 71,197, 56,253,162,144,100,117,233,168, 67, 92, + 96,240, 19,105, 52,151,121,208, 64,239,102,242, 11,110,141, 51,119, 93, 27, 20, 14,154, 35, 87,165, 86,168,174,146, 20,186, 75, +150,185,168,149, 99,206, 70,255, 83,165,118,243,204, 39, 17, 74, 1,215,237, 53,138,239, 70,207,195,145, 16,203,253,116, 75,239, +199,125, 98, 96,189, 88,116, 11, 38,117,103,230, 57,245, 48,122, 79,170,194, 38,140,136, 75, 20,109,132,232,113,211,132, 46, 39, +114,109,196,253, 42,101,162, 34,117, 64,135,132,202, 25, 89, 32,186,145,220, 47,180, 16, 33, 12,132,186, 48,197,128, 99,196,251, + 64,151,206,200,128, 72,103, 16,143, 58,161, 86, 97,112, 74,119,153, 90,149,208, 35, 49, 6,182,187, 29,185,219,247,149, 17,211, +204,118,136,155, 43, 70, 58,243,226,137,226, 89,202, 5,137, 17,145,129,154, 77,208,178, 73, 91,134,193,114, 67,147,172,114,152, +176, 62, 76,240,164, 24, 24,163, 77,100,212,153,103, 99,240,102,149,244, 26,216, 77,145, 71,143, 31,224,227, 63,252,182,126,158, + 43,117, 94, 72, 14, 54,187,233, 55, 81,241,127,224,248,253,116, 46,244,178, 48, 37,207,176,221,188,183, 49,249,210, 96,185,204, +104,158,185,218, 14,248, 97,124,175,207,244,115,133,219, 23, 7,230,229,141, 81, 60,155, 53, 21,122, 91,155, 99, 13,179,249,133, +192,165, 46,164,193, 83,103,229, 52, 55, 32,227,167, 70,108, 16,122, 52, 17,145,203, 38, 44,148, 14, 58,163, 75,161, 78,149,224, + 28,243, 92,160,246,149,127,224,137, 20, 90, 53, 39,138,255,232,227,239,253,169, 19, 33, 68, 35,134,137,247,246, 48, 23, 49,146, + 28,111,187,139,157,250, 54,226,255, 54,103,225, 45, 33, 47, 62, 34,230,252,195, 99,105, 78,123,160, 7,227, 39, 55, 59, 39, 73, +244,248,232,113, 69,145,110, 41,123,113, 54, 62,215,245,125,192,105, 67,155, 29, 44,188, 66, 8,238,221, 55, 70,130, 95, 63,191, + 26,197, 77,214, 96, 92, 95,109,114,189, 33,193,126,152, 91,229,221,196, 32, 4, 79, 43,150, 75,118,221,173,192, 15, 97,240, 14, +183, 26,208,122,201,228, 98,183,187,183,162,149, 94,117, 53,174, 65, 12,186, 62,168,157, 41, 65, 69,223,245, 33,197,197, 53, 83, + 16,214, 14, 99,181,238,122, 95, 43, 94,218,121,245,234,206, 88,209, 94,222,189, 41, 55, 85, 66,218, 16,122, 33,231, 51, 89,132, +253,213,158,189,131, 47,190,248,150, 50,108,249,209,247, 38, 66,169, 44, 40,109,233,124,253,213, 11,238,142, 71,190,119, 53,176, +241,157,101,201, 44, 37,162, 97, 75, 34,226,114, 97,251,228, 35, 62,251,209,239,241,239,254,205,159,241,250,222, 30,234,174,129, +138, 95,239,171,198, 62,214,102,223, 51, 21,216,132,145, 86,102, 52, 37,246,187, 43,142,119,119,228,210,120,112,115, 67,213,204, +225,124,102,119,181,103,191, 29,184,191,187, 71,197,225,189,178, 31, 2,255,248,143,254,136, 79,158,125,196,167, 79,158,146, 88, +232,100,174,134,206, 38, 4,162,111,108, 39,207,199, 31, 60,226,163, 39,215, 60,122,248,144,109, 82,166,160, 36,169,140,227,142, +103, 31,126,194, 55,127,247,239,249,235, 47,190,227,193,245, 13,109,158,185,189, 63,115,206, 11,113,154,168,245,200,175,191,254, +156, 87, 47,223, 48,121, 72,155, 72, 26, 38,134,105,139,171,141,243,114, 33,247, 70,155,103,104, 23,134, 8,251,235, 29,131,223, +227,125,100,216, 76,136,139,134,128, 21, 19,183, 12, 99, 34,250,200,143,126,244,125,254,231,255,241,159,241, 47,255,197, 63,225, +193, 54,226, 92,228, 95,252, 15,127,204, 63,250,236, 99, 94,188, 58, 83,187, 9,137,126,248,131, 31,241,217, 39,207,216,110, 18, + 79, 30, 63,225,163,167, 31,115,117,125, 67,201,149,121,190,224,162, 65,113,180,218,100,168,181,198,178, 62,180, 27, 66, 8,202, +176, 73,136, 11, 43,224,195, 60, 4, 85, 28,165, 9, 57,159, 24,104,204,165,113,201,149,185, 40, 47,222,188,226,245,171,151,164, +184,101,179,189, 6, 26, 90, 12,146, 68, 16,194, 38, 16,146,113, 25,234, 26, 84,173,125,230,246,205, 29,247,199, 19,251,235,107, + 84, 49,249,138,235,208, 60,185, 9,127,242,199,191,203,127,251, 95,253,151,228, 46,220,190, 57,226,196,194,103,180,128,134, 96, + 39,210,210,200, 93,233, 53, 51, 14,137, 16, 35, 49, 56, 52,154, 30,117,152, 2, 68,235, 23,251, 30,112,181,216,129,122, 55,146, +131,131, 36,184,218, 89, 74,167, 75, 95, 15,245,142, 8,160,149,230, 59,158, 64, 16,101,110,118,219,219,184,117,215,174,224,131, +103,116,137,203, 10, 79,114,210,169, 94,240,185,211, 93, 32, 12,209,104,133,222, 19, 83, 66,124,194, 19,140, 56, 57, 25, 98,153, + 49,145, 8,108,118,193, 72, 24,126, 3,105, 64, 60,248, 10,227,102,135,155,214, 53,145, 79,140,221,118,224, 99,156,240,211, 14, +189, 20,234, 50,211,194,202,193, 80,144, 22,137, 40, 50,218,196, 14, 9, 20,169,150, 87, 40,138,248,106,127,223,238, 9,130, 85, +132,179, 34,140,196, 4,195,198,179,168,160,181, 18, 39, 35, 38,250,197,122,233,157, 66,116,123, 90,235,212,182, 48,238, 62,192, +251,110,104,234,141,237,248,107, 19,180,129, 4,207,184,119,112,106,180, 14, 81,212, 66,214,206,240,215,173, 91, 56,219, 49,224, +197, 17, 92,196, 57,199, 56, 12, 60,250,240,131,127,176,114,181, 1,243,165,160,165, 48, 38,247,222, 30,190, 69, 97,185, 84, 90, +201,246,121, 55,211,123,123,168,159,115,167, 92,102,168,133,253, 46,189, 55,157,235,219,143,195,185,115,247,230, 53,231,227, 43, +168,139, 77,148, 74, 96, 41,139, 33,105,171,216,212,170, 22,200, 80,187,103,135,231,212,206,248, 36,176,100, 74, 20,230, 34,224, +172,173,144,146, 80,138,210,101,195, 57, 95,232, 24,246, 59,246,107,124,220,227,168,120,175, 54,170,199, 51,231, 66, 16,237,230, +199,110,171, 87,156,102,193, 51,179, 46,194,122,115,173,205,238,224,170, 54,130,103,213, 59,118,111,212,175,214,205,195,222,197, + 60,229,125, 77, 98,170,247, 54,102,235,208, 91,165,213,213,163, 29, 86,226, 92, 53, 62,153,141,229, 89, 49,166, 30, 51,188, 91, +173, 77,107, 53,142, 85,183, 49,185,119, 88,106, 89,196,212,142, 30,164, 23,148,128,211,176, 18,241,148, 24, 88, 67,108,205,244, +165,120, 35,205,173, 95, 80,239,133, 82, 5,151, 18,234, 86,226,207,220, 12, 92,147, 44,176,230,215,114,230,210,234,154, 66,174, +200,104,105,120,235,210, 11,206,219, 24,187,168,201,106,156,172,200, 74, 9,248,232, 88, 78,103,230,170,120, 31,236,176,208,108, + 87, 75, 72, 12,227,134, 86,239, 40,181,211,203,204,243,175,158,227,230,133,187,219, 59, 30, 62,124,192,229,245,133,155, 7, 59, +226,165,242,119,191,252, 37,191,122, 62,243,253, 79, 54,244,208,185, 44,134,201, 4, 33, 74, 99,183,185,225,250,201, 3,110, 30, + 61,224,245,223,254, 5,183,135, 76,240, 17,173,141,142, 82,123,163, 10,246,231,151,190,154,209,148, 86,171,145,248, 84,113,167, + 76,219, 52,124, 26,104,249,204, 92, 59, 27,159,112,226,200,151,198,211,155, 61,227,152, 56, 92, 50,211,176,165, 93,206,252,228, +175,254,130,207,190,255,140,248,232, 67, 54,155,206,135,109, 67,159, 59, 99,218,113, 97, 32, 94, 61,226,227,199, 79,208, 92,169, +237,204,207,110, 95, 16,189, 99, 24, 39, 90, 94,248,187, 95,252, 21,255,234, 39, 63, 39,238, 30,114, 89, 22,134,209,104,133,181, +116,106,174, 8, 59, 36,195,151,183, 47,249,252,197,107,158,222,220,240,224,193,222,210,164,185,177,219,237,184,190,218,147,246, +194,237,237,107,238, 47, 51, 41, 55,254, 95,214,222,108,217,178,236, 58,207,251,198,236,214, 90,123,239,211,100, 87,153, 89, 5, +128, 0, 8,144, 32,197,198,146, 72, 72,178,195, 97,135, 20,214,141,111,253, 64,124, 16, 63,129,223, 64,182, 67, 97,218, 84,144, + 18,109, 81, 32, 65,128, 34,122, 20,170, 65, 85,102,158,110,239,189,214,154,205,152,190, 24, 43, 11,164, 29, 14, 95, 48, 51,162, +162,154,168, 58,117,242,156,179,247,154,115,140,255,255, 62,167,157,253, 94, 8,126, 98, 76,143, 89, 90, 35,175,133,199,143, 42, +251,253,200,139,247, 31,243, 47,254,224, 91,252,250, 7,239,241,139, 79,110, 72,227,192,229,229,192, 60, 31, 57,221,159,249,111, +255,155,111,227,189,103, 93, 23,222,220,175,172,173,219,126, 92, 11,135,203,107,166,195,158,229,116,207,205,171,207,109,111,239, + 3,126,219,187,151,220,200,154, 57,233,202,105, 89,185,184, 56, 48,140, 35,195, 48,177,223,143,204,107,197,236,161, 74, 85, 71, + 87,227, 67, 8,149,189, 79,164,225, 41, 45,175,204,121,166,105,101, 55,237,216, 31,158, 49, 14,207,121,120,248,148, 92,206,248, + 38, 76, 83,226,203, 95,125, 65,107,141,155,207,111, 56,223, 47,156,124,103, 94, 59,187,113, 71,110, 29,223, 5,173,142,230,108, +237,176,214, 7, 38,206,252,214,151,158, 49,207,153,143, 63,250,165,133,171,170, 99, 68,201, 94, 89,137,150,216,237,134,122,109, +186,176,168,178, 11,246,240,204,171, 26, 20,170, 55, 92, 87,162,171,132, 48,208,231, 70,143,149,188, 8,174,102,246, 50,176, 84, + 69, 7,129, 82, 54, 78,133, 57,233,149, 76,174,157, 93,138, 52,241,156,180, 17,189,105, 68,227,224, 41,165, 18,188, 71,165, 16, +197, 89, 54,102,242, 68, 50,185,121, 90,131,105, 50,121,147,174,133, 62, 37,131,218, 84, 96, 7,125,169, 91,238,101, 32,246,145, +230,132, 92,148,171,209,193,193,227, 99,164,230, 74,114,145, 30,161,228, 29,187, 49,210,253, 66,209, 35,147, 31,104,238, 64,114, + 80,243,173, 57,219,125,226, 92,110, 89, 91, 97,240, 19,218,173,250, 89,218,130, 75,117,155, 86, 94, 34, 75, 70,164,218,251, 78, +180, 52,188, 48,177,204, 21,223, 27,209,175,212, 5,123,159,116, 19, 82, 22, 86, 45,244,116,131,115,158,232, 5, 57, 52,118,221, +130,141,126, 12, 52, 77,200, 34, 20, 50, 7,239,240,165,225,198,248,182,148,131,168,146, 91,195,139,146, 92,218,154, 76,141, 85, + 45, 7,226,176,213, 90,120, 7,123,234,183,157,117, 17, 54,230,251, 59, 12,157,105, 71,164,147,146,127,231, 31,183,109,213,226, +119,157, 1, 80, 32,139,218, 84, 80, 45, 44, 29,176, 21,102,233,142,234, 42,197,201,150, 86, 47,228,186,210,114,101,237, 3,195, + 52, 50, 4,147,138,201, 16, 72,206,241,112,159, 24,135,149, 59, 61, 17,114,231, 20, 10,187,203,129,176, 12, 84,205,156,231, 95, +178, 75, 19, 61,174,200,234,105, 18,168, 52, 84,133,224,147,167,171,145,207,188, 8,180, 70, 85, 27,113, 85,108, 28,208,229,237, + 30, 52,219,131, 77,172, 18, 36,221,228, 41,206, 23,164,117, 59, 69,134,109,135,243, 22, 49,234,189, 17,128, 2,120, 21,180, 54, +123,234,109,244, 31,143, 35,107,179,202,133,120,168, 74, 19,197, 59, 27,176, 75,182, 90,209,178, 54,211,180,227, 32,120,171,131, +109, 86, 34,193,217,234,165,117, 42,198,108,143,219,104,206,106, 77,216,109,164,109,213, 39, 17,168, 6, 72, 9,162, 44,243, 66, + 74,158,228, 44,160, 37,193,161,165,144,223, 54, 0,122,163, 59,143,214, 70,116,206, 14, 45,217,250,216,157,206,154, 11,209,219, + 40,183, 54, 75,199,123, 31,168,155,177,110, 61,173,212,109,255,164, 98, 97, 66,232,196,241,146,167,215,143,153,111,238,185,215, + 74,107, 91,191, 54, 55,214,170,156,142, 71,254,250,225,158,175,125,208, 89,142,119,252,248,179,149,162,158,190, 84,154,238,184, + 72,142,172,194,110, 80,220,154, 24,246, 19, 47, 31, 95,242,213,171, 75,254,244,175, 62,226,252,144,241,193,163,197, 70,253, 5, +190,144,223,136,139,104, 51,184, 40, 2,235,122, 70,232, 44,235,194,221,241,142,218, 42,136,227,156,143,236, 68, 72, 46,144,215, + 66, 16, 56,140,137,251,211,106,213,181, 24,249,238, 15,127,196, 31,255,159,127,201, 87, 63,248, 50, 47,222,187,226,238,230, 13, +243, 82,185,186,124,196,179,167,143,216,173, 43,245,213,231,230, 15,142,144,215,153,190, 20,206,121,198, 15,137, 55, 55,119,230, +209, 88, 23,142,115, 65,122,192, 71, 79,207,133,243,121,102,109, 7,100, 12,132, 16,208,214,200,173,160, 82,249,244,103,159,241, +234,238,158,113, 8, 92, 63,122,194,243,235,167, 4, 81,124, 1,162, 48, 30, 38,214,156,201,235,145,160,141,224, 28,195,197, 14, + 90,231, 95,254,171,127,202, 31,254,254,175,243,131,191,249,144, 87, 55, 39,126,231, 31,127,131,127,247,199,127,206,127,250,222, + 79,249,198, 87, 94,242,239,254,195,247,249,246, 63,251,125, 46,167,137,175,189,124,198,215,190, 52,240,167,255,241,123,124,242, +249,107, 94,188,247,140,114,124,195,223,254,224,111,248,249,207, 63, 38,164,137,105,183,103,220, 93, 49, 13,145, 32,202,218, 29, +181, 45,156, 31,142,148,229,196,105, 89, 41,205,129,120, 86,157,141, 17, 30,194,102,180, 83, 8, 19,107,171,168, 54,174, 46, 39, +118, 59,225,161, 15,172, 13,150,227, 61,243,241,132, 31, 27, 47, 95,124,157, 52, 8, 55,175, 62,166,233,194,122, 86,202, 67,230, +226, 50, 80,246, 35,189, 9, 15,199,149,139,105, 98, 74, 3,119,231,163,201,131,212, 94,147,211, 0,195, 20,248,248,254,158, 9, +225,107, 47,223, 35,223, 31,185, 59, 61,208, 7,199,178,218,237, 51,164,193,192, 59,161,208,106, 37, 38,161, 45, 35,139, 86,156, +100,155,122,117,155, 58,137, 40,185, 41, 94,237, 70,210,139,224, 54,212,111,141, 74, 44,202,172,149,224, 33,212,192, 18, 2,190, +117, 11, 11,249, 98, 10, 92, 63,162,177,208, 90, 38, 2, 82, 26, 89, 97, 26, 38,235,241,246, 98, 8, 88, 7, 94, 18,141,145,233, +162, 81,207, 11, 61, 69,188, 11,132,115, 51, 78, 58,153,245,174,144, 24,104,190,177,222,100,210,216,184,138, 35,181, 7,206, 57, +179,155, 18,156, 23,130,143, 76, 67,160, 72, 71,117, 33, 5,207,202,200, 50, 87, 24, 26, 41, 68,142, 15, 11, 97, 59,160,171, 20, +118, 62, 49, 21, 65,131, 34,197, 19,170, 39,139,167, 13, 7,212,175, 36, 93, 57,171, 16, 9,156,122,193, 7,181,166, 70,152, 89, +154, 25, 11, 99,109, 54,174, 79,246,123, 27, 93,226,166, 42,115,107, 92,140, 91, 27,169,101, 78,234, 9, 65, 41,231,206,152, 20, + 25, 26,113,174,104,119,204,107,128,209,152,241, 29,221,124, 5,102, 77,243,190, 19, 93,178, 76, 71, 20,154, 20,162,236,136, 62, +253,131, 29,234,127, 87,186,210,187, 5,138,223,165,112,133,110, 53, 67,247, 46, 63, 46,111,161, 55, 27,194,251, 29,154,223,222, +126, 61,242, 98,121,172, 20, 58, 53,123,122, 81,154,111,182, 30,233, 32,190,161,177,160,165,176,219, 37,214,150, 16,129, 80, 11, +222, 9, 89, 34,249,222,179,248,149, 28, 58,107, 41,172, 8,205,101,130, 68,134, 46, 44,229,200,172, 17,221, 14,197,221, 9,171, +175,248,139, 68, 57,182,237, 32,135,213, 33,164,169,141,218,197,130, 69,221, 91, 16,174,170, 34,254,173,163,215,188,226,174,217, + 24,188,118, 59,153,120,186, 89,194,124,183,126,184, 61, 82,237,196,229, 55, 14, 47,118,162, 43,197,160, 44,222, 57,130,116, 74, + 23,240, 9, 23,173,227,215, 99,192,111,123,187,174,213,194, 85, 46,144,124, 53,134,124, 83, 52,203,118, 72, 96,219, 53, 26,216, +166, 75, 53, 68,237,150,152,245, 56,156, 43,219,168, 63,161,100, 75,185, 98,164,187, 64,167, 57,221, 92,195, 74, 16,251,253, 7, +239, 81,173,219,225,197, 92,220, 73,132, 54,218,216,188,234,178, 97, 23,133,214, 5,117,233, 11, 60,146,108,120,197,214, 43,146, + 60,158,202,188,174,198,196,239, 74,111, 2,205,246, 24,211,176,163,230, 35,243,106,201,107, 31, 76, 15,121,174,199,205,122,103, +238,247,159,255,228, 19, 94,205, 74,195, 19,130,161, 43,247,209,225,139, 13,211, 47, 66, 34, 14,239, 81,214, 19,127,242,199,255, + 43,119,167,127,205,167,231,130, 11, 9,109,171,161,145, 43,116,169, 84,221,136, 19, 98,220, 93,135, 81,240, 74, 89,183, 41, 76, +103,158,103, 74,110,208, 43,235,188, 90, 56,178, 55,150,114,228,147,207, 19,196, 61, 79,159, 38,188, 15, 60,172,141, 16, 39, 82, +234, 28,151, 76,241,194,185, 86,126,246,233,107,210,205, 61,154,148,120, 11,127,253,183, 63,198, 7,207,243,151, 47,168, 75,230, +205,235, 55,184,224,121,249,242, 57,105, 3, 1, 45, 75,230,124, 58, 49, 13,198, 49, 14, 81, 88,214, 19,231,211, 5, 62, 38, 11, +185,104,101, 85, 3, 34,165,157,199, 63, 88,168,234,116,158,249, 69,121,195,241,116,203,224, 58,151, 87, 87, 92,249, 11,116, 85, + 82, 28, 89, 90,195, 83, 33,219, 62,248,167, 63,252,132,151,143,158,242, 91,191,253,235, 60,126,126, 77,227,204,254,106,199,139, +231,207,248,245,111,124,153,251,115,225,248,112,228, 23,191,248,148,159,127,114,224,119,126,243, 27,212,249,158,239,124,231, 59, +252,120,119, 64,123,231,225,124,226,241,227,103, 92, 31,174, 44,116,169,138,232, 74,115,194,229,238,146,113,127,201,122,113,193, +195,253, 13,175, 94,223,241,228,217, 51,190,241, 27,223,228,231, 63,251, 9,191,252,248, 83,195, 95,198,193, 8,122,101,166,163, + 12, 7,227,255,223,223,190, 97,186,124,204, 56,237,249,236,147, 27,150, 92,232,231,143,208,114,207,225,250, 25,195,112,205, 57, +191, 97, 26,225,205,235, 19,111, 62,175,124,245, 91,191, 70,119,119,188,254,196, 92,206,159,125,254, 41, 75, 89, 76,236,146,141, +136,120,125,185,231, 75,207,175,113,221,115,204, 51, 77, 60, 31,124,237, 43, 60,124,255,199,228, 58,111,104,206, 64,109,167,109, + 31,102,173,215, 53, 55, 66,172,150,145, 73, 14,213, 72,207,129, 13, 78,128,184, 78, 46,217, 14,235,181, 34, 81,137,233,130, 82, + 58, 67,170, 12, 77,169,193, 66, 59, 23,222,147,123,178,186,171, 86,212,117,156,207, 12,189, 19,242, 14, 55, 24, 55, 60,226,105, + 45, 64, 93,104, 30,156,175,236,152,200, 10,149, 51,251,236,141,151,177, 26,223, 33,215, 35, 61, 90, 66, 63,106, 64, 92, 32,183, + 5,169,142,105, 47,172,205,227, 37, 35,226, 56,159, 61,135, 33,208, 93,101,174, 25, 9, 30, 6, 97,169,194, 20, 70,171,216,137, + 17, 39,189,245, 84,201, 93,161,143,236,164,176,186, 51, 61, 57,166,139, 68, 91, 50, 82, 39, 10,153,122,204, 44,205, 60, 21,153, + 21,215, 4, 77,131,161,175, 93, 66,114,227, 98, 47,188,247,226,203,220,190, 46,220, 31,111,204,147, 17, 7, 82,239,164, 62, 50, +168,131, 1,134,238, 56, 21, 71,233,142, 20, 2,251, 0,165,120,184, 8,104, 49, 61,169,171,157,238, 26,132, 78,109,213,110,227, +201,111,178,164,190, 25, 21, 61,158,128,243, 16, 83,124, 39,183,223, 90,205,204,104,140,136,119,119,155, 54, 4,187,110, 16,162, +119,251, 80,111,213, 8,254, 65,216, 20,208,239,246,166, 94,114,161,150, 74,171,102, 46, 85,103,235, 56,169,118, 89, 44, 5,138, + 8, 48, 24,107,101, 16,147,101, 13,137, 93,140,176, 84,150,193,158, 89, 49,102,230, 69,241,106, 6, 75,223,132,163, 10,195, 62, + 32,210, 72,231, 68,174, 66,175, 51,201, 57,132,133, 41, 37, 84, 2,161,183,142, 74,133,224,209,102,108, 57,186,216, 77, 92,100, + 75,248, 90, 90,217,137,225, 81, 5,235,139,171, 56,136, 1,165, 90,149, 72, 54,252,102,115, 72, 18,146,183, 4,125, 83, 65,196, + 89,221,173,111,227,121, 39,168,223,176,156,218,191, 72,215,107, 83, 52, 12,224, 42,209, 5,219, 61, 23, 19,194,216,232,206,246, + 73, 78, 4,103,243,126, 74,175, 27,233, 46, 90,124,102,131, 62, 72,179,149,128,153,132,218,246,128, 86, 16,123,232, 46, 77,192, +219,222, 75,181,211,130, 61, 44,234,146,109,204,207,198, 67, 86, 33, 72,223,192,252, 13, 85,143,139, 80, 17, 90,171, 36,239,105, +218,240,126,163,204,117,204,155,219, 59,249,188,178,214,205,227, 94,213, 26, 1,206,129, 15,140, 67, 66,219,194,113, 53, 68,167, +247, 32, 65, 57,159, 87,134, 97,199,197, 46, 16,171,242,203,251,149,182,173, 51, 74,239,220,212,206,235,211,202,251,143,174,121, + 34, 16,189,242,253,143, 63, 99,246,158,143, 42,252,179, 47,127, 21,249,197,127, 96,209, 51,189, 59, 74,175,168, 20,219,249, 98, +149, 37,231,228,139,188,128,223, 2, 46, 29, 19, 76,136, 24, 79,191,212,206, 58,175,196,105,228,112,253,152,203,171, 39, 60,127, +242, 30,251, 36,244,100,252,167,228, 19,206, 21,142,119, 71,238,151, 27,202,105, 33, 18,152,134, 72, 65, 57,159, 51, 47, 95,236, +184,186, 60,240,250,214, 14, 47,215, 79, 15,188,185, 59,114, 42, 43,247,199,133,235,139,196, 52, 36,206,231,133,211,124, 79, 26, +175, 54,141,174,133,203,154, 42,169, 59, 98, 20, 74, 21, 90,206,180, 6,210, 29,222, 25,139, 64, 0,239, 27,201, 59,230,186, 50, +191,126,205,241,148,113,162,208, 50,251,171, 43,158, 92, 63,166,172, 43, 97, 16, 62,123,243,192,159,253,249,119,248,201, 79, 14, +252,247,255,195,191,196, 15,158,127,252,237,223,226, 31,125,235,235, 56,224,122, 26,248,241,135,175, 89,158, 63,231,209,245, 5, + 15,167, 51,159,221,220,112,117,189,227,227,143, 95, 17, 66,226,234,233,115, 46, 14, 7,164,207,204,243,105,219, 99,186,141,136, +151,161,142, 68,151, 24,198,145,103,143,161,148,153,178, 28,249,221,127,244,187, 60,121,246, 62, 63,249,209,247, 57, 29,111,120, +122,245, 24,130,231,248,112, 34,184, 78, 57,175,140, 46,178,235,157,215,183,159, 49, 47,103, 19,232, 72,231,116,188,103, 94,103, +134,225,146, 48,152, 24,231, 75, 95,186,226,219,255,228,247,248,246,183,127,143,255,252,179,159,241, 63,190,249,159,248,229, 71, +175, 89,203, 39,120, 23,184,124,116,193,110,186,228,220,225,233,227, 43, 6,127, 9, 61,114,123,115,131,212,200,243, 95,123,193, +251, 47,175,249,217, 79, 78,212, 6, 75, 91,240,211, 0,115,163,180,140,211,104, 7,250,182,226,122,162,175, 1, 74, 37,186,142, +244,192,172, 43, 40,196,105, 64, 84,240, 97, 79, 43,103,116,153,233,218, 88,194,100, 88,233,197,166, 85, 85,173,177, 81,125,161, + 55, 97,144, 11,154, 52,252,154, 9, 59, 71,110,153,166,194,224,160,149, 51,213,155,217,113, 23,246, 44, 0,174, 33,107, 32,227, +144,168, 80, 21, 9,246,112,214,214, 32, 39, 6,117,180, 61,132,213,236,122,243,220,201,161,114,209, 2,145, 78,107,103,102, 60, + 81, 5,137,202, 24,163,221,254, 67,192,119,165, 71,171,158, 46,107,227,176,243, 20,221,225, 81,166,197,161, 41,242,144,193, 39, +168, 40,238, 81,164,221, 43,125, 94,153,162,163,118, 8,161, 67,241, 27,228, 72,161, 7,226,106, 45,160,131,223,243,236,242,154, +245,246, 51,206,234,232,163, 48,183, 70, 24,204,189,225,253,192,218, 28,116,235,207, 15,140, 84, 49, 94,136,143, 35,139, 54,218, + 12,195,190, 49, 13, 59, 83, 83,247,206,152, 44,172,233,212, 46, 24,205, 91,134,166,169, 34,174,217,207,208,244,110,106, 92,125, +227,176,122, 7,254, 93,250,206,213,164, 74, 94, 4, 39,239,238,227,214,190,189,245, 75,223,146,250,239,118,252,158, 59,244, 92, +113,181, 81,123,167,170, 77,221,188, 90,195,234,220, 21,122, 99, 62, 21,252, 69,196,229,202, 40, 74, 72,142, 12,228, 94,113,151, +142,112, 22,244, 65, 41,110,101,234, 19,121,153,201, 99, 96,172,133, 92, 18,107, 23, 14,154, 88,235, 2, 34, 52,174, 89,227,189, + 73,166,180,218,244,185, 43,155, 62,117, 43,229, 59,143,120,163, 24, 65,199, 7,135,219, 36, 45, 85, 77,208, 34, 62, 80,154,169, + 83, 61, 98, 39,117, 31, 45,189, 74, 67,187,226,244, 45, 23, 87, 76,167,218,197,126,224,136,134,139,149, 66,175,130,108, 35, 35, + 74, 65,123,167,244,134,111,209,166, 6,222, 72,112, 26, 4,223, 21, 95, 59, 18,204,126,133,195, 92,237,120, 82,116,208, 10,173, + 25, 5,207, 59, 76,254,140,117, 65,187,217, 81, 77,135,232,109,175, 34, 34,168, 19,188, 19,162,136, 29, 28,140, 14,111, 9,229, +102,129,162,241,209,173, 0, 0, 32, 0, 73, 68, 65, 84,158, 30, 19, 78, 13,109,233,122, 67,182,204, 65, 32,209,213,129,119,180, +181,162,152,150, 85, 38, 7,179,245,230, 61,158,156, 43,181,154,114,150,237, 32, 34,206,170,124,206, 41,235,122,162,150,182,121, +153,189,189,232, 47,175,120, 62,121,242,124,207,210,160,138,173, 57,236, 60,226, 57,159, 5,199,192,133,119,132,141, 94,181, 30, + 63,226,123, 31, 45,212, 97,228,175,255,226,223,242,201,135,159,194, 82,201,170,104,215,237,112,110, 33, 65,245, 14,237,130,182, +130,243, 14, 47,126,227, 7, 10,174, 59,178,118,122,171, 32,194,254,242,125,158, 63,127,202,184,243, 60, 62, 92,145, 92,179,177, +189,119,212,249,136, 75, 35,211, 97,226,234,226, 5,251,187,196,235,219, 19,126,245, 92, 62,174, 60,156,206,188,122,117,143,208, + 25,124, 4, 26,247,119, 15, 92, 12,129,139,221,200,114,151, 57,205, 39, 46,118,145,195, 48,112, 62,159, 89, 22,165,174,158, 49, + 37,206,171,157,124,215,229,196, 16,119,164,105, 34,175,150,251, 88,215, 98,234, 73,103,240,232, 86, 26,126, 31,173, 23,191,110, +255,108, 11, 98,222,223,157, 32,141, 60,122, 36,228, 53,115,177,223,145,162,227, 71, 63,249, 5,194, 75,150,155,207,137,151, 17, + 84,136,131, 39,159, 43, 75, 81, 30, 95, 29, 56,205, 74, 12,145,195,126, 34, 14,145,188, 84,134, 97, 96,127,121,197,163,195,196, +146, 79, 56, 21,122,247, 20,173,228,178,210,123,165,136, 26,159, 65, 50, 67, 8, 92, 60,121,198,105,153,185,185,189,225,189,231, +143,248,198, 87,159,243,236,201, 53,255,249,187,223,229,238,205,107,118, 23, 35,193,123,150, 83,166,134,206,163,199, 35,111,110, + 94,241,139, 95,254, 18, 39,222,124,229,221, 81,157,114, 57, 29, 88,215,149,245,124,143,147,145,151,207,222,227, 43, 95,185,102, + 31, 29,174,116, 46,199, 61, 31,243,218,160, 36,162, 60,220, 63, 48,141,138, 15,215, 60,123,121, 65,215,149, 86, 19, 23,251, 29, +175, 62,125,224,238,245, 43,122, 55,167,183,111,221,106, 88,165,208, 52,155,207, 65, 12, 36,213,250, 96,252,128,220,233,169, 89, + 43,164, 41,174, 21, 28,131, 33,145, 55,159,180, 72, 67, 54, 5,174, 19,147,119,132,232,168,210,137,221, 52, 78, 46,140,248, 8, +122, 94,112,128,140, 35,173,174,212, 94,136, 62, 48, 5,161,121,111,245,203, 30,223, 38,126,168, 53,227,178, 99,118,214,123, 15, +150,101, 52,171, 90, 17, 28, 43,139,239,208, 7,106,119, 28,162,193,148,106, 62,113, 26, 3, 67, 78, 12, 65,145,168,180,150,240, + 18,185, 59,206, 12,251, 9, 39,155,200, 7,143,148, 78, 84,211,207,122,245,212, 94,145,209,209, 92, 38,201,129, 65, 11,235,176, + 34,110, 64, 6, 88,130, 18, 53, 16,239,149, 93, 12,168, 91,184,155, 87,168,149,235,131,183,240, 92,123, 66,246, 51,223,255,225, +135,204,243,202,197,232,201,213, 52,210,173, 43,164, 1,199, 96, 10,236,224,241,201, 83, 79, 5,215, 19, 71, 7, 65, 10, 72, 99, + 76,131,237,133, 93,163,174,141, 24, 60, 90,108,194, 37, 97,147,175,180,198, 16, 71,132, 74,148, 72, 12,129,228,223,205, 67,189, +110, 23, 64, 7,239,118, 76,110,227, 73,188,219, 32, 61,239,144, 82,215,186,133,159,211,206, 66,220,239,242, 87,219,100, 85, 33, + 40, 61,118,180, 24,128,180, 22,161, 74,161, 72,163,169,176,191, 26,240,139,114,179, 42,109,237, 92, 28,172,125, 18,171,224, 70, +165, 46,133, 83, 59,225,207, 21,191,239,244,253,142,126,215,168, 62,224,220, 2, 24, 96,171,248,134,171,157,180, 11,132, 22,201, +247,243, 86, 69, 79,132,206,219, 27,180,245,112,251,182, 43,239,189, 26,233,127,219,127,183,238, 8, 98,233,239, 42,178,233,106, +196, 24,241,226,105, 82,137,221, 88,235,160, 54, 6,240,118, 91,102, 75, 94, 54,103,124,238,222, 27, 65, 28, 4, 67,178,182,110, +148, 55,188, 85, 87,130, 44, 56, 9, 84, 13,230,105,118, 29, 81, 99, 58, 55,245, 56, 42, 90,192,133,104, 5,187, 98, 9,123,239, +236,230,230,188,125,243,138,179, 16, 97, 23, 71, 15, 14,167,198,161,151, 16, 45,240,212,213,170, 50, 40,226,186, 17,225, 74, 71, +131,105,210,107, 85,164,228,109,239, 28,168, 20,180,118, 42, 13,183,102, 91, 91, 56,133,224, 76, 74,131, 71, 66, 39,142,253,173, +201,143, 82,234, 70,209,179, 4,237,232,163,117,215, 67, 36,186,192,188, 86,123,232,110,189,127,239, 60, 95,122,180,199,231, 59, +226,193, 49,206,141,155, 89,168, 90,141,129,220, 60,143, 14,194,123,215, 17,100,229,180,118, 92,152,248,214,215,174,248,240,246, +204,167,119, 39,254,247,255,237,223, 18,134,180,233,106, 45,115,160,106,118,243,183,246, 3,121, 59,150,115, 30, 63,154, 62,212, + 41, 68, 47, 84,205,140,211, 99, 62,120,241, 77,222,127,249,152,221,208, 88,202, 66, 47, 15,100, 26,165, 9,100,131,241,204,249, +196,124,187,226,117, 0, 85,246, 83,130, 14,251,139,129, 90, 43,243, 58,179,206, 43, 69, 29,206, 57,150,156,185,121, 56,217,129, +177, 99,249,129,210, 72,131,125, 46, 69, 51,213,101, 98, 12, 4, 39,100,173, 44,107,101, 26, 26,189, 26, 19,129, 90,153,207, 39, +219, 15,226,104,210,113, 40,222,219,152,209,252,130, 91, 6,196, 37, 66,220, 44, 83,181,224,156,129,139, 90, 81,254,187,127,253, + 95,241,237,127,254, 91,196,120, 70,139,226,125,162,183,206,249,126,166,171,216,138,198, 67,244,209,232, 97, 26, 72,227, 5,207, +247, 79,192,117,150,114,102, 55, 6,164, 42, 55, 15, 11,243,241,100, 52,196,222,168, 15,103,150,249,196,227,203, 71, 36, 58,165, +204, 92, 95, 30, 24, 39,199,239,252,230,151,185, 63, 62, 80, 40,252,243,127,241,207,249,254,223,252,128, 31,254,224,123, 56,239, + 24,134, 3,116,199,155,215, 39,142, 15,179, 57,197,187,229, 79, 66,138,198,216,159,246, 4,175,244,229, 1,156,112,188, 89,249, +159,255,205,159,240,135,255,117,231,245,205, 29,159,126,254,154,222,154,153, 4,155,179,125,250,122, 98, 31, 18,147, 8,218, 23, +230, 89,137,110,100,117,141, 15, 63,126,195,124, 90,201,171, 67,134,142,215,138,115,145, 30, 7,242,188,210,251,130,196,145, 46, +129, 32,158,228, 18, 69,149,181, 44,120, 25, 72,195,158, 21,165,215,217,164, 20, 46, 64,220,225, 27, 95, 92, 12,106, 83,220, 65, + 72, 50,208,215, 64,140,178, 9, 50, 26,153,197, 82,229,114,132,193, 51,174,123, 92, 84,238,231,133,233,224,241,171,125,159,187, + 10,148,149,131, 23, 86,175,180,188,218, 45,113,136,204,222,163, 15, 29,138,210, 70,152,186,167,173, 74,240,145, 93, 26,104, 77, +209,102, 85,194,117, 74,104,170,164,115, 70, 99,227,232,162,173, 20,171,199,135,142, 4, 79,244,141, 78, 36, 14, 23,160,149,124, +127, 6,129,180,155,160, 56, 52,205,180,224,241,110,194,149,200, 48,128,207, 43, 82,132, 50, 84,203,246,120,207,120,189,183,247, +162,226,104, 81, 24,166, 74, 88, 29,119,245, 68,218, 59,214,115, 37,250, 61,113,138,198,124, 47,142, 54, 65, 59, 47, 6,129,123, +122, 77,203, 10, 46,211, 37,226,113,196, 36, 16, 12,255, 90, 91,193, 37,179, 79,218, 92,185, 18, 9, 12, 81,172,170,212, 59, 62, + 89,189,177,123, 49,232,213, 59,216, 31,107, 83, 11,157,241,238, 68,234, 38, 93, 83,122,107,132, 36,239,180,163,222, 55,243,162, + 29, 24,222,113, 0,111,251,228, 91, 46,204,107,195,245, 68,107,213, 70,239,163,224, 72,132,181,126,241,140, 57, 3,131, 15,140, +131,160,203,153, 24, 3,179, 58, 56,122,156, 22, 98, 31, 72, 97, 7,221, 81,214, 70, 74, 9,145, 76,140,123,150,227,204, 76, 99, +204,130,132,192, 82,142,196, 62,146,139, 35,238, 20,215, 27,193,163,150, 22,215, 77,222, 34,111,251,223,225,139, 55, 94,186,141, +143, 59,102, 76, 99, 99,105, 59,217, 76, 87, 94, 13,233, 42,221, 48,174,146,192,219, 55,219, 13, 30,205,138,115,149,136,167,122, +211,170,118,239,232,173,109, 88,120, 69, 17,219,203, 59,111,156,237,216,209,150,113, 93, 89, 87,199, 97, 8,184,222, 89,138, 49, +197, 7, 9, 86, 93, 21,161, 55,103, 59,216, 77,209,170, 34, 52,177,116,190,115,237,139,125,103,235,182,171,211, 22, 73, 67, 96, +204,149, 34,206,110, 90, 98,212, 57,117, 98,129, 24,181,155,106, 87,187,205,155,199,219,128, 29, 40, 70, 26,163, 89,101,202, 37, +122, 95,237,244,186, 8, 62, 89,133,207, 53, 51, 39,173, 93,113, 61,224, 66,220,122,245, 13,145, 45, 64, 40,109,243,179,123,106, + 45,180,146,208,114,203,224,149,203, 97,160,113,230,246, 1, 30,112,214,159,215,202,213,245, 72,140, 43,111,212,163,197, 49,180, +202,245,176,231,247,191,252,140,115,249, 28, 63, 8,247, 15, 11,205,245, 47,244,141,142,110,171,252,183, 76,128,110, 53,198,105, + 24,104,181,108,104,126,111,161,197,238,121,241,222, 7,252,151,191,255, 79, 8,195,145,211,178,240,230, 38, 32,222,115,127,124, + 67, 19,240, 53,227, 82, 66,181,145,170,163,144,105,174, 17,165,177,195,130, 67,227, 48,176, 27, 15, 60, 76,103,142,119,119, 60, +145, 71,156,114,102, 93, 29,222, 59, 14,151, 23,164, 16, 54,221,169, 67, 60, 44,231,133,178,172,236,134,209,114, 5, 13,214,156, +113,178,103,116,222,168,135,173,177, 44, 74, 11, 25, 69,209,222,192, 69,188, 42, 85,183,189, 34, 66, 43,141, 30, 4, 31, 18,189, +153, 36,168, 57,251,119,206,243, 3,127,248, 7,191,206,179, 15,174,185,251,116,134,213,209,135,142,106, 97,119, 57,114, 62, 23, +214,166, 16, 18, 63,249,240, 67,254,226, 47,191,199, 71, 31,191,102,127, 56,144, 98,228,246,230, 53, 49, 56,124, 83,110, 79, 71, +214, 50,155,245,175,218,148,171,119,229,124, 84, 92,126, 77,120,246, 20,233,149,225, 74, 24,210,158,139,120, 32, 94,122,254,151, +127,243,127,240,149,175,127,139,223,253, 47,126,155, 39,143,174,249,247,127,246,167, 28,251, 61,187, 97,199, 90, 44, 25, 61,133, + 72,107,157, 90, 27, 57, 84,158, 94, 92,226, 90,167,106, 97,112,130,134,196,112,113,193,152, 28,223,249,243,255,200,116,185,227, +209,229,129,251,219,123, 11,239,180, 74,244,176, 54, 69,230, 19,243,121,221, 78,116,137,178,118, 90, 11,156,215,206, 90, 29, 99, + 72, 44,110, 69,212,211,215, 76,173, 91, 91, 68, 6,180, 22,162, 91,193, 37,214, 8,129, 61,169,207, 40, 25,134,132,111,224,155, + 39,106,199,135, 74, 17,232, 61, 33, 58,163,179, 85,160,122, 23, 38, 7,132,202,114,178,208,105,243,133,216,131,145, 44,189, 16, +170,103,237,149, 92, 5, 39,145,249,193,118,161, 18,179, 41,105,219,153,186, 63,192, 48,208,214, 19, 85, 23,168,141,243,169,160, +217, 65,175,102,215,203,141, 20, 29,213, 11,180,196,144, 54,155,227,234,129, 51,174, 70, 22,162,209,228,176, 74,154,182,204, 18, + 19, 73,237,101,233,162,125, 47,149,134, 12,142,128, 77, 45,135, 48, 50, 36,193,187,200,178, 40, 4,197,185, 70,144, 72,137,149, +113,112, 4, 63, 16, 99,229,110,134,250,208, 73,106,210,155, 50, 47,156, 91, 32,186, 72, 26,237,225,178,212, 21,215,236,235,238, +227, 37, 75,173, 80,149, 24, 58,210,102, 36,121,100,245,164,222,209,131, 35,159, 97,242,141, 48, 41, 90, 29,174, 59,198,193, 52, +187, 61, 88, 94,167,181, 70,138,208, 61,172,173, 32,193,244,189, 46,164,127,248,173,148,141, 1,177, 77, 83,223,213,195, 87,129, + 82,218, 38, 14,251,149,254,245, 93, 5,240, 84,173,214,236,125,226, 93,255,106,106,120, 91,175,121,131, 95, 69,227,247,231,140, +120,107,106,116, 49,208, 25, 69, 41, 30,206, 55,103, 34,141,197, 67, 61, 40,235,109, 38,132, 68,138, 43,193, 79,148,234,104,231, + 59,228, 58, 64,138,140,103, 37, 5,203, 88,172,218,241,165, 17,171,163,214,140,184, 72, 94, 58,174, 58,252,139, 23, 47,254,232, + 45,240,207, 30, 92, 98,157,113,111, 61,100, 23, 4,239, 29,210, 58,234, 77,128,235,192,110,167, 94,160, 7,123, 72,200,219, 66, +156,223, 64, 53,130,244,102,151,125, 15,162,142,130, 65,250,221,118, 46, 64,155, 41, 58,183,235,163,176, 73, 9,156, 5,229,130, +179,125,175,219,200,220, 0, 94,148,238,135,109,204,100, 97, 56,186, 5,223,212, 9,116, 65,212,180,159, 94, 43,173,169, 81,229, +106, 69,213, 92,207,136,165,104,181,235,150, 29,104, 6,140, 81, 71, 23, 67,225,210,173,102,151,188, 80,100, 51,216,105,167,108, +233,204,222, 45, 12, 17, 7, 71, 64,232,190, 35,209, 51,132, 1,173,111, 53,128,141,251,155, 91,230,106,123,167,224,141,157,111, +184, 82,207,110, 76,172,203,204,186, 97,160, 84, 58,151, 59,229,189, 67,224,114,242,236,163,163,212,206,169, 69,214, 34,224, 6, +194, 16,105, 85, 56, 61, 40,105, 76, 60,222, 39,251, 58, 13,194,179, 52,242,234,248, 64,238,142,132,114,206,155,167,233,173, 18, + 21, 35,186, 53, 4, 31, 34,215,251,137, 33, 9, 37,219,234,194,190,247,141, 24, 19,142,206,252,240, 25,247,183,159,114, 60, 31, +185,126,244,132,103,143,159,145,166,167, 84,113,228,146,233,189,162,217,252,216,218, 10, 45, 23,186, 23,114, 85,150,210,169, 78, +145, 96,148,194, 82, 11,135,253,129,231, 87,239,241,228,201, 99,158, 63,123,196,213,254,146,235,203,201,106, 63,206,155, 22,212, + 25,137,207, 5,251,188,138, 42,222, 57,174,246, 87,100, 45,172,165, 80,138,226,130,199,123,161,109,107, 23, 17,103, 50,158,214, + 89,107, 51, 29, 43,157,113,183, 99,191,155, 40,181,114,121,216,163,170, 4,159,240,193,243,123,191,251,117, 14, 87,201, 60,205, + 91,118, 16,117,148,165,113, 58,175,220,159, 50,222, 7,254,226, 47,191,203, 95,124,247, 7, 72, 48, 26, 98, 41, 21,173,157,113, +136, 44,203,204,113, 89,104,165, 51,140,137,142,176, 84,155,142,212,214, 56,231, 74, 8,145, 56, 70,196, 43, 67,116, 60,121,242, +148,247,159, 95,242,199,127,242,103,124,247,175,254,150,103,151,215,124,253, 43, 95,226, 92, 26, 63,252,225,143,104, 40,209,121, + 98,180,215, 73,201,246,250,186,216, 95, 16, 93,162,212,108, 30,249, 22,232,213,113, 62,159,185,188,114,148, 90,185, 63,101,198, + 52,160, 4,206,167, 25,117, 86, 25, 69, 29,185, 22,238,111, 79,188,255,244,146, 39, 47, 30,115,251, 58,243,176, 8,203,154, 81, + 50,161,195,154,205, 85, 95,186, 18,189,216,142,218,123,155,138,137, 61,224, 37,217, 33,119, 12,157,181, 40,189,217, 67, 69,106, +176,192, 39, 66,105, 32, 94,136,218,200, 36, 59, 76,122, 80,178,185,181,187, 71, 6,197,247,128,119,158, 36,202,210, 34,173, 71, +114,155,113,170,118, 91,243, 21,237, 21,167, 1,245, 51,131,139,150,192,207,153,209, 59, 30,206, 43,165, 58, 36, 40,212, 76,235, +157,232, 61, 1,135, 31,133,113, 24,169,163,224,187, 80,115, 65,220, 8, 49,224,146,167, 20,168, 45,178, 31,246,248,216,169,221, + 81,117, 70, 90, 64, 82, 68,123,133,102,225, 88,159,182,241,106,140,230,180,112, 10, 98, 55,123, 66, 39,133,184, 73,165, 70,134, +113, 32,141,163, 73,164,122, 37,198,198,126, 63,208,177,181, 76,237,214, 61,142,111,165, 82,162,212, 44,104, 11,134,190,246, 16, +123, 66, 54,169,201,154, 11, 97,244,184,234,152, 75, 38,148,198,148, 18,115,237,164, 24, 33, 64,105, 86, 9,246,158,141,249,225, +182, 77,162,241, 52,146,247,236,198,145,103,239, 61, 49,166,200, 63,112, 63, 61,159, 51, 45,175,236, 7,199,176,219,191,155, 7, + 99,135,243,185,162,235,194,110, 10,164,105,122,119, 96,152,220, 88,207, 51,154, 11, 23, 23,145, 48, 76,239,244,161,126,123,106, +188,121,117, 67, 57,223, 18,104,182,190,236,133, 92, 21,201, 66,153, 43,187,109, 79,164,179, 9,149, 86, 15,209, 57, 19, 18, 97, +205, 49,215, 18,234, 59, 69, 29,218, 60, 81, 2, 99, 16,102,237,148,135,140, 6,143,109,138, 51, 94, 10, 93, 50,243, 90,152,134, +136,248,200,233,188,224, 95,190,124,127,123,168,111, 15,196, 46, 6,145, 9, 54,202, 54,135,185,199,109, 85, 53,123, 88,219,126, +118,107,126, 91, 98, 54,188, 85,160,218, 45, 76,187,218,131,119, 27,201,119, 12,161,234,137,116, 39, 91,176, 9,180, 9, 62,184, + 45,121, 33, 91,176,169,253,202,221,222,177,234,203,246, 3, 42, 46,216, 20,165, 41,210, 13, 94, 17,188,153,112, 98, 16, 68, 43, + 93, 32,249, 78,107,149,230,133, 40, 80,213, 78,240,253,237,231, 95, 55,108,160, 98,178, 22,204,218,165,106,245, 19, 85,163,127, + 57,111,159,119, 83, 27,159, 52,237, 91,200, 12,156, 75,150,216, 23,181, 93,149, 51,124,174,219, 14, 46,212,194,237,221, 3, 75, +209, 77, 14,180,105,105,135,192, 56, 76, 28,246, 59,202,124,102, 41, 5,241,158,199, 87, 19, 95,125,188, 99,231,149,232, 19,169, + 43, 75,174, 44,218,121,168,118,216, 17, 60,165, 38, 78,115,229,197,228,185,158, 34, 25, 56, 46, 71, 90, 31,153,124,231,151,111, + 30,232, 56,214,106,159,187, 74,199, 99, 78,242,182,117, 59,134,152, 24, 6, 43,184,158,231, 74,235,138,235, 6,248,216, 79, 7, +198,184, 99, 46, 51,175, 79,183,144, 11,173, 60,208, 67, 99, 63,140, 60,121,249,146, 39,207,158, 32, 68, 78,235,202,170,157,188, + 66,110, 43, 85,132, 92, 76,117, 74,110,148,121,165,228,149,105, 26,153,226,192, 16, 60,193, 91,151, 86, 98,176, 4,190, 19, 6, + 63, 48,142, 59,174, 30, 29,136, 99,160,174,217,190,238,173, 81,155,245,149,157,183,145,190,182,134, 79,241, 11,126, 50,210, 17, +117,184, 24,236,230,222, 44, 27,209,123, 39,120, 71,171,133,105,220,241,248,250,218,126,110, 68, 24,134,145,111,255,211,223,224, +209,211,189, 65,149,188, 51,166,246, 90,201,165,115, 94, 26, 75,238,172, 37,243,215,223,255, 1,183,183, 15,140,195,128,239,198, +251,239,173, 51,140, 19,243, 58,219, 8,212,218,106,228,121,165, 20,251, 25,244, 94,108,237,225,133,195,245, 8, 61,226, 10,164, + 24,121,246, 98,207, 79,127,254, 17,223,249,222,143,184,121,245, 41,151,207, 30,243,236,215, 94,242,139, 31,255,140,155,219, 91, +203,161,248,142,106,199,169,165,249, 47, 31, 95, 25,184, 66,160, 71, 8,241,128,195,177,172, 15,252,242,243, 27,174, 47,159,242, +187,191,241, 62,159,221,220,113,253,248, 49,181, 21,150,117,197, 7, 33,184,132, 83,184, 61, 29, 57, 46,149,175,124,233, 5,170, + 3,243,218,113,172,172,121,101,241,142,214,149, 46,193, 80,194, 13,180, 27, 81, 18,159,136,162,120,111,140,131, 1, 71, 22,135, +186,142, 15,141, 62,237, 41, 85,241,169, 35, 61,225,220, 64,201, 39,123,127,208,134, 6,135, 27, 12, 65, 45,139,189,102,189, 15, +244, 46,172,210, 80, 86, 90, 93, 40,181,162, 69,112,161, 33, 77, 9,197,130,110,158, 98,126,114, 21,122, 19, 84,236,235, 93,171, + 71,251, 10,205, 17, 91,162,246,188,129, 85, 18,125, 35, 87, 6, 28,193,121,186,138, 77, 60, 48,218, 87,109, 71,195,239,106, 35, +247, 70,201, 71,219, 95,187, 74, 26,119,232,220,232, 82,104,197,110, 94,201, 37,187,181, 27, 63,218,242, 65, 85, 44,195,131, 67, +240, 72,138,248,232,240, 21,202, 26,113,190, 50,122,207, 82,156,229,130,122, 49, 14,134, 68, 14,193,209,106,164,116, 72,110,160, + 73, 32,197, 78, 8,150,150,151, 97,162,149,142,239,153, 62, 0,227,128,107,130, 19,193,139,195, 15,110,123,136, 11,161, 91, 3, +193,137,241,221,125, 12, 72,143, 95, 60,232, 29,129,113, 10, 60,125,246,248, 31, 92,105,171, 29,230,211, 76, 43,153,253, 20,137, +227,244,206,110,234,231,115, 70,203,202,197, 20, 9,227,248, 14, 31,234, 86, 93,150,186,114,125, 53,225,226,248, 46, 39,239,220, +156,149,219,207,223, 80,230, 7,219,123,107,177, 48,111, 48,210,163, 4, 8, 41, 48,175,246,222,215,122,163,212,153,152, 70,138, +247,228, 94, 89,142, 51,190, 7,115,137,232, 76,237,149, 33, 42,139, 40, 97,221,113, 21, 29,139,158,241,173, 33, 84,100,239,232, +222, 42,146,210,183, 28, 20, 3,254,197, 7, 31,252,209,214,183, 50, 80,156,179,135, 79,111,150, 44,199, 57,156, 55, 59,153,235, +134,143,245,222,189,253, 79, 44,244,246,197,195,204,125,193,214,237,155,230,212, 70,161, 30,165, 19,183,219,188, 72, 55, 39,123, +238, 6,107,149,130, 71,104,106,206,118,188,253,123, 42,118,115,175, 90, 45,108,227, 61,218, 54, 6,123, 12, 70, 67, 11,106,187, +236,110, 15,111,156,224,164,153,124,161,118, 68,141,220,214,213, 96, 53,189,119,235,180, 6,235, 89, 42,182,175,151, 77, 51,139, + 90,198,192,117, 71,114, 80,170, 34,222, 81,242, 91,192,131,213,223,156, 64,138, 30, 84,112,222, 8, 86,234,173,254,227,162, 77, + 22,214,101,225,246,238,129,214,133,174,138,136, 85, 77, 2,158, 33, 78,236,125,228,120,190, 99, 45,202, 56, 68,190,254,116,199, +151, 46, 7,246, 67, 32, 75,227,184, 58,124, 10, 36, 31, 40, 50, 82,155, 80,218, 74,244,194, 56, 94, 49,247, 74,144,149,169,131, +184,137,235,167,239,241,104, 16,238,111,239,184, 57,101,242,210,182,160,156, 81,228,140, 98,215, 96, 11,252, 53, 58,203, 82, 88, +138,121,159, 59,194,110, 58, 48, 12, 17, 60,236, 6,207,205,235,215,188,186, 61,114, 58,175,220,221,190,226,248,112,207, 56,120, +174, 47, 2, 95,255,181, 47,243,248,217,215, 89,107,100,174,153, 22,160,101, 40,231, 51,181, 84,150,211,137,170,194,112, 24, 24, + 98,100,151, 18,234,149,166,178, 33, 91, 27,107, 54,248,207,224, 61,205,155, 85, 45,133,136,147,104,129,180,113, 50, 10, 91,112, +219, 97, 74,201, 37,155,212, 39, 68,122,107,244,190,117,169,163,245,219,107,206,214,216,216,154, 15,181, 22,198,113,228,114,183, +167,182, 74,213,194,203,151, 47,121,184,185,167,229,194,203,175,188,180,214, 69,169,244,230, 9, 49,146,215, 78,195,243,201,167, +159,240, 87,127,245, 3,106, 85,124,136,248, 52,144,196,108,102,181, 21,150,101,161, 46,153, 97,244, 52,237, 28, 31, 22,171, 87, + 34,104,237, 68,129, 16, 35, 41,140,150,233, 8,142,230, 22,158, 60, 26,120,243,203, 27,126,246,233,107,238,143, 15,204,199, 19, +223,248,230,111,178,219,237,248,201,143,126, 66,169,149, 90, 10,173, 20, 98, 12, 60,123,239, 61, 16, 40, 57,163,173,224, 69, 24, +199, 29,222,245,237,176,166, 68, 17,222,220,188,226,227, 79,238, 56, 76,123,198, 93, 98, 45,153,210,140, 76,133,130,138,227,252, +176, 0,142,203,203,199,212, 86,201,117,102,205,230,222, 22, 17,198,110, 58,213,166, 48, 68, 33,170, 80,109, 71,103, 99,108, 54, + 51,151, 4,162,235, 36, 9,246,240, 31, 58, 84, 15,165, 81,157, 82,115, 70, 70, 97,196,219,158,189, 67,146,141, 53,235, 21,209, +100, 19, 48, 42,125,235,240, 83, 27, 77, 60, 84, 71,205, 21, 39,193,136,147,154,240,221,216,215, 65, 58,190, 70,170,118, 2, 21, +186,103,156, 18,180, 74,117,134, 1,174, 62,160,219, 1,104,236,142,222, 2, 69,149,166,141, 16, 21, 87,192, 21,235, 45,183,208, + 9, 54,170, 99, 61, 87,198, 97, 32,175,149,174,202, 92, 50, 74, 39,137,223, 14,249,254, 11,132,109,140, 38,185,233,218,241,209, + 28, 22, 94, 28,174, 27,251,195, 57, 79, 75,144,114, 69, 52, 48,215, 74,214,182, 41,125, 15,224, 58,161, 27,119, 97,191,155, 76, +105, 93, 21,223,236,253,160, 82,217, 57,136, 62, 80, 39,207, 62, 11, 49, 64,142, 66,152, 18,135,228,172, 29,178, 10,226, 61, 46, +202,214,229, 87,123,159,117,142, 96, 51, 11, 11, 36,139, 24, 3, 64, 60, 53, 87,104, 54,113,164,111,187,108,172, 34,220,251,134, +212,238,111, 23,221, 91,210,108, 35,206,204, 75, 97, 57, 47,212, 90, 73,174, 51,238,223, 13,245,109,109,112,188, 63, 67, 93, 56, +236,226, 59,195,184, 42,112, 94, 26,101,158,241,154,185,186,218, 35, 97,120,119,163,125,224,246,152,185,125,115,131,214,123,186, + 26,206,185,209,201,213, 2,210,104,163,183,134, 43,160,121, 3,187,185,104,133,114,231, 88, 78, 71,100,103,245,181,220,206,200, +126, 59, 64,182, 66,146,145, 92,207,204,235,140,247,158, 41, 88, 51,171,128,113,228,253,140,223,155,140,136, 86,241, 47,222,127, +241, 71, 97,115,159,235,166, 79,237,106,183,243,190,193,224,157, 23, 68, 77,255,184,101,229, 65, 28,218, 97, 74,230, 58, 23, 18, +226, 44,236, 38,186,133, 28, 92,223,144,179, 27, 49, 62,216,248,190,171,221,152,157, 56,122,135, 40, 22,198, 19, 44, 52,167,116, + 92, 55,253,158,247,125,187, 21, 7,188,247,208,204,147,221,183, 14,124, 24, 18,110, 11,162,233,150, 14,111, 40,104, 65,155, 65, +216,165,219,109,206, 57,143,115, 66,176, 40, 31, 77,133,224,212,132, 17,221,161,213,210,163,118,125,135,210,219, 86,199, 19, 90, +109,104,247,155,214,211, 42,120, 18,141, 55, 79,183,135,184, 32, 4,111, 24,203, 33, 4,214,211, 29,175,239, 78, 38,176, 15, 14, + 9,193,210,196,173, 17,198,137, 16, 28,167,229,140,139,145,167, 87, 19, 95,123,111,226,242, 48,209, 93, 39,116,101, 23, 29,187, + 67, 98,169,129,211, 50, 48, 87,101,188,220,145,198, 17, 39,145,211,156,121, 51, 7,110, 86,120,113, 61,242,100, 55,208,152,153, +166,198,235,207,142,124,248,250,196, 82, 13, 2,212,138, 81,239,236,197,218,127,133,239,221, 40, 75, 69, 45,104,182, 31,119,164, + 16,236,160,230, 26,199,243,194, 90, 50,243,178,240,230,254,142,155,155, 91,142,247,247, 60,220,223,112,188,191, 35,180,149, 58, +223, 82, 40,236,166, 39,120, 9, 44,203, 3,218,149,247,190,252, 77,222,251,224, 37, 99, 26,113,190, 17, 90, 71, 67,183, 85,141, + 56, 90,171, 4,231, 25, 70,161, 59,251,129, 14,155,192,167,139,103, 74, 35,187,157,245,182,163, 31, 54, 38,129,146,123, 51, 67, + 86,124,251,245,124, 43,102,137,244,110,142,116,121,155, 5, 17,251,137, 13, 33,114,185,223,179,228,149,166,149,195,254,146,143, + 63,121, 69,239,141,223,255,131,111,209,230,149,243,205,194,188, 84, 78, 15,213,170,156,218,249,211,127,255, 23,124,244,201,107, + 58,106, 97,185, 52,208, 4,164, 43,190, 71,170, 22,138,102,123,224,158, 10,203,230, 26,160,119,188,235, 76, 23, 35,187, 97,199, + 52,140, 92, 14,158,185, 86, 84, 51, 65, 51, 63,252,233,231, 60, 28,207,212, 92,185, 63,206, 28,239,110,217,143, 59,110,238,238, +152,151, 51,218, 10,211,110,207,211,231, 47,169,170,212, 82, 80, 45, 84, 85, 66, 24,137,221,234, 93,221, 15,248, 56,242,236, 98, +228,195, 79, 63,230,225,126, 70, 36,129, 28,152, 18, 76, 49, 49, 47,213,252, 7,218, 64, 42,111,222,220,113,184,120, 66, 26, 15, + 20,102,122, 43,148,181, 16, 91,160,106, 67, 3,168,107, 12,227,128, 96,192,169, 24,247,166,244,148,104, 29,105,153,241,174,210, + 37, 50,168,176, 31, 70, 90,178, 16,107,236,158,224, 26, 69, 2,173,141, 52,183, 80,230,153,214,173,141,226,123,163, 84,136, 18, +161,101,147,152,196, 64, 16,217,236, 17, 30,113, 5, 29,161,171,201,115,124,237,104,134,142,103, 8, 22,172,164,182,141, 18,105, + 19,173, 56, 93,210,114, 33,137, 29,188,155, 4, 66, 50,100,107,169, 30,167,209,194,183,195,129, 32, 13,130, 82,235, 30,167,202, + 26, 10,173, 27, 93,115, 89, 42, 45, 23, 52,120, 46, 98,164,186,200,130,237,239,229,109,198,168,153,116, 6,103, 19, 76,196,153, +200,169, 54, 52,218,219,189,107, 66,117,176,139, 35,133, 66, 33,226,170,210,100,161,230,198,213,148, 76, 12,211, 10, 97, 3,185, +236,210, 5,222, 43,165, 43, 67,220, 65,232,196, 48,114, 8,158, 69, 61,211, 24,152, 6,163,227,117, 31,232, 78,137, 2, 18,220, +246,231,136,244, 45, 55,231, 5, 31, 6,187,221, 15,123,106,216,177, 86,251,111,179, 66,110,157,117,173,172,165, 81, 74, 35,151, + 74,206,149,146, 59,185, 52,214,165, 50,207,149,117,169,156,207,133,187,251, 51,167,251,123,250, 22,148, 43, 85, 41, 75, 37,231, +102,254,239,181, 24,180,168, 54,106,110,214,236,105,221, 14,215,185,125,145, 57,105, 27, 45,178,213,134,230, 74, 94, 11,199,135, + 19,101, 93,208, 13, 23,158,182, 75, 96,111, 38,208,234, 88,171,165,171,253, 89,182,131, 70,239,191,250,235,191,255,135, 29,212, +150, 92, 57, 29, 79,214, 76,105,133,195, 20,240,111, 77,117,102,191,249, 7, 29, 74,114,131,215,175,111, 57,222,223,145,151,147, +125, 78,106, 89, 31,231,160,173,221, 64, 90, 85,104,210, 56,191,205, 13, 4, 79,201,149,222, 42, 90, 21,239, 70,170, 38,195,175, + 51, 32, 57,176,174, 5,233,157, 33, 56, 36, 24, 23, 37,119, 33,106, 71,188, 35, 55,103,255,143,188, 16,124, 99,157, 27,161, 55, +187, 17,243, 22, 60,179, 1, 87,154,110, 34, 19,121, 75,141, 2,227,181,109, 56,187, 77,185,215,240,224, 11, 77, 42,174,111,246, +178, 38,244,216, 45,135,220,141,179, 46,189,227,154,195, 11, 6,180, 81,103, 23,125,103, 31,103,221, 40,107,210,237,225, 40, 68, +132,134,239, 54, 2, 4, 91, 13,184, 0,154,187,129,102, 8,232,106, 90, 86, 17,143,120,161,170, 41, 17, 29,208,131, 67,234, 54, +150,112, 91,154, 89, 59, 42,141,214,132,174,157,204, 86,215,209,134,106, 71,122, 33,185, 64,241,160, 42,184, 32,155,151,206,210, +227, 97,171,102, 57,111, 15,139, 97, 26,137,192,186, 90,213,164,109,216, 92,241, 74, 85, 91, 80,184,183, 58, 48,204, 75,239,156, + 33,115,135, 56, 48,165, 61,185,173, 92,239, 35,251,224, 80,231, 40, 93, 76, 3,235,109,201,241,250,182,114,219,140, 27,238,186, +177,236,101, 45,244,146,185,201,137,221,229,142, 39,143, 61,174, 61,160,235, 3,196, 61, 50, 30, 88,234, 61, 4,103, 35,207,205, +220, 36,222,214, 38,155,107,199,100, 55, 78, 17,109,132, 96,163, 67,233,194,213,176,163,201, 76, 16,251,123,179,249, 69,214,210, +248,201, 71,159,240,241,171, 87, 76,233,231, 92, 31,118,136, 79, 76,195, 5,227,240, 64,154, 44, 28, 23,210,200, 55,127,237, 37, +207, 30, 77,220,206,153,211,205,153,243,124,195,121,205,232,122, 98,237,149,221,152,112, 62, 81,233,196,161,147,207,158,230, 87, + 66,104,140,106,252,126,213, 70, 28, 18,184, 70,242, 19,211,180,103,119, 49,114, 62,205,120, 60,174,195,177, 88,120,142,109, 87, +235,186,133, 34,107,111,184,230,236,229,218,237,144, 86,181, 18, 67,224,213,171, 87, 92, 93, 30,248,237,223,250, 58,134,242, 19, +210, 52, 81,117, 97, 45, 43, 21,207,135,159,190,226,199, 63,255, 20, 16, 66, 8,180, 86,208,156,185,120,244,152,135,251, 55,184, + 0,211, 16, 89,150,192,233,184,152,107, 29,217, 2, 57,176, 63, 92,176,191, 58, 16,107, 35, 37,199,179,103, 23,124,242,201, 13, + 55, 55,133,255,235,248, 33,247,119,247,140, 46,113,138, 35, 77, 43, 63,253,217,207,249,249,135,191, 48, 5,172, 8, 93, 2, 49, +238,140,226, 88, 43,209, 98, 62,236,210, 30,130, 35,247,237, 0,209,148,167,135, 3,206,159,185,123, 88,105, 85,121,243,230, 51, +246, 23,153, 71, 23,215,188,252, 96,162,247,143,216, 93, 93,224, 67,228,147, 79,126,193,253,253, 3,127,243,195,239,243,205,177, + 49, 13, 1,173,130,239,145,197,109,189,230,236, 8,187,129, 62, 68, 16, 97, 18,229,246,248, 25, 15,175,238,184,125,243,134, 94, + 21, 82,103, 8, 9, 23, 34,222, 11,147,223,161,190, 49,237,247, 92,236,174,236,125,195, 77, 56,201, 84,148, 93,138,148,166,136, +194,218, 60,227,224, 57,157,239,136,209,179, 31, 6, 74,111,204, 93,160,101, 6,137, 52,115,152,208,213,227,166, 45, 60,231, 28, +221, 53, 78,189, 18, 7,193, 37,232,231, 66, 95, 5, 65,201,199, 59,196,253,106,170,179,219, 77,104,168,212,102,227,105,165, 24, + 88,106, 57,209,147,178,172,157,216, 78,228,212,237,115,147,198,169, 58,210,212,232, 53,146, 79, 39,110, 93,161,158, 23, 38, 31, +153, 89, 25, 39, 79,149,142, 52, 71,196,147, 70,160, 10,221,217, 84, 17, 39, 56, 26,129,204,210, 58, 67, 24,209, 4, 7,217,145, + 38,143,186, 76, 57,206,244, 12,115, 72,248,226,113,204,246,245, 26,119, 48, 36,195,112,207,133, 97, 16,124, 31,205,189, 33,202, + 0, 84,133,214, 5, 63, 8,154,133, 33, 37, 43,251,117,165, 56,143,228,102,175,235, 96,115,210, 42, 6,251,122,239,217,129,231, +239,191,247,133,207,227,109, 14,173,243,119,158,107,253,139, 77,232,175,170, 96,250,171, 27, 41, 69, 89,111, 4,214, 51,210,149, +113,218, 49, 28, 46, 55, 81, 81,183, 6,149,179, 92,150,217, 16,101,251, 56,125,187,136,217, 69,174,183,110, 62,118,187,227,176, +228, 74, 91, 86, 27,135,122, 56, 54,200,167,106,135,164,238, 54,163,162,223, 24, 95,221,250,255,219, 95, 55, 53,138, 39, 98,149, + 56,227,170, 24,243,164, 53,101,201,171,245,198, 59, 52,113,124,242,249,145,233,190,154, 86,252,237, 42,195, 27,251, 68,183,233, +158,119,150,187, 98,203, 80,249, 45,139,165,218, 41,205,124,232,104, 35,107,227,213,221,204,253,241,132,182, 25, 81,160, 55, 84, + 42,189, 41, 33, 58, 84, 26, 11,129, 97, 16,186,119,196,188, 82,202,192, 40,141,238,102,230,146,172, 26, 92, 42,199,110, 16,170, +158,103,156,159,240,211, 64,161,224, 51, 16, 7,234, 82,104,174,163,218,208,230,241,154, 9,107, 99, 29, 6,198, 62, 32,126, 33, +116,177,107,142,138,255,194, 42,246, 86,153,170,221,148,149, 90,237,196,231,182, 55,120,188,163, 85,219,115, 54, 54,254,184,218, + 93, 21,113,168,239, 72,105,168,183, 7,180,219,192, 41,218,183, 7,231,150, 70,172,116,162,183, 94,184,217,225,196,240,164, 36, + 36, 70,122,181,230,120,240, 22, 2,234, 45, 51,196,173, 30,183,249,223,105,197,194,117,108, 0, 18,167,180, 77, 80,241, 86,175, +138,120, 20,161,213, 76,197,225, 93,196, 7,165,245,186,161,101,197, 96, 53,210,113,173, 81,218,230,121,119,134,250, 43,219, 55, + 53,120,135,184, 95,237,242, 25, 38,198, 20, 24,157,141,146,233,113, 59,248, 41, 61,119, 59,228, 96, 0, 30, 4,252,246, 3,136, + 19, 92, 83,150,101, 54,104, 77, 80,164, 55, 11,241,181,198, 16, 35, 97, 84, 6,133,207,239, 28,183,179, 71, 98,193, 57,165,157, +149,153,153, 1,143,119, 3,158,198,215,158,119,174,189,163,172, 43,189, 8,167,227,194, 47,239, 31,108,199,220,170, 29, 42, 54, +192,140,106,163,139,160, 77, 72, 84,234,246,226, 14,222,210,166, 65, 60, 41, 4, 36,101, 78,111,206,212,214, 13,240,210,130,237, +163,157,179,175,123, 85, 78,101,230,254, 60, 19, 83, 96,138, 39,118,201,147,246, 59,118, 23,123,244,254,150,255,244,167,159,112, +253,252,154, 47, 63,127, 15, 15, 92, 94, 93,114, 17, 6,116, 81, 30,238,239,168,229,158,211,249, 68,117,137, 93,117,248,184, 64, +247, 68,239,169, 88, 23, 94,176,218,228,228, 61,254, 48, 34,193, 19,218,196,253,120,102, 62, 46,204,243,108,136,225,110, 6,164, +161,155,109,168,245,186,229, 59,108, 21,116,158,143, 28,239, 7, 98, 50,222,247, 93,190,165,139,242,217,231, 15,228,251, 2, 93, + 25,167,137,117, 49,249,202,156,149,207, 62,255,156,211,241, 68, 12, 1,196,211,189, 41,130, 99,116, 60,122,252,132, 55,175, 63, + 35, 97, 1,191,181, 47,168,138, 29, 66, 55, 23, 66,171,106,116,179, 32,236, 47, 15,132, 16,153,215,198, 92, 87,206,186, 9, 95, +100,224,242,234,192,249, 60,155,130, 56, 67,239,133, 46,202,126, 55,241,252,241,123,164, 33, 25,130,185, 20,166, 52,209,134,136, + 22, 51, 35,218,109,169,163,181,241,144, 23, 11, 45,186, 70,165,178,156,239,248,188, 20,214, 58,240,252,241, 37,143,158, 62,231, +250,197,151,249,224, 75, 95,230,238,230,150,243,178,192, 26,200, 26,104,117,221, 94,171,129,238, 27,108,161,197,251,155, 87,220, +188,185,225,238,205,231,220,191, 89,112, 24,178,210,251,128, 22,199, 49,219,155,123,183, 19,162, 29,180,156,145,203,166,221,142, +221,229, 21, 87,195,142,184,187, 36,140, 9,233,145,182, 86, 42,157,226,102,123,159,145,145, 89, 43,210, 96, 8,142,202,128,214, +204,220, 22,246,225,138,224, 2, 69, 51,222,153,175, 58,196, 14,197,209, 78,157,234,155,121, 32,124,164,105,193,227, 40,120, 74, +235, 8,129,164,133,178,120, 26, 1, 13,214,210,105,116,106, 95, 24,206,209,220, 7,237, 12,253, 2,159, 60,161, 22,155,252,172, + 3,167,114, 66,189, 80,239,148, 93,112,172,209,161, 56, 90, 89, 25,187, 34,253,130,165,173, 60,114, 97,243, 82,168, 17, 52, 37, + 24, 14,219, 7, 36, 54,114,109,132,185, 19,211,128, 72,101,125,232,244,146, 24, 31, 79,204,210,104,109,133, 41,210,151, 96, 32, + 48,215, 24,123, 35, 76, 9,191,181,122,170,131,186, 8, 14,163,224,229, 10,163,128,239, 25,237,201,144,217,165,161,209,152, 16, +130, 80,123,181,181,168, 70,210, 46,113,185, 31,121,235,227,250,127, 93, 76,229,239,249, 73,255,222, 63,255,187, 96,183, 49, 56, + 90,217,177,246,138, 47,202,227,171,137, 48,254,127,117,223,255,255,234,115,191,234,138,207,125,228,238, 77, 36, 31,239, 8, 20, +158, 60,186, 38,238,118,166, 98,125,219,154,147,255,199,130,221, 16,199, 0, 0, 32, 0, 73, 68, 65, 84,229,250,173,237,180,255, + 10, 37, 99,195, 71,187,213,235,219, 84,250, 67,129,249, 72, 94, 86, 98,207, 76,215, 87,184,241,226, 11, 90,185, 29, 62,183,170, +222,219, 21,171,179,183, 76,221,166, 2, 69,220, 23, 7,136,210,109,141, 89,187, 50,247,198, 10,136, 47,232,186,128,111,244, 2, +218, 60,206, 69,218, 92,104,222, 96,100, 77, 45, 88, 58,200,192,122,232, 44,181, 35,179,114, 49,108, 12,135,251, 0,249,100,230, +190, 30, 81,183, 18,188,167, 28, 3,181, 47,228,101,177, 3,114, 3,173,142,212, 34,218, 4, 21,143, 44, 51,115, 56, 19, 28, 4, +193,217, 73, 76, 12,105,166,111, 37,224,221,146,233, 93,109, 55,142,218,136,201,119,168,197, 82,213,150, 44,223, 8, 70, 2,221, + 25, 49, 42, 57, 71,109,230,131,117,222,250,207,130, 71,163,218,199,236,197,146,232,218,232,205,255,138, 73,142, 65,106,192,210, +203, 1, 16, 23, 44, 93, 42,130, 71, 54,189,163,245, 72, 69, 54,141,156, 15,244,178,162,106,110,120,173,186, 49,144, 13, 78,209, +181,210,141, 61, 75,167,109,129,153,142,104,183,241, 58,250,197,106,193,137,167,168, 2, 30,109, 70,128,139,209,111,232, 89,181, + 83, 35, 14, 23,188,237,161,181,115,234,219, 9,175, 23, 66,115,102,231, 17, 33,120,219,151,212,237,160,164, 98,134,185,174,142, +218, 11,119,167,147,177,243, 9, 84, 21,178, 87, 38, 47,236,101, 71,209, 19,183, 15, 11,199,179, 18,211,158,163,170, 61, 28,130, + 80,154,176,148,134,248,192, 62, 69,158,239,173,210,151,174, 34,210, 3, 31,253,248,115, 62,191, 93,241,193, 19,182, 19,116,119, + 91, 69,164, 89,136, 77, 20,106, 83, 74, 95,137,222, 35,120,106, 41,156,150,153,112,112,220,191, 57,241,234,238,196,218,236, 84, +108,111,248,155,239,216, 57, 84,108,106,225,182,213,201,121,153, 89, 43,164,101,230,254,254,214,118,208, 93,249,244,238, 53, 63, +253,217, 71, 92, 92,238,121,254,232, 25,239,191,255,140,105,186, 6,174,208,246,152,184,187,101,110, 25,157, 31,200, 39,195,144, +246, 20,240, 58,144,130,163,105, 33,118,199,211, 23, 79,200,203, 61,159,125,126,131, 56,199,154, 27, 62,136,185,164, 53,211,180, + 90,218,216,217, 3,206, 91,231,193, 62,239,104,196,192,135,227,249,255,102,237,205,154, 44,203,206,243,188,103,125,107,216,251, + 76, 57, 84,117, 85,117, 85, 53,186,129, 38, 1, 16, 36, 77,130, 16, 41, 50, 72,219,180, 40,138, 54, 25,158, 34,228, 27, 95,248, +191,224,215, 56,194,150, 29,161, 27, 57, 36,134, 45, 75,214, 64, 17, 33, 26, 48, 5,146, 24,137,110,116,163,187,170, 43, 43,231, +115,246,176,134,207, 23,223,206, 2, 45,249, 14,153, 17, 29,209,209, 85,157,145,231,228, 62,107,125,195,251, 62, 47,219,221,218, +206, 42, 17,174,174,175,249, 39,255,231, 55,120,250,246, 35,126,254,253,167,188,120,241, 25,125,183,179,233,138,115, 92,158, 95, + 45,249,192,230,191,104,197,138,180,155,155, 11,222,123,247, 61,166,225,192,126,127, 75,234, 60, 91, 61,194, 77,153,121, 30,104, +165, 18, 82, 34,108, 58,130, 51, 43,166,171, 35, 63,254,244, 18,117,149,105, 26, 25, 39, 19, 98,110,215, 43,230,154, 23, 12,174, +163,101,227,140,179, 18, 30, 62,120,128,239,226, 66,106, 44,203,228,199, 14, 48,135,241, 23,204,199, 42,168,159,216,207,141,174, + 11,140,211,140,139,214,217, 28,166,145,171, 23,123,166,147,198, 87,126,254,125,222,126,118,204, 39, 82,217, 56,161, 58, 79,214, + 70, 38, 83, 35,196, 92, 65, 42, 62, 57,174, 62,122,193,217,213,107, 62,123,245, 2,109,158,221,122,197,106,213, 83, 71,193,249, + 6, 17,162,247,244, 18, 22,212, 67, 33,227,150,233, 82,160, 85,101,191,223, 51,149, 70, 75, 35,237,250,130,157,143,164,221,134, +245,230,136, 62,110, 40, 45,163,209, 17,165, 80,230, 9, 69,232, 92, 32, 5,251, 92, 30,185, 53,193, 5,138, 43,232,104,156,120, +212,242, 32,154,107, 52, 7, 33,219,214, 88,164,153, 31,191, 87,186,220, 56, 52,219,245, 23,223,232,124, 96,202,215, 68, 4,157, + 3, 53, 5,132,129, 67, 72,203,202,172, 71,187, 70,222, 79,198,155,143,139,155,101,110, 72,241,148,170, 28,250, 70,152,102, 36, + 40, 83,113,200, 92, 40, 20, 86, 93,225,118, 86, 36,152,213, 54,184,192, 92, 6, 90,118,248,104, 90,151, 16, 43, 96,249, 24, 57, + 52,106,167,156,132, 30,245,129, 54, 21, 92,234,232, 18,204, 93,101,106, 70, 85, 27, 67,193,213,142, 20,237,243,238, 10, 4, 17, +102,148, 94, 34,218, 76,212,232, 67,196,231, 10, 94,153,180,209,227, 80, 45,168, 4,155, 90,121,161, 15, 61,157,243,196,238,126, +246,200,178, 0, 98, 66, 20, 66,184, 31,152, 77, 92,214,188, 56,232, 66,160,239,211,127, 88,112,240,255, 95,120,132,255,160, 76, +248,255,254, 5,119,212,113, 93,102,230, 97,100,219, 39, 30, 61, 60,250,153,196,130,237,223,179,247,125,186, 63,225,236,195,159, + 48, 12, 35, 34,129,154, 42,126,176,198,130,232, 8, 69, 25,153, 41, 37, 16,139,114,200, 51,190,121, 91, 65,181, 0, 65, 40,101, +164,184, 74,231,205,213,176,221,108, 57,180, 91, 19,138,135,145,113,190,198,215, 68,198,194,174, 4,101,110, 55, 56, 31,136, 25, +115,104,185,200,205,124, 48,125,200, 93,132, 40,173, 44, 76,220,165,125,211,106, 42, 83, 5,223, 4,117,139, 69,189, 89,153,164, +174,162,106, 96, 19,219,143,219,206,188,224,112, 18,151, 12,107,251, 94,246,237,236,226,118,106, 15,134, 79,193,178,153,151,145, +123,173, 10, 18,150,160, 24,251,229,212,230, 44, 32, 37, 58,230,185,224,151,177,187, 43, 38,254, 42, 90,160, 21,226, 82,161,149, +101,150,212,212,126,190,230,226, 79,105,121,206,232, 86,121,206,248, 96, 41,108,138, 46,246, 15,219,173,207, 4,130, 52,243, 28, + 87,219, 13,178,128, 72, 68,173,243,194,139, 13,228,115,225,144, 5,223,123, 60,130, 79, 44,126,232, 72,211,138,143,222, 84,239, +173, 25, 36, 99,161,247,121, 49, 60,174, 11,110,177,227,129, 86, 33,170,103,133, 35,183,137,161, 84, 10,158,247, 78, 59,186,126, + 98,188,236,145,228, 41, 25, 84,122, 66,172, 56, 34, 39, 15,223,161, 11, 7,188,155, 72, 15,222,225,102,186,224,135, 63,249, 17, + 77, 34, 65,140, 20,232,146,188,129, 35, 84, 97, 89, 73,180, 55, 54,196,101,120,128,182,194, 48,217, 46,119,127, 24, 23,181,253, +130,217, 21,131,213, 56, 39,139, 13,208, 70, 97, 93, 76, 60,122,120, 76,153, 51,115,179,196,183, 97, 60,216, 55, 12,158, 92,148, + 50, 93,115,179,191,225,245,217, 5,103,231,231,156,158,158,178, 91,111,216,118, 59, 54,235,200,195,221, 41,181, 60,167,180,202, +217,103, 31, 50, 30,174,233, 52,163,120, 78, 30,191,205,131,117,199,103,103,159,113,118,113,110,194,198,154,161,101, 10,106,220, +228, 90, 41,154, 81,103,161, 60,120, 49, 54,160, 26,210,216,123, 71,159, 58,131, 60,204, 19,219,205,154, 86,149, 24, 61,231,231, + 23,252,239,255,252,223,242,201,203, 47,240,189, 31,125,200,111,124,237,171,172,251, 13,235,237,154,253, 97, 52, 38,248, 82,240, +169,154,125,238,230,122,224,242,213, 25,235,184,225,170,236,161, 41, 49, 68, 30,110,122,114, 61,129,234,136, 65,217,108, 2,211, + 84, 8, 81,216, 95, 28,184, 29,103,240,149, 92, 42, 67,153,241, 34, 84, 41,228,105, 38,121,143,119,158,214, 85,242,156, 57, 90, +109, 8,253,198, 66,129,242,196, 60,143,196,184,177, 46,164,192,202, 69,230,154,153, 75,225,201,131, 21,204, 87, 36, 53,177, 27, +201,132,163,181,154,163, 35,106,228,236,252,134,127,243,231,223,230,111, 51, 64, 92, 49,133, 64,157, 70,130,139, 68, 85, 34,202, +205,112,201,235,159, 92,115,126,113,198,205,229, 45, 33, 57,158,191,243,148,231, 15,118,236, 15, 35,127,245,195,143,152,231,194, + 58, 70, 19,127,202,140, 75,230, 96, 80, 1, 81,127, 55,175,180,120, 83,146,129,155,221,140,148,192,156,122,118,169,226,252,129, + 16,143,104,115,197,141,153,218, 57,219, 29,139,105,214,197, 65,145, 13, 42,141,155,122, 32,138, 67, 87, 29, 76, 51, 85, 33, 22, +161,118, 21,223,245,228, 67, 1,103,105,139, 73, 76, 85,236, 3,196, 22,240, 46,147,115, 71,107, 7,200, 70,148,172,171,130, 56, + 71,209, 64, 20,193,249,217,166, 35,251,138,143, 21, 79,199, 88,103,130, 58,154,139,180, 0,157,171, 28,246,142,173, 7,119, 59, + 49, 15, 21,191, 18, 52, 53, 46,175, 26,113,187, 99, 69,197,163, 76,170, 72,245,198, 67,111, 86, 86,170, 86, 90,107, 76,243,140, + 87,232,202,154,170,141, 54, 85, 54,235, 64, 11, 30, 38,129, 58,188,113,207,172, 90,160, 74,160,204, 66, 74,158,170,149,208,217, + 20,176, 58,179, 72,245,201,113,152,148, 46, 6,130, 40, 41,220, 77, 69,141,165,169,106, 90, 18,231, 13, 84, 34,247, 64, 81,171, + 10,181,154,117, 72,184, 95, 47,185,173, 81,177,152, 82,119,127,224, 25, 1,107, 34, 93,163,239,195,207,156,251, 46,255,222,191, + 71, 49, 77,150,171, 74,203,230,244,242,193,246,234,174, 52, 14, 8,218,122,164,101,116,231,200,147,112, 68,133,131,185, 74,134, +131, 3, 53,220,182,246, 14,201,194, 65, 70, 74, 80,194,124, 96,110, 21,113, 29,147,102,194,202, 83, 10, 16, 19,181, 20,186,226, +152, 37, 81,105,212,121, 38, 52,197, 63,121,250,236,235,134,129,181, 23,141,218,158, 27, 49,111,167, 46, 11,125, 19,191, 89,238, +177,152,100,213,120,237,234,108, 7,224,204,246,209, 22, 44,172,247, 44, 10,243, 5, 54,211, 22,207,164,218,229,208,114,133,216, + 17,187, 68, 39, 38,148, 42,214, 35,225, 93, 64,226,178,211, 8,198,153, 23, 53,129, 90,245, 38,120,187,139,183, 19, 51,156,155, +152,173, 86, 19, 85, 56,161, 45,169, 84, 90,203,162,180,182,101, 81, 91,254,252, 77,122,156,152,194,255, 78, 88, 69,116, 11,245, +174, 81, 21,132,133, 90, 23,148, 20,197, 46, 53,111, 23,127, 8,182, 71,139, 78,237, 2, 23,111,147, 11, 3,188, 83,203,204,229, +249, 45,213,121,188,218, 14, 9, 21, 36,129, 36, 59,196,125,112,104,182, 11,112,157, 2,226, 12, 86, 67,136,244,189,167, 11,102, +219, 26,230,200, 44,142,160,145,121, 46,196, 20,121,248,248,125,222,254,220, 59,120,148,237, 73,207,241,211,175,242,209,199, 31, +243,205,239,125, 68,232,210, 27, 31,191,199,118, 48,186, 40,247,171,253, 32,139,130,249,167, 97, 61, 13,168,115, 97,206, 11, 20, + 8, 71,244,198, 46, 16, 2, 46, 6,179,203, 88,118, 33,136, 99,187, 59,161, 95, 84,170,187,205,154,174, 91,227, 83, 32,136,249, +143,157, 55, 75,135,182,198,172,202,245,254,134,215,231,103, 28,198,137, 92, 14, 12,251, 11,110, 95,157, 67,203, 60,126,231, 25, + 63,255,222, 47, 16,125,207, 80, 6, 90,232,120,251,201,142,235,139,215,156,157, 93, 19, 3,104, 12,118,224, 54,135,119,145, 62, + 70, 86,125,207,106,179, 33, 69,123, 30,113, 66,171,213, 14,136, 16, 16,239,151,189,120,194,169, 5, 93, 4,111,185, 2, 49, 69, +174,175,247,124,250,233, 25,169,235,120,241,241, 39,224, 3,199,167, 59,190,249,239,254,130,215,175,111,232, 99, 7, 40, 57,207, + 22, 1, 28, 60,227, 97,111,120,225,102,108,250, 82, 70,198,105, 64,156, 35, 37,161, 79, 66, 44,133, 66,102,204,153, 97, 56, 44, +137,113, 6, 88,194, 53, 74, 51, 10, 98,205,149, 4,148, 60, 35, 49,210,247,107,182,155, 99,186,152, 8, 52, 90,206,198,149, 15, + 1, 23, 28,182, 48,114,111,220, 33,184, 74,109,133, 24,123, 94, 95, 94, 34,101, 73, 57, 92, 58, 53,151, 4,231,133,235,235, 27, +254,234,251, 63,230,236,245,107,222,126,248,152,228, 35, 55, 87, 7, 94,190,248,144,179, 79, 63,229, 71, 31,125,196,171, 87,151, +148,170, 60,127,246,144, 95,251,197, 47,240,206,233,150, 15, 63,254,136,239,126,248, 25,195, 52,129, 42,115, 45,148,229,179, 53, + 87,203,114,112,213, 86, 56,170, 86, 44,182, 69, 9,190,222,118,156,156,246, 28,175,183, 28,109,183,116,210,216,238, 34,105, 19, +216,108,143,112,197, 44, 94, 77,148,184, 22,166,105,178,238, 69, 10, 7,189, 69, 52, 64,169, 40, 19,155,184, 50, 72, 77, 84,226, +162,151, 9,205, 82, 21,205,250,104, 69,193, 52,102,168, 74, 31, 86,203,179, 82, 45, 23, 34,172, 41, 89, 9,190,225, 90,132,105, + 68,106,135,215,229,220, 35,217, 14, 58, 87, 74, 49, 71,136, 56,208,210,232,212,172,172,153, 37,158, 57,120,156,143,244, 83, 96, + 28, 6,252,156,113,234,201,234, 65, 61,135,225,134, 50, 41,115, 30, 9,206, 81,171,195,175, 61,125,244, 4,241,212,162, 72, 84, + 66, 23, 40,211,132,168,199,135, 8, 94,233, 87,158,169, 25, 51,190, 79,102, 89,106, 94,168, 83,102,181, 56, 51, 28,149,110,201, +192, 64,192,123, 75,173,116, 75,225,237,162,121,234, 85, 33, 6,207,233,241,150,211,135, 39, 63,243,133, 86, 20,166, 49, 83,115, + 33, 5,207,122,183,190,151,139,189, 52, 24, 15,179,229,168,119,129,126,125,127, 62,242, 49, 55,166,105,198,105,230,120,157, 8, +253,134,251,252,186, 30, 42, 87,231,151,204,183, 87,248,101, 44,175,203, 93, 83, 81, 36,195,236, 50, 49,121,114,110,232,228, 77, + 52, 57, 21, 6,157,200,110,177,104,206, 16,252,204,212,178,173, 10, 74,197,205, 29,211,224,208,144, 80,205,144,157,117,255,206, +195,152,153,242, 8, 93,196,187, 70,169, 19,154, 33,168, 54, 83,125,227,208,104,173,120,171, 38,234,174,170,168,136,141,169, 69, +113, 69, 80, 87,237, 96,147, 69,204, 35, 14,135,183,249,137, 54,180,154,101,162,170,169, 68,109,199,104, 29, 33,109, 89,189, 47, +241,171, 2,120,111, 98,138,208, 28, 5, 79,147,134,212, 74,157,179, 77, 16, 90,176,206, 27,155,253,182,106, 44, 93, 43,231, 27, +234,236, 33,110,234,208,224,209, 2, 57,103,162, 65,171,241, 22, 19, 67,115,166,121,199,123,124, 83,114, 46,148, 98,197, 75,236, + 13,118,227, 8,184, 90, 76,225, 94,173, 43,247,190,161,206,252,206,230,155,175,184, 86,112, 98,216, 69,175,254, 77,206, 59,139, + 93,174, 58, 37, 38,143,159,172, 16,170, 57,219,165, 24, 60,193, 57,162, 23, 60, 17,175,222, 62, 37,222,132, 67,159, 92, 54, 98, +172, 60, 8, 43,188,143,108,146, 99, 63, 85,210,241,154,247,156,227,187,231,133, 38,176,233, 19,109,181,227,241,207,255, 60,239, + 28,111, 56,123, 53,113, 49,123, 30, 14,183,124,240,193, 79,168,206,128, 47, 78,141, 40, 37,117,113, 53,136, 85,242,193, 65,209, +133, 8,197,157, 48,209,217,229,191, 40,121, 21, 3,240, 84, 21, 66, 88,138,178,106,133, 21, 94, 17, 20, 31, 87,236,142, 54,180, +172, 92,223,222,112,125,221, 88,175,214,144, 34,169,131, 77,232, 40,165,114, 27, 70,234, 60,147,107, 33,231,202, 88, 27, 31,125, +250, 41,159,189,126,197,170, 79,116,169, 99, 55, 92,240,147,243, 23, 60, 57,121,196,147, 71,143,120,231,243, 95, 96,127,113,197, +139, 31,159,115,123,115,107,176, 34, 49,123,149, 75, 17, 23, 87, 38, 27,139,182,235,247,115, 97,213, 39,166, 92,232,198,137, 62, + 6,246,243,108, 30,242, 16,160, 53,154, 52,162,116,148, 90, 12, 36,211, 96,206, 25, 37,224,246, 3,221,122,197,237,205,192,163, +167, 87, 92, 95,158,113,184, 57, 88, 36, 98,201, 84,205, 76,227, 68, 76,145, 72, 96,110,149,169, 77,156,156,236,184,188,184, 96, +110,209,198,243, 58, 67,201,204,213,179,207, 38,214,171,213,224, 70, 77, 21,241,166, 6,102,161,158, 93,151,107, 19,154, 73,199, +237, 60,178,242,240,248,248, 49,105,221, 91,197, 47,149, 58, 89, 49, 88, 42,184, 78,240,106,168, 98,213, 72, 76,142,243,215,103, +156,110,215,236,203, 76,110, 74, 8,139,238,164, 54,180, 68, 68, 45,153,106, 82,101,152, 43,231, 87,151,124,240,193,247, 56, 28, + 42, 23, 87,151, 52,103, 98,210,105,110,236,182, 27,190,244, 11,207,136,204,124,244,193,199, 92, 92,238,121,121, 61, 88, 90, 25, +222,206, 9,249,105,220,170,230,193, 44, 95, 33,145,114,227,120,123,204,195, 7, 71,188,245,228,132,211,183, 78, 57, 94, 11,167, + 39, 1,209, 21,235,221, 67,134,124,131,212, 76, 67, 41, 37,240,137, 63,230,252,118,166,148,153, 58,236, 41, 83, 67, 58, 91,199, +249, 98, 18,110,151,122, 36, 15, 12,106,194, 68,135,144,169,148,154,105, 58,227, 75,165, 76,133,144, 54, 76,115, 35,215, 72,144, +198,208, 50,219,245, 22,165,163, 14, 13, 29,110, 9,177, 67,179,113,210,145,104,164,188, 38,100, 50,132, 25, 66,162,148, 66,159, + 58, 66,131, 48, 5,246, 76, 22, 82, 84,102, 26,142, 24, 19,243,156,209,166,132, 46, 18,100,226,186, 57,210,205, 64, 90, 9,186, + 93, 35,190, 39,185,108,244,191, 60,224,216,208, 85, 15,193,206,163, 16,141, 94, 88,129,176,238,153,167, 70,239, 35,125, 19, 90, +181,232, 77, 47, 1, 17,207, 60, 55, 92,104, 4,239,152,166, 76,242,158, 92,132,171, 97,102,219, 69,146,243, 38,234,245, 14,241, +230,240, 1,211,114,121, 81,107,204,156,220, 79,228,170, 46,184,105, 42,209,246, 11,247, 23, 16,163, 86,156,164, 46,222,235,165, + 91,155, 93, 23,181, 0,238,126,153,239, 13,168, 99, 93,226,203, 11, 26, 27, 45,155,126, 42, 0,197, 59,202, 10,226,193, 81,166, +153, 85,239,233,138,114,233, 2, 48, 17, 55,129, 80,149,210,102,138,143, 22, 2, 84, 20, 95,160,120,143,232, 64,113,133,173,236, +152, 8,220,204, 55,156,198, 19, 82,131, 27,129,184,138,232, 52, 24,217, 83, 97,239, 45, 78,124,225,201, 53, 52,171, 65,102,212, + 42, 73, 3,181,216, 62,181, 45,157,246, 93,154,151,138,101, 38,123, 49, 94, 59,197, 17,163,169,186, 85, 45, 55, 61, 69, 19,168, +149,106, 2, 11,165,209,130, 44,114, 74, 27, 13,163,166,130, 55,229,176,117,221,213,101,171,116,138, 9,103, 22,221, 56, 72,195, + 53, 37,168,103,110,186, 0, 95, 26,185, 86,139, 56,172,134,122,117, 78,236,239, 47,112,155,184,140, 79,171,243,248,232, 33, 79, +116, 97, 65,247, 53,104,163,190, 9,158,168,234,152,151,201,194,178, 78, 69, 48, 29,129,151, 64,232,188,169,199,157, 35, 58, 79, +113,139,185,127, 49,238, 55,103,150,192,218,204, 23, 26, 68, 64, 43,226, 3,155,126,101,151,105,173,168,216,216,221, 45,146,211, +224,148,221,166,113,122,186, 98, 45,189, 93,160,181,240, 96, 29, 56,159, 60, 87, 83, 67, 88, 35, 82, 41,174,178, 58,121,139,119, + 30,158,178, 81,199,176,125,132,122,207, 7, 63,248, 51,254,242,227, 51,230,106, 43,147,182, 64, 49,170,128,139, 1,159, 33, 59, +139, 82,245,139,146,212,189, 73,104,131, 24,211, 2, 78,177,149,132,186,187,103,192,186, 67,212, 52, 7,118,233,195,102,181, 97, +229, 61,251,105, 32, 23,243,197,223, 14, 35,222, 59,210, 42, 66,183,193,187,136,247,158,245,209,206, 20,155,218,112,185,113, 59, + 76,248,232, 57,140, 3, 55, 55, 35,251, 97,160, 11, 23, 92,190, 60,103,156,246,124,241, 43,191,196, 23, 62,255,140,163, 77,207, +119,191,159, 41,211, 5,185, 10,130,176,242,193, 56,216,157,205, 16,198,113,134, 96,126,112, 81, 79,222, 8,235,245,138,157, 51, +218, 90, 46, 10, 58,211,199, 68,223,111,200,173, 50,206,135, 55,162,205,170, 3,243, 52,112,216,239,105, 14,254,229,191,186,229, + 91,223,252, 43, 14,251,129,224, 26,181,218,132,202, 57,115,133,104, 0, 95, 2, 77, 34, 15, 79,159,112,123,189, 71,130, 71,188, +101, 32,223, 78,213, 88,231, 49,161,101,166,185, 98,244, 55,160,228,201,178, 0,100,185,228,213,241,229,247, 30,243,254,123,207, +248,167,255,250,219,168, 38,118, 71, 15, 1,227,220,207,195,213,114, 40, 5,164, 15,134, 58,173, 21,175,102,157,140, 93, 69, 52, +115,123,115,201, 92, 26, 33,120, 27, 43, 47,192,235, 90, 10,138, 50,206, 35,115,171,180,170, 76,147,231,242,242,156, 50, 7, 42, + 74,157, 43, 42,202,118,211,241,235,191,252, 14,167,199, 27,254,228, 91,223,227,227,143,207,140,239,189,132, 53,197,208, 83,235, +158,150, 27, 26,163, 29,192, 49, 25, 93,206, 7,126,241, 75, 79,249,234,175,253, 10, 79,158,157,144,135, 27,110, 46, 71,246, 23, + 7,126,248,226, 83,252, 74,120,112,114, 69, 72,129, 50,192,163,199,199,188,245,228, 45,158, 61,223,242,237, 15, 95,242,227,191, +254,132,149,246,248, 53,212, 58,226,196, 19,220,154, 42, 25, 87, 27,206,109, 32,103, 70, 7, 41, 8, 94, 51,145, 64, 21, 71,201, + 35,194,138,164, 48, 37,135,111,130, 27,101, 81, 88, 11,190,205,166,160, 15, 17,137, 19,234, 86,228, 58,146, 86, 30, 81,207, 48, + 40,201,117, 4, 61,216,180, 68,123,152, 43, 69, 28,202, 68,136,141,105,158,168, 89,145, 46,225, 75, 65,250, 68,149,202,156,111, + 72, 81, 72,109,131,214,204, 60, 92, 83, 93, 69, 10, 12,126, 89, 75,248, 21,201, 57,134,201, 52, 72, 93, 20, 52,219,216,125, 46, +131, 17, 33,125, 64,212, 52, 37,205, 5,162, 64,163, 50,213,138, 23,207, 60,103,186,232, 44, 14,218, 43, 14, 79, 7,228,214,112, +190,154,143,190, 41,174,101,154,139,230, 54,234, 32, 73, 64,130, 16,188,191,167, 11, 82,151,204,115,131, 48,221,219,229,168, 44, +171, 80, 91, 79,222,231,151,195,166, 45,226,116,137,158,189,231,200,213,165, 96,143, 2,115,174,120,245, 76,101,134,154,161,120, +170,218,186, 85, 82,199, 52, 84,164, 22,202, 56,194, 52,211,185, 13, 61,202,109,173, 56,191, 36,151,198,133,138, 57,205,104, 85, + 18,158,121,186,164, 21,207, 58, 30, 49, 13,133, 91, 49,225,104, 95, 29, 55,165, 50,148,194,138, 74,106, 16,154,191, 19,186,121, +104,197,108,172,152,143, 78, 23,122, 81,115, 98,104, 65, 91,126,219,222,170,122, 66,116,214, 13, 44,151,211,156,109,143, 83, 40, + 56, 85,230,220,222,120,218,231, 86,150, 48, 13,187,162, 21,103,213,110,109,120, 26,165, 85, 66,232,112, 5,170,175, 84,181,238, + 50, 23, 19,118,165, 36,120, 2, 65, 43, 77, 26,190, 42,197, 53,235,208,171, 90, 88,129, 83,180, 44, 97, 20,186,168, 65, 69,153, +140,117, 97, 92,251,162,128, 89,219,156,170, 81,237, 80, 90,205, 86,116,136, 61,176,158,176,240,233,151,173,187,183,203,183,169, +141, 76, 17,207,220,204, 21, 47, 81,222, 68,180, 74, 53,111, 98,234, 60,227,236,169,148, 55,170,243,185,100, 82, 8,230,201,149, +138,239, 60,222, 89,230,249,172,153, 58, 53,116,142,148,126, 73,138,242,209, 86, 18, 78,121,188, 85,114, 29, 24,243,138,121,243, +140,119,158,253, 2,121,156,184,240, 80,105,124,114,241, 19,190,255,111,191,199,217,229,158,234, 12, 47,233, 37, 66,131,202,108, +157,182,182,197, 26, 34, 38,110, 2,196,119,136, 83, 74,153, 44,133,202,155, 75,216,105, 91,148,167,141,230,188, 29,138, 98,252, +226, 86,148,245,118,195, 59,207,223,198,229,202,229,124,133, 54,136,189, 21, 55,115,105,204, 99,230,236,112, 65, 83,136,189,167, + 15,145,224, 59,188,143, 56, 17,182,199, 61,155, 46,114,126, 5,195, 52,161, 69,185,157, 39,110,135,129,195,119, 14,196,245,134, +163, 47,190,143,171,215, 60,124,180,101,184, 84,246,243,100, 5, 35,144,117, 38,185,128,107,141,152, 60, 46, 7,188, 86,220,202, + 49,205,166, 10, 95,121,161, 59, 58, 97,106, 51, 45,119, 56,173,168,100,166, 97,128, 98, 66,159, 41, 23,106, 54,132,176,111, 14, + 9,129,233, 48,113,126,126, 69, 76, 1,137,222,242,230,235, 76,109,217, 58, 61, 93,138,221,185,178,217, 70, 8, 66,158, 71,180, + 40,121, 44,100,173,228,146,241, 57,155,254,196,217,172,170,152, 16, 5, 45,224,131,210,188,137,205,126,253, 87,191,196,215,126, +243,107,244, 39, 15,248,179,111,124,128,225, 88, 42,117,184, 94, 8,132,145, 58, 22,116,154,240, 78,237,185, 40,138,116,149, 54, +238,241, 49,112,152, 71, 14,183,215,236,142,143,217,244, 29,251,195,108,220,114,173,212, 41, 27, 31, 98,177,133, 70, 21,162,247, +116,125,224,250,102,196,121, 79,192,115,186, 61,230,242,242,130, 63,249,179,239, 48,102,216, 28,109, 97,110,236,167,137,172, 35, + 45, 23,130,128, 11, 29, 74, 37,132,100, 48, 30, 15,191,240,149,231,252,225,223,251, 61,142, 31,110,249,246,183,254, 29, 63,248, +238, 7,116, 18, 57,126,120,194,230,193, 17,199, 61,188,252,236, 53,125,183,197,249, 45, 77,123, 74, 81,222,126, 24,249,157, 95, +121, 31, 7,124,244,131, 15,137, 8,177,243,116, 46, 48,123,101,206,130, 22, 65,251, 74,205, 19, 65,163,233, 74,162,179,105, 89, +174, 52, 13,172,214,209,248, 23,135,140, 75, 29,108, 59,250, 62,210, 24,109, 87, 43,141, 66, 32,141,222, 2,131, 18,248,232,240, + 67,164,151,204, 20, 70,180,116,166,176,247,197, 46,130, 59, 92,244,146, 73, 81, 42,172,197, 10,235,208, 43,179, 6,110,134, 61, + 15,195,154,162, 25,215,103, 91,241,101,211,160,172,251, 74, 41, 1,218,140,118,137, 41,155,186,190,115,142, 97,114, 20, 17,170, +122,210, 42, 88,147, 81,102,178, 11,196, 85, 96,213, 42,135, 9, 92, 15, 58,155,120, 89,188,176, 10,194,156, 29,157, 87, 90,138, +232, 92, 17, 21,178, 86,130,118,214,241,150,106,100, 59,111,207,170, 87, 71,119, 79,116,182, 59,203,152, 83,119, 95, 77,250, 79, + 47,223, 37,152,226, 62,139,133,187, 49, 64,171,205,166,173,254,126, 35, 87, 45,220,166, 64,169, 8,145,192,130,182,118, 30, 58, +104, 67, 97,154, 11,178, 50,148,175,182,204,109,169,102,213, 77, 29,171, 36, 92, 79, 35, 84, 33,201,138,129,137, 86, 51,161,131, +113, 24,108, 85,163,102,251,117,169, 34,226,216, 15, 19,161,192,202, 7,203, 73, 8, 3,173,122,106,236,144,195, 68, 8,142, 55, +185,218,130, 51, 97,142,218,120,205,251,100,109,170,187, 27,209, 26,165, 75, 22, 21,124,101,233,110,155, 89,189, 12,202,230,104, +214,214, 47, 86, 46, 71, 39,158,236,212, 46, 6,215,222,100,171,155, 21, 77,153,171,226, 99, 52, 88,140, 7,231, 34,174, 53, 59, + 80, 81, 19,185, 52, 8, 30,114,109,212,187,209, 70, 53, 70,184,143,166, 48, 22,156,137,218,196,225,130,123, 3, 49,152,179,237, +230,163, 55, 54, 53,106,129, 45,181, 53,138, 19,162, 19,124,240,118,129, 46,251,218,130, 69,219, 33,142,148, 28, 26, 34,178,116, +217, 52, 71,191,235,172,255,175,131,177,205,155, 89,254, 16,197,171,160,179, 41,247,189, 64,110, 5, 87,108,226, 80,231,140,138, + 99, 37, 30,109,133, 66, 36, 6, 79,205,149,171, 49,210, 66,160,139,138,230, 74, 8,107,166, 82,121,212, 57, 98,116, 68,157,121, +113, 61, 81, 30, 63,231, 97,111,241,180,193, 67,155, 50,175, 63,252, 1,159, 92, 13,168,247, 72, 45,184,234, 12, 66,224,188,177, +232,155, 82,181, 46,180,168,133,123,239,188,105, 11,188,208,212,222,143, 59, 14,127, 83,197,137, 17, 2,205, 95,122, 55,144, 48, + 54,251, 23,159, 62,225, 97,128,151,251,153,212,117, 28, 29,173, 65, 28,251,219, 1,169,109, 17, 59, 46,112,136,162, 76,181, 48, +104, 54, 49,149, 84,186,174,135,118, 68, 92,128, 60,111,192, 50,185, 49,238, 7,254,244, 79,190,193,249,139,151, 28, 61, 88,177, + 94,173, 45,153,236,228, 9, 14,139,208, 28,134, 3,109, 95,241,157, 51,176, 77, 12,104,141,244,161, 26,196, 1,168,181, 17, 68, +137,178, 66,178, 67,253, 68, 31, 18,239, 63,127,198,229,205, 5, 47, 47, 14, 6, 79, 26,103,178, 43,168,183,221,108, 45, 21, 9, +145, 60,100, 66,169, 36,239, 25,242,204, 84, 42, 41,121, 24,103, 36, 6,102,157,185,188,189,181, 32, 25,169,166, 74, 21,199,124, +152, 23,175,111,181,125,179,247,244, 93,160, 14,153,130, 97,123, 5,163, 29,142,213,113,121,117, 77, 31, 60,239, 61,125,202,135, +143,174,105, 89,152,231,186, 8,146, 2, 65, 13,199, 90,102,165,239, 77,164,150, 85, 57, 74,142,235,171, 66,223,239,120,239,217, + 19,190,243,253, 31,112,115, 51,224,212, 51,213,106,164, 69, 76,169,220, 44,209,130,224, 3, 93, 23,152, 10,204,121, 38, 74,196, +139,231,104,227,241,177,241,221, 31, 93, 50,150, 70,209,204,126, 63, 16, 99, 71,232, 19,137, 8,181, 48,150,138, 83,163,174,133, + 20,217,244,194,175,254,210,151,248,189,191,251,155,228,105,228,159,253,147, 63,229,236,166,178,219, 29,241,252,201,150, 93,127, + 68,117, 19,105, 3,167, 21,122,231,233, 78,182, 75,138,156,231,226,106,230,120,237,248,149, 47, 63,199,205, 55,188,120,113,101, +171,163, 90,240,162,134,205,244, 66,145,153, 85,232,160,121,230,114,160,148, 14,124,102,170, 3,136,209, 35, 27,224, 98,162, 18, + 16,167,248, 90,193, 71, 42, 30,199, 0, 90,168, 18, 13,152,147, 61,174,122,154, 87,198, 54,225,231, 21,141,140,107, 66, 90, 89, +134, 64,174,197,214,135, 62,208,239, 2,237, 66, 13,124, 21, 26,101, 72,244,100,124, 88, 49, 86, 7,109, 52,141, 67, 21, 82, 44, + 12,192, 48,172,241, 73,208,186,103, 53,247, 12,211, 45,185,121,198,117, 66,251, 25, 52,145,154,210,166,145,155, 17, 98,223,225, + 61,184, 92,200, 64,234,237,231, 64,148,117,215,225,176, 78, 94,196, 33,234,169, 82, 73,209, 81,145, 5,246,102,154,156,232,132, + 90, 29,174, 54, 20, 27,145,167,251,234, 80, 23, 92, 55, 94, 23, 28,239, 61,117,188,165,209,234,157, 11, 73,238,119, 60, 94,237, +110,242,122,207,201,108,119, 98,185, 5,255, 93,235, 72,115, 86,196, 75, 19,114,179,103, 50,137,163, 12,141,146,103,124, 52,144, +218,198,219,154,103, 95,102,220, 38, 18,198,196, 52, 10,169,101, 14,100, 8,129,109,216, 49,165,128,155, 46, 73, 53,209,170, 80, + 36, 19, 83,194, 15,153,177, 78, 22, 42,166,129, 70,182,176,152,216,225,223,126,250,236,235, 14,140,233,238,173, 42, 53,106,154, + 51,189,190,187, 3,205, 52,164, 45, 73, 95, 75,200,138, 10, 70, 48,105,149, 24,109,183,189,112, 95, 9,222, 8,112, 34,150,190, +229,131, 51, 47,183, 91,248,235,222, 70,169, 18,173,106, 8, 78, 8,170,111,222,136,224,108,231, 89,139,177,139,157,119,139, 77, +205, 20,247, 34,166,180, 21, 49, 32, 64,203,133,156, 27,213, 9, 94, 77,232, 38,193,118,128,238, 14, 2,163,152,135,190,217,158, +169, 57,123, 48,157, 15,102,106, 91,198,237,141,165, 26, 93,196,157, 33, 5,212,219,107,239,130,224,119, 27, 78,223,122,194,211, + 7, 27,170,206, 28, 38,197, 59, 33, 70,135, 6, 69,189,137,208,146,143,212,105,224,242,250,176,224,116, 77,147, 32, 78, 8, 18, +105,205,227,220,140, 23,135,215,196, 91, 15, 2,239,237, 34, 62, 59,182, 33,208,197,200,190, 22,196, 9, 71,199, 59,142,182,130, +223, 62,167, 59,125, 78,191,234,161,206,212, 90,233, 87,149, 31,126,255, 47,184,184, 25,168, 53, 91,161,133,237,208,154,171,139, +189,208,186, 81, 19, 0,234,146,237, 30,173,114, 21, 27, 45,163,134,164, 12,209, 47, 81,151,250,198, 24, 34,138,161, 40,213,241, +224,248, 1, 95,254,210, 59,124,239, 71, 47, 25,125,226,193,233, 17,155,221,154,163, 24,185,185,189, 53, 56,132,247,168, 24,110, +216, 57, 79,173,246,126, 54,173,212,101, 31,122, 24, 14, 54,173, 89,176,194,193, 7, 66, 12,246,126,151,202,171,243,215, 92,239, + 7,130, 58,118,187, 13, 69, 43,228,137,205,238,152,227,213, 17, 93,191,197,165,134,107, 1,245, 5, 95, 45,215,188, 97, 5, 92, + 72, 29, 93,103, 69,203,201, 58,242,251,127,247,215,249,175,255,219,223,229,191,255, 31,254,144, 71,167,199,124,243,155, 31, 89, + 38,181,154, 23,223, 86, 43, 6,172, 16,105,204,211,204, 60,102,180, 86,134,113,194,185,196,106,181,165,232,184,116,223,142, 7, +155, 13,227,205, 64, 46,149, 70,161, 58, 40,106, 62,110,154, 77,146,124,176,137, 75, 93,204,175, 41, 69,180, 42,181,152,231,181, +235, 60,173, 20,190,245,173, 79,152,114,166,214,129,156, 39, 66,151,222,172,123,116,110, 54, 98, 21,161,228,198,102,179, 97, 46, +153,139,171, 43,182,169,231, 23,127,238,109,158,189,125,196, 95,127,252,138, 97, 28,137,222,180, 17,181, 84,106, 51, 48,137,115, +142, 24, 61, 62, 4,230, 81, 23,237,140,225,120,215, 93,228,197,103, 47,152, 38, 11,244, 9, 41, 34, 42,148,214,168,115,161,149, +138,139,130,248,142,224,133,110,215,241,248,104,197,223,249,237,175,242,187,191,251, 31,243,250,252, 21,255,219, 63,254,167, 92, +190,158,248,220,243, 83,250,157,163,148,194,166,179,136,201,152, 58,118,199,107, 20,229,228,228, 33,235,237,154, 58,143,156,110, +183,196, 24, 57,233, 3, 49,246,236, 95, 95,227,170, 50,119,130,243,142, 36,107, 83, 18,171,173,196,166,106,216,205, 80,204,221, +224, 83,194, 21,229,118, 24, 41,197,178,203, 81,208,156,241, 93, 96,229, 59,218,236, 64,103, 35, 23,118,110,225, 81,116, 84,201, +212, 84,240, 13, 86,222,104,134,123,157,168, 8,157, 86,124,234, 9,234,208, 16,112, 19, 4,157, 25,199,137, 38,138,235, 2,146, + 59,130,183,137, 37, 21,180, 20, 92, 51, 12,168, 0, 38,171,220,227,123,165,141, 80, 52,160, 83,165,249, 64,174,138,180, 10,131, +149, 28,210, 21,106,179,207, 93,232,197, 4, 79,206,224, 83,222,123,155, 36,197, 37,155, 67,195,162,136,214,101,178,166, 8, 30, + 73, 75, 99,161,166, 21,114, 13, 82, 72,116,235,192,163, 71,167,248,248,179,167,147, 77,185,145,199, 9, 90, 97,183, 91,155, 94, +229, 30,190,166,172,228,105, 70,156,178,217,116, 63,115,232,204,223, 84,235,143, 99, 33, 79, 19, 65,148,205,110,125,111,223,251, + 14,109,123,125,117,224,246,250,146, 86, 14,214, 16, 85,168,205,206,219,234,109,173, 48,222, 86, 90, 15,121,112,136,142,180, 38, + 72,157,136, 85, 81,215,152,154, 67,167,106, 13, 66,169,120, 21,124,218,130, 42,121, 63, 46, 80,184, 76,168,137, 74,225, 48,238, +105, 65,105,243, 76, 25, 10, 42,208,199,158,105,170,248,167, 79,222,254,186,115,118,145, 25, 55,221,198, 21,162,206, 84,235,206, +240,173,106, 64,157,133,195,108,177,144, 44, 98, 42,179,196,201,130,115, 52, 72,203,157,177, 63, 58, 27,133,150,170,198, 74,110, +150, 32,164, 45,224,157,101,153,235,221, 72,222, 41, 26, 2,209,233,226, 13,118, 22,163,232,108,119, 90,212,153, 29, 75, 76,117, + 78,179,177, 71, 89, 86, 0,212,187,116,162, 5,148,211, 20,103,115,103, 84, 34, 62, 46,123,239,106,213,110,215, 45, 44,123,113, +148, 50,191, 33, 11, 58, 17, 36, 5,146,115,166,154,119, 98,126,251, 78, 76,116,214, 28,169, 19, 98,203,236,231,137,156, 27,157, + 88,254, 55, 85,241,193,155,154, 23, 79,183, 74, 92, 94,223, 48, 78,101,201,122,247,164, 16,105, 45, 27,250,214, 9,121,110,244, +171,200,111,188,127,204,201, 6, 38,231,145, 46,162, 94, 88,237, 86, 28,157, 28, 17, 31, 29,179, 73,167, 20,125,202,217,193,246, +178,170,145,227, 39,143, 25, 95,252, 53,127,245,189,191,100,127,152, 41,117, 38,197, 72, 12, 22,241,149, 91,166,148,138, 22, 19, +108,153, 27,209,153,138,221, 47, 65, 23, 75, 28,107, 10,194, 58,245,244,169, 3, 15, 37,155, 24,168,181,138,120, 89, 4, 56,194, +207,189,255, 57,118,219, 19,110, 90,199,233,131,167,108,163,176,221,236,152,166, 27,174,110, 15,148,188, 56, 38, 22, 46,182, 91, +118,248, 54, 94,179,223,211,162,226, 48,173, 3,141,214, 10, 57, 23,106,105,196,224,217,172, 58,170,107, 76,135,204,249,229, 13, +183,183,123,188,175, 36, 31,140, 9,158, 64, 66,192,197, 21,171,221,177,141,149, 17, 52, 21, 26,149,232, 61, 43, 31,136,206,209, +111, 35,127,240, 7,191,197,127,243,223,253,231,244, 50,243,234,229, 25,175, 94, 94,243,227,159,188,226,242,102, 64,213,138,157, +128, 95,240,185,166,156,111, 8, 83,182, 75, 49,136,163, 91,155, 0,173,243, 70,233,243, 93, 98,219,111,185, 60,220,144,250,192, + 48,218,122, 71, 91,177, 17,172,243,244,235, 64,110, 70, 70,147,104, 2,201, 78, 60,199,235, 21,191,249,159,252, 42,222, 71, 46, + 94,237, 41, 28, 51, 76, 38, 84,237,154, 37,254, 65,196, 87,165,102,168,226,144,100,122, 20,113,208,175, 28,175,206, 47, 65,173, +219,175, 36,190,246,181, 95, 96,187, 89,243,189, 31,125,132,195, 19,197,226,124,181,149, 55,128,141,174,235, 72,253,134,218,148, + 85,138, 52,231,121,251,209, 26,213,202,203,179, 27,106,177, 66,177,182,106,207,231,178, 51,103, 41, 12,162,115,116, 93, 7,234, +248,234, 87, 62,207, 31,252,193,239,242,217,249, 25,255,242,159,125,147,119, 31,158,240,238,243,135,108,142, 59,118,167,107,252, +228, 88,157, 30,179,217, 5, 98, 60, 37,244, 39,180,114,192,149,202, 47,125,229,125,158,127,254, 57,199,111,173,121,240,100,203, +230, 36,113,188, 78, 12,115,229,118, 26,172,168,200,145,162,149,185, 90,176, 77, 51, 74,146,233,103,186, 70, 47,102, 3,189, 29, +243,178, 30,108,184,184, 50,212,106,159, 72, 41, 82,115,161, 6, 11,162,145, 26,193,173,105, 78, 23, 52,244, 68,153, 43,125,234, +169,193, 33, 98, 78,134,230,140,239, 80,230,140, 23,103,200,236, 58, 83, 99,177, 24, 84, 39,196, 46, 16,134, 17,197,236, 0, 0, + 32, 0, 73, 68, 65, 84,177,244, 65,231,215, 56,215,144, 60, 91,122,165,138,137,215,230,145, 20,183,148, 16, 24,111, 43, 21,193, + 73, 33,248,100, 4,211, 2,211, 92,109,117,224, 61,125, 72,168,111,248,166, 56,177, 9, 91, 16,155,161,214,102,107,151,138, 5, + 47, 5,111, 22, 89, 39, 16,212, 47,157,179,117,165,150, 68,105, 35, 96,137,129,190,235,121,235,173,135, 63,243,232, 89,129, 49, + 43,243, 56, 33, 52,182,247,120, 65, 78,165, 81,166,137,232,149,213,186,127,163,245,249,153, 59,117,103,220,247,121,158,232,189, +178, 57,218,112,159,123,131, 67,133,203,203, 91,134,155,107,164,218, 14,188, 57, 99,102,200, 34, 12,247, 10,222, 87, 19, 33, 35, +120,231, 41, 35,204,237, 0, 14,118,101, 77,246, 10,186, 55, 61, 86,231, 33, 5,234, 80,200,254, 96,103, 94,114,212,178,103,104, + 13, 52,208,173, 18,213, 91,154,163,119, 14, 77, 11,136,103, 4,255,228,237,183,191, 46,226, 12, 37,234, 22, 53,244, 29, 59,215, +217, 37,239,229,110,236,242,134,154,103, 2, 48, 4, 9, 66,242,222,210,177, 22, 31,184, 46,129, 29,222,185, 69,176,115, 71,108, +147, 69,156,101, 85,100,211, 98, 89,201,206, 33, 65,105, 8, 77,151, 64,132,165, 11,215, 86,172, 96,168,102,123, 83, 81,100,185, +160, 74,177, 61,161,199, 81,221,242,132,211, 8,226, 44,113,205,140,225,127,131,205,108, 99,109,241,126,201, 72, 7, 87, 29, 46, + 6,148,130, 44,194, 50, 42, 4,117, 80,141, 38, 39,152,162,212,167, 96,120,219, 90,152,198,145,121, 46,224,204,226,165,193,147, +235,132,168,189,230, 50, 55, 98,140,116,171,132,104,225,230,234,118,137,145, 21,219,219,123,155, 80,244, 93, 68, 66,228,189,199, + 27,222, 57,134, 57,219,165, 65,244,172,195,134, 7, 15,142, 89,159, 60, 71, 4, 66,191,101,168,141,243,146,144, 41,211, 29, 63, +229,217, 91,137,111,253,233,191,224, 39,159,125,102,194, 63, 93,228, 38,226,105,165, 90,184, 73,157, 40,205, 46,216, 5, 31, 99, + 49,145,226,173,235, 17,219, 37,187, 86,153,243,200, 60, 79,148, 82,150,137,130,137,125, 88, 44,131,221,106,203,207, 61,123,135, +243,155, 27,170, 36,222,125,250,136,113,190,225,209,110,197,213,120,195,245,254,134, 41,103,179,218, 40,139,229,198,225, 1,117, +230,253,183,159, 79,240,193, 45, 75, 31,187,112,204, 30, 86, 44, 88, 5,165,239, 59,214,157,217,178, 14,195,129,179,243,115,206, +247, 55,236,247, 7,186,149,152,224,100, 58, 32,165,176, 94, 31,177,121,248,136,144, 60, 34,129,150, 77,215,241,224,209, 49,255, +213, 31,253, 14,191,247, 71,191,207,167, 63,248, 49,255,227,255,244,199,252,195,127,244, 13,126,251,183,191,202,205,197,107,126, +244,241,185,141,180, 75, 53,203, 24,194, 60,141, 76,185,145, 86,137, 86, 45, 88,165,235,215,244,235, 21,218,108, 36, 43, 78, 88, +245, 61,243, 60, 51,206, 3, 41, 5,202,178,155,159,231,193, 66, 63,186, 13, 41, 36,112,178,160, 37, 51,165, 20,104,194,233,233, +150,191,255,247,255, 30,143, 30,108,249,209,167, 23, 60, 60, 89,196,113,205, 4,137,120,103,123,218, 8,101,178, 20, 61, 23,160, +213, 70,223, 5,188, 40,175, 46, 47, 73,105, 67,140,107,106, 17,142,118, 61, 95,124,255,148,156, 27, 31,127,248,234, 13,226,184, + 53,179,157,249, 24,233,250,141,233, 40,194,114, 89,212,204,254,246,154,139,171, 61, 94, 34, 49, 26,162,180,214, 66,205, 25,106, + 70,156, 32,201, 17, 98,111,227,120,239,249,242,151,223,229, 15,255,232,247,121,241,233,103,252,131,255,229, 31,227,188,240,185, +119,142,120,246,206, 49,187, 7, 15,216,236, 86,164, 20,104,251,129,227,211, 83,182, 71,143,233,189,231,104,179,102,159,111,168, +185,240,228,217, 49,113,183, 2,191, 1,191, 35,109, 55,236, 86,158,235,155, 3,215,151,151, 4,223, 81,243, 76,105, 35,226, 28, +193, 5,170,102,188, 52, 50, 66,157, 29,163, 10,173,141, 52, 89, 52, 59, 62, 81, 66,193, 17,233,186, 21,109,121,182,125, 93,120, +228,154,241,193, 34,156, 87, 81,112,165, 71, 37, 18,155,163,197, 14,137,213,172, 68,205,209, 98,192, 55,199,100,163, 67,180,139, +136, 56,146, 68,188, 38,102,157,161, 41,157, 40,189,243,148,154,153, 41,168,118, 38,252, 76, 61,165, 86,234,184, 64,149,164,146, +220,140,119, 48, 11,184,185, 24,126, 56, 4, 74,137,196, 16,108,106,144,130, 37, 94, 6, 53,184, 12, 66,139, 54, 57,147, 59, 1, +183, 54,106,116,198,206,103, 17, 6, 55,227, 98,120,117, 4,233,204,249, 18, 3,219,213,138,135,111,157,218,101,255,179,218,195, + 6, 3, 5,121,133,237,118, 5,247,240, 61, 21,139,252,205,227, 72, 16, 88,109,214,247,230,127,175, 10,211, 88,168,121,100, 21, +133,126,187,185,151,240,153, 55,197, 72,131,171,243, 61, 55, 87,231,180, 50,162, 78,201,217, 46,246, 38, 22,255,157, 5,102,167, +140,115,163, 28,102, 60, 66, 90, 48,198,172,214,204,216,154,175,180,142,153, 6,174,144,179,157,217,222,123,250, 44,204, 57, 80, +166,145, 16, 3, 34, 27,106,222, 19,139,210,107, 48,161,245,110, 69,190, 29, 25,199,137, 0,214,121,222,113,111,165, 90, 78,184, +211,191,233, 95,182,203,248, 77,210, 88,178,170, 88, 22,114, 73,118, 16,131,141, 20,141,187,187, 48,211,219,226,245, 22, 49, 53, +103,179, 35, 92,113, 84,183,164, 1,185,128,138,129, 50,156,154,176,167, 52,111, 29,157, 55, 33,151,191,187,135,150,116,168,234, +194, 66, 52, 82, 84,195, 50,246, 50, 46,188,121,232, 27,115, 81,251,111, 2, 82,161,181,121,201,107, 55,208, 78, 19,179,193, 37, + 67,228, 17,156,208,170,253,185,248,134,250,134,122,111,162,162, 96,123, 76, 87, 2, 46,152, 72,196,123, 97,210,134, 31, 27,169, + 11,132, 36,148,185, 65,180, 9,135, 23,181,234,189,117,108,187,158,224,133, 57, 43, 49, 45, 28,246,166, 68, 47, 76,109,102,187, + 90,243,244, 4,214, 64, 22,207,140,178, 22, 97,181,237,241,235, 35, 92,169,184,238,132,217,221,114,178, 25,120,187,116, 92,209, + 83,202, 45,255,230,255,250,231,124,255,163,239,219,225, 81, 43,121,202, 86,197, 71,101,110, 51, 77,231, 69, 20,103,133,154,163, + 25,123,223,153, 8, 16, 87,193, 67,151, 86,104, 9, 12,245,198, 70,245,203,184,214, 33,120,145, 37,175,222,243,115,207,158,209, +202,200,139, 79, 94,178,125,120,202,197, 75,200,178,162,184, 98, 49,186, 46,210, 71,103, 15,247,156,223,132, 43, 84,119, 87,108, +216,243,117, 23,141,106, 63,195,221,168,223,186,249,138,227, 48, 76,140,185,178, 93,119, 36, 31,217,198, 21,213,193, 56,143,188, +186,253,140, 87,103,103,188,117,116,204,147,199,143, 89, 29, 41, 83, 25,136,251, 13,167,199,111,241,240,241, 99,240,194,218, 59, +126,249,111,125,129,223,250,157, 47,242,157,111,124,131, 87,159,237,233,250, 21, 47, 95,238,249,246,119,126,200, 56, 79, 22,100, +164,249, 14, 87,128, 11, 16, 83, 98, 62, 12,228, 97,198,187,136, 75,129,212, 37,187,248, 77, 78, 73,242, 22,101,122, 51,220,208, +175, 34, 90,140,234, 5,149,229, 37,161,100,230,217, 81,115,166, 77,217,132,136, 64, 73,240,250,234,146,171,179,115, 62,247,228, +152,207, 61,123, 66,209, 66,211, 25,116, 32,173, 87,180, 34, 22,224, 34,141, 16, 29,109,130, 50, 87,203,216,142,158,139,171, 91, +196, 9,169,235, 88,245,134,162,253,139,239,191, 4, 30,243,135,255,233,215, 56,220,140,252,249, 95,254, 8,241,205,176,200, 41, +145,124, 32,248, 96,218, 17, 49,107,220, 84, 51, 87,215,123,180,100, 66, 52, 94,184,143,137, 24, 87,104,203, 72, 83,242, 82,120, +175,125, 32,118,129, 95,250,185,103,252, 23,255,229,223,225,230,252, 21,255,224, 31,254, 31, 28,174, 11,218,110,248,203, 31,192, +238,173, 35,158, 61,138,228, 82, 88,109, 86, 28,202,100, 89,240, 81, 72,209,115,250,224, 17,239,190,247,152,143,127,114,206,247, +190,253, 99,222,121,254,152,237, 51, 64, 54,192, 99, 30, 60,239,248,210,213, 37,175,207,206, 25,166, 61, 93,128, 82, 19, 99,110, + 72, 40,244, 85,105,206,227,179, 69,158,170,179,247,183,239, 60,206, 57,242, 92, 8,210,112,113,196,103,155, 68,184, 90,200, 57, +131, 4,212,123, 52,244,196, 58,162,217, 17, 59,183,220, 31, 29,212, 66, 85, 97,211, 9,101,134, 68, 68, 98, 37,135,138,230, 70, +204, 27,100, 26,144,232, 24,219, 76,112,182,174,106,101,102, 80,101,172, 74,138, 14,188,167,206,158, 67,187,197,151, 68, 83, 71, +232,193,105, 96, 44,134,167, 14,201,112,204, 97,235,153, 14,144,146,226,125,193,121, 15, 1,106,153,241, 98,231,142,208, 72,234, + 40,173, 46, 32, 41, 27,199, 83, 27, 89,102,115,155,168, 89,127,171, 87, 74,171,136, 22, 92, 21, 92,179,243,233, 62,246,223,134, + 93, 53, 15,182,147,251, 3,207, 52,133, 90, 42, 14,115, 33,221,171,144,173,217,205,238, 22, 91,219,125, 94,232,127,211,138, 39, +206, 51,223,177,243,157, 67,139, 34, 46, 83,107, 69,130,163,206, 13, 29,171, 89,190,197, 49,207, 19,113,157, 8,101, 98, 28, 43, +205, 9,161, 13,204, 90, 32,158,224,218, 43,124,187, 37,142,137,131, 6,179, 63, 75,162,186, 66,149,137, 60, 59,188, 11, 12, 58, + 51, 55,240,251, 66,210,128,243, 30,255,228,241,211,175,227,218,155,139,220,178,130, 45, 56,193, 7,177,135, 71,151, 78,119, 73, + 92,243,238,238, 13,210,101, 63,235,237,255,105, 75,119,189,176,118,156, 68, 83,204, 75,197, 53,101,158,139, 9,241,150,144, 17, +239, 27, 18,132, 90, 76,156, 39, 98, 9, 91,193,123,156,180, 37,209, 73, 44,170, 85, 64,154,199, 33,180,102,172,110,213, 37,171, +217,217, 11, 12, 46,188,201, 80, 54,123,155,141,237, 20, 53, 79,186, 51, 32,236, 93,112,129,225,231, 42,206, 47,211,131,187,232, + 68,239,192,155,101,195, 59, 79, 31,163, 9,242, 48,109, 64, 12, 30, 9,193, 70,220,203,251,229,235,194,110,119,130,151,133, 69, + 28,132,152, 58,246,215,231,156, 93,222, 82,229,167,130, 62, 21,135,143,158,164,142, 40,129,211, 35,207,241,166,103,181,237,137, +219,192,110,117, 2,125, 52, 21,252, 52, 83, 83, 34, 10, 76, 99,228,234, 80,185,154,102, 84, 15,252,228,123,223,225,213,229, 37, + 85,161,229,201, 86, 35,226,193, 21,202, 52,147, 91, 89, 70,194,182,222,104, 75, 81, 21, 66,162,235, 58,250, 85,111,191,179, 82, +126, 74, 18, 20,115, 67,136, 98,228, 43,103,201,122, 93,151,120,250,224,132,155,219, 91,246,195,192,233,201, 17,135,253, 5,255, +209,175,252,109,122, 70, 62,249,248, 5, 53, 56,214,155, 45,235,216, 19,163,167,239,146, 21, 25, 18, 13, 98,227, 45,240,199, 45, +147, 24, 39,186,132, 52, 24,198,183,185, 37, 56, 65,149, 90, 33,231,106, 54,187,101,223, 31,187,158, 85,191,194, 57,199,112, 24, +121,117,117,193,249,235, 11, 3,163,212,198, 88,110,113,165,242,254, 59, 79,121,254,222,231,217,109, 60, 31,252,224, 3,168,158, +183, 78, 55,252,241,191,248,127,120,125, 61,115,254,234,134,207, 94, 94,240,250,242,156,146, 7, 74,245, 76,179,237,250,171,192, + 48,204,228, 60,211,245, 29,125, 50,110,128,163,226, 93, 66, 2,244, 49, 81,180, 49,150, 25, 39,222, 18,168,178,121,217,167, 33, + 27,201,203,253, 52, 95,189, 81,151, 11, 51,216,186, 39, 23,218, 60,179,223,195,112,104,148, 73,113,204,228,209,244, 30,185,153, + 43, 36, 23, 53,139,105, 91, 18,199, 36, 32,210,184,188,185,166, 91,173,232,250,245, 27,144, 81,211,194,235,203, 91,222,125,247, + 57,127,235, 87,191,194,135, 31,252,152,243,171,129,126,179, 66,146, 39,173, 55, 52,239,108,130,166,134,177, 44,227,132, 23,177, + 61,122,112, 84, 85, 91,187,212,130, 71,109,130,227, 35, 41, 38,186, 16,248,220,163, 39,252,103,191,251,107,228,195, 53,255,232, +143,255,132, 82,133,213,186, 67,155,227, 48, 90,166,228,131,109,100,187, 74,244,113,203,233,131, 39,172,214, 91, 30, 30, 37,142, +118,158,110, 27, 73,111,109,121,240, 96,203,120, 51, 80,138,178,123,107, 11,238, 4, 43,107, 55,156, 62,216,224, 91,230,211,159, +188,100, 56,100,211,134,168, 82,100, 2, 13,208, 60,146,140, 92, 87,155, 99,118,208,137,135,234,141,119, 46,130,147, 68,220,173, +112, 56,203,110, 8,194, 38,122, 10,141,168,160,185, 48,107,162,138,195, 69,197, 75,182,224, 38,133, 76, 67,106, 64, 83,101, 44, + 48,183, 17, 90,101, 67,143, 68,207, 52, 89,183,221,168,104, 48, 31,249,144,111, 41, 14, 92,181,243,209, 88, 1, 6,128, 73,219, +158,234,108,101,193,122,199, 58, 8, 50, 6,166,160,120, 28,193, 21, 8, 29,115,181,148,199,185,182, 37, 0,107, 81,131,163,148, +165,201, 10, 49, 45,250, 23, 67, 97,215, 10, 49,121, 35, 70, 98,231,165, 56,179, 33, 58,239, 77,175,112,180,101,119,124,116, 47, +151,239, 52,102,242, 52,209, 39,191,116,189,247,163, 32,159,198, 66,158, 39,250, 20,232, 86,247,151,117, 62, 55, 24,135,153, 60, + 79,172,251, 64,183, 94,221,235,197,126, 59, 53, 46,174,174,201,195, 45,117, 30,108,189, 89,178, 37,157,138,160,189, 39,143,138, + 43, 13,167, 5, 41,149, 24,149, 67, 24,104,154,224,214,236,209, 78, 6, 74, 43, 56,122,100,116,116,213, 2, 21, 11,133,154, 12, +130,228,212, 51,211, 40,109, 32,248,204, 62,103,106, 51,248, 80,155, 77, 84,155,180,226,159, 60,123,251,235,134, 8,117,119, 43, +242, 55,201,108,119, 34, 68, 39,150,100,131,115,111,246,164,150,174,186,192, 83, 22,197,188,113, 98, 28,190,185,197, 30,102,209, +131,212,198, 92, 33, 18, 65, 28,173, 22,106,109,248,100, 65, 25, 82,155, 89,124, 22,117,162,136, 21, 9,119,234,245,187,130,176, +220,217,172, 44,130,197, 18,118,196, 89,196,224,226,167,175, 78,151, 41,131,188,161,227,137,119, 56, 53,223,117, 8,102,224,174, +205,210,210,112, 38,186,107,193, 50,209, 81,183,112,210,205,110,228,157,117,182,125,178,195, 52,165,136, 4,111, 79,139, 90,240, +141, 83,152,231, 12, 94, 80,188,141,126, 67, 36, 36,251,128,125,246,217, 43, 94, 95, 15,118,208,139,241,195, 67,232,136,222,210, +121,164,235, 72, 93,228,228, 40,146,196,219, 1, 21, 28,210,103,230,155, 1,223,111,240, 82, 65,183, 92,149, 83, 84, 39,186,208, +241,201, 39,223,231,227,143, 63, 96, 44, 51,211, 48, 83, 90,181,223, 31,141,156, 51,185,232, 27,129,218, 29, 96, 6,231,232, 82, +207,170, 95,211,165, 14,241,129, 82, 50,121,154, 25,198, 97, 73, 24,179,125,156,247, 9,241,203, 46,220,193,233,209,142, 92, 27, +183,227, 76,174,153,211, 99, 91, 7,252,198,175,255, 50, 31,255,240,207,249,248,236,154,253,237,173,117,164, 10,187,205,138,126, +189,102,211,245,236,118,107,214, 41,144, 98, 34, 70,135,168,229, 10,220,101, 52, 91, 32,110, 89, 48, 69, 54,126, 14, 18, 23,102, +127,179,220,106,231,105,173, 0,158, 39,143,159,241,214, 91, 39,168, 22,202,156,185,185,222,115,125,187,231, 48,206, 92,239,175, +185, 62,156,145,122,104,172,232,251, 21,243,112,197,167,175, 94,243,239,190,253, 49,115, 45, 56, 23,120,245,234,140,139,155, 27, + 82,223, 17,130,231, 48,236, 41,165,226,170,163, 52, 19, 90,174,183, 27, 83,170,123,150,241,101, 33,136,163,102,101,204, 19,105, +221, 33, 90, 41,227,204, 48,205, 76,205,240,189, 34,134,166, 28,243,108, 83, 45, 9,203,239, 59, 46,126,220,128,147, 35,170,118, +116,209,227, 20,166, 60,227,154, 55, 82, 91,110,204,173,224,131, 97,143,107, 43,224,148,245, 42,114,126,181,167,213,198,106,189, + 66, 36, 17,196,209,111, 59,122, 9,168,115, 92,158, 79,212, 58, 47,152,216, 53,125,183,131,150, 17,159,208, 5,144,228,112,228, + 97,207,225,246, 22, 66,192,199, 64,144, 72,148,244,102, 61, 85,106, 65, 85, 9, 41, 17,125,164,235, 87,252,206,111,125,153,163, +147,192,255,252,191,254, 43, 42,194, 23,223,125,204,238,100, 67,236, 4, 45,240,234,236,192,217,217, 21,187, 85,224,189,119,223, +227,237,211, 19, 78, 79, 34, 71, 15,214,248, 62,192, 42,130,108,112, 97,203,209,131, 21,229,122, 36,122, 69, 86, 15,150, 75,221, +186,246, 85,188,225,131,239,126,151,177, 4,100,211, 81, 5,200, 21, 71, 98,172,197,136,114, 85,152,218, 68,140, 59,180, 64, 72, +153,137, 70,161,145,186,196,106,189, 6,175,104,155, 45,176, 72, 21, 95, 35, 26, 35,153, 70,119,135, 82, 78,105,161,208, 45, 5, +112,245,224, 11,213, 77,228, 92, 81, 28, 41, 4,154, 22,114,168, 8, 9, 73,149,230, 21, 37, 49,140, 87,136,139,108, 98, 15, 84, +188,174,152,124, 97, 19, 86,180,193,130,134, 92,231,112,117,198, 51,211,130, 39,180,198,166, 87,106, 78,220,206, 19,218, 34,169, +115,132, 86,152,115, 70, 98,180, 21,103,181,174, 60, 68, 19, 44,171, 83,251, 60, 54,219,133,138, 88, 35,162, 94,240, 69, 17, 9, + 56, 60,169, 19,156, 15,164, 16,120,112,122,196,122,187,253,217, 71,217,216, 5, 89,203,204,170,139,247,118,249, 54, 96, 88,104, +114,155, 85,186, 55, 70, 61,139, 67,106,127,152,104,101,226,104,211, 19,250,254, 94, 59,245,235, 65,185, 56,187,228,112,251,154, +208,218,178, 26,130, 88, 29, 53, 55,246,185,225,171, 16, 66,160, 97, 44, 11,205,142, 60, 21,124, 16,114, 81,156,159,152, 91,161, +185, 35, 90, 84,202,180, 71, 99,160,170, 82, 37,227,125, 51, 20,108,131, 88, 39, 92,118,136,139, 16, 42,234, 10,100,207,218,247, + 12,154,173,224,124,252,248,233,215,113, 22,196,226, 84,222, 8,229,180,217,206, 89,192,136, 87,119,227,119, 21,187,244, 85,236, + 31, 47,182,255,185, 83,156, 59,111,130, 22,111,204,115, 93,178,204, 21,192, 27, 14, 79,245,142,170,230, 45, 36, 5,161,181, 59, +106,155, 9,149,172,122, 88, 18,220,196, 89, 42,140,184, 37, 56,126,129, 31, 44, 48, 4, 39,178, 36,203,181, 37, 95,119,241,210, +171, 37,124,149, 82, 12,166,180,140,178,238,210,200,250, 69,237,236,177,162,165, 96, 57,201, 62, 44,240,149, 37, 80, 38,198, 64, +112, 98,252,118, 23,172,104, 8, 22,168,209, 74,129, 14, 68, 76, 29, 95,213,194, 82,124, 52,246,117, 29, 38, 62,249,228, 51,246, +135,108,187,174, 16, 40,181,226,125, 35,250,192,122,181, 38,246, 59,202, 56,242,232, 4,203, 16,206,141,154, 71,156, 68,188, 58, +210,163,167,132, 8,181, 20,214,238,192,233, 10, 34,141,111,254,223,127,193,171,235, 27,198, 60, 89,116,108, 93,112,145, 14,166, +146,223, 32, 59,181, 89,167, 14,142,216, 37, 54,171, 35,124,240,196,232,105,181, 82,242,188,232, 29,108, 18, 83, 85,223,204,150, +116, 81,134,167,216,179, 74,107, 52, 91, 71, 83,171, 32, 93, 64,112, 28, 31,173,249,240,199, 31,115, 53,204,180,217, 86, 40, 14, +193, 47, 60,126, 35, 15, 54, 16, 79,223,173,216,173,214,196,216,177, 89,117,172,214,235,101,239,238, 77,205,171,205,118,163,216, +138,195,105, 35,166,142,205,118,103, 26, 15, 47, 54, 54,247,158,205,241, 41,199,187, 19, 82, 72, 68,111, 83,136,162,141,105, 26, +232, 87, 61,133,132,200,150,241,242,130, 31,125,252, 33,173, 4, 62,252,248,130, 16, 2,222, 5,242,108, 42,246,180,218, 82,242, + 76, 30, 7, 67,171,138, 95, 10,184, 68, 18,111, 99,110,223, 44,210,215,155,250, 70,106,179,162,182, 53,166,217,188,168,135,105, + 36,134, 68,232,122,106, 49,197,173, 42, 4,241, 36,151,104,136,105, 56,200, 28,159,158,240,252,217,123,164,152, 32,143, 76,211, +126,169,186, 51, 51,149, 20, 2,171,190,135,230,105,147,253, 78, 66,244, 8,133,235,195, 45,222, 11, 49,244, 72,112, 68, 85,186, +232,201,165,177,191, 30,120,117,126,224,187, 63,122,193,231,222,121,192, 87,190,248, 46, 47, 62, 19,166, 58,216,110,217, 43,129, +132, 35, 47,129, 70,138,182, 76, 45,153, 90,139,209,194, 4,124,234, 16,151, 72,253,138, 85,215,225,212,241,206,179,231,124,254, + 11,143,248,215,127,246,151,188,188,184,229,249,179, 7,156,172, 58,158, 60,220,240,222,211,199, 28,239, 54,108,143, 19,143,222, +218,240,240,225,219,188,247,238, 59,172,123, 33,198,176,184, 87,162,197,103,138, 7, 22,204,234, 73, 64, 74,197,113,128,112, 4, +216,244, 43,109, 34,109, 58,231,230,246, 64,171,141,220, 38, 82,243, 22,165,155, 44,254,121,210, 74, 29, 70, 96,196, 99,175,165, +173,122,124, 81,250, 46, 90, 34,155, 54, 52, 67, 45,138, 71, 9, 18, 72,105, 17,219, 22, 71,171,153, 90, 4,205, 51, 33, 54,214, +126,205, 92,148, 42, 21,209,222,206,131,228,240,186,198,139, 66, 77,248, 44, 20, 22,215,198, 97,198,211, 17,220,242,217,239, 86, + 11,115,163,217,152,126,204,244,114,151,147, 17,233,154,241,254,187, 4,173, 69,166, 42,116,171, 72,234,205,137, 19,213, 92, 43, +206,121,180, 90,104,145, 19, 7,106,225, 70, 74, 51,167,210,146,201, 32, 98,239,151, 15, 1,109, 75, 90,101,176,179, 49,224, 17, + 31,121,112,114, 98,123,234,159,241, 43, 23,101, 26, 38,106,201,244,125, 32,221,211, 5,153, 27, 12,135,209,178,206,215, 29, 62, +165,123,187,116,115, 49,252,172, 43, 19,187,109,143, 79,221,189, 94,234, 55, 83, 99,127,117,197, 52, 94, 67, 53, 23,194, 84, 51, +197,196, 13, 76, 21,179, 82,250,194,213,126, 38,116, 14,215,102,102,241, 56,233, 88, 53,207,220, 34,115, 39,204,121, 34,164, 66, + 84,225,102,184, 33,202,100,159,135, 42,180,177, 80,219, 68, 12, 70,121,173, 83, 69, 92,160, 74,195,233,140,150,105,137,241,246, +119, 49,180,230,239, 94,132,158, 54, 30,117,119,251, 13, 71,211,188, 28,206,178, 16,208,140,220,230,177,172, 99,239,101,177,171, + 5, 19, 85,181,138, 54, 33, 56, 71, 86,247, 38,163,215,114, 14,204, 82, 38,222, 46,242, 86, 13, 22, 19,124, 88, 46, 33,104,226, + 8,106, 42, 98,239,127, 26,249,169,173, 33,173,162,213,177, 8,237,233,196, 27,230,114,121,208,125, 93,148,198,152,151, 23,109, +230, 77,199, 10,137,102,237,191,141, 70,199, 98, 99,245, 96,146,108,183,132,215,180,170, 4, 60,222,233, 50,178,110,118,245, 59, +165,104,166, 39,224,131, 51,247, 30,209, 98,102, 69,108,191,223, 38, 90,136, 80,132, 38,133, 60, 90,247,232,112, 52,181,200,211, +224, 34,173, 26,143,123, 40,153, 13, 7,166,210,120,113,230,136,167, 29, 47, 95, 95,241,224,241, 49,207,146,162, 33,209,169, 67, +230,107,152, 7,124,234, 73, 15,190,200,103,103,127,205,203,243, 87,228,105,194,225, 13, 54,227,140,216, 54, 47,136, 88, 81, 40, +170,180,214,104, 56,219,191,174, 55,164,174,167,228,137,113, 26,153,115,166,149,121,153,200, 88, 92, 96, 16,140,122,215,204,175, + 30,227,138,211,163,135, 28,111,119,204,109,224,236,226,140, 24, 58,188, 56,118,219, 29,175, 62, 62,227,250,242,192,245,197,245, +162, 94, 15, 72,202,140,193,225,218, 93,168,142, 21, 91, 18,148,236,173, 11, 78, 62, 33, 93,100,179,219, 48,141, 35,211, 60,211, + 74,102,206,149,195, 56,211, 90, 49, 26, 93,127,204,131,211, 99,134,225,134, 33, 55,130, 52, 46, 46, 95,115,241,255,178,246, 38, + 63,182,166, 91,122,215,111,189,221,247,237, 46,154,211,103,158,108,171, 50,111,111, 76, 25,170, 92, 50,133, 4, 46,171,140, 96, + 98, 23, 66,194,136,110,104,129, 24,152, 9, 67,106,128,248, 11,144, 60,131, 49, 66,162,145, 65, 32, 33, 6, 22, 20, 24,227,194, +229,219,223,186,183, 50,239,189,153,121, 50,243,116,209,237,189,191,230,109, 22,131,245,197,201, 50, 24,123, 80, 39,164, 80, 28, +157, 19, 25, 25, 17,123,239,247, 93,205,243,252,158, 23, 47,120,244,240, 1,187,221,137,161,108,111,174,152,154,167,230, 70, 25, + 76,185,172,193,241,197,213,196,119,190,241, 1, 63,253,163, 79,153, 26,244, 30, 10,158,148, 34,125, 73, 11,198, 85,113, 97, 69, + 10, 17,231,148, 94, 86,175,210, 11, 5, 99,154,223,166,238,105,201,139,245,177, 49, 15, 22,122, 84,180, 34,222,114,159,107,179, +217,153,162,196, 46, 18,154,208,212, 58,103,191, 76, 74,126,243,159,251,109,118,105,197, 39, 31,255,152,195, 52,225,176,202, 59, +122, 99,219,123, 12,164,212, 68,169, 73, 8, 53, 80,231,202,203,105,143,111, 74,215,173,161, 5,168, 32,189,112,189,207, 28,135, + 76,205,166,230, 62, 59, 95,243,181,247, 30,112,117,121,224,242,120,131, 74,162,228,145, 78, 21, 66,133, 16,113,189, 99,215, 39, +124, 85,142, 67,102, 30, 14,228,150,105, 56, 82,179,181, 66, 23,140,194, 40,193,242,184, 63,254,233,199,124,252,211, 47,232,215, + 91,134,195,140,158, 20, 98,240,156,172,132,251,111,222, 39,244,143,184,115,231, 49,119, 54,119,249,248,211, 79,248,209,247,254, + 62, 90, 60,190, 15, 68, 45,118,102,212,138,138,231,238,189, 51,254,169, 95,251, 38,111,124,248,216,250,181,250, 83,240,223,176, +253, 54,107,222,122,231, 62, 79,159,189,100,122, 82,233, 42,236,213, 33,110, 66,147, 71, 22, 95,179, 46,197,186,184,138,203,129, +118,147,129,134, 76, 75,163, 66,192,121,135,182, 66,141, 17,223,214,200,156, 17, 29,241, 84,170, 38,156, 20,178, 52,198, 73,240, + 97, 66, 90,198, 15, 32, 29, 86,160,229, 61, 18, 70,134,169,177,233,148,210, 5, 18,145,161, 30,241, 93,164, 87, 79,174,224,164, +163, 78, 66,145, 9,239, 34,205, 9,116,182,230, 8,206, 70,228, 83, 19, 98,237,168,146,201, 5, 68, 71,104,206, 50,211,179, 81, +253, 11,137, 78, 51,147, 52,142, 90, 89,247,209,180, 28,226,240, 42, 72, 85,156, 23, 66, 23,173, 96,119, 6, 72,162, 51,209,176, +182, 70, 85, 35,206, 9,144,186,215, 99, 59,171,173, 89,134,132,234,107, 13,114,169, 69,145, 90,111, 77,223,175,245,210, 45,173, +161, 90, 95, 89,182, 95,247,155, 54,101,170, 86, 56, 54,201, 76,197,248, 19, 85, 43, 20, 97,189, 76, 56,178, 52, 98,108,148,166, +116,174, 35, 72,134,236,152,214,149,105,127,164,142, 2,101, 36,183,200,161,152, 11,236, 88, 76,255,213, 69, 79,140,153,121,106, + 92,207, 25,102, 32, 70,188,206,104,129, 68,162,134,204,205,116, 3,205, 17, 28,139,245,203,181,165, 11,118,175,172, 0,218,140, +209, 46, 53,224,156, 46, 52, 47,163,146, 89,156,167, 46,193, 20, 75,117, 47, 86,253,154, 8,107,161,179, 81, 22,239,187, 41,222, + 85, 45,132,162,212, 66, 83,219,149,107,168,214,113,227,201,203,206, 89,156, 77, 4,212,129, 18, 22, 5,175,141,232, 91, 48,255, +180, 23,103,152, 68, 4, 81,219,167,219, 11,200,196, 36,174,205,168, 23,186, 16,108, 93,220, 20,241,150,206,214,170, 21, 2,222, + 39,212,123,188, 98,150, 40,175,166,190,151,165,240, 80, 11,164,137,209, 80,182,130,208, 18, 48, 54, 27,121, 57, 65, 91,164, 73, + 70,180,226,189, 9,144, 82,176,238,255,242, 56, 50,102,203, 48, 39,218, 90,129,214, 72,105,197,122,125, 74,112, 66,206, 35,210, + 2,159, 93, 8,195,116,201,201, 58,114,218,219, 97, 21,207, 31,226, 99, 67, 71, 79,211,142,110,245,128, 97,130,223,255,195,239, +114,147,139, 61,121, 68, 45, 6,214, 9,245, 22, 13,170, 95,217,199,186,126,195,106,179, 35, 38, 79,128,175, 46,113,177,239, 81, +124,178, 78,191, 85, 2,150,218,215,196,194, 88,188, 8,201,123, 78,119, 59, 30,255,202,135, 56,217,243,238,248,152,155,253, 0, + 18,184,247,240,148,235,103, 79,184,184, 62, 90,200,139, 40,165, 53, 74,201,200, 77, 37, 38, 79,148,106,169,120, 62,217,243,162, + 41, 69,103,138,122, 92,157,109, 26, 18, 2, 49,120, 98, 56,181, 92,244,155, 35, 57, 27,143,111,179,237,184,119,114,202,149,171, +132,121,230,162, 24, 19,253,120,188,226,242,112,195,246,238, 93,164, 68,198,113,166, 73, 7, 14,174,142, 35,207, 62,255,146,243, +205, 35,186,213,138,124, 16,126,254,243, 47,200,173, 34,190,163,148,137, 99, 25, 25, 90, 33, 34,116,190, 35,172,150,149,140,115, +184, 90,105, 41, 80,201, 80, 26,226,195, 87,142,130, 92, 45,103,187, 97,220,132, 82, 25,230, 25,223, 37,106, 19,114, 29,201,173, +144, 75, 97,154, 43,235, 20,105, 82,241,193,115,247,206, 9,143, 31,253, 42,223,120,235, 67, 62,250,248, 7,104,178,108,112,245, + 17,183,140,127,163,139,204,227, 12,209,211,156, 16, 5, 86, 93,199,179,124,201, 92, 10,155,176, 33,185,142, 16, 59, 90,204, 76, + 89, 41,135,137,211,147, 83,196, 55,118,125,199,230, 52, 66, 15, 63,253,252,153,169,199,203, 68,171, 3,181, 95,211, 57,193,177, +102,116, 7,203, 46,112,133,221,137, 39,247,137, 25, 37, 31, 15,212, 50, 17,124, 68, 48, 48, 82, 72, 61,207,159, 94,241,197,197, + 19, 66,240,184, 2,227, 85,225, 51,191,199,197,200,221, 71, 91,210,106,205,233,246,132, 77,140,124,255,251, 63,228,111,253,143, +255, 59, 63,254,232,167, 68, 39, 68, 31,217,122,112, 41,210,170, 57, 27, 30,220,127,155,156, 61,255,244, 84,121,248,238,155, 68, +169,176,254, 25,196,111, 2,107,206,223,250,117,222,187, 86,158, 62,253, 17,163, 10, 41,192,236, 59,242, 88,137,201, 58, 91,191, +218,154,110, 70,102, 90, 16,220, 12, 93,232,208,216, 27, 70, 87, 50,185, 4, 98, 88, 65,104, 8, 19,185, 88,145,102, 96,106, 59, +215, 36,108, 9,109, 96, 47,166,142,207, 52,188, 43,196,193,188,227, 67,169,132,218,200,206, 81,210,128,171, 61, 73, 86,176,242, + 54, 94, 31, 26, 49, 40,210, 9,169,174,141, 81, 81, 20,237,108, 2, 88,115,166, 75, 61,107, 81,230, 38,236,135, 69, 39,210, 59, +228, 0,178, 74,244,179,217, 59, 71, 61, 18,125,196, 73, 68, 85, 57,222, 12,156,244,145,208,121,156, 4,107, 64,154,129,183,106, + 3, 45,217, 44,199, 62, 34, 33, 32,222,104,153,234,141,241,145,250,248,154, 46,117,181,130, 85,219,107,195,206,222, 22, 11, 54, +177, 93, 86,175,175,145,246, 86,115, 53, 96, 24,202,235,190,210, 21,200,217,146,216,124, 47,228,217, 65,203,120,113, 76, 71,163, + 20,116, 17, 14,131, 64, 21,180, 11,184,195,192, 84,170, 5,123,141, 7, 40, 9,169, 51,226, 34,142, 68,190,201,184, 60, 35, 46, + 83,252,154, 80,130,221,105,101, 36, 36,208, 26, 33,101,234, 84, 12,121, 94, 27,199,169,224,156, 77, 47,171, 54, 2,173,208,156, +162, 34, 72,243,139,104,169, 45, 8, 81,243,162,183,101,140,174,218, 12, 80,179, 8,230,230,106,222, 72,183,176,208, 75,169, 54, + 50,174,230, 13, 55, 90, 98, 69,125,164, 41, 72,153,208, 16,151,241,174, 16,157,249,222,125,245,102,185,114, 13,105, 66,240, 54, + 41,184,221, 33, 33,166,122,215, 91, 49,117, 21,163,218, 46, 15,147, 46,214, 57,243, 67,155,200, 75,243,180,236,131, 3, 62, 52, + 90, 85, 74, 19,250, 40, 75,174,139,237,205, 67,178, 20,167, 82,133,228, 29, 42, 13, 47,142,121, 17,226,165,232,105,139,207, 88, +213, 17, 98, 96, 33,215, 19,196,190,166,184, 66,242, 66,174,102,177,179, 17,182, 67, 93, 34,246, 43,188,119,230,165,207, 35,177, +239,208,180, 33,118, 9,231, 96, 27, 19,251, 57, 51,150,137,185,206,188,156, 35,219, 4,125,167,172,238, 61,224,173,183,222,161, + 12,151,124,116, 13,215, 67,227, 27,119, 30,241,209,207,190,199,143,127,241,130, 86, 23,200,187,130, 90,223,177,164, 77, 97, 72, + 82,239,217,237, 78,217,109,182, 4,148,105,154, 81,148, 92, 27, 57,207,104,107, 52,138, 65,122, 52,162, 24,136,165,214,130, 54, + 33,164,158, 77,234, 17,215,152,162,231,252,108,199,112,115,228,238,195,251,156,111, 6,252,106,199,251,239, 60,228,127,250,227, + 31,113, 51,206,196,148,172,240,242, 6,146,209,230,168,121,121, 92,231,134,247,149, 73, 64,196,246,148, 49, 24,104,166,150,145, +222, 37, 98, 8,148, 50, 51, 30, 51, 14, 71, 76,102, 47,220,158,157, 18,250, 72,210, 21, 94,132, 67,172,140,135, 17, 17,232,250, + 68, 31, 3,178, 59,193,191,120, 78, 83, 71,116, 29,125,223,211,202, 68, 30, 95,178, 58,127,147, 63,252,225, 31,115,121,177,183, +149,143,100,164, 12,116, 62, 66, 44,208,204,246,117, 43, 12,149, 90, 13,181, 91,150,188,232,141, 67,180,210,198,153,161,100,188, + 23,106, 83,114,205, 72,131,113,158,105, 45, 19,170, 39,163,148, 57,243,232,222, 41, 95,255,240, 33, 79, 95, 30,248,201, 79,158, +224,137, 56, 81,222,120,120,151, 63,247, 27,255, 60, 55,215,123,158,189,248, 28,164,177,234,253,130,155,140,140,109, 98, 22,103, +160, 23, 53, 78, 67, 81, 43,140, 53, 11,174, 84, 92,239,201,177,199,123, 79,231, 20, 13, 86,116,196,196,146,154, 88, 89,199, 13, +207,159, 94,242,228,233,133,177, 23,104,164, 16, 13,132, 35, 25, 47,153,132, 16, 34, 28,103, 27,235,167, 96,235,132,176,238,105, + 53,226, 23,218, 95,171,166, 14,255,248,243, 47, 16,157, 9,169, 39, 59, 8,173,241,249,139, 35,215, 55, 19, 62, 57,126,227,215, +239, 48, 78,133,191,251,251,127,135,255,249,247,127,200,213,213,158, 77,232,169,210,112,190,103,246,141, 40,129, 24,148,190, 63, +225,108,183, 38,208,248,249,151, 79,248,226,226,200, 38, 69, 30,189,113,135,243,247,214, 32,239, 3,103,156,159,221,161, 75, 27, +114,184, 38, 22, 69,166,197,190,170,160, 67,163, 76, 35,132,158,234, 3,206, 87, 60, 30,113,142,148,140, 43, 81, 7, 71,110, 25, +113, 1, 29, 11,234,183,180,118,160, 87, 27,179,207,177, 33, 98, 44,253, 85,191,226, 58,207,184, 90,145, 56, 82,203, 17,117,153, + 66,196, 21,193,165,104, 75,165,131,210,214,141,232,123,234, 44, 48, 85,252,102,131, 84,136, 35,196,147, 70, 11,194,248, 98,192, +133, 74, 58, 49,106, 95, 44, 21,233, 44,144,182,175, 91,230,232,217,184,194,126,156,104,215,151,100,233,200,222, 40,143,115,168, +172, 85,233,157,167,249, 14, 13, 54, 73,117, 90,205,189, 98, 74, 61, 84,205,198,102,114, 25,181,145,189,115,136,143,228,162,116, +190,161,179,173, 8,255,180, 23, 88, 41,150,131, 96,112,169,215,123, 65, 54,173, 4,177,245,225,235,164,201,149,218, 40,173,144, + 68,145,240,122,195, 92, 50, 80,134, 9,173, 51, 50,102, 35,140, 6,115,139,197,149,225,124, 39, 28,205, 77,204,185,145, 68,200, +161,103,158, 10, 77,108,205,168, 28, 89,169,103,156, 5,105, 70, 4,108,206,163,178,166,186, 74,209, 75,146, 11,204, 46,208,198, + 76,234,172,243,143,125,207, 84, 13, 69, 29,187, 64,137,107, 74,155, 72,162,132, 38,214,141,181, 42,203, 30,219,186, 81,116, 9, + 68, 80,181,202,207,121, 88,114,206,181, 45,250, 38,177,142,119,217,138, 47, 35,102,243, 7, 55,113,120,127,139,100,181,127,211, +224,209,102, 12,222, 40,130, 52, 71, 67, 25,107,193, 75, 90, 80,126,141, 86,170,197, 30, 6,179,171, 53,109,102,135, 18,165, 73, + 67,212, 47,162, 58,251,255,214,214,192,155,138, 28,215,200,197, 50,165, 10,198, 80,183, 95,150, 1, 0,180,121, 36, 58,131, 58, + 52, 99,185,187, 16,104, 82,200,173,210,102, 37,121, 11, 66,104, 40,170,149,160, 11,112, 34,221, 70, 93, 26,119,186,184,138, 95, + 8,118,178,168,250,167, 98,138,216, 32,138, 74,101,119,118,135,243,211,103,124,242,249, 75, 52, 68,114,174,164,100, 30, 69, 47, +129, 22, 61,121, 12,164, 94,144,150,217, 31, 38,254,232,179,145,146,214,252, 11, 31,188, 67,215, 69,180,110, 25,198, 27,134,208, + 83, 53,243,131, 31,126,151,163,222, 34, 21, 3,173, 21,180,150, 87, 49,160,218, 42,162, 16, 92, 71,138, 17,234,204, 97, 28, 56, + 78, 51, 49, 69,188, 11, 32,144,243,108,211, 25,205,248,208,225, 67,176, 4,183, 42,204,173,144, 82,100,183,237, 40,115,230,108, +189, 51, 71, 65, 54,174,251,148,161,223,192,147,207, 62,230,226,122,192,247, 30, 74,163,239, 59,106, 83, 74, 25,205, 95,235,212, + 4,112,226, 13, 48, 81, 10, 65, 27,222, 11, 71,102, 66,140,116, 11,111,219, 45, 2,174, 57, 47,151,152,107,184, 6,235,212,113, + 60, 30, 57,223,158, 48,132,192, 29,224,201,176,167, 9,120,117,212, 82,152,199,145, 92, 12,195, 21, 55, 59,206,206,238, 50,207, +215,204, 2,209,247, 76,115,198,165, 72, 84,200,109,102,170, 3,181, 53, 78, 54, 59, 74,155,153,180, 49, 78, 25, 21, 71, 31, 45, + 84,162,148,138,139,102, 39,201,211, 72, 41,141,232,189,141,218, 91,195,169,231, 56, 77,160,158, 85,138, 54,161,168,141,166,142, +247,222,190,203,191,246, 87,127,155,243,179,251,252,205,255,226,191,229,111,255,175,127,192,182, 63, 97,123,254, 62,219,147,187, +252,226,151, 63, 48,171,167, 52, 66, 72, 12,147,185, 76, 92,179,188,231, 32,145,220,160, 11,137, 50, 87,142,251, 3,101, 62, 16, +189, 35,164, 53,205, 7,154,107,168, 4, 58,160, 70,108,207, 31, 10,243, 84,185,188, 24,249,236,201, 21,199,189,199,251,153, 90, + 71,162, 11,104,157,152, 75,165,143, 13,231, 28, 57, 43,142,138,147, 68,117, 51, 14, 33,245, 61, 53, 55,106, 86,166, 50, 17, 67, +143,230,153, 86, 51, 62,173,160,154,134,165,184,200,221,179,200,221,147, 29, 79,159, 29,248,195,191,247,199,188,188,170,252, 31, +255,247,207,169,181,208, 4,149,164, 3, 0, 0, 32, 0, 73, 68, 65, 84,173, 60,100,107, 18,212, 9,117, 81,109, 23,233, 56,223, +108,184,251,248, 28,233, 96,222,103,202,250, 37,135,185, 49,125, 10,135,227,129,183,190, 6,196,135,244,171, 14,113,144,102,101, + 14,158,131, 22,227, 70,204, 14,239, 70,186,206, 68,141, 1,207, 60, 13,102, 39, 12, 43, 66,116,212,121,102,164,225, 87, 66,148, + 66,110, 13, 13, 19, 49, 36,142,243, 17,113,129, 92,109,157,163,147,163, 76, 21, 23,160,198, 2, 45, 49,231, 74, 74,142,168,141, +224, 2, 45, 87,178,119,168, 19,198, 5, 17, 27, 84,152, 90, 68, 75, 38,246, 29,227,108, 4, 62,209, 3,222, 53,164, 4,202,228, +104,203,180,177, 30, 97,189,243,104,152, 8, 49, 50, 22,135,246, 9,175, 71,106,232,104,181,226,107, 37,109,183, 56,157,153,166, +204,122, 19, 33, 64, 46,203,152,221, 41,218, 44, 82, 25,103,186, 33,151, 2,161, 57, 26, 29,170, 86,220,251,232, 41, 14, 62,125, +242,130,211, 93,198, 69,139,114,246,209, 35,222, 47,142, 31, 19, 70,203,226, 10,250,127, 91,213,100,177,129,181,170,148,105, 66, +171,113, 20,244,118, 92,254, 58, 46,223, 90,121,229,203,121,141,227,119, 43,148,205,185,147,162,188,118,166,188, 46, 23,123,117, + 51, 5,135,115,137, 60, 29, 64, 76,175,210, 43, 28,138, 50,187, 66, 23, 2,199, 67, 38,119, 10,157, 82,110, 26,126,101, 64, 52, +157, 21,207, 76,141, 51,174,245,144,148, 54, 79,164, 10, 53,110,168,154,153,219, 76, 44,129, 16, 27,140,141, 34, 71,124,132,182, +238, 73, 94, 9, 67, 97,214, 21,193, 23,219,169, 27,138, 85,113,203, 78, 86,219,146,109,190,136,222,188, 0,213,112,175,150,108, +101, 57,230,150,112, 85,109,204, 81, 28,209, 25,202, 48, 55, 83, 96, 59,177,184, 72,244, 54, 34, 85,190,138,205,177,137,132,237, +147, 80, 2,213,252,151,206,163, 98, 23,184, 56,251,164,132,163,170,163, 46,150, 19,195,183,218, 1, 26, 92,128, 86,236,243,189, +160,206,209,121, 40, 78,241,248, 5, 64, 99, 88,214, 69, 90,103,193, 31,213, 89,244, 98,109, 11,233,203, 83, 91,193,123,165, 69, +219,247,107, 83,116,170,212, 32, 36,177, 2,161, 57, 83, 71,163,182,215,171,169,146,196,145, 43, 12,121, 98,221,117,180, 2, 57, + 41, 65,109,191,249,206,189,115,158, 62,189, 96,174,149, 1,133,105,192,187, 53,135,121, 79,110,145, 82, 26, 93,127,202,201,118, + 5,231, 70, 86,186,113,247,120,126,241,156, 52,125, 78,215,189,197,251,191,250,171,156, 61,120,196,139,207,190,207,143,127,249, + 2,230,140, 74, 91, 2, 66, 42,170,213,236,111, 33, 80,139,177,221, 17,101, 30,246,100,103,185,240,125,191, 70,181,144,243,188, +216,172, 4,173, 38, 96, 44,101,162,182,140, 11, 61,136,176, 94,111, 73,206,113, 56, 30,145, 38,136,244,188,124,249,146,213,166, + 39,224, 57, 72,134, 86,249,244,201, 39, 28,167, 17,178, 82,107,229,206,157, 7,220, 63,187,207,143,126,242,125, 14,211, 96,138, +113,109,244,105, 69,234, 34,181,217,222,183,168, 81,189, 74, 41,204,192,189, 55, 31,114,186,221,114,241,244, 37,170,149,105,174, + 52,173,244,253, 6, 23, 26,135,171, 35,247,206,214, 60,191,184, 54,120,136,154, 29,168, 52,225, 56,140, 12,195,193,214, 36,222, + 33,154,233,188, 16,253,150,195,213,196,225,236, 64,223,117,164, 4,215, 87, 7,166,225,192, 80, 50,121,174,140,211, 68, 23, 59, +210, 54,176, 78,189,101,201, 99,142,138, 16,160,214,137, 49,155,136, 12,143, 37,154,209, 44,180,165, 26,200, 40, 4,199, 92, 11, +173, 22,206,118,107, 78, 55, 27,158,190,188,225,231, 79, 62,227,195,119,127,149,191,246,187,191,195,143,127,244, 83, 30,189,251, + 29,126,253,215,255, 60, 47, 95, 60,161, 77, 3, 43,239,200,217,225, 37,224,219, 0,107,135, 47, 43,242,176,103,212,130, 72,164, +100,101, 28, 50,173, 78, 84, 38, 98, 92,225,215, 61,125, 19,114,139,184,128,141,213,179, 82,188, 66,246,220, 28, 38,158, 94, 28, +208, 92, 17,191,130, 54, 33, 75, 88, 81,159, 2,201,109, 25,134, 3, 62, 56,180,130,119, 66, 22,165,181, 64, 80,165,204, 5,205, + 86,128,181,214, 32, 5,100, 73, 69,107, 45,160,174,225, 35,132,206,209,175,123,238,221,219,177, 31, 60,255,219,223,125,194,245, +152,105,190, 18,181,217,104,178, 85, 19,197, 57,219, 45,139, 38,118,235, 19, 54,155, 19,246, 71,207, 39,159, 85, 30, 63, 12,244, +235,132, 56,184, 25,158,113,124,113,198,205, 63,248, 62,231,103, 63, 96,179, 62, 99,214,204,190, 85,162,122, 66, 2, 38, 69, 74, +198,173, 10,121, 20, 82,179, 51,136,148,112, 25,122,239,144,201, 32, 86, 65, 28,101, 26,153, 66,193,251,136,211,137, 89, 3, 1, + 79, 8, 75, 51,115,172,180, 88,200,161,179,137,213,104,163,252,237,218,145, 7,135,172, 18,196, 68, 57, 30, 88,165,206,200,114, + 57,224,134, 66,149,229, 66,174,149, 81,214, 80, 11,206, 41,211,161,226,214,107,194, 44,232,228,113,157,224,221, 64,157, 3,121, + 62, 34,154,113,165, 49, 28, 10,155,174, 71,195, 25,197,195, 38, 52, 74,139,184,208,200, 26,112,213, 24, 15,101,110,116,183, 43, + 60, 49,221, 72,197, 17,146,197,250,214, 25,146,115, 84, 45,196, 96,103,183, 56, 71,140, 29,178,187,195,156, 18, 65, 76,220,235, +218,210,229, 99,204,140,219,192,161, 91, 66, 29,183,123,249,106,241,217, 77,155,217,145,235,114,230,208,184,184, 26,216,100, 93, + 80,224,134,192,118,126,209, 92,233, 82, 28, 44, 5,130,252,137, 52,202,127,212, 72, 63,143, 19,181, 84,154, 91,196,216,175,233, +238,173,149,101,173,216, 22,178,232,107,246,168, 55,236, 28,157,138,185,189, 90, 99, 30, 50,210, 50,174, 5,166,170,120,205,116, + 46, 48, 81,137, 65, 9,185, 49, 42,184, 0, 50, 28, 8,163,208,238,238, 24,175,110,104, 99,196, 79,153, 76,129,184,166,247,149, +169, 22,218,190,210,173,132,236, 3,165, 90, 28, 49, 20,164, 69,156,116,140,227, 13,174,122,210,230, 30, 91,255,194, 26,214, 34, +109, 9, 5,104, 11,117, 76,150, 49,136, 24,203,176,122,102,169, 11, 73,203,163,106,194, 56,117,186,112,224, 45,185, 76, 17,242, +108,229,157,248, 70,201,109,201,240,118,230,223,107,150,103, 94,213, 80,173, 42, 66,244, 98, 23,179,218, 97,105, 64,216, 37, 58, +178, 84,252,130,147, 47, 57, 35,152,205,201,184,229,203,222,168, 85, 66,180,255,162,106, 33,104, 48,216,138, 90,106, 90, 12,102, + 9, 17, 89,180, 0,106,106,112,171, 84, 26,130, 5,180,212,102,144, 25,175,144, 9, 84, 49,133,122, 39,193, 72,121, 46,216,174, + 90, 10, 65, 28,117, 89, 71,184, 86,152,113, 70,186, 10, 97,121,145,100,168, 66,109,194,196,145,213,217, 9, 39,187,158, 47,158, + 31, 64, 34, 72, 36,248,132,151,132, 40,196, 20, 24,166, 27,156,203,188,245,240, 29,130, 4,222,250,206,175,241,173,239,188,203, +225,226, 41,251,253,158,195,151,159,241,242,179,159,240, 7, 63,252, 30,215,163, 61, 22, 85,213,158, 76,170, 52,181,199,207,161, +180, 98,226, 45, 87, 27, 85,148,206, 37,186,205,150,224, 3,211,120, 68,219,204,118, 19, 40,173, 49,141, 19,121,217,177,123,196, +198, 66, 33,176,238,172,251, 24,231,145,216,111,217,244, 9, 92,197,183, 30,164, 18,150,168,200,203,171, 43, 74, 89, 28, 7,192, +205,245,129,175,127,237,107,188, 59,188,195,143,126,242,179, 69,131, 33, 16, 28,223,252,206, 55, 56,233,123, 46, 94, 94,178,191, + 57,112,117,125,201,211,231,207,193, 11, 15,239, 62,224,237,199,247,225,107, 31, 48,238, 7,110,110,174,249,228,211, 79,184,217, + 23,230,253, 64,244,112,121, 56, 48,141, 32,154, 57, 78, 3,226, 29,125,236,113, 26,168, 10,125,138,172,187, 68, 12,189, 89,149, +182,137,241,248,146,139,207, 44,112,103,127,179,231,249,139,231, 76, 83, 6, 28, 62, 69,230,185, 80,231,204,126,244,108, 55, 43, + 58,231,153,106, 35, 43, 4,181,140,100,164,190,138, 93, 5,139, 21,110, 13,124,115, 20, 10,165, 10, 83,158,240,226, 88,119,145, + 63,243,237, 7,252,253,239, 61,225, 15,254,175, 31,241, 43,239,188,207, 55, 63,248, 58,127,249, 47,253,139, 12,245,132,224,122, +198,203, 11, 82,105,184,228,152, 60,204,243, 96,222,226, 16, 9,206,115,147,133, 58, 43, 74,177, 44,109, 15, 58,217,244, 41,174, +206, 41, 37, 25, 42,203, 85,243,101,123,199, 56,100,134, 50, 46,211,175,184,112, 34, 20, 31, 19, 65, 3,195, 92,169, 94, 9, 49, +113,255,206, 67,166, 86,121,250,249,167,203, 62,218,163, 57, 19,188,183, 44,185,166,116,222,166, 74,125,191, 33,134,158,185, 94, + 81,105,104, 57,226,124, 96,149, 78, 56,221, 69, 68,225,187, 31,189,228,250,112,228, 48,212, 87,212,198, 90,231, 37,226, 23,154, + 55, 70,130,180,196,157,179, 7, 60,186,247, 6,155,179,192,163,147,158,210,132, 95, 62, 63,242,120,149, 56, 59,223, 49,236, 95, +160,195,129,233,234,192, 23,159, 21,210,234, 37,135, 60,131, 95, 49, 14, 51,218,135,101, 45, 55,162,197, 47,137,104,202,160, 19, +204,222,248, 18, 65, 24, 25,104, 37,208,187, 13,158,138,143, 27,170, 38,142,135,193, 4,116,222,184, 26,136,167,239,122,230, 84, + 40,213, 47,136,224,158, 68, 67,104,136,132, 5,113, 61,147, 82, 79,105, 19,110, 74,230, 83,151, 68, 99, 32,137, 99, 44, 30,173, +141,224,237, 82,236,220,218,176,217,109, 68, 81,106,105,168,115,132,174,195,213,129, 57, 57,186, 10, 61, 61,185, 78,116,155,142, +168, 19,115,234,240, 45, 80, 14, 13, 31,204, 90,220,170, 7,173, 84,239,160, 22,163,138,137,237,253,107, 85,156,170, 21, 99,139, +238,105,182, 58,140,152,149,187, 15,118,188,245,230,217,255,111,167,121,251, 81,249,135,239,220,162, 44,107, 87,187,120,199,253, + 72,189,153, 77,151, 36, 66, 11,145,129,100, 5, 66, 53, 64,166, 43,183,144,171, 91, 84,237,130, 28, 95,244, 59,218,204, 98,251, + 42,237,173, 53,230,121,164,212,140,168,146,171,240,236,233, 21, 93,215,153,243, 69, 12,101,125,107,165,230,150, 63,249, 39,238, +102,113,242,170, 89, 84, 93,236,126, 98, 25, 38,195,113, 38,207, 71, 67, 80, 87,133,121,132,228,151,239,235, 79, 15,207,153, 43, +148,105,166, 84,165,169,217, 72,195, 86,104, 71,111,171,236, 60,225, 69,200, 10,117,182,213, 92,108,153,144,149, 57, 22, 82,113, + 20, 85,142,229,248,138, 73,144,189,218, 84,172,193, 44, 13,154, 48,107, 35, 20, 71,159, 42,163, 40, 20,101,118,183,193, 93, 74, +112,150,236,153,135, 3,103, 49,227, 31, 60,122,248,123,222,133,197,198,102,135,151,138, 95,130, 3,150, 42,240,182,189, 94,148, +143,183,151, 47,226,190, 34,209, 97,187,233,133,202,106, 66, 58,181, 11, 95,151, 75, 94, 23,219,148,168,169,202, 87,169,179,224, + 11, 53,242, 91,109, 74,116, 14,213,106, 23,214, 98, 73,105,234, 22, 21,178,195,123, 12,107, 42,193,198, 70,218, 44,130,209, 41, + 78,130, 65, 75,104, 36,139,102, 55, 85,120,144,101,236, 47,184,102,169, 89, 96,187, 99,239,156, 41,100, 29, 8, 6,198,175, 82, +137,222, 68,100, 78,176,253, 48, 54, 70, 12,201,219,180,194,155, 71,190, 45,191,120, 28,120,156, 9,226, 22,177,153, 81,245, 60, + 49, 38,106, 25,121,126,113,133, 72,100,189,222,208, 5, 71, 43,153,174, 91,113,239,193, 3,250,205, 9,170,149,235,171, 75,234, + 48,113,247,108,203,131,251, 15,185,255,246,187,188,241,238, 7,228, 44,124,242,233, 47,249,201, 39, 31,243,252,217,149, 85,190, +209,219, 67,180,128,128, 74,177,195,239,235,223,254, 22,247, 31, 62, 34,117, 29,211, 56, 24,199, 91, 27,227, 52,146, 23, 26, 84, +244,176, 90,245,156,238, 54,244,169, 71, 85, 88,237,118,156,156,159,176, 89,239,216,118, 61, 77,149,185, 40,119,223,120,135,135, +247,206, 77,172,184,106, 12,211,145,208,237,208,241,146, 95,252,242, 51,166,209,162, 38,213, 65,169,149,251,247, 31,242,198,155, +111,114,189,127,193, 48,205,164,184,162,204, 51, 33,194,227, 55, 30,242,248,237, 55, 57,223,109,249,242,139, 39,220, 28, 6,112, +142,151, 23, 23, 60,249,236, 9,187,147, 19,222,120,248,208,162, 34,155, 26,243, 29, 97,174,133,227, 48,129, 56,110, 14,123,174, +174, 15,172,214,107,222,120,243, 62,119,183, 59, 82,180, 24, 92,159, 12,189,219,196,115,125,115,195,229,205, 5,157, 19,174,111, + 6, 78,238, 60,224,229,203, 23,148,102, 23,161, 29,148, 66,173,102,255,203,165, 80,166, 98, 33, 68, 18,113, 98, 1, 45,173,129, + 20,133, 38, 12,243, 76,201,213,220, 21,185, 46,217,210, 86,124, 58,113, 28,198,137,171,235,145,155,235,137,144,148,247, 62,120, +204,183,190,253, 53,226,234,156,139,203,198,112,113,193,148,143,236,247,123, 92, 16,178,216,228, 39,186, 0, 45, 82,242,196,156, + 51,165, 88,219,100, 41, 83, 19,101,158, 72, 33, 17,250, 13,222, 11,222, 55,164, 21,234, 88, 40,181, 49,204,149, 86, 44,244, 36, +136, 17,186, 42,153,237,106, 69,140,129, 92, 7,218, 56,210,180,177,233, 58,222,125,252, 54,155,211,251,236,135, 61,165, 14, 4, +231, 8, 18,150,253,230, 66,123,212, 74, 90,237, 16,239, 32, 79,148, 90,205, 97,239, 3,190, 58,166,185,240,226,122,230,234,242, +200,116, 28, 9, 73,105,165,216,254,181,217, 36, 32, 72, 71, 21, 19, 97,238, 54, 39, 60,126,244, 62,247,222,190,199,174,131,221, +249,142,187,247,119,196,216,179, 61,181,204,129,146, 11,115, 61, 82,134,145,235, 43,161,210,232, 92,227,221,119, 31, 50,236, 51, +151,215, 7,180, 89, 32, 84, 30, 6,139, 68, 13, 88, 66, 90,131, 78, 4,233,108,218,103,145, 79, 35,213, 53,242, 40, 16,101,153, + 52, 57,230, 6,173, 6,154, 88,211,161,179,185, 85, 66,168,212,217,138,225,220, 34, 41, 89,204,110,157, 10,165, 85, 60,149,144, + 28,121,202,136, 55, 1, 75,238, 34,174, 90,100, 98,110,133,218,175,104, 56,116,188, 49, 93,207, 18, 88, 37,193, 88, 30,165,245, +244,201,145,107,123, 5,190,114, 41, 26,251,125,242, 16, 77, 91,164, 96, 33, 81, 75, 98,162, 79,150,119, 33, 44, 46, 26,167,198, +204,144,136, 72,193, 7,155,136,136, 95, 48,204, 18,120,240,240, 14,235,205, 63, 26, 18, 35,127,226,221, 45,231,246,237,123, 16, + 22,129,163, 88,136, 85, 23,201, 83,163,149,194,170, 75, 60,124,120,151,237, 58,177,234, 35,171, 85,100,213, 7,186,206,147, 58, +139,244, 77,157, 39, 38, 79, 74,129,152, 2, 33,121, 66, 23,240, 41,154, 35,164,143,184, 62,209,188,241,249,117, 17, 25,167,205, + 22, 77, 9,245,129,134,163,122, 79, 21, 71,105,194, 92,117, 17,167,218,159,167,220,152,138, 50,230,202, 48, 21,142, 99,230, 56, + 20, 14,199,204,229,229,129,195,225,102, 9,137,177,216,220,225, 48, 49, 28, 38,198, 97,102, 60,142,204, 99, 38, 79,153, 60,216, +223,149,113, 34, 79, 19,101,154,152,198,153, 60,204,148,188, 64,188,166,153,121, 63, 89,128,202, 52, 50, 30, 7,190,120,250,146, +227,225, 37,195,184, 71, 71,115, 33,169, 52,230, 99, 5, 95, 76, 48, 78, 32,123,135,132,138,159, 7,142,181, 18,187,142, 24, 3, + 55,147,208,234,132,159,149,222,245, 20,153, 8, 90,168, 33,224, 93, 68,115, 37,165, 70, 17, 75,127,108, 82,104, 89,240, 45, 17, +214,188,178,161, 91,127, 42,212, 92,120,127,151,240,247,238,220,249,189,175,124,204, 86,233,249, 37, 64, 64,151,165,138, 91, 46, +114, 67,163,187,165,250, 90,112, 38,134,144,166,213,102, 35, 95, 28, 34, 16, 23,155, 69, 91, 58,111,135,113, 98,197,155, 71, 92, +150,125,141,143,158,162, 38,124,233,130, 91,252,204,242,138,191, 87,155,121,149,253,146,115,126,235,163,111,230, 91,179, 31, 8, + 11,185,112,222,189, 10,163, 65, 27,205,217,206,188,137, 91, 20,161,246,189, 53,111,150,175,144, 28,174, 45, 69,155, 26, 98,209, +214, 4,142,232,108, 52, 85, 53, 24, 49, 46, 57,186,219,157,129, 87, 60, 1,137, 66,155,117, 17,166, 4,188, 26, 4, 55,168,199, + 5, 79, 86,240, 5,250, 24, 89,245, 61,215,135,107,166,169,145,130,178,233, 87,228, 54,146,235,136,107, 22,247,233,125,135, 91, +245, 4,223, 49,207,215,252,228, 7,223,229,217,139, 47,233,200,196,205, 57,119, 30,172,248,232,251,127,192, 39, 95, 92,153,149, +199, 69,250,110,133,119,150,231, 29,119,119,248,215,255,205,191,198,223,248,247,126,151,127,229, 47,254, 38,191,243, 23,255, 89, + 90, 59,242,135,223,255,163,165, 42,206,228,178,176,197,113, 84,189,253,157, 56, 98,234,185,123,231,140,147,205,150,180,218,114, +126,118,194,246,100,199,189,179,123,156,159,158, 88, 50,143,183,181,138, 79, 91,222, 56, 63,227,217,179, 79,121,118,121,109, 47, + 74,177,131,135,106, 2,144, 7,143, 31,114,178, 91,115,253,226,146, 90,237,121,115,184, 60,114,117, 24,120,252,246,125,142, 55, +151,252,224,199,127, 76,189,101,253,151,202, 48, 12,148,150,185,251,232, 17,117,168,140,135, 27,182,155,142,208, 71, 98, 88,209, +199,142,195,225,136,143,158,225, 56,114,239,238,125,190,246,254,175,112,247,222,150,198, 76,153,103,114,109,120, 15,199,155, 61, + 47,159, 63,103,200, 51,207,111,110, 24,143, 71, 78, 78,214, 92,223, 92, 47, 74, 91,165,212,106,153, 7, 77,161,154, 37,173,121, +111, 48, 15,105, 70,137,107,182,218,192, 59,180, 86,230,146,151, 40,219, 74, 94,138, 94, 89, 10, 92,113, 30, 26, 28,110,102,124, + 16,250, 46,240,248,225, 29, 78, 54,247,120,242, 44,114,125,117,164,140, 95, 50, 92, 31,237,113,168, 21,239, 61,211, 52,113, 51, +141, 20,173,228,169, 48, 59,103, 36, 69,133, 92, 42,195,176, 39, 32,164,213, 22, 33,225,157,210,106,166,228, 76,169,150,220,229, +131, 46, 45,151, 91,132,156,134,151,245,253,154, 16,133, 90,143,204,211,136, 84,216, 31, 15, 56, 31,184,119,255, 62,226, 26,195, +112,164,210,200,181,225, 22,226, 92, 45,133, 24,123,240,137,220, 38,188,152,230, 33, 4, 79,115, 48,207,149,253, 48, 51, 77, 5, +218, 68,171, 6,132,114, 10,165,141, 54,118, 15,130,106, 33, 74,192,209,241,230,131, 71,124,227, 87,223, 97,155, 44,245,113, 60, + 58,250,184,229,222,195, 83,186, 46,217,101, 29,149,208, 60,174,235,249,242,249, 37,135,203,145,206, 7,214,169,160,209,115,184, + 82, 90, 44, 20,173, 76,163, 21,245, 78, 29,109,114,116, 33,176, 94,226,162, 55,201,155,176, 75, 4,207, 26, 23,102, 86,193, 81, +103,165, 69, 72,161, 26, 18,155,138,235,148,218, 26, 65,133,168, 86, 64, 74,115,116,189,117,191,130, 71, 52, 64,170, 72,140,168, + 88,226,164, 11,144, 86,167,116, 40, 78, 51,205, 67, 46, 5, 45,141, 46,206,118,234,169, 16,250, 21, 37, 5, 2,141, 30,103, 10, +229, 26, 72,125,194,225,241,197, 81, 66,199, 92,192, 55, 19, 98, 38, 47, 36,139,207, 68, 59, 72,192, 56,101, 43, 18,156,199, 97, +185, 12,194, 87,129, 47,174,217,231,199, 85, 79,200,129,212, 7,238,222,187, 99,137,142,127,106,134,186, 48, 13, 35, 85, 43, 39, +155,142,126,189,250,255, 20, 6,242, 79, 40, 20,156, 13,236,240,206, 62, 38,103,231,255, 60, 84,106,201,156,158,108, 56, 63,223, +177, 74,193,136,117,157,167,143,206,222,147,197, 23,119,157, 21, 15, 93, 23,232,251, 72,223, 7,186, 62,146,250, 68,215,119,116, +235,142,180,238,241,235, 53, 85, 77,248, 75,169,196, 46,176,190,123, 23, 86, 27, 92,236,112, 41, 65,234, 80, 31,169, 62, 80,212, + 81,156, 39,227,153,170,103, 44,194,220, 28, 67, 17,134, 25, 14,147,114, 51, 76, 92,141,149, 23,251,137, 47,159,239,185,188,184, +102,154,247,104,158,192,121,107, 86,167,138,243, 80, 68,209,172,140,243,136,159, 51,154, 76, 56,222, 52,163,218, 33,185, 89,241, +138,163,182,153, 90, 50,146, 43, 89, 42, 94, 86, 6,223, 90,157, 48, 14, 35,117,178, 72,239,226,147, 77,151,187,106, 25, 35, 26, + 77,243, 86,102,188, 20, 82,220,176, 97,143,127,227,222,195,223,179,137,187,162, 8,226,189,237,153,197, 50,201,157, 91, 16,163, +106,195,234,224,151,174,188,216,206,182,138, 26,182,113, 25,151, 88, 70,136,179,108,245, 96,104,187, 0,148, 96,157,135, 44,244, +119,231,109,132, 45,128,107,186, 16, 74,101, 73,100, 83,164, 54,243, 75, 47, 99, 97,179,176, 45, 57,233,183,164, 87, 7,209,252, +117,214,121, 53,235, 94,108,231,105, 83, 4,191,116,213, 96,223, 71,173, 95,237, 86,196, 89, 84,167, 44,118, 7, 39,134,135,165, + 46,150,141,104, 83,136,218,172,144,136,113,169,160, 22,207,169,248, 37, 21,110, 25,205,222, 82,248, 84, 77,184,231,112,172, 16, + 52, 9,161,239, 57, 59,217,114,115, 99,213,227,148,139,173, 33, 26, 76,211,200,241,120,205,113,216, 83,230,204,189,187, 15,121, +248,214, 7,156,116, 61, 63,253,225,247,248,201, 71, 63, 7, 63,242,131, 63,248,125,254,222, 63,248,152, 42,222,172,108,181,154, + 37,135,198,155,239,125,131,191,254,215,255, 29,254,202,111,127,139,144,143,180, 92, 72,171,200,183, 63,248, 26, 95,252,252, 83, + 62,254,252, 57,125,215,225,150,112, 17, 89,170,191,172,134, 33, 61, 57,221,209,167, 68,242,145,213, 58,178, 57, 93,115,122,114, +138, 95, 39, 84, 39,202, 84, 89,173, 55,148,220,112, 84,206, 78, 2,159,127,249, 57, 95, 62,187, 96, 86,179,104,120,111,235,142, +171,235, 27,198,121,224,195, 15, 62,100,188,222,115,152, 7,162,120,136,198,236,127,231,237,119,121,254,236, 25, 79,190,120,106, + 19, 18,103,156,249,224, 28,227,116,196,105,228,124,119,135,156,175,217,110,118,164, 16,217,238, 54,156,110, 18, 55,251, 61, 95, +251,214, 55,113, 14,162, 68, 30, 62,184,143,115,141,225,120, 88, 82,164, 50,109, 86, 91,187, 44,248,201, 86, 32,151,198,139,139, + 11,166,121, 88, 2,100,228, 85,180,172, 44,153,187, 90,219,226,107,109,212, 60, 81,170,208, 90,161, 21, 37, 3,185, 54,234,156, + 13,201, 41,183, 92, 3, 43,134, 83, 88, 89,119,228, 60,234,205, 94,184, 90,117,164, 92,217,187, 13,115,233, 56,188,120, 66, 29, + 38,174,135, 75, 52,170,217,204, 71,165, 58,115, 86,152,232,212,190,158,175, 22, 45, 90,138, 64,203,196, 85,194,117, 61,205, 57, +106,153,208, 82,240,106,162,189,213, 42,226, 83,135,230, 66,211,178,240, 30, 50,206,175,209,172, 68, 42, 53, 15,140,227,104,244, + 68, 96,156, 38,142, 55, 47,233,227,154,199,247,222, 32,109,119, 28,199,137, 50, 15, 70,121,140,129,184,218, 81,107,163, 21,211, + 76, 88,225,188, 36, 32, 10,139,205, 84,192, 69, 74, 81,124, 19,240,141, 86,236,146, 79,190, 55,151, 73,244,172, 87,103,124,240, +222,187, 60,122,123,205,137,131,126,221, 35,210, 49,221, 20, 36, 57,124, 52, 36,109,201, 7,134, 23, 35, 97,157,216,110, 18,222, +141,252,209,143,126,193,207,158, 28, 56, 54, 97, 40, 19,174, 10,142,128,143,142, 94,160,120, 15, 97,178,137,139, 23, 66,112,144, +193, 37, 33, 38,135, 74, 38,108,182,172,162, 51,187,225, 40,120, 85, 36, 8,248,104,107, 7, 93,194, 63,234,104,188, 74, 73,134, + 39,110,133, 58, 91,102, 54,193,211,240,120, 85, 66,231, 8,120,106, 19,198,113,228,168, 51,177,235,240,165,177, 90, 34,132,189, + 23,134, 86,105,213,206, 17,170,199,167,158,232, 50,181, 75, 48, 10,205, 55,226, 73, 79,158, 42,189, 23,168,149,169,206,164,149, + 35,182, 4, 78,137,206, 10,169, 92, 33, 32, 68,187,237,141,205,239,150,117,232,114,195, 58, 48, 43,162,179,136,223,251,247,238, + 16,187, 63, 61,204,101,174, 6,158,105, 37,115,178, 93,189,150,175,105, 59,117, 24,134, 9,167,149,221,166, 39,252, 99,192, 51, +255,184,226,193,203, 87,197, 66,116,208, 7,161,168,144,167, 25,218,196,195,187, 39,156,156,110,217,116,158,117,231, 89,117,158, + 62, 57,250,228, 88, 37,199,186, 15,175,222, 55,235,192,122, 19,217,109, 34,219, 77,100,187, 77,108,182, 29,155,147, 53,219,179, + 53,103,103, 59, 54,247,206,193,175,201,227, 68,153,247,104,173, 72,177, 9, 51, 9, 90,245, 72, 41,100,173,140,197,138,150,178, + 76,164,167,155,140,110,236,130,214,227, 68,213, 70,231,122, 74,107,204,205, 33, 19, 84,205,196, 97, 92, 86, 41, 29, 77, 7,252, + 58,209, 74,161,150,137,166,182,146,118, 90,169, 42,228, 16, 41,120,158,239, 39,252,131,135,143,126, 79,124,131, 5, 98,128, 10, + 34, 13, 13, 54,246,241, 75,104,189, 56,143, 91,168, 73, 44, 59,245,102, 24, 55, 68, 45,198, 77,157, 45,101,162,247,198,152,118, + 30, 89, 40,107, 96, 59,110, 83,181, 11, 81,236, 42, 85,183,236,182,151,110,217,246, 45,183, 9,108,206, 8, 87,118,163,211,165, +100, 0, 19,167,120,231, 89,210,210, 9,161,179,156,246,219,112, 0,189, 77,150,211, 87,208,156, 16,172,139, 44,185,190, 42, 96, +168,203, 62,122, 25, 12, 56,231,240,205,170,251,234, 45, 59, 86,154,197,192,246, 97, 5, 98, 60,103,156,154, 74, 60, 23, 27,139, +168,249,187, 69, 45, 18,182,121,251,206, 99,178,180, 53,145, 64, 31, 60,187,110,203,241,230,154,253, 97, 98,125,114,143,147,211, + 83,202,156,209,133,254, 20, 4, 92, 43,236, 47,159, 50,220, 92,225,220,204,151, 55, 95, 16,107,224,242,211, 79,249,222,143, 62, +226, 80,213,210,223, 98,183, 88,158, 70,170,235,249, 15,254,195,127,159,127,233, 55,222,101, 62,140, 38,110,162, 80,242, 64,234, + 18,239,191,243,152, 63,252,238,143,185,216,143, 70,156,115, 1,109, 13,159, 18,235,110,197,233,110,205,106,189,166,239,123,182, +119,206,217,116,137,147,245,134,232, 60, 85,148, 85,218, 18, 67, 36,173, 12, 79,185, 91,159,210,230,107,126,241,249, 23, 12,199, +197, 42,229, 29,206, 69,212,119,132,224, 56, 94,223,176,219,110, 24,246, 3,199,113,178, 75, 59, 38, 84, 51,243,112,228,229,243, +231,220, 28,167,197,190, 40, 75,154,158, 51,251, 84,115,220,191,123, 70,169,149,232, 2, 83,206,104, 16,214,235, 53,167,119, 31, +208,117, 61,165, 78,116, 41,242,232,205,251,160, 19,151, 87,215,148,102,118, 50,113, 1, 23, 87,182,167,155, 71,139,188,117, 11, + 61, 80,172, 56,149,224,113,237,118, 39,119, 75, 68, 52, 45,137,162,139,144,208,166, 69, 45,207,214,209,171,233, 21, 68,160, 58, +240, 75,177, 43, 46,210, 69, 79, 72, 43,206,118,167,196,224,153, 74, 97,157, 34,253,250,132, 59,247,191, 73, 42, 55, 72, 61,240, +242,230,134,161, 14, 52,223, 8, 18, 8,190,103, 46,163, 37,127,249,158, 90, 26, 18, 10,173, 20, 90,109, 28,231,129, 76, 37,208, + 3,182,114, 74, 18,160,201,130, 29,134, 85,220,210, 66, 48,194, 84, 21,155, 76,137,199, 57,235,234,109,213, 84,185, 26,110,152, +234,104,136, 85, 21,246,135,145, 74,227,222,105,207, 91,247, 31,208, 66, 98,191, 63,146,231, 3, 82, 27,158,176, 28, 86, 19, 46, + 56, 75,253, 90, 82,193,196, 71,156, 4,212, 11,173,216, 84,171, 5,112,165, 16,125,193,119, 9,151, 2,181, 9,235,245, 25,223, +124,247, 3,222,120,180,230,116, 19,241, 93,226,238,227, 59,244, 39, 29, 55,121,230,217,231, 3,135,171,129,221, 46,224, 93,165, +230, 9,215, 43, 41,118, 28, 94,222,240,252,122, 70,214,103,180, 2,105,213,209, 26, 68,159,169, 62, 83,112,180,121,198, 53,165, + 54,143,139,202,170, 91, 89,144, 71, 89,130,163, 16,242,208,200,227, 76, 1,124, 85, 92, 92,118,182, 65, 40,206,145, 39,195, 44, +207, 75,161,226, 92,180,159, 31,136,146,168,206, 25,158,121, 65,111,149,102,175,213,216, 10,213,173, 88, 57,143, 91,214,146,246, +123, 90, 44,104,206,163,179, 96,112, 96, 65,235,140,111,106, 36, 48, 28, 73, 2,179, 36, 18,230,164,193, 37, 86,106, 83,147, 42, + 14, 23, 77, 75,129,218,227,222,197,101,175,120,203,131, 23, 67,252,138, 55, 59,169,147, 96, 93,188, 15,172, 87, 43,238, 63,188, +135,127, 13,158,242, 97,170, 76,227, 4,173,178,123,141,212,183,220, 96, 56,152,166,100,187,219,252,169,227, 97,255,161, 88,212, +169, 48, 30, 71,188, 86,238,156,159, 32,225,159,236,215,255,147,133,194,171,105,195, 82, 52, 68, 7,105,249,184,246, 48, 52,225, +234,226,134,121,191, 71,107,163, 46,113,229,180,106,141,132, 42,157, 4, 82,242,148, 42, 28,243, 72, 63,117, 56, 63, 49,215, 70, +200,137, 16, 60,210,102, 74, 7, 18, 35,169, 22, 38, 21,208, 25, 47, 21,122, 53,155,236, 48, 17, 75, 97, 21,149,140,129,164,214, + 33,152, 59,171, 63,129,210, 51,177,231,205, 93, 36, 32,149,214, 22, 53,187,242, 85,184,198, 34,122,168,206,246,228,210,110, 19, +208, 60,117, 25,177,138,103, 9,113, 97, 33,204,153,106,188,136,169,233, 75,201, 11,222,193, 66,223, 45,245,205, 81,203, 45,221, +199, 68, 20, 6,112, 84,195,132, 98,124,111, 19, 68,120, 16, 37, 44,137,106,181,153,154,182, 52, 8, 65, 22,240,141, 9, 55,112, +186,188,108, 28, 41,154,160,164, 84,161,121, 33, 74, 51, 69,120,185, 37, 80, 41,209,123, 52,207,228,214, 72,105,189,112,239, 61, +141,108,244,181,165, 24, 72,193,178,142, 91, 40,102,199, 41,118,176, 78,210, 94, 69,134,118,234,104, 62,152,136,132,102,236,104, +129,190, 24, 60, 4, 87,169, 8,173,206, 28,167,137, 89, 60,247, 79,206,185,127,255, 46,190, 21, 94, 94, 94, 44, 63, 67, 88, 58, + 72,120,118,241,140,227,120,195,152, 3,111, 60, 56,227,234,242,151,220, 76,121, 17, 31,217,129, 30,165,210,210, 61,222,122,251, + 49,127,247,239,252,159,252,133, 63,243, 87,145, 78,105, 35,168,244, 56, 95,201,121,224,253, 15,222,224, 27,239, 61,230,151, 95, + 94,130,119,196, 24,217,222,221,176,233, 35,193,245,156,158,173, 72,146,232,226,142,176, 78,244,193,130,115, 92,170,132, 57,130, + 91,211,111,173, 11, 95,167,153,249, 40,252,252,249, 37,115, 73, 60,120,227, 45, 54, 65,105, 20,230,106,228,189, 54, 79,204,165, +240,211,143,127,201, 42,120, 66,240,212,172,120, 31,152,134,145, 63,254,232,151,134,127,245,203,220, 70,156, 9, 22,197, 30,243, +237,201, 9, 5,232,186,181,189, 32, 80,186,117,199,234,164,167,140,214,121,237,118, 27,152, 29,201,247, 92, 92, 63,103, 56, 78, +116,125, 34,246,137,221,106,199,113,158, 8,105,197, 80, 39, 14, 7,131,121, 36,239, 45, 80,168,216,184,221,185, 64, 91,124,254, +141,106, 47,226,106, 59,157,134,195,181,140,182,180, 68, 10,219,138,196, 2,123, 20, 45,183, 98, 79, 80,173, 52,223,115,178, 90, +177, 94,119, 60,136, 43,126,249,188,114, 28, 10, 97,119,159,162,153, 33, 31, 57,150, 66, 0,238,164, 29, 51, 51,199,170,108,188, +176,233, 18, 67, 83,186,170,212, 62, 49, 79, 25,170, 50,101,168,121, 38, 4, 15, 8, 69, 43,169,121,112,145, 20, 3,115, 27,233, + 83,178,248, 98,245,108, 54, 59, 92,218,114,115,245,153,241,206,117,109, 28, 6,154, 77,210, 74,101,156, 27, 45,143,236, 54, 74, +151, 86,236,175, 95,242,211,159,141,244,187,103,172, 54,107, 30, 61,120,200,179,103,149,113, 26,200, 53,219, 52, 14, 72, 98,108, +247, 44, 13, 23, 32, 16,240,113,133,150,153,230,102,187, 80,117, 54, 6,128,243, 6, 78, 17,193,199,196, 59,111,191,207,183,254, +236,123,108,182, 51, 93,220, 48,143, 19,211,113,198,247, 59,238,223,201,148,242,156,151, 47, 43,233,163,137,247,191,117,135,185, +247,228,171,153, 43,119,224,103, 31, 95, 80,226, 9,109, 1,158,232,172, 20, 13,104, 25,168,218, 40, 89,204,189, 35,158,216, 59, + 92, 76,150,245, 80,133, 89, 29,157,243,100, 49,237, 12, 45, 82,170, 69, 10, 19, 77,217,149, 7,177, 46, 64, 33,250, 74, 8,107, +152,171, 97,117,151,213,155,186,108, 78,132,206,108,110,178,164, 81,206, 17,210, 42,194,116,131,234, 26,173, 51,138,163,104,194, +135, 74, 20,143,150,136, 44,214,216,220,102,146,236, 96,101,132,185, 54, 59,198,156,113,162,100,154,157, 85,173, 65,232, 32, 15, +204,181,177, 9,145, 89,103,124,138,248,232,201,197,198,237, 18, 76, 23, 3,213, 72,155, 62, 24,143, 64,218,114, 17, 57,186,206, +156, 25,175,197, 26,134,105, 71, 66, 16,124,138,175,237,226,173,165, 45, 77,221, 45,173,244,245,121,212, 91,177,199,181,139,193, +180, 7,175,249,173, 85,181,228, 68,191,240, 33, 90, 69,130,233,114, 18,129,227, 52,115, 83,141,179,162, 69, 23,174, 64,161,115, +171,165, 0,152, 8, 81, 16, 58,110, 40, 36,105, 20,102,116, 22, 90,104, 12,110,198,143, 9,131,163, 87, 74, 78,224, 97, 3,148, +208,147,157,167, 21,197,181,136,151,204, 73,238,249,173, 15,215,132, 82,111, 35, 49,205, 59, 29, 92,176,113,206, 66,248, 81,113, +214,141,160, 20, 5, 89, 70,243,186,168,203,189,243,136, 19,156, 26, 76, 85, 4,196,235,146,129, 14,206, 85, 43, 6,212, 64, 50, +246,103,168,232,146, 41,155,161,120, 91,213, 7,135, 22,139, 54,173, 78,241,193, 84,222,218, 26, 78,162,177,169,189,165,206,228, + 86,137,139,160,163,214, 98,149,113,187, 21,248, 88,122,147, 75, 38, 94,114,234, 17, 7,115,172, 72,109,104,109,168,171,132, 20, +169,185,161,217, 32, 34, 57, 52,156, 43, 84, 21, 74,117,132, 20,200,106,151,121, 34, 82,165,124, 53,122,172,197, 88,240,197,155, +186,183, 22, 19, 26,181, 70, 11,245,149,141,193, 45, 79,214,166, 80,231,153,195, 52,227, 37,112,125,241, 37,219, 62,176,234, 54, +220,121,176, 33,250,153,139,103, 47, 40,179,210, 42,164,109, 79,215, 37,198,195,200,243,171, 47,185, 57,238, 77, 3, 80, 61, 77, + 27,181, 21,142,227,204, 95,250,151,255, 10,127,227,223,250, 29,254,227,255,232, 63,225,191,254,239,223,228,223,248,221,223,160, +205, 47,237,178,242, 43,132,202,122,115,202,155,111,158,177, 93,117,108,182, 91,250,205,134, 62,117, 4, 47,172,214,103,220, 59, + 59, 33,117,194, 60, 52, 66,100,201,225,246,140, 83,195,213, 21,226,102,110, 14,141,243, 7,111,113,156, 47,248,228,243, 79, 57, +142,123,186,126, 75, 20, 37,172, 34,226, 58, 98, 93,146,238,216,224, 41, 92, 29, 39,168,158,211,221, 57,234,205,215, 61, 28, 54, + 28,143, 55, 12,243,180,224, 44,141,182,213,128,205,106, 69,153, 27,167,247,206,113, 17, 43, 19, 23,123,204,219,239, 60, 32,120, +225,201,103, 7,162,143,132, 24,160, 54,106,221,115,125, 24,184,222,103,118,222,115,186, 90,179,223,239,153,139,210,175,122, 54, +221,134,195,245,136, 56,115,110,136,150,197,146, 9, 97,233, 88,231, 86,209,234, 76, 8,154, 26, 14,191, 28, 47, 14, 9, 11, 97, +176, 42, 42,142, 16, 5,173,246, 60, 22, 39, 84, 10,222, 41,201,153,112,165, 41,212, 24, 73,177,227,252,206, 57, 95,127,252, 14, +194, 53,211,116, 96, 62,238, 9, 10,153, 76,155, 28,104,102, 63, 93,161, 62,161,185, 49,187,138, 82, 81, 81,124,234,201,135,103, + 84,173,116, 97,101, 97, 36,197, 67,202, 54, 61, 19, 1, 2,213, 45, 93,103,243, 76,181,224,196, 19,154, 50,140, 25,226,140,239, +182,104, 25,137,209,132,157, 78, 61,121,174,220,204,123,242, 58,115,190, 59,101, 32,115,249,242, 11,226,133,227,108,123,138,119, + 17,200, 86,176,228,189,237,255,101, 77,194,155,127,127, 54, 81,102,220,217,212,199, 35,196,206, 47,171,141, 64,201,182,199, 68, + 29,111,220,127,131, 63,251,225, 59, 60,184,151,104,206, 51, 31, 70,194, 90,105, 67,195,249, 1,239, 2,119, 79, 87,108,210, 76, +222,143, 92, 92, 29, 73, 93,194, 15, 35, 63,254,222,199, 12,242,136,205,170,163,181,153,169, 78,228, 22,236,119,132, 80,230, 72, +214, 3, 94,130,141,207, 39,243,249,151,228,128,132,164, 66, 43,166,159, 17,175,196,149,167, 19, 33,207,129,178, 63,226, 66,197, +151,206, 28, 0, 49,162, 90,168, 46, 27,222, 55, 66,161,210, 37,193, 31,148,161, 22,124,216,154, 18, 94,102,146,223,144, 91,227, +112,172, 4,233,205,198, 43,129, 22, 65,114,198,109, 78,209, 92,200,243, 72, 73,158,208, 42,107,191,161,246,150,177,221,138,224, + 93, 36, 72,101, 82, 79,205,133,160, 17,223, 65,245, 66,118, 43,220,148,169,179,144,250,104,150,219, 90,140,203,224,154, 21,154, +152, 32, 80, 17,122,111, 86, 67,154, 16,131,195, 5,177, 46,240, 53, 80, 98,116,153,158, 42, 16, 92,120, 45,157,255,171,139,113, +153,134,134,232,241,225,117,126,221, 37, 32,212,128, 29,175,221,206,102, 96,155,130, 50, 67,173,203,207,209,152,114, 37,196,192, +161,152,112, 90, 66,134, 49, 51,207, 16,189,154,102, 36,230,197,142,171,180,125,128, 20,112,195,204, 88, 3,174, 57, 98,191, 1, +181,148,196,185, 40, 89, 70, 82,176,149,202,152,103,230, 32,168,172,144,146, 49, 14,236, 37,244,145,149, 95,113,231, 36, 18,236, +146, 50, 10,154,107, 88,174,249, 50,242, 86, 23, 64,218, 50,130,183, 49,180, 51, 37,140,137,224,154,163,184, 37,110,208,142, 74, +188, 51,241,156, 9, 88, 48,239, 57,246,249, 94,196, 84,142, 56,124,109,228, 10, 36,227, 50, 59, 28, 81,149, 64,179,124,118,183, +168,203,139, 67,164, 25,127,190,217,232,255,150,111,220,100, 17,185, 57, 90, 7,173, 37, 0, 0, 32, 0, 73, 68, 65, 84,181,128, + 17, 85, 43, 56,170, 41,207, 99,180,197,126,203, 74,231, 29,109,174, 11, 1,206,212,242,165,154,216,207, 97, 48, 20, 22,171,157, + 69,189, 58, 84,138,141,249, 67,162,169,225,116, 53,204, 84,111, 12,102, 95,149, 37, 6,198, 58,241, 86,109, 20,182, 0, 92,154, +131, 64, 38,164, 14,167,112,117,189,231, 48,102,130, 83,142,195, 5,191,248,197,145,211,237, 29, 30,127,248, 29, 86,238, 72,144, + 45, 58, 93,113,117,179,103,183, 10, 92, 13,151,212,234,168,217, 83,202, 18,153, 42, 48,205, 51, 89, 39,136,107,126,235,207,255, + 26,143,238,157,240,239,254,219,255, 42,255,233,223,252, 47,249,230,215,223,227,215, 62,188, 99,233, 64, 82,145, 84,248, 31,254, +187,255,133, 31,254,236, 37,247, 31, 60, 98,189, 53, 59, 93,136,107, 86,155,196,157,237, 25,221, 18, 80, 83,251, 98,114,200, 34, + 72,128,121,170, 56,169, 22, 57,171, 6, 5, 9,113,203,201, 54,146,107,101,179,181, 9,135, 91,121,218,156, 23,123,160,141,123, +178,192,102,221,211,170,163, 95,119,172, 86, 43, 27,251,215,130,211,198, 48,205,212,150, 49,183,124,228,249,151, 95,240,236,249, + 5,105,189,226,237,199,239,194,152,185, 57, 94, 50,251,138,235, 18, 15,239,156,112,117,145,201,211,115, 66,178, 32, 19,239, 29, +195,254,200,241,250, 96, 29,137, 4,174, 15, 19,215,215, 19,253,122,205,170,235, 89,199,192,254,230,200, 84, 50,226,155, 41,162, + 39,187,148,235,162,139,208,220,150,199,123,217,125,234,226,149,149, 37,157,173,154,164, 92,212,224, 73, 86,213, 89, 65, 27,128, +154, 71,242, 56,146,250,142, 20,207,241,221, 41,111, 63,234,185,247,224, 46, 77, 60, 92,239, 57,212,153,218,138,209,252, 98,230, +152,149, 82, 38, 52, 66, 26,109, 87,236,113,244,226, 56,204,133,185, 57,166, 97, 38,172, 35, 85, 11, 45,219,120,182,238, 51,116, + 51, 97,115,102,174,138, 58,155,248, 72,108,196, 14, 19,179, 78, 52,241,104, 52,155, 99,151, 18, 55,199,198, 92,192,197, 53,165, +236, 25,166,202,172, 71,106,131,221,157,173,117,226,173,112,177,191,198,187,136,211, 70,148,196,132, 5, 16,137,131,216,203, 2, +125,170, 64, 96, 60, 78,102,223, 36, 82,202, 13,186,240,253,155,206,196,212,177,222,221,231,219,223,254,128,135,119, 2, 53, 15, + 72,218, 17,182,137, 58,220,144,186,200,144,143,228,185,210,110, 10,171, 62,176,125, 99, 71, 19,229,120,113,205, 71, 63,249,152, + 47,158, 28,120,240,174, 48, 99,232,205,117,234, 25, 71,139, 96,106,100,122,167,168, 70, 32,226, 36,227, 26,116,201,227, 74,164, +137,169,248,171, 11, 86, 4,151, 6,117, 79, 76,145, 90, 12, 77, 85,115,163, 53, 76,172,234, 2,209, 37,114,206,136,175,144, 61, + 85, 6, 52,158, 32,201, 17,202,132,182,202,218,217,128, 86,104,196,148, 8,106,209, 79, 69, 10,171,174, 67,139,167,232, 1, 61, + 14,148,176,195,215,105,193,180,122,142,211,136,204,214, 73, 55, 95, 64, 51,181,118, 36,105, 16, 3,197, 9,122, 44,172, 59,133, +212,113,116, 19,147,203, 72,117, 4, 85, 92,178, 29,188,163, 17,156, 32,165, 34, 62,217,185,218,204, 50,167,162,148,232,232,220, + 98, 21,126,141, 93,175, 69, 39,155,254,228,245,229,145,155, 32, 59,152,125,228, 53,195, 97,108, 77, 17,156, 55,129,215,107,124, +155,155,157,143, 65,148, 44,144,197, 40,167,177, 69,219, 41,104,193,175, 61,189, 58,142,162,248, 58, 35,181, 48,212,129, 92,215, +108, 54, 29,109, 62,208,218, 4, 98, 9,140,204, 7,138,243,224,143,180,220,168,179,163,134, 70,114, 27,114,174,116, 65,152, 21, + 43, 16,226,113,185,183,122, 40,153,166, 35, 69,132,126,115,138,127,240,232,141,223, 67,219, 34,114, 91,174,102, 23, 32, 57,164, +222,238, 24,150,252,239,101,203,232,196,198,129, 62,121,115,248,139,224, 2, 54, 98, 8,182,191, 54, 75,155,121,239, 4,135, 19, +143,119,138, 95,176,178,186,140,204,157, 46,140, 2,220, 2, 65,176,104, 82,109,166,252,101,193,119,130,217,224,104,106,188,234, + 80,173, 94,119,118,144,208,254, 68, 2,156,115,248,206,219, 5, 83, 44,215,214, 56,181,205, 4, 50, 46, 44,158,198,219,157, 73, + 88, 18,202, 44, 81,203,133, 64, 90,212,251,117, 33,198, 53, 95, 80, 39,139,133,105, 65,216, 86,204,215,237, 29, 18,189, 41, 93, +197, 49,151, 74,117, 86,213,182, 37, 21,206,185,202,211,207,159,241,236,197, 53, 62, 58, 78,118,231,156,173, 31,208,218,132,234, +192, 73, 92, 33,234, 97, 30,169,170,164,212,113, 60, 76, 72, 80,124,232, 56,204, 35,243, 92, 88,175, 79, 8, 41, 45, 54,156,153, +171,195,145,127,230,215,255, 28,239,255,202, 91,140,151,207,249,175,254,214,223,230, 47,252,214,111,178, 91, 69, 82, 90,241,195, +239,254,136,255,236, 63,255,111,200, 97,197,118,187, 38,198, 53,235,179, 29, 15, 79,239,112,114,122,143, 62,118,172, 87,119,108, +135,167, 10, 49,208,197, 21,173, 20, 35,168,137, 51, 87, 64,241,108,214, 15,145,122,224,197,211,207,241,225,132,243, 7,111,154, +166, 65, 3,226, 2,109,177, 27, 74, 19,144, 14,159, 2, 93,151, 8,189,103,219, 71,166, 92, 64, 3, 49,117,248, 85, 36,117, 61, + 15,238,159,243,224,238, 93,190,253,237,175,241,222,219, 15,184,188,154,120,248,198,125,198,121, 79,109,153,214, 60,121,158,120, +250,244, 37,159,127,250,140,225,184,103,127,125, 99, 94,241, 98,185,226,235, 77,207,163, 55, 31,113,216,143, 52,205,244,171, 21, +181,121,130,135,245,106,197,156,103,210, 42,146,194,114,104, 59,243, 13,123,181,200, 83, 83,109,203,171, 64, 33,241, 86, 45,186, +206,227,212,225,177,120, 94, 17,219,154,106, 83,188, 40, 97, 73, 47, 20,103,249,231, 78,133,232,123,250,245,154,179,243, 29,247, +183, 59, 70, 45, 28,175,175, 25,181,226, 59,200,199, 3,109, 46,204,146,209,197,130, 85,106,198,135,255,135,182, 55,251,217, 44, + 93,239,179,174,251,153,214, 90,239,251,141, 53,116,119,245,220,187,123, 15,246,182, 29, 27, 59, 78,136, 29, 12, 73, 8, 81,144, + 37, 44,132,132,196, 25,199, 8, 33,132, 34,229, 0, 41,127, 0, 39, 28,240, 15, 16, 14, 16, 39,136, 0, 10, 4, 98, 99, 67,148, + 96,236,108,199, 99,188, 71,247, 92,213, 53,125,195, 59,172,245, 76, 55, 7,247,170, 50,226, 0, 33,165,220,210,214,150, 90, 91, +187,190,170,250,190,247,121,158,251,254,253,174, 43, 17,124,180, 0,164, 79, 28,110,111, 89,142, 59, 78,166, 13,170,129,146, 59, +221, 53,186,216,197,212,187,132, 23, 71, 84, 71,107,246, 58,243,109, 71,106,207, 56,148,138,170, 99, 51, 94,224,227, 6, 56,114, +123,253,152,221,254, 96,191,135,124, 52,110,131,247,204,121,230, 56, 55,180, 41, 49, 57, 82, 26,240, 18,209, 94, 44,196, 21, 55, +136, 90,238,193,201, 11,168, 81, 66,240, 44,189,217,170, 64, 42,186,190, 44,130, 55, 61,234,233,230,130,175,191,243, 33, 63,251, + 51, 31, 50,109, 6,150, 93,161,177,152,145,173, 41, 75, 41, 28,218, 66,185,186,229, 56, 87,230,172,180,154,241,146,249,238,159, +124,193,199, 15,111, 24, 46, 94, 39,197, 17,233,144, 38, 71, 74, 9,233,118,233, 4,144,168, 12, 65,104,210,104,117, 96, 76,145, +105,154, 0, 79,213, 29,158,192,228,170,213,200, 94,242,191, 59,110,113,204,174,219,115,174, 29,169,106, 93,247, 10,244,185,153, +149,145, 64,211,142,107,144,139,233,118,189,179,116,123,113, 16,182,142,208, 26, 75, 22, 52, 84,194, 52, 64,235,148,158,209, 96, +220, 4, 45,107,182,192, 21,131,171,168, 18,233, 36, 23,233,169,211,186,224,153,144,120,100,220, 52, 12,137,224,153,162, 49,227, + 75, 83,130, 40, 75, 7,167,142,136,208,162, 39, 34,248, 24,192,187,151, 59, 96, 69,236,243,199,121,130, 15,196, 16,185,115,247, +130,205,171,176,179,173, 22,181, 86, 11,131,119, 76,219,233,149, 17,217,142, 75,165, 46, 11,211,240,234,172,111, 38,114, 49,157, +235,178, 44,108,166,240, 74, 44,117,255,111, 13,237,227,231, 51,135,171,167,148,188,179,246,132, 4,202,210, 40,197,234,143,189, + 43,245, 8,157,136,120, 33,183,206,210, 26, 18, 6, 92, 25,205,204,232,102,230, 5,154, 8, 65,130,105, 89,203, 45, 58, 57,198, +109, 34,208, 81,153,104,165, 51,210,240,174, 18,186,153,119, 11,130,139,142,228,148,216, 61, 91,132,127,233,235,247,240,247,238, +222,251, 59,246,218, 93, 75,254, 98,251,159,222,186,133,194,212,161,110,229,187,175, 73,116,231,156,109,195,157,137, 87,252,106, +191,145,254, 34, 81,110,243, 15,197,108, 66, 86,181, 88,255,253, 58,216,236, 65, 94,214, 0, 76, 45,104,246,166,214,214,208,222, + 26,174,107,235, 10,192,173,155,119,113,240, 34, 59,135,183, 3,190,171, 5, 83,172,150, 7,193,123, 68, 34, 62, 24, 83,219,252, +224, 74,243,130, 11,198, 74, 86, 20, 17, 83,132,118, 21,188,183, 67,222, 39,103,154, 72,111, 41, 87, 26,184,232,112,218,108, 12, +235, 60, 78, 59,165,218,110, 91,181,211,106,195,249,128, 11,194, 24,116,221,181, 43, 97,237,209, 35,194,224,148, 47, 62,125,200, +237, 92,217,158, 93,242,246,189,183,185,119,255, 1,219, 49,240,244,209,151, 60,126,252,144,153,140,138,245,142,147, 75,148,126, + 64,196,179,217, 78,180,124, 32, 55, 91,101,108, 54, 19,199, 37,243,111,255, 59,255, 30,251, 47,191,203, 31, 63, 58,240, 23,126, +230, 91,252,216, 71,239,242,123,223,249,109,254,232,147,231,252,194, 95,248, 25,188, 54,254,238,127,249, 63,112,189,135, 59,119, + 78, 73,241,132,237,116,193,249,233,134,211, 77, 36,110, 60,225,244,148,160, 19, 50,216, 56,222, 59, 24, 93, 52, 17,208, 16,209, +144,200,185,131, 87,206, 78, 47,201,135,107,114, 59,218,215,112,187,231,112,125, 69,111, 7, 51,193,169,129, 50,146,143,108, 46, +238, 49,158,156,226, 37, 49,196, 19, 68,141,211,174,177,145,134,129,237,184,193, 75,231,206,197, 9,239, 60,184,203,183,191,254, + 77,126,241, 95,254,113,156, 11, 60,253,242, 9, 55,215,207,232,222, 49, 68,143,147, 70, 41,205,194, 42, 49,226, 71,139, 72,230, +214, 16,113,156,156,140,252,245,127,229,103,120,242,213, 21,215,115,225,244,116,195,241,104,187,198, 33,216, 55,230, 71,239,126, +141, 52, 78,124,245,232,137,141,228,156,231, 37,231, 42,216,223,163, 15,206,212,194,193,173,225, 47, 97,240,142,232,237, 85,223, +197, 64, 31,126,237, 28,139, 23, 90,171,150, 73, 9, 17,130, 80,143, 7,188,118, 94,123,227, 14, 58,120, 92, 89,184, 89, 14,104, + 62,210, 74, 38,171,216, 26, 96,240,196, 6,147,159,236, 34, 65,163,162, 84, 87,241,226,184,190,121, 98,166, 64,159,104,189, 83, +157,224,188,183,195,219, 71,150, 60, 19, 52, 51,164, 35,155,212,216,186, 91,238,142, 71,168,149,171,217, 16,174, 73, 78,136, 94, + 57, 30,111,184,189,126, 66, 94, 14,235,222,215, 20,171,189,219,106, 72,123, 35,183, 66,206, 21,167,209, 90, 31,221, 38, 47,151, +155, 75, 54,103, 39,244, 82, 86, 32,137,193, 61,124, 24,240,206,190,215,157,116, 68,138,249, 17,154, 50,166,137,119,223,127,151, +143,126,252, 45,238,158, 15, 4,175, 16, 7, 66, 21, 27,209, 15, 66, 61,236,169,173,208,155,163,123, 97, 68, 56, 30,103,126,248, +201,103,136, 75,252,216,183, 63, 96, 57, 2, 58,216,207,127,114,244,172,108,226, 64,150, 2, 52,130, 14, 44,125, 65,213, 96, 37, +154,196,124, 3, 52,130,235,248, 14,139,218,228,176,101,251, 92,147, 22,112, 4,156,247, 56, 47,212, 94, 17, 31,128,133, 54, 91, +251,193,181, 74,118, 86,207,213, 94,145, 20, 94,110,123,147,155,112,201, 49,186, 83,186, 95, 39, 57, 78,144,210,113,154,172, 13, +227, 59,193, 25,191,157, 94,241, 93, 24, 24,240,154,112,174,211,210, 64,216, 12,180, 89,241, 33, 83,123,162, 57, 91,177,164,232, +201, 81,215,252, 80,164, 20,197,111, 70, 38,177,105,154, 75,230, 75,183,139,166,125,166,234, 58,113, 18, 28,193, 5,156,115,140, +105,226,242,206, 57,195,248, 47,174, 26,205, 77,201,115,161,151,182,122,212, 95,141,190,180, 43, 28,143, 25,109,149,113, 72,175, + 44, 81,111, 23, 17,229,120,152,169,101,225,116, 51,188, 50,247,251,255,243,162,115,245,228,192,113,255,156,222,102,131,177, 85, +165, 99, 65,236,118,108, 12, 61, 82, 60,228, 58, 83,143,217,130,147,113,100, 76,157,228, 26,210, 50,115,142,196,224,216, 14,202, +172,145,113,172,216,216, 52, 34,185,145,197,254,255,122, 85,106, 43,228,222,216,132, 97, 85,188,118, 6, 39,248,173,141,227, 47, + 70,199, 79,254,212, 61,130,115,242,114,196,168,226,208,117, 71, 78, 51,134, 56,172,251,195,149, 13, 92, 59, 72,171, 32,193, 20, +231, 43,185, 74, 21,186,211, 85,217,106,227, 73,123,164, 58,250, 90,255,121, 73, 65, 19,112,221,153, 49, 76, 89, 59,206,107, 97, +220, 89,127,154,110, 35, 81,135,199,169, 65,105,114,235,180,213,247,236, 68,112,205,104,120, 14,135,115,246,181, 52,109,212,214, + 25, 98,179, 91,189,122, 68, 10,109,189,140, 72,215,151, 66, 4,239,131, 5,184,164,217,107,221,121,235,164,186,246,114,156, 21, + 67, 34,183,138,119, 16,165, 34, 26, 17,245, 56,201,168,152, 27,218,187,181,155,161,142,174,158,228,160, 8, 56,121, 89, 80, 98, +110, 11,199,106,154,217, 59,103,103, 92,223, 92,211,186,231,217,245,231,140, 23,119, 25,123,225,203,167, 79,217, 78, 9,196,115, + 51, 31, 89, 74,103, 60,137,148, 54, 91, 31, 24, 33,247, 25, 63, 43, 62,108,248,133, 95,250, 5,126,229,175,254, 24,255,209,223, +249,207,249,213,111,126,139, 95,249, 55,126,154,255,240, 63,248,247,249,219,255,233,127,198,127,252,183,127,196, 79,127,227, 67, +126,244,108,225,244,254, 3, 46, 46, 2, 67, 24, 56, 25,206,241,211,192, 52, 69, 54, 23, 27, 66,186,132,101,207,237, 12,101, 78, +184,184, 97, 26, 34,238,201,158,205,216,185,157,149, 49, 70, 52, 44, 84,119, 68,182, 35,167,121,195,237,241,134,229, 80,169,181, +176,204,199, 53,188, 56,218,237, 59, 64,216, 95,179,185, 60,199,251, 64, 40, 30,231, 19,103,219,115,222,121,240, 22,163,155, 73, +186,227,226,252, 62, 63,243,231, 62,226,157,119,222,225,247,190,243, 5,127,248,189,103,108,210, 41,110, 12,156,115,142,248,100, +220,128, 33,162, 52,131, 58,172,235,128,158, 60, 1,147, 87,188,245,206, 37,191,248, 75, 31,240, 71,127,252,207,249,193,167, 51, +125, 76,120, 81,170, 8,135,158,105,206, 49,157,111,121,231,107,111,241,232,209,151, 60,123,254,204,148,190, 81,137, 46,161, 77, +105,171,202, 55,183, 6,165, 91,142,170, 11, 21, 51,183,105,181, 80,103, 91, 87, 64, 29,197,251,142, 31, 34, 78,147, 5,159,176, +196,252, 91,239,191,201, 27,175,221,227,112,115,195, 33,103,198, 52, 34, 53, 83, 74,225, 44,140,100,215, 41, 57,211, 82, 96,174, +130,119, 3,189, 30, 81,109,108, 83,224,250,233,115,250,156, 57, 57,191,160, 22,163,219,121,169,140,189,179, 29,133,206, 72,161, +243,250,230,154,251,119, 6, 54,195,145,216, 29,187,162, 60,187, 53,201, 80,242,129,210,118,244, 44,148, 58,179,212,106, 43, 36, +215,240,222,228, 48,181, 44, 4, 31,236, 34, 47,130,107,158,219,219, 27,252, 30, 78, 54,118,120,237,118,207,184,127,231, 62, 39, +247,239,240,240,106,207, 97, 46,235,132,171, 26,248, 34, 96,215, 17,137,168,183, 52,246, 91,175,191,207, 79,127,235,109, 46, 46, + 18, 55, 79, 43,103,247, 60, 18, 23,230,221, 74,188, 91, 20,217, 70,100,134, 65, 20,223, 59, 87,249,192, 15,127,240, 25,115,203, +252,187,255,214, 95,230,217,243,133,239,150,143, 25,182, 30,233,142, 54, 47,224, 2, 59,215,217,229,140, 95,178, 41, 71,101,131, +140, 21,239, 50, 61, 59,170, 75,140,234, 8,155,137,195,124,164, 46, 66,243,197,250,247, 53,209,123,161,185, 78,170, 3,105,236, + 84,167, 52,201,132,110, 76,119,175,158,230, 11,163,116, 22,133, 57, 87, 18, 35, 33, 41, 62,138,137,125,196, 83,186, 89, 27, 55, + 9, 42, 1,233,149, 34,217,252, 24,106,144,171,216, 23,130, 31, 89,122,161, 6,161,123,207,102,244,248,193, 49,223, 20,122, 40, +248,237,128,204,138,175,202,110,206,180, 75, 97,100,192, 31, 51, 50,116, 52, 68, 70,173,224, 3, 42, 66, 90,181,181, 37,119,124, + 18,251, 59, 24, 18,189,205,182, 54,244,138, 74, 71, 93, 39,134, 87, 55, 38,183,199, 73, 35,198, 87,184,247, 94,169,117,214,197, +123,181, 92,246, 86,117, 37,134, 26, 28,252, 85,255, 83, 58,228, 90,168,189,161,193, 17, 26, 20, 87, 81,129,228, 61,234, 29,251, + 93,103, 89,236,209, 87, 91, 38, 13, 27,188,131,165, 20,150,220,112, 33, 65,115,180,229, 10, 9, 27, 36, 31,240,222,206, 56, 87, +138,237,220,163, 67,187, 18, 82,163,169, 39,166,192,162,157, 54, 43,219, 49,145,186,160, 75,197,135, 1, 92, 37,110, 54, 38, 35, +244,205, 27, 34, 86,116,117, 69,123, 83,255,169,173,225, 45,152,236,193,117,196,173, 17,249, 94,233,213, 27, 7, 90,133,246,226, +181,191,178,130,169, 86, 59,211,210,237,155,172,219, 77, 83,214,241,184,243,160,213, 96, 23,186,166,205,155,179, 52,187, 83, 65, +124, 48,175,185,183,215, 64,117, 70,244,162,217, 37,194, 57,197, 75,160, 52, 53, 11, 84,183, 31, 38,239, 34,181, 53, 90,233, 36, + 63, 50,121, 79,238,246,170, 82, 53,121, 64, 20,155, 64,148,185,173,140,121,183,134, 0, 13,104, 35, 93, 73, 42,180,168,168,131, +177,123,178, 54,170, 88,237,172, 35, 36, 63, 32, 78, 13,225,231, 28, 13,171,228,149,110,116, 49, 31, 35, 56, 72,221,246,206,183, + 87,207,217, 31, 50, 33, 88,199, 83,180,114,249,218, 37, 23,247, 18, 31,255,232,115,206,239,188,206, 38,236,152,151, 76, 10,142, + 16, 10,234, 60,155,176, 69,151,106,214, 56, 81, 92, 21, 14,203,145,179,215,239,178, 57,241,124,248,206, 55,248,149,127,253,175, +243,155,255,215,239,114,245,249, 15,184,255,230, 27,252, 39,127,235,111,241,127,252,218,175,241,171,191,241, 91,220,121,240, 14, +155,187, 35,103,227, 41,155, 52,112,113,121,134, 11, 91,182, 39,155, 21, 98, 49,209,183,142,205,118,100,206, 27,164, 69, 14,203, +158,147,139,145,141,116,252, 4, 23,119,224, 56, 63,165,104, 97, 58,142,220,244,247, 25, 46,246,176,189,229,121,110,228,126, 75, +221,207,180, 92,193, 43,199, 37, 19, 14,123,150,101, 49,255,251,232,105, 45,115,125, 59,114,245,244, 25,175, 63,120,147,191,242, + 23, 63,228, 47,253,252,187,184, 56,160,115, 34, 12,137, 63,254,157, 31,240,248,209,115, 92,244,140,155,209, 94,146, 26,232, 90, + 89, 68,112, 27,187,224,233,161,216,223,213, 0,211, 48,242,141,247,222, 98,136,129,119,223,188,143,212,239,115,243,252, 6, 23, + 71, 27, 17,183, 70, 82,229,201,147, 39,188,246,214,125, 46,207,207,216, 95,221,208,112, 72,176,117, 83, 92, 43, 90,133, 78,154, + 6,180,205, 4,231,172,154,217,133,170,153, 20,109, 4, 58,203, 64,173, 21,231, 18, 83,114,244, 26, 80,237,212,110, 97,203,119, +223,124,139,111,127,244, 33, 87, 87, 55,148,217, 17,207, 6, 30,156, 95,242,197,195,207, 86, 88, 83,102,211, 26,170, 71, 82, 87, + 28, 74,209,192,224,148, 55,134, 35, 93, 3, 95,238,175, 73,105,131, 75, 3, 61, 31,120, 99,211, 56, 29, 23,166, 65, 8,126,224, +121, 41,116, 26,111,159,121, 78,167,132, 87, 56, 82,184, 57, 86,110,179,167,118,199, 56, 6,230,249, 64,235, 1, 23, 12,173,234, +188,133,145, 68,160, 84,195,218,234,139,149, 90, 81,186,175,107, 8,211,115,187,219,179,217, 68,114, 3,158, 59, 78,167,129,243, +211, 9, 31,133,221,205,129,226, 7, 66,242, 72, 61, 26,252,165,219,229,252,181, 59, 95,227,103,127,238, 39,121,235, 93,161, 85, +165,207, 66,239, 9,230, 35,135,249, 26,239, 7,250, 65,216, 29,247, 72, 20, 11,223,121,165, 28, 51,207,159,239,248,203,191,248, +211,252,212, 79,125,196,223,251, 95,255, 41,205, 13,148, 58, 35,213,211,165, 19, 90,102, 95,140, 75, 95,154, 39,247,217, 30, 6, + 25,252, 16, 24, 70,101,147, 28, 57, 55,164,122,104, 1,109, 71,226, 16,113, 45, 18,165,163,147,183, 96, 90, 46,204,251, 35,226, +130,213,148,124, 68, 99, 94, 87,118,137,185, 24,251, 60,110, 38, 98,239,164, 24, 77,179,155, 76,102,210,235, 13,226,182,198,129, +167, 82,178, 71, 90, 38,156,108,237,227, 81, 59,163, 38,180, 22,136,110,173,116, 6, 6,159,200, 51,120,205,208, 59,135,171, 61, +206, 27, 89, 48,185, 0,117, 65, 98,131,205, 72, 8, 48, 22, 71, 28, 44, 37,174,179,192, 24,168, 20, 6,159, 8, 10,185, 54,196, + 47,171,134,115,165,123,246,181,174,151, 94,209, 78,189, 91, 53,216, 57,121,165, 33, 57, 85, 86, 44,185, 18,195,171,247,168,183, +214, 9,209, 33, 49,188,242, 67,189,230,142,182, 5,154, 34, 85,104,206,147,123,179,140,136, 15, 24,228,185,210,188,146,134, 4, + 65,240,109, 97,206, 74,207, 51, 67, 76, 22,172,237,152, 28, 44, 56, 74,175,228,110, 19,225,230, 65,124, 98, 88,148,154,102,188, +243,180, 93,165,199,129, 94, 51,201,159, 16, 84, 40,190, 32,125,100, 24, 11,119,183,224,167, 45, 65,212,232, 90,221,189,240,247, +177,118,187,141,236,246,130, 29,167,107,201,221,105, 39, 4, 71,235, 98,187,111, 58, 65,156,245, 68,213,250,177,226, 28, 26,250, +203,189,245, 11,102, 47, 42,107,181,196,110,103,138,163,151,102, 59,120, 53,225,132, 23,249,211,148,125,192, 18,201, 2,197,218, + 53,230, 0,199,244,171, 77,204, 52,165,206, 38, 8,104, 37, 73,124,121,128,171,131,170, 21, 23,213,148,174, 29,102,113, 84, 26, +177, 90, 2, 90, 66,176,223, 63,182, 92,245,222, 58,161,186,242,161,123,203,248,224, 25,196,198,252,234,192, 66,166,118, 81,241, + 43,141,200,137,101, 2, 52,120,178,118, 36, 87,124,140, 8, 22,140,219,207, 7,150,210, 24,182,194,114,189, 39,119,133,210, 24, +134,115, 82,252,132,165,205,156,157,108,121,120,125,196,197,200, 52, 58,242,110, 38, 58,195, 94,138,135, 80,131,145,244,186,114, +251,248, 43,254,251,191,255,191,113,249, 55,255, 85,202,213, 13, 63,248,253,223,228, 31,252,189, 31,178,185,251, 62,255,213,223, +253, 47,248,169, 31,251,144,223,249,189, 31,217, 14,172, 78, 76,211,192,120,122,202,233,201, 61,194, 52,113,172, 51,161, 70, 90, +104, 76,113, 68,210,150,131, 30,108,183, 81, 45, 40, 86,147, 82, 52,115,177, 61, 99,234,133, 71, 87,183, 72,235,156,142, 39,180, + 46,200,253,129,126,104, 28,107, 66,135, 76,174,149,232, 3,219,227,140,248,130,151,136,180, 68,113, 59,252,193, 81, 74,229,249, +243,199,228,195,158,143,223,191,228,151, 46,255, 6, 87,159,124,143,127,246, 7,191,203, 31,252,209,151,236,158,221,130,175,120, + 29, 88,178, 93,190,186,102,219, 24, 58,101,244, 9,146,146,177, 75,156,107,157,161, 22,174,159,222,242,189,239, 62,225,195,247, +239,178, 57,155, 56,204, 11,227, 90,107, 60, 22,197,143,158,253,205,115,158, 60,121,202,116,185,197,125,106,223,163,178,162, 80, +107,171,116,113,220,123,227, 62, 78,149,253,126, 54,232,146, 42,121,174, 4,133,190,234,123,253, 10, 96,161, 66,107,246, 51,208, +251, 26, 40,140,145,143,126,226, 39, 88,106,103,183,187,166,247,137,119,182, 23,184,250, 37,173, 53, 78, 82,227,193,120,195,249, + 48, 83,171, 55,183,193,168, 28, 23,207, 45, 91,134, 62,242,244,121,225, 56, 55,210,232,232,117,225,235,151,202,131,123,141, 52, + 36,118, 59,101, 41,194,137,207,188,126, 71, 56, 59, 31, 25, 90,100, 41,138,204,149,177, 55, 14,181, 80,107, 36,116, 71,148, 9, +124,163,180,108, 21,194, 33,216,215,218,157,173,166,186,174,118, 44,251,126,222, 31,246,248, 20, 25,199, 19, 84,149,171,219, 3, +211, 96, 41,248,185,206, 92, 4,225,245,179,215, 56, 30, 22, 91,134, 53,181,241,155,170,153,234,166, 55,120,255,131,111,243,209, +215, 47,233,204,168, 91,240,177, 50, 4, 69,250, 41, 12,123,110,123,166,133,132,243, 88, 61,107,236, 28,247,153, 63,252,193,231, + 92,188,118,135,159,255,249, 31,231,176,191, 97,119, 56, 18, 86,182, 64,165, 17,187,146,129,145,200, 81, 10, 77, 60,113,112, 6, + 96, 41,102, 95,116,125, 64, 37,163,120,142,199, 35, 16,137, 39, 39,182, 55, 95, 26,226, 26, 44, 14, 25, 18,117,104,180,131,224, +187, 33,122,155,171,244,210, 73, 62,112,104,149, 74, 96,244,158, 33, 88, 86,166,181, 78,215,132, 59, 86, 92, 0,167,145,226, 58, +117,238,132, 46, 22, 29,140,163, 1, 65,196, 26, 60,183,192, 20, 60, 94, 61, 49, 64,165,179,223, 85, 11,201,249,194,137,159, 40, + 90,113,209,115,226, 78,169, 53,115, 20, 71,235,145,208, 27, 77, 35, 91,111, 43, 5,122, 35,166,200,140, 18, 93,160,176, 30,136, + 62, 64, 53,119,122,237, 13,215, 7, 82, 50, 9,151,151, 87,115, 0,183, 98,175, 77,186,190, 50,217,202,139,151,250,218,189,122, +165, 30,245, 23,133,243, 23, 60,251,248,103,112,168, 31,150, 78,201, 5,205, 11, 77,236, 51,100,116,193, 30, 10,162,112,104,184, +208, 25, 3,228,226, 16, 34,199,195,129, 92, 64, 79, 38, 92, 61, 50, 22,243, 50,180,182,176, 59,236,172, 74, 30, 55,200, 80,153, +170,144,143,160, 81, 76,197,188,183, 73, 73,223,173, 88,244, 77,167,132, 68,200,133,148,148,125,114,140, 83, 36,108, 71,130,115, + 14,183,250,137,251, 10,142,161, 89,183,181,118,227, 8, 55,237,166,154, 20, 59, 64,181,217,190, 88,125,167,174, 35,201,174,118, + 48,186,181, 79,240,210, 77,237, 28, 98,154, 48, 59,144,221, 11, 7,185,125,104,202, 75, 12,161, 82,155,221, 6, 21, 11, 4, 5, +137,232,218, 9,198,137, 17,172, 60,168,132,213, 27,189,142,154,154,190,236,166,182,214,137, 33, 90,232,165, 40, 51,149,208,220, +138,140,176,157,186,118,123,221, 75,240,102,222,146,149, 64,181,246,232, 17,240,105,245,181,119,171,242, 69, 49,207,123, 89, 95, +251,193, 89,135,222,108, 6,216,126,177, 98, 65,160, 20, 81, 76,254,210,112,184, 38, 28,111,231, 21,187, 27,152,123, 65,220,132, +246, 78,169, 7,182, 39, 19,187,121,230,108,155,224,153,145,213, 68,250,218,139,175,232,216,233, 13,164, 52,170, 20,132,138,116, +225, 55,126,245,215,121, 48,110,248,225,159,124,143,207, 30,126,133, 31, 70, 98,108,252,214,255,254,235,252,163, 95,255, 39,112, +186,161,235,194, 56,194,233,233, 57,211,230, 4,130,163,249,206, 70, 38,250,224,105, 78,169,181,145,119, 11,101,169,148,219,130, +246,130,247,224,157,103,148, 17,106,102,191, 44,244,178,160,227,137,213, 55,154, 99, 72,231,108,229, 22,189, 29,145,180, 33,166, + 3, 42, 16, 87, 25,144,120, 71, 16, 79,240, 91,218,169,210, 41,182,146,241,129,223,255,221,143,249,205,127,252,135, 60,251,234, + 11,190,243, 7,223, 39,207, 71,251,223,134,129,188,100, 19,232,120, 27, 35, 74,139, 68,241,132,210, 41,199,140,118,107, 38, 4, +132,221, 97,225,246,249,194,197,249, 41, 31, 63,127,198,135,239,221,229,123, 63,120,204, 38, 5,174,118, 71, 84, 32, 87, 33, 41, + 60,254,228, 11,246,203,145, 44, 74, 80,193,105, 51, 47, 65,176, 62,175,212,102,166, 43, 55, 16, 38,171, 39,198, 84,200,115,165, +148,134,139,142,162, 7,106,233,160, 13,231,162,245,219,155,225,149,223,124,240, 22,131, 36,118, 55, 79,240, 41,113,234, 27,223, +124,251,154,178,187, 97,210,196,137,159,185, 60,111,248, 52,208,178,103, 62, 54,170, 23,252,222,113,230, 50,121,231,249,189,231, + 87,156,140,157,247,238, 86,124, 56,242,254,155, 19, 42, 35, 83,235,184,212,201, 67,227,194, 5, 82, 40, 12, 77,232, 61,227, 21, +134,168,212,230,168,197,176,172, 85, 42, 93, 32,161, 84,157,217,156,159,225, 73,220,220, 92,219,196, 71,108,127,219,123,163, 82, +144, 22,108,157,160,208,231, 35, 26, 19, 93,224, 80, 20,159, 43,131, 75,228,165,177,121,253, 28, 39, 95,113,200, 7, 70,111,162, +145, 20, 2,221,193,107, 23, 39,188,255, 78,100,222, 63, 39,157,157, 34,199, 25,202,194,114,244,108, 78, 4, 77, 35,203,141,224, + 3,132, 41, 81,175,142,184, 33, 81,230,103,248, 56,240, 75,127,229,207,243,248,122,199,255,244, 15,126,131,219,188,181,214, 73, +237,140,105,132,190,144,231,198,144, 20, 41,208,251, 76,157, 29, 50, 68,220, 88, 40,121,161, 19,104, 75,176,245,153, 8,131,183, +215,209,146, 5, 55, 52,107,219,104, 65,218,128,215, 74, 26, 3, 75,177,190,113,201, 74,151, 45, 75,153, 9, 65, 9, 13,198,141, +133,229,180,219, 33,173, 99,163,205, 2,139,181, 67, 92,110,148,178,160,211, 57,190, 88,168,181,117, 8,174,162, 46, 66,236,180, + 54, 80,124, 36,248, 35, 33,158,210,242,140,107,198,214, 88,180, 50, 56, 79, 37, 25, 52, 41, 37, 82,235,184, 12, 21, 71,152, 26, +251, 34,120,132,224, 61,222,117,186,235,212, 38,184,232,169, 94, 9, 90,113,193,170,174,234,101,205, 67,192,144,162,133,233,254, + 69, 95,164, 47, 40,156,198, 27,229, 85,158,234,218, 45, 63,229, 2,182,178,125,133, 74, 84,181,217,190,241, 85,228,207, 96, 0, +239,204, 29,226,130,133,136,117,201, 28, 92, 69, 67,135, 14,199,158,145, 14,203,254,192,162,138,119,129, 52,122,114,222, 19,115, +196,169,227, 58, 47,104,243,200,102,130,186, 39, 68, 71,201, 71,144, 96,153,140,218,233, 23, 16,151, 17, 61, 46,120, 63,209,157, +195, 69, 33, 23,199, 64, 67,166, 1,109, 66,216, 15,180,147, 1, 85,103,234,213,186,146,220,220,250, 2,126, 33, 37, 17,173,244, + 2,120, 80, 39, 54,238,177,175, 25, 89,173, 64, 22, 72, 55,228,168,136,189,121,123, 53,224,140, 56,195,196, 74,208,181,247,238, + 95,218,218, 36, 8,174, 91,223,180,136,189,254, 67,233, 70,105,179,108, 61, 90,250, 74, 73,242,166,105, 13,238, 37,228, 70, 87, + 31,186, 52, 16, 23,240,218,112,209,246,111, 93, 87,204,173, 7,175, 1,239, 28,157, 78,233,213,124,233,201,170,108,173,219,239, +169, 24, 83, 7,113,202,146, 51,163,143,244, 23,138,215, 33, 18,213,126, 93,196, 51,244, 78, 17,251, 16,111,205,106,122, 47,152, +198,234,214,222,101,173,102, 38, 83, 79, 28,132,227,114,224,217,245, 30,113,230,254, 22,231,233,171,215,250,252,100,224,114,115, +201,211,167,159,112,123,112, 4,113,244,210,185, 89,102, 68, 59, 75, 61,162,183, 66, 43,121,205,233, 11,110, 74,120,159,184,119, +118,202,179, 63,249, 1,159, 63,217,179, 73, 3,243,162,244, 37,243, 95,255,183,255, 11,239, 63,248, 6, 31,188,118,151,186,204, +140,147, 39,134, 13, 41,120,194, 16,109,252, 95,214, 28,132, 23,114, 87, 6, 60, 18, 58,199, 33,208, 90,160,110, 42,245, 32,116, + 9, 60, 59, 60, 98,127,123, 13,195, 57,113, 60, 55,249,197,198,246,148, 83, 58, 67,101,164, 29,247, 68, 23,168, 61,211,125,166, + 46, 2, 45,227, 55,195,202, 18,159,145, 16, 25,147, 67,162, 64, 17,254,199,255,249, 31,114, 60,220, 48, 93,158, 17,124, 52,220, +172,108,232,221,209, 5,162, 15, 12, 82, 41,190, 33,205,147, 38,143,239,157,122, 91,232,213, 67, 18,106,232,108,238,223, 37, 73, +224,243, 47,158, 17, 92,103,154, 70,110,247, 71, 66, 76,208, 60,145, 66,218, 38,118,199, 35,249, 56, 51,132, 64, 87, 65, 37,145, + 6,199,118,147,136, 62,209,114, 97, 95, 43,173,117,244,160,108,206, 2, 90, 29,105, 60, 97, 60,219,146,181,241,236,217,151,212, +146, 81,111, 74,217,160,202,210, 11,105, 28,248,214, 55,126,140,237, 80, 41, 1,194,206,241,237,119,149, 59,103,215, 92,103,207, +131,115,101,240,133,190, 9, 4, 81, 32,178,153, 34,199, 93,163, 13, 51,147, 14,124,124,221,216,229,133,111,191,127,193,253, 83, +101,218,130,171, 66, 89, 26,120,225,226, 98,164, 22,225,208, 26,187, 92,240,218,137, 94, 41, 77,121,246,180,241,241,227,202,126, +134, 97, 10,228,117,250,180,244, 74, 91, 10,119, 79,207,144,181, 9,208,234,145,218,140, 83,239,186,195, 87,187,232, 53, 87,208, +172, 20, 10,162,157, 97,216,208,221,176, 22, 92,162,129, 92, 92,165,107, 68, 57,172, 24,233, 68,111,153, 97,115,198, 7,239,190, +198,105,188,226,152, 3,203, 67,251, 32, 59,208,249,226, 7,159,113,113,103,195,229,233,150,179,184,229,234,234, 9, 67,172,164, +147,129,135, 95, 62,225,147, 47, 31,243,222,123,239,242,254, 27,247,249,245, 95,251, 71,252,211,223,251,148,175,125,244,109, 84, + 51,162, 66,153, 11,157,194, 68,162,173, 14,121,149,133, 82, 11, 30,187,156, 79, 50, 24, 80, 74,236, 64, 36,119,156,102, 10, 74, +105, 5, 87, 7, 66,234,104, 20,194,208,105, 59,203, 17,136,235,212, 50, 27,251, 59,206, 56, 77,164,186, 80,105,148,218,200,165, + 16,100, 75, 10, 74,138,138,140,145,242,172,144,155,178, 9,137, 58,140, 84,205,140, 99,160, 83,241,217, 81,245,204,106,134,243, + 17,221,120,164,206,180, 99,160, 31, 51, 18, 51,226, 79,113, 45, 19,188,101,110,196, 59,118,173,145, 2,171, 80, 38,210,129,201, + 9,109,227,144,108, 15, 12,117,138, 20,177,207,235,214,104, 81, 9,147, 95,149,165, 6,212, 10,210,208,206,122,160,203, 43,123, + 81,187, 53,244,252, 42,199,239,165,118,122,171, 47,205,118,175,178, 67,222,170, 25, 71,221,139,140,215,171,246,168,151,140,214, +138,170, 71, 41,230,134, 40,149,232,148,214,117, 13,185,121,188, 68,224,192,210,133,193, 71, 54,113,194, 21, 7,161,160,131, 35, +202, 25,173, 95, 67,111, 4, 85,162, 27,169,181,114,123,216, 51,134,192,188,235, 20, 60, 97, 82,166,144, 76,109,172,209,248, 25, +177,225,123,160,119, 97,220, 8,219,177, 35,241, 14,161,244,110,120, 66, 89,255, 52, 92, 67,196,140, 79,182, 71,121, 33,184, 80, + 74,183,195,182,175,254, 93,239, 2, 42, 13, 87,215, 68,172, 88, 65,172,203,154, 20,238,188,244,162, 91,218,188, 90,175,212, 57, +243, 82,235, 74,129,235, 14,137,246,107,224, 28, 78, 59,235, 90,222, 28,230,232,154, 48,246,150,194,151,117,111,191,206, 89,156, + 98, 70,159,222,112,125,197,194, 70, 71,167,218, 88,222,121,180,234,159,238,252,187,174, 88,215,110,254,113,214,144, 94,247,150, +228, 15,142, 90,236,215, 73,193, 91, 8,170, 53,138,235, 86,209, 83,208, 86, 45,108, 23, 60,185, 67,200, 98, 99,124,111,243,249, +193, 5,170, 70,106, 46, 44,183,123,150,222, 9,105,160,245,204, 50, 55,130,100, 62,249,226, 79,248,112,243, 1,183,187, 43, 11, +190,120, 11, 17, 82, 11,181, 86, 8,166, 70,173,205, 40, 93, 1,143, 87,161, 86,101,152, 38,238,159, 93,242,197,211, 47, 57,178, + 55,180,175, 56,198,105,203,102, 76,148,118, 11,121,203,157,187,119,184,184,119,202,197,249, 37,231,211,150, 99,203,102, 18,146, +140,215,129, 72,129,193, 49, 8,140, 62, 49,156, 42, 79,158, 29,233,165,210,199, 72, 98,129,185,114,240,145,139,113,160, 19, 88, + 78, 60,142, 72,236,133,138,210, 70, 79,105,139,193, 88,106,164, 19,113, 27,161,215,145,222, 35,121, 46,224, 18, 90, 10,183,199, +138, 12, 14,149,198,243,135,215,108, 6,207,185,156, 83,213,154, 20,234, 29, 36,203,116,156,196, 13,169,207,220,212, 91,114,173, + 84,237,132, 96, 12, 2,145,145,174,153, 97,156,216, 29, 23, 30, 95, 29,248, 75, 63,247, 77,254,217,119, 62, 35,165,136,230, 74, +136,194,193, 43,185,128,111,205, 56,233, 39, 27, 30,188,249, 30, 63,250,225, 15,217,239,143,156,108,206,153, 54, 91,114,107, 6, + 75, 66, 16,108, 90, 81, 14,176, 59,206, 40, 71,196,117,206,239,188,206,241,112,205, 50, 31,232,173, 91,250,158, 70,237,133,159, +251,232,219,252,244, 71, 35, 27,247,125, 24, 19,251,189,240,222,219, 23,132, 82,217, 78, 55,100,183, 71, 11,244, 99,101, 9,142, +180,221, 96,142,144, 43, 36, 55, 90,159,120,122,243,152,203,169,242,206,253, 17,234, 17,105,129,216,204,135,224, 70, 79, 8,137, + 92,102,122,169,196, 14,207,110,149,160,112, 85, 11,255,252, 81,224,217, 97,131,151,108,218,217,245,194,172,181,178,219, 29, 17, + 73,140,120,104,197, 20,186, 42, 38,218,193, 28, 69,120,197,169,163, 80, 45, 56, 88, 23,196,121, 78, 47,182, 22,104,242,157,185, + 21,244,208, 24, 93, 96, 81, 79, 16, 59,200, 90,247,220, 61,123,143,187,119,238,208,251, 21, 44,240,228,234, 25, 78,132,167,251, +133,155,157,146,221,130,106, 37, 68,144, 1,106,113,168,102,110,119, 59,142, 71,229,237, 7, 3,183,187,175,168,173,114,121,118, +159, 24, 38,150,156,193, 21, 52,140,212, 93, 69,221,145,112,220,144,151, 61, 21, 75,254,242,194, 5,223, 22, 98, 22,212, 71,147, +202, 56,179, 86,117,132, 20, 18,210,187,173,206,106,176,240, 81, 84,100,137,120,215,232, 81,153,188, 99, 89, 12, 14,146, 17,122, +173,196, 35, 12, 67,162,133,138,147, 72,191, 17,218, 16,240,163,163, 45, 11, 89, 43,195, 48,217, 31,105,232,116, 73, 84, 33, 8, + 95,170, 0, 0, 32, 0, 73, 68, 65, 84, 55,211,231, 29,209, 15,182, 26,204,197,186,210,131, 35,149,194,161, 8,154, 58, 49,120, + 60,201, 18,211, 85, 8, 27,123,152,232, 18, 73,106,240,167,138,199, 87,155, 96, 70,133, 44,214, 84,152, 54,129,158,149, 42,142, +158, 61, 93, 42, 49, 36,164,121, 99,134,111,163, 81, 53, 95, 85,232,172, 53, 74,135, 41, 58, 91, 61,189,178,241,251, 58, 5,241, +193, 76,128,175, 16, 60,211, 91, 55,201, 77,144, 87,121, 95,120, 57,189,152,231, 74,161, 83,209,213,230, 41,244, 8,186, 56, 90, + 43, 20, 7, 69, 51, 67, 12,120,127,198,112, 20,202,124, 75,143,157,197, 57,150, 54,147,116, 68, 91,164,239,142,224, 77, 15,235, + 4,178,175,228,170, 6, 83,139, 30, 63,154,252,230,234, 80,172,253,144,187, 61,118,122, 64,202,192,152, 26,167, 37,241,198,217, + 4,195,134,160,107, 34, 93, 86,216,173, 39,130,118,148,106,220, 98,177,122,153, 95, 95,171,234,186,113,165, 49, 82, 83, 23, 59, +196, 17, 75,191,135,117, 4,111, 59, 59,187, 65,106, 87,188, 42, 90, 29, 4, 11,219,105,239,107,221,204, 94,248,189, 53,164,219, +171,183,170,117,166,131,120,219, 51, 4,135,215, 70, 95,247,255,182,168,239,168,120,156,216, 5, 64, 86,232,141,199,180,172, 68, +193, 53, 59,132, 91, 55,188,231, 16, 34, 34,197,234,169, 62, 16, 2,235,175, 99,255,205,250,234, 46,117,117, 75,247, 74, 41,138, +186,134, 15, 30,167,141, 42,127, 58,210,105,216, 95,132,198, 72,201, 74, 8,222, 80,183, 62, 49,231,142, 4,195, 42,238,247, 7, + 14,135, 3,138,103, 24, 18,251,253,115, 46,207, 46, 57, 30,111,248,131,223,255, 14,181, 22,238,221,249, 0, 45,183,184,114,100, + 81,163,103,133,120,202, 24, 19, 75,201,116,129, 92, 10, 78,133, 97, 72,108,134, 19, 78, 38,199,243, 92,185,185, 57,178,116,199, +112,114,201, 73, 28,185,126,246,136,231, 79, 31,242,240,209, 23,108,130,231,236,181,251,188,243,238, 7,188,121,247, 53,228,228, +132, 20, 29,219,105, 2, 31,232, 88,239,181,107,161,170,195,119,101, 59,101, 60, 19, 61, 43,195, 56,177,185,255, 77,222, 67,249, +209,199,223,165, 30, 3,149,136,143, 19,245,234,128,108, 51, 91,239, 57,248, 83,154,100, 35, 8, 14,137, 56,116,114,235, 28,230, + 66, 26, 28,170, 3,251,178, 88,208,181, 57,178, 55,150,246,233,230, 1,177,120,227,231,107, 92,195, 73,145,232, 70, 68, 43,199, +212, 9,135, 13, 33, 57,186,100,230, 82,145, 48, 49, 36, 5,157, 24, 79, 70,158, 63,125,198,231,159,126, 69,124,251,146,101,173, +249,196, 40,204,205,164, 23,121, 41,134, 83,244,157,225, 98,224,206,221, 51,174,111,206, 44, 23, 33,194,177, 44,200,210, 17,175, + 70, 93,235, 14,159, 18,113,115, 73, 58,105, 92, 95, 95,113,125,115,141,120, 37,109, 34, 91,189,228,217,163, 47,144, 21,118,244, +254, 27,151,252,181,191,250,179,188,119,127,161,151, 72,109,194,197,201, 29, 59, 92,229,128, 27,131,213,189,156, 18,123, 52, 51, +211,241, 6,188,199,215, 72,247,202,211, 67,225,102,158,121,239,193, 57,163,107, 84,215, 57, 30, 28,105, 18,134,104, 96,153, 86, + 14,180,146, 57,204,157, 93, 22,190,218, 55,118,123, 79,119, 91,142,205,227,250,142,222,205,150,102,253,179,202, 97, 62,114,172, + 71, 66,142,196, 62,154, 98,185, 8,226,219, 10,222,177,160,170,107,142,210, 26,221, 11, 90,161,119,171,235,105, 83, 19,245,108, + 60, 49,110,104, 77,168,174,224,157,229, 73,180,119, 36, 54, 46,238,143,108, 79, 34,174, 71,242,174,147,162,242,213, 85,230,217, +245, 45, 85,148,199, 55,157,222, 54,156, 36,199,249,249,192, 56, 38,126,247,123, 63,226,211,199,153,183,223,188,195,152, 60,215, + 79,159, 81,197,177, 61, 57,133, 96,212, 53,231, 71,218,188, 71,146, 85,240, 74, 40,248,226,161,111,193, 45, 20,109,248, 69,145, + 41,161,163, 3, 6, 27,153,183, 66,155, 34, 3, 9, 84, 89, 56,224, 90,196,233,200,241,118, 79, 26,133,153, 5,209,128,138, 35, + 54,143,196,153, 58,232,186,107,183,203,101,206,118,144,150,177, 33, 18, 72, 34,180, 32,140,109, 67,144,138,175,133,158, 58, 82, + 3, 78, 42,117,105, 12,120, 92,129, 57,218,138, 39,166,196,109,171,140,110, 67,240,149,160,134, 62,206, 89, 25,214,212, 64, 60, + 0, 91,144, 36,180,157,146, 78, 58,185, 90,144, 42,224,168,189, 16,170, 35, 56,161,228, 10,234, 25,221,202,201, 16,177,209,188, + 54,251, 68,205, 66, 12,227, 43, 26,145,219, 1,169,173, 89,240,238, 21,141,178, 21, 91,227, 54, 53,195,230,171, 36,190,189, 72, +213, 55,237,140,222, 35,175, 26, 60, 83, 49,177, 83,207,104,155,113, 62,114, 40,149, 29, 13,183, 52,150,185, 67, 4,223, 61,146, + 27, 42,133, 92,161,187,206,156, 43,219,148,104, 75,199,245, 10,163,163,199, 17,245,133,152,128, 30,173,234,184, 85,202, 98,134, +200, 45, 39,168,102,124,115, 72,143,180, 97,135,196,192,152, 59,199,114, 75, 28, 78,152, 54,158,241, 34, 0, 35,193,169, 5,226, + 4,135,118,104,107,191, 58,132,132,128,245, 56,157, 67,213,198,242,218, 42,222,219,168, 25, 85,180, 10,126, 48, 12, 44,152,220, +196, 14,109,183,250,100,205, 25,172,125, 61, 56,155, 85,146,116,173,199,121, 81,208,106, 0,147, 0,116,179, 96, 5,137, 72, 8, + 92, 94,156, 51, 12,142,229,112,195,205, 97,161,181,213, 33,174, 6,178, 49,175,184, 32,205,162,255, 46,120,170,107,107,101,238, + 5, 33, 12, 82, 84,122,183, 90,152,243, 70,190,243, 88, 45,165, 7,144, 20,113,221,227, 93,197, 87,172,195,190,186,222,107, 47, +160, 1,105, 13,231,132,236,186,165,242,187, 91, 31, 62,157,234, 58,226, 59,209,156,168,180, 96, 29,117,109, 66,235,182,223,239, +174, 34,125, 64,189,114,123,216, 17,131,144,155,240,198,107, 31,178,241,141, 79,175,174,104,186,210,239,214, 10, 94, 76,158,188, +207,212, 98, 58,217,232, 5, 55, 6, 78,182,145,165,205, 92, 31, 50,170, 13,231, 7,238,220,123, 27,157,111, 25, 37,177, 73, 39, + 92,149, 35,181, 43,122, 61, 50,125,241, 37,199,229,200,246,244, 62, 67,130, 97,123,202, 52, 25,226,179, 84, 91,161,228,155,163, + 93,144, 54, 35, 67, 18, 54, 39, 27,124,234, 72,128,187, 23,151, 32, 31,241,240,209,129,154, 29,109,242,248,225,130,105,232, 92, +237,111,240, 30,184, 41,244,152, 8,174,226, 73,140,147, 25,188,150,155, 27,114, 94,144, 20, 45, 41, 42, 66, 62,220,226,212, 91, +184,168, 41, 67,138,150,112,142, 27,180,117,130, 8,131,247,220,118, 51, 38,213,101, 38, 75,224,116, 60,161,236, 50, 89, 10, 39, + 46,178,245, 35,179, 15,156,223,123,131,207, 31,126, 6,181, 18, 84, 56,104, 32,183, 2,218, 12,104, 84, 58,103,219, 75, 62,120, +240, 54,127,242,233,199, 44,203,194,249,233, 22, 45, 22,254,204,222,204,122, 90, 27,185, 86,124,245,120,217, 49,158,156,208, 78, + 78,185,109,141,221,237, 30,113,129,209, 37,166,113, 67,173,123, 6,231,249,133,191,248,231,121,235,190, 18,218, 21,112,129,115, + 66, 11,247,184,122,246, 59,244,186, 35,164, 17,137,142,190, 84,170,108,225,133, 88,101,216,160,139, 16,198,200,243, 79, 22,134, + 0,111,190,249, 22, 97,255, 4,188,146, 67,231,201,109, 36, 53,207,205, 82,184,174,157,221, 34, 60,217, 37,118,205,122,226,218, +109,143,171,189,210,250,130, 95, 93,226,121,213,225, 82, 11,117, 41,180,100, 97, 57,137,206, 32, 71,109,253,249,117, 47,186,247, +129, 41,121,114,110,104, 40,150,122, 87,207, 60,207, 76,227,192,128, 85, 8,251,232, 9,155, 19,244,248, 28,145,110,202,147,238, +233, 42, 28,231, 25, 23, 26,187,118,224,241,149, 82, 14,217, 68, 37, 37, 48, 47,133,230, 21,231, 35, 31,127,249,132,249,176,240, + 39,159, 62,103,216,108,248,115,223,186,199,148, 60,173, 0,179,210,130,224,124, 96,144, 5,137,157,190,203, 44,174, 51,196,141, + 57,236,181, 82,189, 2, 5,223, 32,171,112,238, 29,222, 7, 68,141,243, 32,234,113,100,186, 83,170, 7, 45, 1,113,208,100, 33, + 40, 80,204,212,214,218, 66,147,196,210, 0,239,232, 55,153,232, 6,252, 4, 69, 61, 33, 0, 81, 40,185,179,149,142,239, 66,158, +103, 60,158,133,110,211,157, 49,176, 91, 22,156,131, 81, 28,105, 27,233,189,208, 23,197,199,201, 46,148,181, 64, 90,112,147, 71, +250, 13,180,173,241,224, 69,233, 12,244, 37, 51, 5, 97, 55, 31, 25, 91,192, 21,165,212,192, 52, 36, 91, 55,174, 14,132,165, 47, +140, 50,224,157,193,127,124, 52,181,179,116,140,159, 16,133,228, 29,225, 21, 85,207,230,102, 97, 82,131,140,188,218,189,119,111, +171,111,225, 21,115,217, 85, 49,117,120,111, 68, 31,254, 76, 16,177,173, 43,154, 51,173,175,172, 3, 23,136,116,186,216, 74,132, +172,244,122,228,166,102,170,111, 70,222,156,149, 40,142,161, 22,138, 15,168, 4, 60, 55,116,151,169, 69,241, 1, 68, 35,222, 55, + 92, 80,106,177,250,226,190, 45, 4, 45,184,164,184,214, 80,239, 89,118,133,192, 64,216, 2,181,178,212, 35, 66,178,169,144,240, + 34, 37,104,175, 76,100,117, 16, 11,150,238, 94, 69, 47, 43, 73,214,222,225,202, 42,226,120, 33,106,183, 80,194,203,174, 97, 87, +139,165,169,165,230, 29,198,137, 23,103,251,110,109,110,197,175,154, 9,170,183, 66,119, 21,237,206,186,180, 82, 17,237,164,233, +156, 59,111,188,206,217,208,153,119,158,246,217, 99,110,123, 3,204,222, 85,105, 43,174, 83,112, 81,104, 69, 13,237,105, 75, 0, + 75,216,171, 32, 93, 41,182, 59,192, 27, 22, 11, 80,102, 53,208,135,235,178,226,113, 51,210, 3,221, 57, 83,190,174,106,119,239, + 61,173,214, 85, 34, 99,223,219,185,170,165, 75,163,117,236, 67, 15,248, 44,232, 24,204,176,227, 3,174,219,101,227,222,107,175, +241,240,225, 99,158, 94, 31,214, 17,139, 82, 41,244,218, 8,227,134,214,247,124,241,244, 41, 57,103, 80,225,152,139,189, 30, 4, +116,110,180,185,173,126,122, 15, 40,135,227,204,220, 27,185, 64,157, 43,209,121,222,254,218,183,233,243, 53,251,122, 32,164, 13, +155,237, 5,143, 31, 62,198,159, 78,180, 80, 89, 92,224,226,244, 46,127,243,223,252,107, 60,252,236,135,124,250,232, 57, 65, 2, +185, 20,206, 46,206,185,253,234, 49,187,155,199, 60,122,250, 57,234, 54,220,187,115,194,131,123, 15, 56,185, 51,114,184, 90,248, +234,211, 79, 25,166,115,110,118, 79, 56, 30,110,201,143, 26,195,118,224, 52,221,225,152, 11,189,237,113,227,132,106, 69,116, 32, +249, 17,113, 11,149,202,174, 39,246,229, 96, 44,253,174,136, 44,156, 57, 72,231,119,241,201,126, 95,146, 48,232,199, 92,136, 18, +105,131,146,221,128,235,194,210, 50,219, 96,156,113,209, 70, 58, 17,146,110, 94, 74,154,211,144,120,227,181,187,124,185, 60,162, + 73, 39,164,137,190, 44, 80,149,224, 3,125, 4, 87, 59,151,119,207,200,181,114,253,244,136, 75,182,118,242,209,175,232,218,134, +180,132,136,112,122, 49, 65, 28, 88,110,247, 60,122,248, 5,209,143, 56, 55,161,249,150, 38, 51,195, 24, 57, 63, 57,103, 87, 60, + 95,187, 55,241,237, 15, 71,194,242,125,188, 27,108, 28,236, 46, 9,113, 15,245,154,219,167,157,105,112,164, 75, 32, 4,234,254, + 64, 62, 42,155,141, 25,208,186, 40,101, 63,241,201, 23,215,188,246,218, 25, 3, 98,200,199,131,114,123, 29,249,254,147,142, 50, + 49,183,200,145, 78,171,138,243, 1, 79,162,181,133,105,136, 28,187,218,135,122,242, 86,233, 44,213,210,251,173,145,243, 1,122, +161, 82, 8, 17,198,148,184, 89,172, 54, 19,253,250, 51,154, 2, 67,220,210,234,158, 90, 22,220, 24,236,231,211, 7,164,218,106, +170, 40,104,109,120, 17, 98,243,102, 42,116, 98,106, 88, 38, 82,169, 44,243,142, 62, 28,137, 67,224,250,240,156,249,250,192,233, + 40, 56, 13,148, 82,249,236,233, 21, 55,135,206, 97, 62,240,213,211, 35, 85, 60, 63,255, 19,111,112,118, 17,168,217, 17, 93,226, +238,105,228, 90, 35,243, 44,148, 86,241, 71,112, 62, 26,209, 77,132, 99, 86, 74,237,136,235,244, 22,241,100,226,152,144, 26,168, + 5,116,222,147,210, 72,143,141, 86,161, 4, 27,152,186, 26,144,168,232,146, 45,247, 50, 36,154,107,132, 42,208, 15, 84, 21,180, + 69,203, 98,123,165, 46,130,243, 16,135, 68,169, 74,162,210, 71,101,151,175,173,170,187,237,196, 18, 17, 55, 82,231,229,165,181, + 82,169,104, 78,184, 65,136,113,203, 54, 36, 22,157, 41,162, 56,201, 56, 61, 99, 62, 86,100, 56,144,206, 78,152,119,141, 33, 31, + 73,147,167,214,192, 32,194, 48, 37, 52, 26, 75, 67,157, 48,215,204,169, 31,204, 99, 95, 3,189, 67,138,198,194,104, 93,233,234, +140,217,225,148,212, 34, 61,192, 48,196, 87,118,128,149,218,232,194, 43,187, 40,152, 12,197, 40,127,171,171,243,213, 30,186,106, + 25, 46,165,191,114,244,236,139, 11, 73,174,149, 78, 99,144,198,161, 54, 90,114,132, 18, 41,131,226,103,165,116,101,118,130, 31, + 60,174,155,173,109, 78,224, 39,184,189, 61, 34, 64, 58, 59,165,149,192,221,205,192, 56,188,198,167,143, 31,210,229,150,224,134, +245, 66, 24,144,158,144,182, 24, 91,162, 10,153, 10,123, 91,139, 47, 73, 25,117,160, 83, 57,220, 30,104,199,211, 21,190, 38,158, +130, 29, 76, 47, 14,111,117, 74, 89, 42, 62, 68, 75,188,175,181, 23,145, 53,245,254,130, 3,223,108,167,208,170,174,135, 59,136, +154, 62, 83,165, 19,124, 91, 15,214,149,178,182,210,227,156,172,114,151,214, 76, 91, 25, 34,165, 23,179,220,200,154, 64, 87, 12, +244,176, 88,162,176, 46,139,201, 25,122, 71,130, 97, 95,253, 10,139,168, 43,129,206,121,219,153,171,130,171,182, 22, 8,235,142, +187,174,147, 2,143, 16, 28,171, 36,113,173, 31, 72, 39,106, 36,120, 40,205, 38, 7, 62,202,203,218, 29,226,137,226, 44,128,179, + 20,156,179,148, 49,222, 86, 4, 78,141, 66,167, 93,233, 75, 65,131, 81,246,154, 8,209, 85,210,102,226,131,247,222,103,247, 71, +127,204,178, 28, 24, 37, 90, 99, 0, 40,251, 91, 30,214, 25,223,197,114, 6,210,193,195,224, 45, 48,177,239,133,224, 18, 26,108, +143, 79,112,164,232, 73,125, 64,106,103, 94, 22,206,238,127,192,223,248,165,127,141,223,254, 39,255,144, 79,230, 61,219, 97,224, +201,213, 87,180, 30, 24,211,196,197, 48,113,122,182,229,151,127,249,151,249,137,175,191,205, 55,191,246, 14,251,227,204,126,183, +231,246, 56,243,181,247,222,227,211,239,253, 62,255,205,127,247,247, 89,230,206,156, 31,113, 56, 92,113,253,204, 46, 26, 15, 63, +255,156, 90, 58,151,119,238, 48,110,207,216,223, 62, 33,239, 51, 37, 41, 99, 56,225,124,123, 74,220,156,226,134,204,228, 59,135, +253, 13,199,179, 17,223, 43,173,154, 88, 39, 46,137,188,236,201,185,115,122, 18,217,108,238, 16,211,136,182, 74,247,157,227, 30, +134,193,136,105,201, 9, 18, 3, 75, 62, 48,169, 35, 71,225,216, 60,137, 72,119, 29,245,141, 9, 15,154, 9,131,231,141, 7,247, + 57,153, 2, 15, 94,187,207,197,217,196,243, 91, 24,134,129,155,253,108,148,187,158,185,185, 61,112,187,223,147, 54, 35,219,205, +150, 33, 38, 83, 91,170, 82,251, 72,234, 21,136, 44, 75,131,158,120,240,218, 5,135,243, 19,234, 39,157, 58, 23,198,205,134,158, + 46,184,189,126,204, 97, 57,226,186, 50, 58,207,207,255,244, 91,156,159, 60, 71, 57, 82,218,129,206,192, 77,125,147,171, 79, 62, + 97,170,145, 97, 88,236,251,120, 78, 52,109, 28,103,120,248, 36,242,250, 70,152,134, 35,185, 58,190,255, 72, 56,118,229,237,119, +239,211,111, 31,114,117, 93,248,254,179,137, 71,187,200, 81, 29,212, 10, 33,226, 58, 4,215,136, 30,122, 20,164, 4, 90,237, 4, +239,112, 65, 89,154,129,152,186,235,107, 75,165, 83, 74, 33,172, 89,146,121,127, 68,123, 93,229, 28,138,182,142, 15, 66, 26,183, +120,231,216, 29, 26,193, 39,220, 48,216,234, 64,133, 30,155,165,171,215, 85, 88,239,206,172, 84,206,160, 82, 69, 42,222, 87,142, +249, 57,165,193,245, 83, 35,234,149,249,150,180,137, 70,111, 67,169,187,204,237,225,200,163,103,141, 45,141,186, 56,190,246,141, +251,124,240,238, 93,202,114,228,171,175,174, 24,211,158,146, 28, 62,109, 41,117,193,185,200, 50, 31, 80, 47,120, 25,200,203, 76, +119,141, 19,159,232,170,204, 44,100, 17,124, 46,228,105,100, 83, 58, 26, 77,142, 90,102,243, 48,120, 28, 82,149,193, 69,230,118, +228,216,149, 41, 12,168,247, 68, 21,235,230,103,135,159, 18, 37, 43, 74, 64,179, 66, 84,188, 91, 40,213, 83,107,182, 15,198, 57, +226, 93, 39,250, 72, 89, 58, 89, 58,155,112, 36,149,128, 15, 27, 10, 71, 98, 28,169, 71, 97, 19, 18,221, 43, 26,138,125, 29,251, + 83,114,157,241,165,208,195,132,180, 78,223,121, 54, 93,169,222, 51,183,136,104,101,136, 19, 77, 2, 3,235, 78, 21, 8, 83, 36, + 75, 33,100,111,144, 32, 1,237,141,144,176,149,149, 10, 4,163,219,169,116,123,108,201,171, 58,124,187,253,167,174,166,187, 87, + 8,111,233,181,219,251,138, 87, 13,158,105,212,106, 24,230, 63,139,127,106,195, 2,225, 10,234,141,143,210,231, 35, 4,199, 38, +193, 46,139,125,182,120,133,217,112,176,221,123,228,194, 81,151,142,139,158, 78,132, 42,220, 81,207,143,255,248, 5,253,252, 13, +110,255, 96,224,249,103, 63, 50,234,163, 27,193,109,104,109,135,139,138,246, 68,211, 74,243,141, 20, 6, 98,140,116,153, 65,148, + 50, 12, 68, 34,103,247, 46,128, 13,161,139,174,230, 29,147, 20,168,174, 60,244,224, 95,248, 86, 13, 31,187,238, 42,100,181,102, +181,106, 47,112,212, 88,217, 34, 38,136,123, 17, 26, 48, 20,165, 73, 47,140, 34,103,187,233,168,214, 61, 93,111, 9,120, 10,101, +149,128, 68, 23,168,173,226,197, 18,157,249,120,195, 87, 95, 53,110, 82,167,236,103,230,190,238,243,213,200,113,254,197,129,235, +236,114,161, 88,199, 61, 5,139,179,235, 11,191,177,218,104, 3,188, 37,190,233,107, 0,208, 46, 16, 85, 27, 93, 23,122,119,134, +164,244,171,134,214,153, 27,185,228, 74,242,142,150,197,176,183,106, 76,230,136, 82,114, 37, 79,158, 97,136, 72,105,208,189, 57, +219,125,165, 85,165, 58, 75,226,158,223,191,203,135,249, 45,254,248,123,159, 82,214, 42,132, 87,103,166,178,125, 93,137,120, 70, +180,243,193,250,252, 37,103,211, 75,246, 14, 5,187,204, 44,160, 34, 92, 94, 94, 32, 42,220, 28,247,124,253, 39,222,160,203,194, + 91,239,126,157,234, 29, 79,159, 60,230,201,245, 19,198,225,130,200,132,106,224,205,119,191,198,183, 63,122, 27,128, 24, 19, 23, + 49,113,113,118,246,242, 27,245,195,111,253, 24,239,125,231,183,121,252,229, 83,174,142, 71,158,127,245, 57,223,221, 45,204,199, + 29,119,206,206,136,226,249,225, 39,207, 57,217,158,178,137, 17,239, 60,219,120,151, 41, 37, 72,142,203,251,247, 17, 31,184,185, +122,206,211,231,159,192,117,165,139,208,171, 16, 83, 34, 33,212,195, 53,251,249,200,102,124,151,182,157, 56,157,162,165,151,241, +244, 13,140, 45, 32,163,245,162,123, 85, 98,130,124,124, 81,148, 52, 5,234,152, 26,162,131,145, 13, 81, 28,129,111,125,235, 3, +198, 77,231,147,239,239,152,111, 14,236,111, 51,219,147, 83, 54,243,129,249,184,227,234,249, 42,210,137,194, 69, 19,158, 31, 42, + 97, 18,134,148,136, 58, 65,128,113, 59, 17,211,134,109, 83,246,135, 29,160,188,126,127,195,103,159, 6,138,203, 4,102,194, 56, +225,110, 21,239,140, 54,248, 19,239,188,193,143,127,253, 14, 33,238,112,213,130, 63, 7,222,225,187,159, 55, 62,253, 65,231, 98, +184,100,138, 25,161,178,180, 3,203,226, 56,230, 45,187, 99,228,203,180,224, 93, 69,219,196,199, 95,222,242,209, 91,151, 76,126, +195, 15,190,220,241,195,175, 28,143,143, 1,141, 29, 63, 90,211, 36, 72,231,116,147,200,226,108,133,165,130,250,128,168,112, 46, + 59,170, 86,118, 8, 61,152,246, 84,164, 81, 98, 65,198,141,161, 75,187,154, 65, 42, 4, 68, 23,132,129,142,117,176,125,247,224, + 76,105,108,216,211,110, 53, 29,223,201,181,146, 98, 2, 23, 24, 16,164,174,136,101, 32, 55,251,208,191, 60, 29,144,161,177,155, +111,169, 10, 90, 11, 45, 87,180, 11,183,168,173,244,162,231,245,187,167,124,250,229, 87, 60, 58,102,222,184,115,198, 71,175,159, +144,175, 15,248,109,224,236,236,132,231,143, 14, 60,203, 51, 85, 78,232,245, 72,217,119,156, 79, 40,133, 86, 42, 42,142,193, 53, +122,183,238,111, 79,129, 97,132, 88, 54, 12, 62, 50, 68, 40, 93,112, 85, 24,156,125, 62,149,118, 68,113, 28,252, 14,221,119,198, + 48, 34,234, 8,135,110, 33, 71,233,244,113,130,214, 25,112,228,222,144,113,160,183, 3,218, 60,189, 31, 8, 97, 34, 57,168, 82, +145,238,225,232,136, 41,152,114,118, 39, 44, 46, 19, 91,176,222,124, 28,160,216,159,175, 40, 44,173,152,222,121,109, 91,148,210, + 72, 81, 41,101, 64, 99, 67,181, 82,196, 86, 64,246, 9,160,204,237, 64, 83,240,217, 19,199,129,249,144, 25,146,199,123,199,232, +215, 26,166,115,212,210,113,216,103,147, 4,111, 96, 48,111,135,240,245,227,231,156, 93, 88, 56, 56, 4,135, 11,209, 72,161, 47, + 74,220,238,255, 95,226,188,150, 74,175,217, 46,128,238, 85,190,118,173,149,160,205,194,175,175,114, 52, 62,151, 70,171,118, 34, +216, 90,248, 21, 31,234,165,145,115,129,214, 40,185,179, 84,155, 10,151, 37,115,212, 76,242, 3,168, 32,189, 83, 57,224, 38,143, +175,158, 90,103, 11, 86,203,150, 92, 23, 92,237, 92,183, 61, 79,159,102,114, 61,103,190,217,209,203,204, 52,194,210, 59,199,221, + 66, 72, 13, 81,103, 21,237,110,109,178,236,151,245, 19,113, 67,102,199,184,158, 37,211, 38, 0,129,224, 83, 48,171,153,186,245, +118, 39,235,193,214,205, 45,174, 6,250, 80, 5, 9, 66,119,214, 53,151,117, 39, 39,206,104,109,162, 98,206,116,233, 16, 20,154, +195, 20, 4,245,101,191,209,137, 95,211,231, 29, 93,148, 24, 61, 93,108,132,174,226, 40,235, 24,166,211,204, 45,174,157,195,110, +207,193,214, 90,118, 83,116, 98,216, 78, 93, 95, 14,246,133,224, 89,237,112,145,181, 63, 94, 13,215, 40, 1,117, 38,156,241,252, +233,133, 68,197,118,214,116,197,117, 71,193,118,170,209,121,186, 87,122,151,151, 97,163,214, 87, 0, 64,104, 22,186, 80,160, 41, +181,117,124,176, 32,142, 46,230,108,111, 44,168, 56, 88,108,204,222,139,224, 82, 66, 69,120,227,245, 55,185,185,190,229,179, 71, +207,137,226,169,218, 80, 58,209, 91, 47,209, 59,191, 82,150, 76, 45,235,147,141,169, 10,141, 0,144,205,245,157,134, 13,120,184, +126,246, 4, 23, 19,148, 35,223,249,173,127,204,102,154,120,227,226,156,175, 62,251,140,165, 54,210, 52,211,218, 1,137,167,188, +253,238, 3,254, 63,127,118, 36,242,206,131,215,249, 63,253, 31, 17, 36,226,138,199, 71, 79,204,145,179, 59,247,216,166,137, 59, +193,155, 19, 64, 32, 52,208, 65, 40, 58, 51, 31, 27,159,125,254,199,148, 67, 70,186,208, 68, 57,191, 56,103, 94,102,174,175,158, +145, 75,224, 80,109,191, 29, 61, 92, 63,254,130, 82, 14,156,110,223, 97,228,148, 62,118, 98,114,230,222, 81, 8,189, 82,168,132, +193,104, 95,139,243, 76,163, 99,222, 31, 16, 54,104, 20,134,170,204,205,170, 62,219, 77,100,222, 29,136, 67,194, 79,129, 71, 31, + 63,228,114,233,120,167, 60,189,186, 37,151,202,102, 19, 95,126,239,229, 92,217,229, 70,244, 51,163,159,241,201, 83,203,194,217, +208,184,123,119, 34,157,142, 60,122,120,195,178, 12, 76, 49, 49,151,153,146,139, 53, 43,198, 17,237,202, 4,252,228, 79,190,203, +201,137,135,230, 88, 42, 28,143,129, 47,110, 28, 95,126,254, 20,245,157,135,255, 55,107,111,250,107,105,118,221,231, 61,123,237, +189,223,225,156,115,167, 26,122, 98,119,115,104,145,212, 44, 43, 98, 20, 11, 49,236, 36, 78, 12, 59, 1, 2,229, 67,254,199, 32, + 64, 62,248, 67, 32, 25,178, 44, 71,137, 13,107, 8, 4,137,146,104,138, 83, 23,123,170,234,170,186,117,239, 61,195,251,190,123, + 90,249,176,222,106, 54, 25, 82,148,168, 38, 64,128,133, 70,119, 23,171, 78,157,189,247, 90,191,223,243,204, 1, 57, 12,102,136, +139,103,148, 57,227, 98,132,190,176,159, 58, 36,121,174, 46,223,128,250, 13,144,142, 63,255,238,158,111,190,215, 81,124,135, 12, +171,107,122,137, 4,111, 75,178,154, 13,196,164, 50, 50,248,202,208, 11,125,218,243,122, 44,124, 99,170, 54,137,202,213, 2,120, +162,164, 98,230,176,162,144,231, 9,105,149, 14, 33,210, 83,154, 85, 71,155,139,164, 60, 17,136, 68,111,129,213,150,101, 69, 69, +103, 46,130, 29, 30,117, 73,184,208, 81,245,196,225,100, 2,139,178,204,244,195,200,217,217, 37,157, 4,234,220, 56, 29, 14,150, +159,105,142,235,195, 9, 87, 13,183, 59,110, 60, 69, 22,156, 64,191,219,240,198, 27,103,244,190,242,254,179, 91,194, 33,114,209, +141,188, 56,205,236,231, 74, 55, 22, 90,233, 80, 55, 17,196,170,170, 77,178,193,175,138, 77,217, 36, 52, 66,205,184, 57,128, 24, + 95,125,159, 42,155,205,134, 46, 70,102,141, 28,245, 68, 87, 5,209, 64, 1,134,179, 72,192, 81,114,163, 69, 33, 29, 10, 72, 37, + 68,251,126,211, 48,211, 14, 74,173, 86,243,245,189, 82,181,162, 58,227,180,163,181, 74,223,247,212,148,208, 10,131, 12, 76, 84, + 98, 44,104,173,214, 23, 94, 76, 81,218, 74, 35,132, 30, 29,188,113,255,155, 34,157,224,165, 81,176,124,129,111,222,208,177, 65, + 73,139,130, 68, 14,167, 2,161,216, 33, 61, 88,127,216,213,130,138, 49, 37,156, 51, 67,100,193,196, 84, 47,159,228, 90,234,186, + 79,142,148, 46,240,241,169,113,147, 79,132,160,244, 49, 16,186, 96,171,199,106,141, 34, 31,173,233, 99,181, 47,183,250,172,132, +178, 2,102,156,179,169,229,188,159,168,171,236,105, 73,137,193, 82,201,159,201,107,186,214,130,188,116,140,124,118,204, 25,112, +110,229, 11, 84,250, 62,252,189, 71,235,238,167, 92, 26,142, 75,161, 78, 22, 44, 70,192,123, 40,174, 99,185, 75, 38, 70, 27,171, +169,177, 81, 58,221,224,114, 34,231, 61,174,101,202, 12,197,109,172,155, 63, 84,242, 97,161, 76,130,191,240, 6,128, 83, 56,150, +104,159,237, 48,209, 92,207, 72, 64, 83,166, 31, 2, 9, 11,160, 55, 63, 80,189, 16,107, 7,199,142,214,101, 26,211, 90,123,198, +202,255,165,148, 85, 93, 26, 0, 51,160,137,154,112, 69, 81, 8, 1, 81,235,203,218, 56, 93, 76,215,138,213,197,212, 55,227, 72, +139,133,141,154,135,162, 25,215,108, 44,132, 19, 59, 40,221,203,154,154,165,148,179,218, 97, 27, 86,146,157,120, 33, 55, 99,189, +247,226,152, 75, 89, 49,110,250,201,200, 58, 74,143, 80, 81,111,227, 41,193,209,106,195,251, 66,112,242, 9, 5,207,119,208,116, +213,218,213, 96, 48, 14,177,189,180,139,182, 6, 72,139,133, 64,156, 54, 52,155,234,206, 90, 0, 22, 28,108,226,136,242,242, 15, +142, 93, 66,154, 8,186, 6,241,164, 24,105,172,245,106,117, 64,196, 0, 42,117, 49, 96,138, 51,219, 91, 90, 42,195, 54,240,230, +171,175,243,244,249,145,148, 18, 33,120,250, 56, 24, 56,199,137, 77, 41,130,217,223,170,115,120,141,150, 73, 40, 74, 82,165,235, + 20, 9,129,216,237,152,114,229,233,254, 68,244, 61,239,191,251,136, 60, 47,140,247,206,121,120,117,193,205, 97,143, 19,103,150, + 53,137,132,232, 57,205,135,159,250, 49,182, 95,185,245, 80,232, 61,236,149, 16, 59,182,103,103,108,227,136,244,158,232,148,101, +113, 4, 96,114, 66,154, 15, 44,199, 35,105, 74,102,223,139,129,174,117, 8,129,203,179,123, 68, 13, 60,187,121,194, 92,142,184, +185,146, 85,193, 71,150, 23,137,214, 22,198,254,140,139,251, 15,185,186,119,133,122, 71,153, 10,113,115,206, 54,118,108, 54, 29, + 76, 16,219,129,126,235,144,206, 17, 48, 19,210,177, 84, 74, 89,120,245,225, 3,252, 50, 51,165,194,171, 15,238,241,240,225, 21, +237,235,223,227,112,152,120,243,157,119,120,253,149, 87,152,143,123, 30, 61,121, 78, 90,131, 42,209,103, 22, 93,209,160,226,201, +181,225,139,162, 99, 32,211,115,111,219,113,188,254,152,239,126,247,134,203,179,123,156,247, 91,210, 50,209,114,134,166,180, 82, +248,185,119, 62,207, 91,111, 62, 32,165, 71,164,105, 98, 58, 21, 94,204,175,241,254,117,162,229,133, 94, 58,164, 95,200,131,167, + 59,154,215,187,121, 71,215, 26, 25, 35,208,213,232,169, 33,147, 93,226,251, 55,133,101,154,200,190, 99,136, 1,231, 28,169, 9, + 37, 47,168,139, 8,246,153,186,223,195,253, 29,236,198, 5, 2, 92,246,129,116, 74,228,143, 42,184, 96,176,166,144, 41,171,163, + 91,104,248,113,160,169, 99,201, 9, 31,236, 11, 92, 43, 84, 20, 45, 19,142, 13,227,197, 25, 69, 28,243,139, 27,202,146, 57,209, + 8,218,120,251,139, 15,185,217, 23, 82, 42,204,190,195,167, 76, 43,134, 56, 45, 10,231, 33,114,121, 17,152,211,204,233, 52,131, + 54,150,100,149,211,222, 11,169, 22, 92,116,220, 28, 14, 28,167,153,224, 55,252,194, 59,175,240,149, 47,236,200, 8,211,156, 88, +246, 51, 71,102, 78,167,133,214, 54,156,150, 9,175,158, 49, 68,114, 91,208,165, 3,215,211,252, 68,115,172,246, 64, 5, 55, 48, +151,140,235, 26,213, 87, 2, 1, 74, 71,118,137,101, 46,148, 86, 44,235,210,103,122,155,243, 82, 93,225, 84,138, 25,245,130,144, +112,148,102,129,173,185,120,124,151,105,101, 34,202, 72,213,130,174,254,112, 95, 3, 16,233,164,103,138,137, 70,226,148, 23,198, +110,192,197,128,180,200, 33, 45, 12, 67,181, 16, 91, 84,156,206,140, 37,130,219, 82,100, 38,146,145, 54, 16,116,161,101,165, 72, +166, 70,163,228, 17, 2,133, 68, 32,218, 23,119,137, 68,117,212, 94,233,107,176, 4,190,218, 35,164, 57,111,252, 5,215, 32,122, +212,179,174, 82, 58, 84,149,243,139,129, 47,124,233, 77,155,246,213,102, 12, 13,231,172,229,148, 77, 48,165, 86,220,164,101, 91, +197,148,170,164,100, 99,235, 86,218,218,182, 72, 64,182, 6,132, 8,207,111, 39,230,180, 74,149,130, 55, 27,102, 16,115,106, 56, +214,203,193,203, 10,153, 77,111,249,244, 64,192,253,224,232, 77,203,106,174,115,250, 50,213,245,153,237,187,107, 53,213,174,168, + 16,254,158, 33, 60,247,119,248,235,205, 89, 91,168,185,197,244,183,206, 62, 67,170, 16,124,228,133, 83,234, 32,196, 67,132, 21, + 95,238,232,112,165,145,154,192,182, 49,250,130, 46, 91, 22, 93,184, 89, 78,148, 15,158,211, 14, 79,209, 14,136,145,110,205, 99, + 73,235,152,202,132,118,141,172,214,101,215,234,113,205, 49,203,132, 15,149, 88, 51, 89,204,240, 6,141,160,249, 7,123,110,135, +163,214,140,190, 12,181, 53,235,106, 59, 39,168, 22, 27,251, 84, 65,154,241,220, 13,184,102,123,115,105,138, 72,165, 21,147,168, +132, 80,105,213, 94,210,174,173, 55, 59,103, 53, 52, 31, 60,190, 54,170,152,144, 0, 26, 34,118, 67,126, 73, 36,211,214, 12,191, + 42, 6,155,113,190,225,154,183, 11, 70, 51,115,141,141, 32, 33, 84, 71, 19, 79,107,141,210,156,117, 64,157, 64,201,134, 83, 84, +161,182, 98,112,138, 12,137, 66, 44,242,146,127,183,174, 23, 2,205, 27,197,173,111,209,214, 9,161, 33,197,209,188, 67,226,203, +155,108,181,203,143, 8, 75,173,120,181,196,125,203, 11,161,115, 56, 31,105, 52, 60,142, 83, 74,120,223, 17, 93,192,163,228, 12, +155, 87,238,241,107,253,175,113,184,126,206,163, 15,223,167,212,194, 40,253,218,209,119, 52,245,224,171,169, 22, 93, 71,227,100, +126,111,181,238,188,122,165,147,202,241,249, 11,242,116, 34,244, 27,238,142, 19,170,141,229,184,112,183,127,143,219,227,137, 24, + 35, 82,149,116,202, 28,143,137,239,189,251,136, 23,251, 19, 87,103,155, 31,255, 49,214,194, 71,143,175,209,162,246,226,115, 66, +171,149,174,219,217, 75, 44,192,216, 25,225,139,182,225,226,193,134, 97, 55, 48,221, 77, 60,121,239, 61,170, 52, 92,110, 28, 91, +166,187,218,160,210,168,169,176,189,188,160,118,133,143, 63, 42,228, 37, 83,152, 16, 85,106,245,188,120,241,130, 99,119,228,230, +197, 11,110, 55, 59,124, 31,105,206,113,182, 29,120,248,234, 91,108,124,199, 82, 10, 42, 59,130,139, 92,157, 57,206,206, 95, 33, + 77, 11, 47,142, 47,184, 58,243,188,122,182, 37,244, 29,211,221,137,143,110,158,225,124,199,253,251, 87,148,230,104, 41,243, 95, +125,237, 87,216,223,126,200,199,215, 55, 92,223,220, 48,198, 13,227,118,228, 60, 12, 12,189, 7, 47, 28,111,110, 13, 73,236, 19, +215,215, 47, 72,181,231,222,171,247,168, 37, 80, 83, 98, 24,182,148, 50, 83,138,169,130,239, 95,158,243,203,191,240, 6,135,227, +145, 15,175, 11,207,158,100,124,255, 42,231, 23,175,144,142,143, 81, 2,135,156,236, 53,236,148, 40, 30,239, 27,130, 39, 47,137, +110, 20, 74,178, 47,225,187,219,107, 36,120,162, 23,110,211, 17,223,116,189,160, 6,124,236, 32, 64,175,133, 49,102, 30,158, 23, +222, 62,247, 60,188,112,184,206,163,193,163,169,241,190,142,148,190, 18,212, 19,137,150, 31,105,149,146, 22, 66,232, 80,215, 24, + 54, 29,233,152,120, 62,221,209,111, 34,157,139, 38,164, 40, 48, 45, 71,250,101,100,236,123, 82, 8,180,229, 68, 75, 11,251, 37, +241,215,223, 89,216,236,174,184,242, 9, 63, 94, 90,218,119,201, 72,128, 16, 33, 83,120,250,226, 41, 65, 61,169, 25, 12,199, 64, +115,142,101,158, 41, 4, 14,203,145,227,113,207,217,120,193,213,249, 57, 63,255,246, 5,103,231,158,103, 55, 21, 61, 53,230,169, +112,151, 50,165, 8,253,121, 68,162,103, 57, 44, 20, 47, 84, 76, 45,169, 90, 41, 75,179,133,154, 23,178,107, 72, 81, 92,128,154, + 51,197, 7,226,208, 81, 75, 34,231,133,162,213, 38, 11, 91, 65,138, 80,167, 5, 87, 79,150,157,233, 3,165,206, 20, 13,182,218, +146, 96,197, 78,127, 66,134, 70,218, 3, 84,124,109,244,187,193, 40,123,161,176,164, 70, 40, 86,109, 27,182, 3,233,118,177,233, + 95,177, 76, 82,239,173,214,107, 97, 81,133,225,156,153, 66,215, 6, 80, 83, 25, 35,133,190,135,234, 29,125,245,180,217,113,146, +138,146,209,174,153,162,122,216, 16,200,248, 86, 41, 83, 68,197,190,211, 74,177, 14,253, 16, 11,193, 59,156, 4,203, 31,181, 64, +213, 76,168,133, 16, 35,247,207,182,108,215,158,250,240, 67, 51,243,149,146,245,233,255, 12, 63, 56,244,166, 53,239,172, 10, 11, +202,237,113, 97,122,242,140, 90, 50,174,115,196,205,142,176,219,126, 66,153,171,106,144, 3, 87, 45,148, 9,159,180,141, 45, 51, +165,214, 48,122,249,106,182,164,181,146,107, 99, 78,121,253, 46,111,236,239,142,104,131, 16, 2,136, 77,137,196,175,120,242,151, +255, 76,247,119, 59,118,219,218,171,175,173,218,185,194,103, 63,126,175, 57,211,170, 17,227,178, 66,169,133,146, 45,115,150,106, + 69,167, 70,236, 7, 90,231,104,105, 94, 21,201, 61, 83, 75,196,126,192,105, 79, 59, 60,102,123,190, 37, 29, 19,223,251,248,128, +182, 71,148,102, 23,108,156,177, 53,198,216,113, 42, 25,159,138, 93,192,226, 26,226,108, 11, 29, 32,177, 34,109,160,213, 68,236, +148,167,122,201,181,165, 88,194, 42,105,177, 67, 88,188, 95,193, 46, 43,215,121, 77,178, 91,177,208, 17, 92,161,184, 98,169,245, +102,191,140,206, 89,122, 62, 23, 83,116,138,115,235, 47,103, 91, 95,254, 47,247,215, 5, 21,219, 87,219,182,123, 53, 68,181, 74, +109, 66,240,129, 90, 22,112,206,196, 18,206,234, 97,226,237, 28,183, 17,126,253,164,119,238,219, 74,176, 11,246,114,110, 85,145, + 10,213, 85,219,155, 59, 7, 77,232,188, 35, 59,112, 81,160, 54, 60, 30, 87,100, 29,125,123, 35,193,169, 37,253,165, 52, 82, 43, +140,209,170, 10,166,118,181, 27,173,119,117,197,233,253,224, 3,218,188, 67, 37, 24,220, 98,129,216, 41,126, 69,199,138, 40,212, +130,230, 1,149, 66, 45, 66,161,112,121,177, 97, 28, 59,226,182,227,209,187, 31, 48, 77,139, 73, 39,240,168, 6, 91, 64,104, 99, +105, 51,115, 78,176,202, 69,166,101, 38,164,128, 68,103, 96,154,148,136,125,180,151, 95,232,208, 52,115,119, 60,128,152, 96,163, + 34,100, 50,167,105,226,227,119, 63,226,247,126,255, 15,248, 95,127,251,127,250,177, 31,243,239,124,227,175,248,207,223,123, 15, + 21, 11, 52,150,101, 70, 3,196,109,207,176,233,209,229, 4, 97, 96, 51, 68, 14,251, 27,254,224,247,255, 45,190,239,217,132, 17, +197, 51,108, 55,136,120,186, 24,185,216,236,232,165,103, 57, 77, 28, 79, 39,210,105,193, 23, 49,200,141,246,164,164,164,249, 96, + 48,160, 82, 72,122, 34,207, 19,253,174,199,119,194,208, 95,242,236,241, 99, 35,125,213,134, 43,137,155,155, 74, 87, 2,126,124, + 70,220,245,208, 42,175,157,191,205,118, 60,231, 91,223,124,159,219, 23, 31,242, 7,127,242,151, 60,126,242, 28, 45,149, 16, 60, + 47,246, 47,248,240,233, 13,149,106, 10,219, 69,226,193, 0, 0, 32, 0, 73, 68, 65, 84,211,211,194, 49,100,138, 38,206, 54, 14, +233, 59, 46, 99,207,248,202, 21, 31,223, 92, 51,157, 78, 76, 83,162,106,207, 91,159,123, 72, 58,135, 15, 63,124, 76,120,249, 37, +221, 28, 81,225,213, 55,238, 83,232,248,214,119,102,142,233, 62, 89,183,252,242, 91,191,204,245,237, 53,169,218,225,237,154,224, + 91,143,180,133, 73, 11,195,176, 65,242,201, 94, 75, 51, 86,249,235, 6, 62,120,250, 49,103,219, 11,150,201, 0, 40,213,217, 69, + 87,201, 92,196,204,131,209, 14,244, 93, 8,188,241, 90, 71,191,235,204, 5,144, 28, 50, 10,249,174, 82, 82, 68,165, 16, 98,103, + 64, 37, 26, 82, 42,169, 11, 88,230,171,225, 93,160, 68,219,196,217,142, 54, 24, 68, 42,128, 75,153,219,167, 31,154, 39, 93,132, + 86, 28, 77,205,133,144,150,198,197, 69,135,239, 58,118, 18,152,150,147,177, 42,212, 81, 11,180, 86,153,247, 19,206,123,170,194, +236, 32,202,192,110, 48, 31, 66, 58, 90,242,126, 24, 54,132, 97,203,107,175,244, 72,175,124,252,244,192, 41, 21,106,132,229, 80, + 56,156,160,180, 68,119, 47, 88, 63, 61, 6, 90, 45, 22,100,109, 61, 85, 29,165,174,106,229, 32,248, 86, 56,145,136,110, 96, 51, +116,200,224,109,164, 93, 27,197, 59, 58, 81,178, 91,209,166, 34, 86,181, 28, 58,160,226,114,193, 81,105, 21, 34,118,209, 31,186, + 74,174, 13,246,158,216,143,180, 58, 81,146, 39,102, 79,149, 74,171,133, 56,120, 90, 24,112,169,209,230, 6, 33,178, 80,169, 83, +194,197, 1,239,242,234, 5,243,196, 2,117,185,161,250, 64,212,145, 77,244,204, 90, 73, 85, 40,222,177,243, 74,189, 19,102,151, +161, 9, 18, 70,196, 53, 11,226,105, 97,222, 10,211,148,233,179, 35,110, 58,212, 43,203,169, 33,187,128,116,129, 86,148,156, 51, +125,244,166,164,118, 14, 98,143, 14, 29,225,103,244,146,143,230,214, 6, 96,135, 35,236, 6,158,238, 55,156,142,123,130, 8,175, + 63, 56,251,177, 47, 95, 93, 15,211,151, 63,104,138, 29,248, 47, 51, 87,117,125,249,163,164,162,204,199,153, 82,103,220,186, 50, +120, 49, 21,246,101,193,203,130, 97,203,193, 7,103, 13,171,182,174, 86,229,165, 46,219,173, 20,207,151, 57,174,151, 60,122,187, + 2, 28, 83,101, 58, 76,168,179,151,237,233,184, 55, 24,149,179,224,167,172, 43,220,127, 24, 77,174,160, 75, 66,235,234, 78,168, + 21,231,173,118, 24, 67, 33, 29, 26, 76,153,224, 50,179,119,148,236,168,186,103,112, 27,170,243, 8, 21,231, 61, 75,157, 81, 87, +193,245,212,184, 32,110,135,228, 17,105,149, 89, 27, 57,207,134,171, 30, 34, 46, 39,148,142,226, 27, 46, 37, 74, 87,168,169,225, +156,163, 27,183,236,252,194,219,111, 92,217,159, 15,113, 47,107,103,235,174,218,252, 85,180, 86,205,226,229,215, 93,117,211,181, +183,110,164,170, 38,213,252, 47,205,125, 66,140, 67, 13,202,162,173, 65,181,215,108, 83, 11,206, 73,244,166, 39,109, 74, 94, 57, +240, 81,172, 46,235,221,218,131,111,118, 11,110, 43, 2,182,122, 75,212,231,154,140, 60,236,236,239, 83,103, 35,247, 66,251, 4, +112,227, 93, 65,124,160,153, 41,154,206,201,154, 4,182,223,136,190,247,168,247,120,167, 72, 53,171, 28,234, 13, 55, 43,182,253, +111,213,120,217, 78, 28, 75,203,136,115, 44, 88,112, 47, 74,160,173,216, 90,251,121, 11, 65, 76, 98,163,173,173,112, 17, 71, 45, +141,141,119,184,102, 17,212,174, 11,180,182, 16, 92,192, 59, 33, 87,199, 82, 23, 74,106, 92,221,123,192,110,179,227,219,127,243, + 93,110, 15, 71, 98,103,201, 93, 85, 89, 43,133,117,237,185,103,227,205, 59,135,122, 79,173,142, 16, 27, 83,154,168,119,153, 24, + 58,124, 7, 75, 93, 56,206,137,174, 55, 95,183,186,149, 29,191, 36,210,205, 51,254,236, 63,253,223,188,184,123,198,231,238, 63, +224,234,222, 3, 94,185,127,143,171,251,151,252,241,159,254, 9, 95,255,139,191,230,246,230,134,211, 50, 51,207, 11,173, 21, 68, + 97,123,118,193, 38, 58,138, 92, 48,167, 19,231,225, 1,175,221,223,241,221,179, 11, 78,211,194,221,124, 71, 81,165,221,124,140, +132, 64,171,149,143, 62,122,151,179,110,128,174,231,237,207,125,133, 77,220,114, 10, 7,131,127, 56, 71,210, 66,144, 17,239, 12, + 40, 34,162,104, 52,120,198,160, 3,115,170,252,163,223,250, 37,254,213,191,250, 23,252,233, 31,253, 49,239,125,248, 30,167, 52, + 17,179,176,185,127,206,183,255,242,175, 72,203,129,239,125,251, 91,124,249,139,111, 18,203,115,156,116,252,218,175,253, 58,254, +207,255,154,179,205,192,247, 30,189,207,114, 58,113,251,252,150,205,185,231,213,251,231, 60,123,188, 97, 81,101, 89, 22, 92,189, + 37,231, 72,220,109,185,186,186,160,107,142,219,219, 61,187,237, 8, 26,249,222,119, 62,228,176, 79, 36, 45,156, 14, 71,130, 9, +171,233,250,142,123,151, 15,184, 73,194,184,185,143, 15, 51,231,175,188,197,131,207, 93,241,225,147,239,208,123,101,142,137, 88, + 42, 50, 26, 62,173, 29, 19,117, 57,161,193,209,134,136, 84, 65,100,195,199,207, 62, 32,116,141, 7,247,207,248,214,163, 39,244, +193,115, 62, 78,108, 99,226,225, 78, 56,223,122,122, 47,120,215,177,180,138, 68,199,112,181,161,204, 19,165, 19, 66,111,137,149, +187,211, 68,173,133, 49,244,182, 19, 69, 56,169,193, 91,108, 2, 20, 72,185, 24,214, 23, 97, 42,142,121, 90, 8,210, 32, 6,227, +236, 47, 11, 73,247, 43,202,217,242, 47, 49, 42,125, 28,232,186, 1,233, 60,253,102,195,225,217, 1, 87,149,230, 44, 1, 47,205, + 62,147,115,129, 82,102,198, 56, 66,240, 76, 57,227, 66, 97,202, 7,198, 46,226,226, 25, 15,238, 13, 60,120,112,198,130,112,172, +194,254,174,145, 75, 99, 58,101,150,165,174,135,174, 24,131, 62, 11,185,122, 92,236,112,193,144,174,100,103, 97,209, 90,104, 47, +171,172,197, 19, 34,136,118,159,144, 26,195,176,195,215,128, 43, 51,121, 49,106,185,247,138, 23, 80,239,209, 9,168,227,234,163, +104, 20, 85, 38, 87,160,244,164, 50, 17, 6,207,224,118,100, 63,147,105, 12, 10,117,169,132,104,141, 19,154,226, 90,160, 31, 50, +148,130,110, 59,202, 98,147,204,144, 70,170,203,232, 0, 97, 9, 4,151,217,179, 39,106,193,123,165,186, 17,114, 69,114, 70,123, + 27,179,250,176,218, 29,181,163,180,106, 50,151,187, 64,140, 1,233, 59, 82, 80, 70,233,217,141,197, 50, 67,197,162,138,131, 88, + 24, 43, 55,199, 16,123, 19, 40, 53,165, 11,159,145,157,173, 42,181, 54, 68,161,239,194, 79, 28,101,127,234, 46,176,174, 87,225, +135, 10,117, 65,126, 40,225,126, 58,235,121,242, 97, 35,165, 76,140,158, 87, 95,127, 64,232, 59,211,153,174,255,190,234, 86,140, +117,181,148,121, 91,167, 3,154,171,101,169,212, 81,180, 65, 42,102, 73, 44, 74,202,153, 60,159,140, 77, 33,141,214,148,247,158, + 29,248,248,118,198, 96,253, 48,120,111,144, 48,252, 74,131,115,230, 36, 15, 86,130, 86, 85,147,248,120, 89,207, 59,181,233,147, +216,138,116,159, 26,199,219, 23, 20,210, 39,147,213,212, 18,217,123,171,231, 22, 1,183,144,252,158, 78, 34,193,193, 60,205,184, +208,168,115, 33,181, 19, 72,226,162, 63,163,212, 30, 45,135,117, 77, 36, 20, 87, 40, 28, 16,173, 12, 93, 68,203,200,114,154, 8, +253,136,107, 74,171, 51, 62, 11,174, 52,170, 91,136, 99, 79, 73, 19, 78, 35,231, 62, 18, 66,111, 98, 33, 37,175,250, 59, 83,192, + 57,117, 54, 38,199,161,205,106, 89, 22, 76, 91,157,203,120, 75,201,131, 17,231, 84,215,181,236, 26,220,248,132,250,166, 86,181, +112,198,144, 71, 87,110,112, 85, 42, 32,157, 71,155,253, 6,138, 56,114, 41, 56, 31,108,244, 94, 10,213, 25,182,213,173,211,130, +166,246,246,151,216,209,105, 91, 59,142,107,112, 78,109, 20,228,164, 33, 65,112, 8,226, 12, 54,225,165, 81,138,237,249, 35,158, +220, 10,206, 9, 46, 4, 43,247, 23, 5,201,208,108,231,212,212,170, 36, 77,236,114, 97, 53,162, 70,107,150,158,206, 25, 74, 2, + 85, 91, 63, 56,177,142,176,115, 98, 19, 0,239, 88,138,173, 19,130,116,248, 16, 8,177, 82,214, 17,183, 84, 79,150,134,244, 30, +173,194,102,179,227, 43,191,240, 85, 30,189,251, 46,143,159, 92,219,174,170, 11,118,211, 93,105,118, 52, 27, 97, 53, 39,116, 62, +112,222, 69, 14, 47,110,169,181, 50,105, 35,167, 74, 88, 50, 9,251,226,110,185, 80,170,195,239, 60, 41, 7,230, 50,115,115, 7, +137,200,237,254,207,249,155, 7,103,108,124, 79,204, 21,183,233, 56,236, 15,236,143, 51,121,158, 57, 78, 39,230,211,158,121, 89, + 75,127,249, 68,206,137,193,143,228, 84,152,188,176, 95, 50,175,127,241, 29,104,130,239,148,227,221, 76, 94,102,114,154, 40,197, +163, 53,177,204, 55,136,194,217,253, 11,110,110,230, 21, 94, 4, 75, 5,143, 93, 56, 8, 3,174, 54,148,202,182, 31, 17, 31,216, +108, 54,124,233, 23,191,204,111,255, 47,191,205,118, 28,248, 23,255,242, 95,178,164,196,233,120, 66, 81,238, 93, 93,241,239,127, +255,223,241,111,254,207,223,165,186,204,147,103,143,249,173, 95,255, 60, 47, 94,204,116, 33,208,117, 59,254,217, 63,255, 26,255, +120, 89,248,223,255,183,223,225,233,245, 19,222,216, 94,114,249,218,134,123,207, 95, 97, 90, 86,164,166,206,220,221,237,121, 49, + 77, 72, 23,217,109, 7,166,220, 80, 13,204,167,137,155,155, 9,209, 12,209,155, 32,161, 22,232,224,226,225, 3,250,113,195, 54, +246,198, 95, 24, 59,222,126,235, 53,158,127,252, 33,215,207,159, 34,120,164, 5,212, 53, 42, 9, 52,152,209,206, 7,202,188, 48, +196,158,109,220,112,154, 22, 78,167, 27,222,122,251, 45,150,214,240,226,120,112, 89,248,210,165,114,113,111,131,168,210,185,222, +178, 42,210, 8, 19,104, 88,237,127,157, 35, 31, 51,117, 49, 9,205,126, 78, 56,233,240,206,217, 23,163,102,150,178,112, 56,220, + 48,158, 93,160, 88, 24,169, 54, 99, 84,111, 54, 27,230,227,222, 94, 44,169,174, 33, 46,243,222,131,226, 90,165,180, 10,173, 34, +163,167,235, 7,134,190,163,186,145,105,190, 54, 83, 93,112, 68,111,234,219,172, 54,109,211,164,102,123, 43, 19, 53,205, 12, 30, +198, 46,224,194, 25,231,231, 3,239,188, 57, 66,173,124,240,254,129,146, 78, 44,115, 35, 33,104,241,204,121, 34,196, 96,201,142, +154,172, 82, 26,236,133,149,106,166,148,134, 84,104, 62,211, 90, 36, 68,165,147,194,178,156, 56,180,145,158,108,136,215, 20,137, +179, 34, 93,196, 69, 59, 56,106,200,248, 26, 57,238, 79,132,222,227,197,161, 36,106,137,184,126,125, 12,104, 35,118,129,164, 66, + 44,137,185,100,186, 93, 88,105,154, 59,136, 29,130,160, 82, 81, 31,208,206, 30, 27, 53, 71,134, 26,104,237, 14, 84,168, 62, 18, +183, 59,123,101,114, 36, 59,147,222,104,201, 28,136,248,112, 64,147, 77, 27,194, 24,233,180,152,164,131, 8,206,156, 6,217, 5, +124, 95, 73,217,130,177, 99,115,198,236,239,192, 47,142,190,111,104,113,104,240, 72, 47,198,203,112,106,210, 45, 17,186, 24,127, +230, 87,232,167,223,176, 90,215,174,183,115, 4,255,217, 81,217, 58,183,158, 29,193, 51,244, 29,219,161, 3,160,247, 6, 0,250, +161, 81,183,117,156,112, 63, 58, 17, 88,113,173,121, 13,215, 54,251,186,228,250,230,196,124,253,130,211,180,167, 11,194,238,222, + 5,174, 31, 73, 21,180, 86,230, 21, 41,142, 42, 45, 25,144,201, 46, 28,197, 88,244,101,177,243,196,153, 64, 43, 83,104,165,208, +106, 51,221,248,169,216,180,170,158, 40,181,177,148,108,121,179, 92,145,102,240, 36,205, 13, 37,114, 76,208,186,202, 54,118,204, + 68,114,223,136,197,209, 74,228,148, 15,244, 98,159, 17, 21,135,107,153, 86, 29,157,223,208,188, 82, 59, 19, 24, 57, 23,153,211, +158, 14,161, 91, 65,145,140, 29, 45,219,154, 60,116,194, 50, 45, 38, 24, 91,153, 82, 65,109,134, 78, 83,187, 97, 57, 12, 72,111, +163,235, 98, 35,118,111,234, 79,219,155,136,241,183, 9,148,102,212, 42, 17,143,183,118,153,197,214, 90, 69,171,172,151, 4,197, +117, 98,135,165,179, 81,119, 45, 5, 87, 26,234,189,101,216,138,237,144,181, 53, 11,239, 52,104, 4,196, 41,222, 53, 8,130,170, + 16,157,144, 83,182, 3,212, 9,205, 25,126,214, 55, 11,237, 41,160, 69, 9,107, 87,183,161,116,226, 64, 43,185, 88,175, 54,186, +245,128, 44,217,166, 9,209,110, 96,181, 53,114, 89,209,153,234, 8,120, 11,137, 52, 71,108,129, 89, 51,139,154,139, 26,113, 72, +243, 20, 50, 62, 10,154,131,229, 13, 80,194, 92,241,155, 96,127, 24,170,144,114, 37, 70,165,106,198,121,143, 68, 37,210,129,102, + 83,188, 98, 52,181,119,222,249, 18,155,190,231,221,247, 30, 83,150,100, 31, 20,231, 63, 9, 2,170,179,177,120, 16, 35,119,125, +124,123,195,146, 50, 33, 4, 82,201,230,106, 30,162,153,223,106,163,208,112,201, 42, 99,211, 97, 33,247, 74,105, 79, 25,150, 13, +211,146,200,189,253, 28,143,143, 23,104,205, 26, 9, 45,179, 44, 11, 89,149, 66, 93,117,180,141,229,228, 9, 87, 61,193,207,156, +191,250,128,167,127,253, 30,239,126,231,235,132,254,156, 94,192,135,136,247,145,224, 61,195, 24,240,253, 14, 13,247,209,211,129, + 52,221, 48,151, 19,126, 24,208,121,161, 74, 69, 80,186,206, 51,158,157, 49,205,197, 62,115,162, 72,140, 56,173,252, 23,191,252, +107,108,199, 31,140, 16,251,174,163,239,186, 79,126,252, 27,191,249, 95,242,159,254,228,143,120,113,253,132, 37,103, 66,188,199, +217,121,230,201,251,239,241,241,211,143,248,254,211,107,254,199,127,250,235,252,206,239,254, 33,215,183, 7, 30,172, 97,160,148, +102,110,175,247,156, 93,108,184,119,255, 62,205, 85,238,110, 14,236,247, 71,206,118, 35,231,155, 13,115,158,113,169, 90, 54, 67, +196,242, 37,193,177,217, 12, 60,124,237,156,175,254,242,207,179, 45, 35, 14,225, 88,238,120,237,245, 55,152, 78, 7,190,253,141, +111, 35,178,165,184, 76,203,109,149,247,216, 31, 98,240,156,166,140,150, 70,205, 21, 55,220, 17,198, 66,215, 5,196,123,106,186, +230,213, 11,229,193,182,241,234,133,224,124, 64, 85, 62,249, 22, 11, 3,236, 98,103,196,197,176,162, 91,233,209, 34, 60,190,113, + 28, 82,199,249, 54,114,170,176, 9, 30, 57,205,156,106, 35, 45, 71,115,168,111, 70,251,179,136,160,213,129,120,134,221, 5,183, +119, 31, 83,115,161,235,251, 85,225,153,237,101, 38, 66,231,189,217,237,188,167, 11,194,232, 58,234,148,168,190,225,162,179, 9, + 66,236,137, 94, 57, 29,102,156,243, 52,231,105, 53, 83,188, 85, 49,247,139,162, 50,176, 57, 59,231,141, 87, 35,155,251, 61,251, +199, 19, 55,119, 39,114,182,170,102,170,246,197, 92,251,192, 86, 60,157, 12, 44, 46,179, 44, 14, 98, 98,104,129, 41,173, 85,219, +174, 67,124, 66, 17,242, 58,133,208,214, 19,218,128, 84,165, 95, 39, 33,181,154,119,186,206, 29, 93, 39,244, 81, 32, 41,185, 56, +202, 97,194,109, 55,182,143,214, 74,107, 30,150,202,208, 65,114,133, 62, 10, 37,103,218, 70,200,205,211,171, 35,233,132,250, 70, +239,172,131,174, 37,225,179, 16,194,198,148,188,121, 33, 12, 17, 90,164, 21,165,206, 11, 85, 27,213, 23,194,176, 69,221,140, 6, +207,232,183,132, 54,225,154, 61,152,244,120,160,116, 17, 52, 33,174,178,137, 29,139,131,238, 44,154,197, 47,207,204,171,189,109, + 24,140,252, 24, 98, 32,217, 93,145,224,212,132, 91, 1,170,135,232, 10,193,143,182,155,254, 25, 14,244, 19,176, 89, 15,208, 35, +112,156,138, 77, 87,117, 53, 86,126,102,118, 54, 91,219,184, 6,241,167,116,223,253, 79,154, 8,172,255,187,255,145,191,189,158, +245,148,125, 64,230,192, 48, 70, 62,255,202,149, 9,193,128, 5,155, 32, 56, 32,175,151, 0, 89, 91,111, 47, 93, 35, 75,174,246, +136,109,138, 86,229,176, 44,246,247, 22, 71, 93, 10,243,179, 61, 78,158,144,247, 51, 1,101, 84,152, 22, 7,235, 67,180, 81, 25, +123, 88,230,192, 60,207,132,188,224,220, 57,120,193,231,231, 56,109, 8,145, 37, 37,146,191,166, 16,169,203,129, 57,120, 74,128, + 94, 78, 56, 63,160, 51,168,156,112,120, 40, 14,183,137,232,210,161,238, 72,117,149,160,133,178, 20,188, 84,104, 91,230, 67, 36, +189,247, 17, 31, 15,151,118,168, 59,111,187,107, 45,197,246,199,110, 37,169,137,141,148, 69,237,213, 38, 65,112, 77,236,214,236, +148,205,253,215,184, 55, 46, 60,127,124,205,169, 88,154, 84,170,251, 36, 53, 46,212, 85,101,106,149,145,210,204,175, 46,226,237, +189, 95, 45,217,222,104,198,120,119, 38, 89,209, 21,251,162, 84,106,182, 15,148, 11, 14, 13,224,242,202, 1,244,110, 77, 58,234, + 75, 27,186, 49,235,155,208, 58, 11,209,181,182, 38,192,157,128,175,182, 22, 48,224, 59,218, 10,170, 74,107, 30, 9, 66,110,118, + 9,240, 30, 51,189,149,180, 42, 42,253, 58,106,244,148,100, 7,152,147, 98, 88,206,218, 96, 81, 58,103, 99,208,170,216,205,168, +100, 58,245,132, 94,105, 98, 47,140,232,172, 37,144, 37, 91,122,116,101,222,233,250,169, 18,132,183,190,240, 54,195, 56,240,189, +239,189,203, 33, 37,134,110,164,143, 29,185, 20,243, 25,163,228,101,226,246,214,155, 33, 46,152,167, 57,101, 35,227,213,210,200, + 41, 17, 98,199,249,213, 37,181, 86,168, 51,173, 66, 90, 10,141,196, 49, 39,134,227,145, 83,116, 52,239, 63, 33,238,213, 6,165, +206,228, 50, 83, 75,161,212,130,163,145,151, 74,154, 39,150,231, 31, 19, 54,142,171,123,231, 12,187, 29,191,242, 75,191,193,146, + 61,183,211,129,105,127,205,148, 27,249,116,164,164,132, 11, 17,156,242,240,242, 21, 74, 90,136, 69,120,112,113, 73, 14, 71, 94, + 28, 28,197,159, 16, 9,204,211,204,213,249, 57,131,143, 60,190,185, 35, 58, 8,155,142,205,249,229,223,250, 7,253,236,236,140, + 55,222,124,133,143, 63,124,204,180, 63,240,238,199, 47,248, 39,191,249, 53,110,238, 30, 19,187,198,183,191,241, 61,246,255,232, +171, 28,231,180, 94,182, 28,243,205,204,105,127,199,254,120, 96, 90, 14,148,101,225,193, 43,151,184, 93,227,238,144, 13, 97, 28, + 29,154, 13,113,252,242,146,170, 41,241,218, 91,111,240,181,255,250,159, 82,239, 14,244,165, 82,242, 66, 12, 29, 67,191, 97, 51, +108,152, 31, 63, 99, 19, 59, 66, 63, 82,202,204,220, 47,182, 39,173,142,139,152,136, 57,115,229, 79, 68, 14,140,125,161,239,206, +120,244,100,207, 23,223,190,207,231,223,112,204,143,159, 17, 46, 46,141,205, 80, 33, 86,243,120, 59,169, 44,174,193,198,211, 19, + 32, 4,194,166,195,221, 38, 56, 19,150,187,196,205, 93,198,133, 13,231,195, 57,161, 84,168, 74,212,194,205,109, 69,169, 76,211, + 29, 34,202,184,187,132,102,204,119,233, 28, 37, 85,134,126, 67,209,163,129,155,154, 7,239, 88, 45,204, 54, 6,119,230, 93,151, +206,227, 99, 79,118,149,232,123,106, 41, 84,117,212, 82,216, 79, 21,161, 90,221, 78,132,162, 48, 32, 76, 84, 22,223, 19, 55, 59, +206,207, 2,157, 84, 62,250, 96,207,233,102, 97,154,103, 74,237,241, 33, 82,164,176,180, 74,153, 42, 97,240, 52,151,236, 59, 33, + 39,118, 46, 16, 9,204,173,210,121, 40, 57,127,114,169, 46,181,224, 17,188, 79, 56, 47,196,110,139, 27, 35,156, 38,124,139,248, +146,168,222,248,234,209,121, 22, 10,157,143,208, 57,106, 73,136,136, 17, 21,235,130,120, 27, 97,163, 13, 87, 77,197, 27,219,186, +150,104, 25, 33,227,188,146,178,226,221, 25,137, 59, 10, 29, 73,149, 24, 55,224, 22,219,173, 10,200,224,201, 53,209,137, 71, 36, +226,146, 25,223,134, 81, 72,117,166, 52,199, 86,108, 53, 55,229,194,216,197,149, 20,185, 48,107, 68, 75,101, 57, 45, 70,169,220, + 88,250, 57,120,152, 5,235,115, 23,243,169, 55,177,118,146,184,138,211,130, 22, 40, 62, 48,244,221,207, 68,126,115,134,158,255, +193, 69, 26,251,238, 47, 43, 0,167,143,241, 51, 59,212, 75, 81, 92, 45,150,123, 10,159,177, 22,181,169, 53,183, 4,235,246,175, + 78,249,176,254,247,229,127,226,203,255,211,238, 71,110, 15, 63,178, 98,168,187,136,137,187,237, 61,255,193, 43, 23,124,243,235, +133,116,247,156,206, 57,114, 20,166,156,168,116, 68,157, 0, 79, 41,133, 67,190,193, 95,108, 24,117,228,116,187,103, 92, 34, 55, +181,208,188, 80,124,193, 43,140,178,195,199, 35,174,141, 52, 6, 98, 59, 80, 92,162,158, 38, 66, 27,232, 6, 79,105,141,141,246, + 84,122,146,155,105,174, 32, 5,156, 27,112,113, 36,178,144,253,194,215, 15,137,119,255,245, 95, 82,142, 95, 39,120, 31,144,151, +135, 81, 19,123,181,161, 80, 65,157, 88, 8,161,130,203,106,125,116, 26,184, 70,118,145,207,125,249, 87,249, 31,222, 89,248,227, +223,253, 15,124,253, 90,105, 75,181, 32,130,179,125,151, 45,217, 61,181,218, 66, 95, 80,162, 40, 69, 87, 35, 91, 19, 35,200,173, +221,116, 95,141, 23,239,229,101,229, 77,105, 98, 35,110,106, 53,162,155, 91,143,240, 44,248,206,210,128,173,217, 17,169,206,174, + 3, 53,155,223, 92,116, 69, 16,198, 8, 43, 52,163,174, 59,199,128,162,222,236,107, 37,151, 79,104,115,100, 51,204, 41, 74, 43, +224, 67,179,253, 23,130,115, 38,135,137,222, 58,245,234, 5,223, 11, 78, 35, 81,140, 80,167,213,254,249,174,239, 87,239,174,176, + 52, 33, 52, 51, 64, 69,137,120,223, 67,104,232,100,187, 65, 71, 67,164,195,121,229,213, 55, 94,165,235, 59,190,243,157,119,121, +113,119, 68, 66, 64,130,133,231,188, 19, 66, 23,120,122,243,204, 46, 58, 17,150,197,126,109, 93,133,172,133,171,123,247,248,210, +231,223,166,223,142,124,248,193, 7,136, 15,220,221,158, 8,205,184,216,173,155, 56,228, 4, 39, 35,226,137,116, 70, 94,106, 88, +216, 9,152, 15, 51,237,101,118, 65, 3,167,195, 45, 50,156,227,124,199,221,243, 39, 60,250,246, 55,141, 96, 21, 58, 54,195, 5, +103,231,247, 12,252, 83, 46, 13, 52, 84, 10,167,227,173,217,138, 28,108,182,155,213,172,215,115,207,119, 60,187, 89,168,100,206, +119, 3,189,247, 84, 93, 12, 36,227, 26,154, 26,211,225,248, 83,172, 81,133, 52, 21,118,231, 87,208, 18,105,233,233,183, 15,209, +149,172,246,238,163,239,243,236,110,194, 85, 71,154,142, 28,151, 45, 13, 56,205,139,173, 77, 90,224,249,237, 29,139,102, 94, 63, +191,162,247,149, 82,204, 81,223,196, 35,162,184, 98,140,241,165,101,158, 63,187, 97,186,153,185,186,122,149,235, 39,239, 50,140, + 14, 87, 51,159,127,243,171, 8,240,253,231,215,120, 81,122, 61, 90,182, 4,143,180,198, 23,198,231,120,157, 73,163,240, 96, 87, + 8,109, 65,189,227, 46, 45,148, 71, 11,191,250,155,111,194,233, 49,213,193,195,171,130,139, 61,167,131,131, 14,216,246,224,149, +174,234, 58,202,245,132, 24,113,110, 68,130, 25, 15,143,183,133,219,195,196,249,189,183,136,221, 22, 14,215,148, 83,101, 18, 11, +140,122,231,200, 57,155,171, 62,118,132,110,131, 72,160,181, 66,144, 8,227, 6,113,194, 52, 29, 17, 87,168,185, 80,106,166,243, + 17,117,150,192, 31,199, 13, 1,207, 16, 60,167,101,161,235, 5,217,158,113,186,155,168,243,132, 35,154,208,169, 40, 34,133, 41, + 43,179,107,184,176, 97,220,189,206,217,133, 39,250, 3,251, 67,193,105, 92, 17,211, 17,215, 26, 83,106,164,146,209,220,232,156, +195,251,142,146,102,170, 23, 36, 6,166,162, 44,221, 66,183, 3, 95,148, 67,171, 72,139, 54,230,198,211,168, 12, 50, 16, 6,103, + 99,208,187,196,128,131,205,154, 9, 82, 33,116,141,101, 41, 84, 50, 4, 33,184,106,225,221,213, 51, 49,148, 13,201, 37,186,160, +212, 58, 48,251,133, 94, 60, 93,141, 20, 81,106,141,168, 70, 98, 41,204,193,161,105, 97,187, 9,204,185, 33,197, 80,196,217,101, +220,104,154, 94,106, 54,208, 11, 21,167, 91, 74,205, 8,149,105, 82,124,203,208,119, 76,173, 24,132,203,123,212, 45,200, 46,162, +203, 96,102,189,206,104,149, 81, 43,116, 35,227,176, 78, 22, 23, 97,174, 21,162,167,223, 40,164, 66,245, 66,107,158,224, 26,190, +247, 56,113,116,209,127, 38,132, 54,183, 10, 87, 68,149,226, 28, 49,126,118,227,247,164,186, 62,160, 28, 42,254,255, 23,184,243, +159,250,241,223, 87,202, 90, 75, 51,162,156,107,196,240, 15,191,136,124,114,214,191, 12, 19,138, 49, 1,130, 19,170,154,129, 47, + 87,172, 53,177, 88,229,181,212, 72,110,142,208, 22,242,236, 81,173,168, 84,194, 24,200,115, 37,248,134,171,129,197, 5,182, 99, + 79, 21, 71,157, 26,241,204, 26, 21, 4, 79, 22,143, 78, 51,190, 55,205,106,157, 14,120,109,168, 90,112, 83, 28,204,211,145, 41, +218,218,219,119, 61,233,242, 21, 38,132,224,176,194,187,174,166, 54, 93,123,228,118, 62,138,117,143, 81,243,141, 27,246, 1, 47, + 17,239, 42,207,191,245, 23,252,217,181,240,100,178,157, 96,176, 24,188,129,106, 20,131,169, 84,219, 97,171,151, 31,252, 53,103, + 48, 3,195,193, 54,235,151,250,178, 66,230, 86,133,233, 10,157, 11, 86, 12, 4,111,137, 92, 93,145,172,184, 70,203,150,127,192, + 85,180, 9,162, 66, 11,246,247, 87, 53, 41, 72, 21,104,174,128, 90,216, 33,231,178, 6,255,108,154,160, 6,180, 39,116,206,120, +196, 89,137,226, 44,184, 81, 50,234, 28,185, 25,112, 65,196, 81,114, 93,131, 68,138,111, 74, 77,128, 20,186, 16,209,182,226,118, +189,197,248,144, 72,104, 98, 1, 41,103,225, 31, 20, 92,172,248, 92,105,173, 33,205,252,206,205,182,238, 40,149,203,251, 15,248, +213,221,134, 71,143,190,207,163,247,159, 90,190,176, 42,103, 87,103,252,252,207,125,129,247,223,251, 62,143, 62,122,198, 40, 27, +180, 21, 51,214,105,195, 17,249,202,151,222,225,234,254, 22, 84,216,124,249, 43,180, 6,115,158,200, 83,194,187,142,221,110,224, +241,147,143,120,250,244,104,191,155, 50,211,133,145, 70, 64,235, 66,174, 51, 57,103, 28,214, 71,173,181,218,120,191,156,232,117, +228,250,250,142,126,247,128,216, 15,204,121,207,237,221, 11,230,156,137,181,145,171,141, 25,251,184,193,139,103,232,133, 41, 85, + 52,216,103, 1,233,232, 46, 29,113,138,180,226,240, 49,174,174,110,143,143,141,211,146,137,161,240,245,191,252, 11,190,246,181, +223,160,239,187, 31,251, 7,237,253,247, 62,228,131, 15,222,231,181, 87, 95, 99,220,237,192,111,120,254,228, 9, 76, 13, 87, 34, +199,219,103, 60,122,247,125,148, 70,231, 34,117,105,236, 79, 51, 23,187, 45,173, 66,109,141,128, 48, 79, 11,183,113,143, 70, 79, +175,158,227,146,168, 90, 44, 83, 82,170,125,246,188,141,209,238,158,126,200,253,205, 6, 36,147,102,197,249,158,243,179,158,253, +211,175,179, 13,143,136, 2,199,121,203,102, 19, 56,203, 21,164,242,202,189,133,233, 4,110,138, 52, 10,210,121, 72,194,243,103, + 71,182,247,207,216,141,133,235,239, 63,101, 28, 58,100,211,115,188, 25,169,229,110,229, 27, 84, 66,223,225,218, 14, 23,193,185, +128, 23, 27,239,226,149,229,232,121,116,179,227,195,147,242,243,159,219,210,220,200,243,169, 17,155,178,204,153, 37, 79, 8, 16, +199,136,184, 64,154, 22,212, 11,145,113, 85, 16, 87,130, 15,136,239,169, 49,147,107, 33,132, 72,169,101,109,190, 52, 66,236, 57, + 59,123,192,249,189,123, 12,227, 21,183,251, 39,196,222, 70,225, 81,140,222,168,181,146,138, 93,150,251,104,125,106,245, 35,219, +225, 62,187,173,160,203,145,219,101,166,247,208,123, 79, 6, 74, 13,148,188,144,106, 70, 51, 28, 14,123,238, 93,245,252,220, 23, +239, 49,207,129,103,199, 35,125,180,149, 95,142,133,187,155, 3, 47,174,175,137,126,195,235,175,188,202,177, 36,124,107, 4,215, + 16,169,104,139,180,156,240,126,196, 7,103,149,169,147,162, 20,124, 52,208,120, 71, 67,179,163, 9,196,173,208,138, 61, 54,212, + 37,106, 81,166, 90,169,109, 54, 36,167, 64,214,134,182, 96,235,188, 65,200,115, 3,215, 35, 52,234,172,196, 65,200, 65,112, 11, + 4,239,169,197, 19, 26,168,203, 68,215,152, 22, 37,236, 26, 44, 24,209,207, 53,134,190,103,113,133, 82, 33, 23,103,176,159,206, +130,198, 13, 65,157,237, 69, 99,117, 36, 31,232,166,133,218,108, 53,210,162, 82,151,140,248, 64,206,153,236,133,141, 88, 11, 72, +125, 79,109,235,247,175,243, 63, 51, 88,229,135, 14, 94,160,164, 98,185, 35, 32,126,134, 47,106, 49,118, 23, 77,173,170,247,233, +139,132,252, 45, 63,231,186,254, 56,124,106,167,254,233, 3,119, 86, 88,166, 76,107,109,117,130,132, 31,170,186,125, 22, 64,218, + 92,204, 43,226, 29, 28, 74,101, 74, 74,144, 30, 55, 77,164,166, 36, 45,160,153,128,195,157, 2,141, 9,215,195,161, 58, 92,217, +224,234, 45,161, 68, 90,107, 56, 58,246, 37,227,202,137, 74,163, 46,142, 48, 20,160, 67,150,194, 84, 11, 74,228,164, 19,174,101, + 70,191, 5,215,113,200,119, 22,104, 45, 11,210,237, 24,171,240,139, 95,220,242, 43,255,243,127,203,247,159, 94, 17,112,206,226, +248,230,248,179, 95,200,108,227,110, 39, 43,216,197,131,120,143,150,182,150, 6, 5,239,149,252,226, 49,127,241,194,210,165,118, +248, 11, 72, 4,193,210,211,110, 69,155, 54, 16, 53,196,107,105, 86,163,241, 56,123,193,171, 17,200,218,122,137, 48, 81,131, 29, + 82, 34,193,144,161,235,225,167, 78, 86, 73, 12,159, 48,174,113, 66,112,172, 85, 44,108, 7, 36,142, 32, 74,198,254, 61, 20, 19, + 97,212,102,216, 82, 93,245,173,130, 82, 74, 35, 68,161, 38,163,141,137,183,159, 79,158, 51,206, 59,130,218,184, 8,111,136, 91, + 39,142,214, 26,222, 91,127,190, 85,243,123,215,100,146, 25, 21, 65, 20,124,177,169,133,250, 96,105,222, 48,224, 37, 67, 51, 39, +188, 23,104,209, 94,157,218, 48,152, 14,142,230,132,208, 18, 97,136,188,253,165,183,216,237,206,169, 53,115, 56, 45,156,157, 95, +210,143,145,135,175,220,231,163,143,111,208, 82,233,134,184,122,163, 43,125,216,224, 98,100, 78, 86,193, 25, 70, 83, 93,246,253, + 14,189,104, 72,242, 60,127,254,156,187,187, 19, 14,165,204, 51,205,121,178, 59,130, 55, 52,173,106,229,101, 35,194,225,112, 93, + 88,237,123,133, 89,149, 23,143, 31, 49,205, 47, 24,135,183,184,216, 92,114,113,246,144,219,219,103,244,206, 48,164,115,177, 3, +101,217, 31,121,243,245,175,130, 6, 90,154, 41, 65,104, 45, 32,203,108,122, 95, 23,168, 75,165,219,120, 42,106,142,240,224,241, + 10,143,191,255, 33,255,230,223,253, 91,254,249,127,243,223,209, 5, 79,252,212,232,239,250,249, 53,127,240, 7,191,199,233,238, +150,235, 6,178,143, 76,169,241,246,195,192,197, 89, 79,107,149, 37, 87,254,245,255,241, 59, 72, 28,105, 34, 44, 9,134, 93,207, + 63,249,173,175,240,127,253,135,111,241,244,238, 22, 51, 86, 11,105,177, 26,166, 15,144,150,180, 34,132, 65, 42,104, 23, 9, 94, +120,184,187, 36, 68,199,205, 71,239, 18, 58,225,112,154,121,253,231,190, 68, 44, 79, 56,119,223,100,120, 53,177,191,117, 12,187, + 91, 54, 99,166,157, 58, 62,122,218,113,151, 3, 23,103, 71,182, 15, 28,233,197,108, 19, 37,231,120,126,211,120,248,246,142,116, +216, 35, 45, 65,236, 56,220,118,224, 50,190, 87, 52, 85,154, 44,116,125,135,122, 65, 7, 65,178,210,150, 68,206, 71,188,122,158, + 94, 15, 60,158,206,232,251,142,155,219, 59,196, 39,202,162,168, 43,102, 64,212, 12, 78,232,194, 64,236, 70,235,237, 47, 9, 25, + 35,173, 57, 68, 76,119,107,169,183,142,150,109, 28, 26,215, 44, 71,109,141,205,112,193,120,190,227,193,229, 61,230, 35, 76,185, +225,155,173,128,232, 4,124, 32,169,221,144, 5,199,210, 26,125, 23, 25,119,247,233,134, 30,209, 76,201,137, 60, 85,234,208,177, +144,232, 53,178, 52, 37, 85,135,150,142,170,153,172,149, 39, 79, 15, 44,105,207,151,223,124,157, 23,127,249,140,143,158,156, 24, + 98,228,233,205, 19,110,158,223,225,154,145,229, 92,239, 56, 59,123, 96,181, 75, 38,240, 13, 41,222, 12,138,100,150,230,200,197, +225,135,128, 43, 5, 85,143,108,140,194, 85, 74,181,239, 29, 21,234,146,104, 40, 41, 20,180,244,116, 77, 13,104,163, 30,151, 43, +211, 18, 80, 89, 24, 46, 34,170,137, 84, 10,204, 21,113, 29,213,121, 92, 81,164, 21,170, 20,186,230,241, 14, 78, 53,177,137, 30, +178,183,106, 97, 62,225,182,129,124,108,116, 97, 68, 27,196,224, 40,157,173, 11,187, 97, 64, 93, 37,157,236, 21, 47,234,140, 59, +191,233, 33, 10, 12, 30, 21, 79, 89,167,135,226, 35,199, 19,196,170,196,141,241,197,131,119,168,203, 54, 80,246,202,184, 27,127, + 50,148,229, 83, 7, 96, 94, 15,186,254,101, 71,125,125,149,134,245, 16, 45, 73, 73,203,178,230,171, 62, 91,233, 74, 45,109,101, +111, 56,179,168,253, 4,248,139,251,145, 31,251,191,101,223,142,109,101,168, 24, 63, 4, 17,124, 63,124, 42,112,103, 23,149,237, +167,113,178,107,134,224,211,193, 59,247, 83, 38, 5,211, 60,211,218, 66,195,227, 87, 7,130,235,149,124, 91, 80, 58, 58, 47,100, + 61, 34, 62,160, 93, 79, 57, 28,105,197, 83, 66, 15, 67,164, 78,141,230,103,124, 56,163,164, 66,235,102, 98,128,232, 27,126,240, +236,143,130,204, 71, 2,231,200,118,135,182, 35, 29, 14,189,244,212, 69,113,243, 76, 44,166,218, 29, 7,129,141,178,193,241,213, +215,183,124, 65,206, 89,206, 49,162, 92, 67,241, 47, 3, 96,120,178,227, 19,222,187,119,110,149,184,120,154,232, 15,232, 57, 5, +130,120,226, 90, 13,123,249,101,216,164,125,178,143,111,168,225,103,197,222,248,205, 53, 11, 70,172,157,115, 47, 74,171,197,110, +130,171,222,213, 85, 71,109,198,141, 86,209, 53,125,105,123,138,182, 34, 85, 95, 86,219,156, 98,176, 14, 21,219, 49, 97, 47,246, +134, 35,169, 65, 32, 80, 49,248,189, 84,208, 70,117, 54,150, 67,188,133,201,104,148, 82, 77, 60, 34,107, 23,163,218,175, 71,173, + 10,222, 83,197, 33,162,248,232, 9, 56,114,158, 41,217,211,247, 27, 74, 49, 45,107,213,134,167,208, 36, 80,115, 69, 54, 17,130, +179,169, 68, 3,159, 87, 37,173, 20,124, 11, 20,177, 47, 17,141,118, 33,104,174, 64, 21,131,245, 7, 97, 94, 50,170,194,195,123, +247,136,131,167, 84, 49,226, 83,106,156,157, 95,240,234,195, 11, 30, 63,189, 37, 47, 70,246,138, 93,224,236,226,156, 32, 80,106, +163, 73, 99, 33,211,240, 48,191,236,114, 86, 62,122,250, 17,143,159,191,160,243, 1,156,193,115,178, 90,231,190, 54,161,185,117, +114,211,148,110,231,173, 81,224,172, 25, 17,170,224, 78, 19,154, 10, 79, 63,252, 14,199,124, 66,157,195,227,145, 40, 12,177,163, + 15, 27,206,118,247, 56,138,112,182,219,177,159, 38,134,176,163, 54, 33,170, 50, 79, 71,235, 27,123,147,205,120,223,184,221, 79, +148,234,232,123, 33,137,227,120,218,243, 71,255,207,127,228,155,223,248, 14,247, 46, 47,120,112,239,146, 47,189,243,121, 88, 22, +126,239,223,255, 33,239, 63,126,204,188, 63,112, 58, 77,196,205,134,219,155, 59,254,223,161,241,171, 95,126,157, 40, 66,109,202, +120, 54, 82,179, 99,105,133, 24,160,204,153, 15,223, 59, 49,149, 25,175, 6,199,120,137,167,240, 78, 89, 84,215,254,181,224,130, + 17,178, 28,142, 94, 60,103,151,247, 72,251,138,187,223, 56,223, 69,222,184, 55,240,149, 47,110,233,239,254, 35, 26, 23, 14, 93, + 79,139, 39,134,169, 80,138, 33, 64, 47,174, 64, 36, 89,130, 41,247,168,159, 16,215,113,183, 20,138,115,124,238,141,135,148,235, + 15,233, 66, 79,115,158, 90, 19, 93, 95, 56,165, 72,208, 72,136,141,148, 19, 54,106, 50,175,114, 62, 57,110,246,142,167,215, 29, +251,101, 96,244,202,112, 21,160,235, 56, 30,102,156, 47,180,230, 41,115, 66,124, 71,236, 61, 33,122,243,219,171,176, 28,246,220, + 29,239,184,188,188,180,133, 87,174,228,102, 47,205,214, 15,164,154,104,106,248,206, 86,149,243,243, 43,118,155, 11,198,205, 25, + 47,158,191, 71, 43, 11,169, 26, 24, 67,168,120,107,151,161,186,126,198,125,160, 31,175, 8,113,196,187, 74,107, 25,145,104,137, +241,140,237,225,163,163,250, 68,178, 14, 4, 75, 58,226,125,227, 23,127,225,115,164, 60,243,231,255,249,187,148,165,242,252,197, + 19,158,127,124,141, 11,194,102, 24,113,193, 32, 27, 79, 30,189,135,255,252,192,118, 59, 90,218,183, 58, 36, 42,174, 23,131, 74, +105, 71, 80, 8, 90, 89,180, 18, 11,244, 1,102,239, 9,126, 67, 45, 39,234,105,213,175,138, 9,125,134, 80, 41, 85,112,100, 74, + 22,212,213,117, 28, 15,237,164,230,147,112, 29,161, 11,204, 62, 19,154,224,155,218, 84,175,223, 80, 45, 73,134,111,149, 84, 71, +144,108, 50,169,214,163,139, 97,176,203,148,169,222, 49,248,145,214, 42, 50, 40, 77, 19,109, 47,248,234,169, 99, 69, 6,135,207, +133, 69,103, 34, 91, 91, 48,204, 11,226, 60,101,191, 16, 8,184,161,225,134,141, 77, 55, 91, 35,231,198, 38,142,102, 27, 44,208, +253,132, 49,185,251,145,157,114,248, 17,142,155,251,212,143, 51,112,147, 77, 6,148, 90,161,113,142, 23, 0, 0, 32, 0, 73, 68, + 65, 84,165, 15,145, 69,127,112, 0, 46,216,134,232,103,141,206, 45,185, 82,138, 77,119,253, 63, 96, 2,224,126, 28,237, 77,219, + 58,101,244,156,125,202, 84, 23,249,225,154,157,124,234, 66,243,147,254,153, 63,122,168, 79,192,225, 52,211,202, 68,201,153, 30, + 72, 90, 44,204, 24,132,150, 23,188, 4, 66,232, 8,203,196, 41, 47, 52,141,148, 58,209, 82, 35, 72, 97, 16,225,168,133,224,102, + 52, 24,143,164, 86, 91, 69,248,147,152,183,161, 8, 69,178,181, 73, 74,162, 15,158,244, 60,209,188,208, 74, 37,186,158, 83, 77, +116, 94, 24,171, 35,151, 68,191, 25, 1, 79,106, 16, 60,158,230, 44, 92,224, 94, 26,115,212,217, 72,219, 16, 13,171,200, 69,215, +145,181,141,171, 85,130,237,157,155,237,216,197,123, 11,190,181,213, 8,227,141, 72,231,197, 58,133,205,173,213, 47, 49,212,107, +203,213,168, 72, 47,251,144,162,120, 9,182, 71,199, 17, 58,135, 40,148, 98,123,115, 39,209,122,181,171,130,209,254, 53,214,215, +108,222, 38, 10,157, 4,170, 87, 74,179,241,187,119,166, 46, 44,206,172, 85,110,221, 79,138,179,215,246, 74, 93, 52,176,136, 96, +248,197, 82,215,202,213,218,159,198,234,106,150,210, 95,236, 38, 31, 87,173,234,186,178,168,190,224, 75,195,181,128, 43, 54,157, +104, 8, 46, 91,213,199,135,206, 94,193,226,104, 20,230,214, 80,173,132,106,247, 27,234, 58,133,112,142, 42, 21, 71,135, 68,197, +103,187,116,100, 53,253,161, 58, 75,113,123, 31,248,202,151,222,225,254,195, 3,185, 38,134,113,100,211,111,233,198, 14,209, 66, + 43, 17,223,155,186,146,220, 8,206, 28,218, 55,251,107,110,175,111,108, 76, 39,142,136,167,170,251,132,205,223,124,163,101,251, +253, 84, 17,188,115,212,154,152, 21, 54, 97,160,245,149, 83,153,184,188,119,159,216,117,228,230,168,243, 76,106,153, 99,157,201, +165, 66, 61,113,188,121,142,139,157, 9, 71, 92, 37,173,230,168,165, 40,172,181, 67, 4, 74,104,248,248, 50, 51,224,200,115,195, +105,166,133, 98, 59,112,247,148,180,191,227,253, 15,222,229,207,254,226, 79, 41, 83,102, 90, 18,203,124,203, 60,207, 44,173,176, +153, 50, 85, 23, 62,248,254, 51,126,233, 11, 15,108,100,223, 10, 55,199, 59,186, 56,178, 25, 7,230,211, 66,163, 50,205, 51, 85, +215,117,144, 49, 73, 8,162,108,134,158,227,105,162,105, 37, 52,112,179,210, 44,198,192,229,131, 75, 62,247,160, 35,184,202, 69, + 55,240,133, 87,110,120,235,171,255, 24,233,133,229,100,149,147, 33, 85,102,231,168,190,209,242, 57,170,202,217,246,136,182, 64, +229,138,114, 56,208, 82,133, 51,199,147, 23, 11, 23,151, 27, 6, 89, 56,201, 1,221,192, 48,128, 31, 6, 90, 43,148, 59, 51,133, +157, 52, 48,212, 74,217,207, 76, 75,230, 46,119,188,127, 29,153,231,158,180,114, 21, 36,118, 92,157,141,212,234,185, 93, 14, 36, + 38,242, 2,121, 57, 89,109, 47,120, 11,123,182, 96, 59, 56,204,212, 54,197,158,126, 99,175,152,224, 26, 45,118,116, 98,198, 66, +117, 2,146, 41, 73, 56, 27,122,222,122,237,138,139,139,115,190,245, 87,123,136, 66,155, 11,115, 58,225,102, 24, 55, 29, 62, 10, +117,113,136,143,244,103, 15,136,103, 59, 68, 11,129, 5,231, 60,115,134,166,214, 88,169,185,225, 90, 50,233,156, 64, 37,115, 74, + 51,175, 92,116,252,247,255,236,171,124,253,111,222,227,247,255,240,175,185,119,241, 42, 95,124,243,117,182,177,231,241,243, 23, + 28,150, 76, 23,157,141,214,181,241,228,241, 99,222,249,252,231,112, 46, 16,157, 18,139,210, 34,150, 18,198,170,105,181, 6,134, + 2,205, 43,139,102,243,171, 91,210, 21,137, 74,213, 68,206, 38, 98,129,198, 82,214,183,154, 24,246,147,222, 19, 22,161,229, 74, +127, 30, 12,126, 19, 5,169, 66, 91, 38,180, 10,221,184, 33,100,161, 48, 35, 18,232,253, 64,106,230, 63,112,209,163, 29,232,146, + 16, 55, 34, 90,112, 29,104, 84,220,177,162, 62, 50, 77,149,209,117,200,232, 80,153,209, 56, 26,217,178, 22, 90, 72, 44, 71,203, + 18,117,113, 93, 81,141,158,221, 38, 48, 55,101,174,137,179, 94, 16,177,138,177, 52, 79,232, 59,198,177,251, 59, 31,136,159, 62, +192, 62,141,171,233,214,106,121,106,213, 30,105, 94,217, 14,225, 39,190,144,255, 94, 33, 57, 32,167, 68,211,102,174,144,207, 48, + 85, 95,212, 86,177, 65,148,248,119, 64,196,254,232, 95, 13, 63,102, 77,192,143,132,235, 20,152,115,162,104,165, 86, 97, 86,168, +222,218, 21,210,132,156, 10,245, 48, 81,181,209,141,231, 84, 89, 80,122,144, 70,190, 62, 18,206, 3,231,117, 67, 77, 66,199, 9, + 63, 56,138,139,212,101, 97,246,208,230,163, 57,217,135, 13,131, 42,167, 85,169,155,197, 19,171,163,185,140,107,194, 38,108,168, +117,134,147,226, 98, 88, 45,147,149,114, 82, 66,117, 47,181,169,206,196,239,106,175,113, 93, 83,143, 77, 60,226,204,181,110,190, +150,182, 6,119,214, 78,183, 83,112,230, 18,246, 56,147,148,180, 8, 78,136,174, 25, 32, 64, 27, 62,172,149,154,214,112,226, 41, +174,174, 92,121, 91,158,139,179,157,116,109, 25, 39,150,202, 38,216, 24,221,240,178,182,131,111, 52,210,122,208,135, 0,117,174, + 16, 28, 21, 71,171,206,190,152, 0,180,179,221,187, 54,242,210,108,117,192,203, 73, 67, 67, 34, 68,132,172,150, 90,237,229,255, + 99,237,205, 98, 45, 75,207,243,188,231,251,135,181,214,222,251, 12, 53,116,245, 88, 61,112, 38, 37, 82,180, 76, 39, 82, 36, 74, +148, 37, 37, 78,100, 9, 9, 32, 88,113,128, 0,214, 69, 46, 18, 32, 1, 2, 4,200,101,224,171, 92,229, 34, 64, 6,192,129, 51, + 8,200,128, 0, 70,224, 68,177, 69, 71,130, 16,197,178, 72, 81,164, 56, 72, 34,155,108,246, 60,213,112,170,206,180,247, 94,107, +253,211,151,139,111, 85,117,177,173,144,138, 36, 52, 26,232,234, 83, 56,117,206,169,115,246,250,255,239,123,223,231, 89, 72, 65, +226,112, 62,216, 78, 28, 65,107,125,168, 28, 52,135, 58, 86,161,107, 74,166, 17,156,167,149,138, 58,207,220, 20, 47, 74, 23, 61, +174, 21, 27, 51,247, 1, 39, 17,231, 27,162,133,154, 29, 77, 10,195,202, 96, 38, 62, 58,124, 22,170, 52, 83,108, 46,240, 28,169, + 66, 63, 68,114,105,184,218,232,125, 68,139,146, 92, 65, 85,136,253,138, 39, 14, 6, 99, 59,135, 30,105, 86,211,171, 56, 99, 18, +103, 59, 84,120,239,105, 90,112,222,190,118,226,252, 67,169, 67,140,129, 32,222, 38, 35,170,212, 44, 4,255,128, 9,174,248, 4, + 29, 22,232,201, 57,211,230,142, 91,119,239, 50,158,126,155,126,216,224, 99, 79, 23, 61,113,221,227,187, 53,155,213, 26, 65, 8, +171, 3,182,121,203,249,253, 83,130,157,147, 40,121,182,190,123,244, 6,204,168,149,185,244,232, 62, 49,132,158, 81, 38,138, 8, +190,236,205, 1,150, 12,120,225,189,195, 79,149, 41,237,184,156,246,108,199, 75,171, 29,145,201,187,204, 60,120,138, 54,238,140, + 39,188,242,246, 93,226,106, 69, 20,225,236,100,203,209,113,224,217,231,143, 77,147,153,205, 56,232,101, 32,185, 9,143, 18, 37, +128, 15,104, 17,230,212,208,162, 38,210, 64, 81,129,227,131, 21, 63,249, 67, 55,184,249,116,230,221, 83,143,115, 23, 28, 29, 94, + 67, 14,110,146, 79,111,195,240, 12,180, 13,125,184, 96, 85,207,200,229, 10, 78, 58, 58,119, 6,171, 64, 58, 19,104,103, 56,151, +137, 7,142,253, 88, 56, 61,175,124,252,211, 31,160,230,123,184,150,185,220, 59,134, 85,224, 96, 0, 55,122, 14, 14, 10,111,159, + 52, 94,127, 11, 14,214, 14,207, 33,231, 23,141,153,158,222, 5,170,239, 24, 6,171,202,141,185, 33,108, 8,226,152,234, 72,158, + 26,243, 52, 51,151, 76, 83,165,186, 74, 77, 25, 41, 91, 27,147,171, 16, 92,100, 26,119,224, 3, 33,246,139, 41, 14,112,129,206, +175,200,204,164, 42, 92,185,118, 68,119,180,230,240,224,152,182,155, 24,167, 4,189, 1, 72,214, 18,153,200, 86, 67, 69,232,186, +136,116, 43, 54,171, 35,250,224,112, 37, 49,207, 51,161, 63, 36,198, 64,214,104,135, 81,141,104,112,208,132,150, 39,198,201, 84, +176,247, 46, 43,191,247,251, 47, 45,246, 43,229,206,221,119, 88,175, 27, 63,242,169, 23,248, 81,255, 33,190,250,226, 43,188,254, +218, 29,214,174, 67,112, 76,211,196, 91,183,111,243,228,147, 79,179, 90, 69,147,174,204,149,232,134,197, 50,231, 81,241,132,230, +217,107,182,126,187, 52, 90,171,172, 36,146,138, 9,167,106, 49,228,245, 28, 20, 47, 29,201, 57,186,117, 52, 10,228,174,208, 2, +104, 31,105, 41,131, 58, 84, 61, 45, 55,188,174,104, 94, 73,173,146,107,194, 43,132,190,225, 58, 33, 54,135, 52,227,170, 51,103, +162,219,224, 37,216, 42,174,122,116,191, 99,213, 7,116, 63, 83,116,192, 31,116,120,167,132,186, 34, 77,129, 18, 27, 97,180,117, + 95,136,221, 18,234, 83, 84, 26,109,182, 70,207, 16, 21, 23,173, 77,180,118,246, 90, 72, 16,196,117,198, 25,249, 75,224,167, 79, +185, 34,205, 2,211,113,245,189,187,239,240, 23,124,168,151,130, 1,187, 98, 48, 27,202, 35,123,252,248,200, 99, 62, 63,178, 14, +120, 48, 50,119,239, 67,194,126,207,175,139,210, 82,165,101,197,245,242,151,170,138,125,240,177,207,243,204,202, 41,179,135, 57, +229, 69,128,212,200,187, 61,110,125, 72,214,153,189, 38,162, 40,171,174,177,203, 30,241, 14,167,197,166,122,251,153, 77,131, 34, +144,106,135,248, 25, 95, 42,190, 53,166,150,141,219,226, 87, 20, 26,110,170,148,150, 12,173, 78,193,201, 64,107, 3,165,237,209, +222, 83,242, 4, 73, 56, 8, 27,222, 26,143, 72, 56, 78, 78, 19, 65,181,162,213, 88,233,178, 40, 82,131, 55,219, 79, 83,227,157, +179,116,199,213, 89, 74, 94,104, 6,154,193,129,154,177, 72,197, 82,216,136,221, 14, 16, 35,190,217, 62,253,193, 72,183,154,175, + 61, 40,190, 51,212,163,170, 25,201,106, 43,118,243,118,106, 58,206,102,112, 26, 84, 17,241,152,243,209,118,174, 56,115,142,183, +172,104,176, 74,150,119,129, 89, 0,191,140, 80,155, 82,117,217,141, 54,197,105,163,169,144,106, 65,125,176,240,202,226,127,175, +213,222,246,224, 59,168,180, 68, 88,184,242, 78,192,171,128,135, 92, 45,103, 64,107,232,242,173, 93,213, 92,238, 33,120,114, 85, +171,130, 84, 51,187,249, 46, 16,154,162,146,104,193, 81,212, 66, 78,222, 89, 69,174,137, 16,177, 48,159, 56,232,250,222,130, 74, +197,166, 25, 53,171,213,118,186, 64,244,158, 52, 11,173, 89, 95, 89,105, 72,232,160, 22,242, 52, 17,189,195,135,193, 32, 47,117, + 54,199, 47,198,218, 23,129,177, 38,198,113, 52,155,174,135,224, 59,186, 85, 79,223,247,236,118, 23,160, 22,242,168, 77,208,180, +180, 2,156, 82,163,195,137,125, 60, 87,142,215,124,250,211,255, 18,183,222,126,147,251,103,119,153,247,151,220,191,191,131, 19, +197,199, 64, 23, 34, 18, 35,173, 42, 87,175, 29, 83,212, 66, 65, 38,118,240,120, 9, 84,167, 84,201,212,148,153, 46, 42,171,227, + 3, 90,107,204, 83,193,119,150,234,236, 66,199,156, 19,167, 23, 23,236,199, 29, 36,165, 57, 33,239, 51,117, 46,156,207,149, 86, + 44, 85,156,198, 29, 5,165,150,204,119, 94,123,139,171,199, 27, 91, 39,133, 1,109,141,219, 39, 91,214, 49,154,194, 54, 55,156, + 15, 4,231, 8, 78,112, 62,224, 67,199, 88, 10,213, 43,145, 1, 93,110,172,162,153, 15,127,240,113, 62,248,194,134,213,234,194, +210,211, 99, 38, 94,185, 74,222,159,161,231,223,180,131,111, 4,164, 35, 72,135,211, 45,184, 66, 43,160, 91, 65,231, 5,164,189, +169,172,250,129,123,167,137,110,117,200, 83, 55,174,112,255,245, 55,160,121,166,226,232,178,103,188, 63, 50,109, 29,219, 82, 57, + 25, 3, 28, 30,113, 55, 23, 86,178, 38, 15,153,142, 72,240,176, 58, 94, 17,179, 9, 63,242,246,140, 57, 43,251,113,103,233,125, +169, 20, 77, 76,105,102,183, 61,163,180, 66, 23, 15, 24, 86, 43, 66,173, 52, 49, 42,218, 56,111, 81, 46,216, 28, 30,219,172, 78, +196,128, 23,106,135, 57, 39,194,213,227,199, 76,179, 59,108,248,218,119,190, 78, 89,146,248,234,150,201,139,115, 86,141,171,142, + 33,172, 88, 29, 95, 33, 68,197,101,155,132, 84, 13,203, 65,122, 34,202,154, 68, 99,154,103, 36, 5,196,121, 82, 77,164,150, 64, + 6,246,251, 11,190,252,245, 87,249,220,191,240, 49,254,173,191,245, 89,100, 74,124,249,235, 47,243, 71, 47,191,194,175,252,194, +207,240,153,191,242, 97,254,201,111,253, 1, 95,250,195, 23, 81,241,196,174,113,121,113,206,181,195,107,180,254,128,230,109,125, +225,164, 18,100, 77,118,150,187,217,251,134,120,193, 39, 15, 99,164,180,137,209, 55,251, 30,244,118,104, 5, 3, 3,229, 92,112, + 77,201,201,234,132,171,161,177, 45, 21,167, 6,175,170,185,209,165,137, 62,116,184, 67, 71,155, 43, 45, 87,112,198,233, 80, 7, +105,106,248,104, 89,158,170,208, 73,160,133,108,108,125,215, 51,172, 6,114,139,168, 40,185,121, 84, 2,181, 37, 92, 22,130,239, + 17, 55,209, 38,197,187, 21,117,127,137,187, 22,108, 66, 55, 69, 66, 31,113,185,114,162, 35,171,216,115,221,119, 56,113,228, 86, +172, 62,217, 34, 78,160, 45,225,176,253, 34,171, 92,201,123, 33,178,184,148,156, 30, 70,143,220,123, 15,197,162, 60,180, 56, 42, +182,174,170,181, 46,176,174,225, 61, 57,203, 95,180,113,214, 32,213,130,115,142, 33,122,250, 71,198,239,241,125,247,118,247,255, + 49, 14,127,240, 64,159,129, 71, 19, 4,151,115, 33,231,100, 23, 59, 85,106, 93, 90, 30,203, 3,249, 81,174, 93,251,115,132,230, +170, 66,200,153,210,178,101, 58,138,253, 63, 31, 42, 26,131, 53, 46, 66,166, 59, 56, 34,236,246,236, 79, 71, 88, 71, 58,157,153, + 71,135,244, 27, 66, 41, 76, 98, 95, 91, 57,190, 66,190,156, 81, 77,104,173,116, 94, 41,128,234, 37,101, 87,105,186, 38,116, 17, +205,179,181,173,116,162, 85, 79,141,142,218, 28,226,122,138,143, 28, 68,229, 67,207, 60,206, 53,132,119,143, 58,130,151, 96, 72, + 62, 47,184,186, 48,132,213,152,201, 78,108,247,104, 15,251,102,227,119, 22, 45, 33,203, 45,125,233,181,138, 55,186,156, 87,191, + 16,233,140,132,230, 88,202,253,165, 17,188, 35, 99, 34,230, 7, 70, 31, 53, 74,235,242,103,250, 69, 82,176,140,216,155,129, 54, +170,100, 43,245, 56,111, 52,160, 86,105, 73,136,222, 89,226,212, 91,248,172,168, 18,213,170,107,234, 50,218, 28,117,193,181,214, + 38, 86, 51,241,206,254, 50,139,221,254,171, 46,182, 57, 97,209,214, 45, 93, 93, 53,137, 75,171,182,110,144,210,240, 11,210,182, +169,141,239,130, 55, 58, 85,197, 94, 8,135,222,240,131,222, 41,196, 64,163,224, 37, 82, 68,145,234, 8,206, 45, 1, 64, 83, 32, +154,113, 73,232,131, 51,153, 77, 82,188,120,235,136, 59,161, 23,135, 39,146,188,144,165, 34, 1, 66, 54,129,128, 58,240, 73,141, + 20, 38,158, 82, 51,171,222,166, 6, 41,101,110,159,220,163,150,202,225,193,192,170, 27, 88,173, 6, 46, 79,183, 76,165,178, 90, +247,108,142, 14,249,247,255,163,255,152, 31,249,216, 71,120,229,165, 63,230,127,248,239,255, 62, 47,189,252,214, 82,200,180,124, + 68, 23, 59,230,125,230, 96, 19, 17,102,238,223,186,205,143,255,216,143,195,167,254, 42,111,191,125,139, 34,153,221,253, 11,238, +156,223, 35,231, 9, 45, 59,198,221,158,147,211,219, 92, 59,126,154,131,110,205,249,254, 46,113,115, 8,179,249,152, 3,142, 40, + 98,221,227, 80,209,224,136, 40, 79, 61,214,179, 27, 39,230, 84, 24,167, 70,196, 49,233,204,165,216, 33, 72,240,104,158, 73, 57, + 81,180,208,230,196, 79,253,244, 79, 51,167, 61,191,243,187, 95,164, 11,194,253, 91,247,185,118,116,204,193,202,130, 97,206, 69, +154,122, 70,169, 72,129,121,202,148,105,182, 16,147,139, 6,161,200, 51,185, 85, 92, 5,233, 2,222,119,136,102,142,250,129,143, +126,224, 10,235,112, 73,157, 51,199,125,133,110,141, 47, 74,125,231, 11,164,253, 27, 68, 9, 72,215, 83,171,210,202, 12, 93,135, +107, 74, 25, 21,157, 3,185, 40, 26, 34,235,180,163,249,204,155,119, 70,174, 93, 61,228,229,215, 79,248,206, 87,247,124,240, 89, +219,244,189,245,182,112, 54,130,205,118,174, 67, 23,241,186,226,106,111,128, 39, 47,206,124,219,186, 65, 90,230, 98, 60,229,234, +241, 39,184,126,176,230,157, 87, 95,225,114, 30,105, 53, 81,202,204, 52,110, 73,105,100,218, 79, 52,105,172,122,240,190,167, 52, +171, 9,170, 3,223,121,210, 60,225, 68, 88, 29, 94,181,105, 74, 54, 58, 91,201,149,131,131, 21, 67, 31,249,232,115, 55,105,213, +113,247,242,130,232, 12, 42,229,197, 49, 12, 3,117, 55, 81, 70,160,107,208,123, 67, 39, 79, 91,146,141,122, 44,145,174,102, 8, + 47, 1,250, 18, 40, 58, 51,215, 75,188, 95, 25,179, 98, 33,173,137, 11,156,156,142,124,249, 15, 95,229, 23,127,233, 6,186, 25, +184,117,235, 62,111,221, 61, 35, 95, 78,252,157,191,253, 11,252,123,255,246,223,228,233,231,174,241,249,207,255, 33,243,156,104, +210,184,123,239, 45, 14,143,123, 14, 55,199, 76,169, 25,107, 95, 2, 44, 53, 62,149, 70, 88, 13,164, 86,112, 50,131,235,151,202, +212,142,185, 86,130,115,116,210,168, 52,246,213,122,157,126,223,160, 15, 20, 31,104, 15, 2,106,165, 89, 69,213, 5,171,208,238, + 19, 81, 54,164,160,168, 76,148,106, 42,232, 46, 40, 85, 10, 77, 58, 98, 83, 28,129,138, 55,182, 5, 80,245, 18, 45, 66,138,145, + 20,132,206, 9,185,100,112,158,148,148,153, 75, 6, 31,145, 78,241,171, 67,163,117, 6,193, 83,145, 4,184, 76,140,160,205,113, + 57, 11, 71, 3, 54, 21,164, 67,212, 38, 62,135,171,254,225, 56,253,209, 75,123,147,247, 30,138, 5, 56, 3,186, 5,188, 50, 43, +104,130, 7, 45,220,185,192,180,159, 13, 54, 86, 22,110,135,218,107, 92, 93, 14, 11,127, 94,124,122,173, 80, 91, 33,171, 61, 15, +190,223,142,252,251, 5,227,220,251, 30,232, 15,108, 50,181, 54,187,228, 5,111, 83,161,229, 48,176, 93, 66,113, 15,150, 19,151, +203,127,175, 30, 9,210, 77,239,235,234,151,247, 77, 37,182,251,153, 52,238,105,205,112,228, 33, 40, 33,249,165,181,227,208, 52, +211, 87,197,213,142,117, 28, 56,201, 23,232,124,128,168,167, 6, 79,139,147, 5,184, 75,143,247, 5, 77,163,173,126,166,153,134, + 48,116,157, 93,252,182, 66,136, 61,206, 59,107, 5,177,129, 44, 84,127, 73, 65,232, 52, 34, 53, 51, 28, 15, 92,110,149,213, 58, +112,116,124,104,159,107, 42, 4,231,108,239,137, 51, 64,190, 87, 80, 28,109,145,188,219, 67,203, 42, 53,110, 9,196, 72,176, 91, +176,106, 35, 58,219, 7, 91,178, 72, 81,178,185,214, 77,197, 98,123,122,103, 60,243,134,165,232,197, 43, 53, 21,166,106,236, 93, + 45, 75,205,205,137, 77, 6,106,163,137, 1,105, 92, 23,177,159, 46,191, 36,214,253, 3, 42,173,253, 62,117, 24,116, 71,161,218, + 13,186,170,209,225,252,226,126,215, 86,105,193,225,151,221,162, 85, 30, 26,234,162,173, 30, 36,152, 19,221,186, 58,214,169,110, +208,154,163,106,197,137, 82,197, 86, 20,210,202,194,195, 95, 48,182, 78,232,157, 29, 2,134,222,132, 26,206, 5,188,132, 37,112, +213,112, 64, 8,182,255,215,232,104, 30,250, 26,104,174, 48,205,201,126, 48, 99,164, 54, 35,232,105, 21,156,239,204,196,149, 43, + 90, 28, 18,237,182, 44,189, 39, 86,131,235, 84,105, 75,197, 67, 16,241,108,239, 95,242,198, 59,111, 51,101,216,239,102, 74, 43, +220,194, 2,141,171,190,179,131, 86, 16, 74, 42,124,246,167,127,150, 95,250,249,159, 1,224,249,103,159, 65,167, 51,254,147,255, +244, 63,167,137,163,228,132,243,158,161, 95, 49,244, 29,165, 41, 29, 43, 46, 47, 78,249,167,191,247,121,142, 86, 87,216,237, 51, +155,163, 35, 98, 92,209,197,192,149, 43, 55, 56, 58,124,158, 90, 2,219,221, 61,124,170, 92,142, 91, 98,183,194,183,128,250, 74, +196, 49,166,153,139,179, 61, 93,223,113,227,234, 21,180, 58,134, 88,121,242,217,199,120,245,181, 19,238,159,238,137, 27, 97,190, + 76,203, 10,167, 35,248,192,225,141, 35,230,221, 22,220, 49,183,111,191, 67,191, 90,243, 55,126,241,167,168, 57,241,165, 47,125, +157,148,118, 92, 92,156,115,114,118, 65,183,238, 97, 95,233, 87, 29, 62,216, 43, 87,115,118,136,148,192,210,115,134,222,121, 35, +147, 57, 79,236,141,242,229,213,209,212,243,145,231,158,229,153,117,143,184,145,166,130, 78,153,107, 79,222,160,238, 47,184,127, +239,109, 84, 59,214,131, 66, 46,104, 18,235, 38,207, 80, 71,129, 62, 24, 98, 55,153,156,200, 69, 97,123,158,216,239, 3,159,252, +225,199,249,221, 47,191,198, 31,191,217,112,157, 99,238, 58, 78,247, 29,195,224, 24,188,167,118, 61,171, 85,207,122, 29, 57,234, +110, 48,215, 66,174, 91,188, 22,230,109,129,203,145,183,223,189,195,217,105, 79,236, 10, 46, 40,140, 19,190, 22, 52, 14,148,122, + 74,169,214,182,112, 84, 74,205, 76,243, 14, 90,193,187,184, 76,218, 34,195,186,163,212,204,246,244,148, 56,244,212, 58, 83,114, +161,235, 6,174, 95,187,198,245,171, 87,233, 36,242,165, 63,250, 2, 37, 21,155,176, 45,171,148, 26,133, 48, 68,166, 92, 25,100, +131,147, 72,246,106, 10,226, 49,225, 86,157,221, 94, 49,204,106,107,133, 73, 4,245,142, 58, 37,114,134,121, 30,145,154,160, 86, + 36, 4,214,155, 21,111,223,191,228, 31,126,254, 75,124,238,175,254, 16, 31,255,240,115,156,167,202,187,119, 79,249, 7,255,251, +239,112,248,183,127,142,127,227, 95,249, 49,242,228,248,252,111,126,145,166,202,184,175,156,220,189,199,102,115, 68,136, 27,124, +115,204, 50,226,102,123,116, 55,167, 84, 45,100, 87,232,171,105, 74, 75,222, 81,246, 5,149, 14,130,103,146,138,164, 66,140, 17, +245,166, 61, 46, 8, 37, 79,248, 0, 45, 13,104,180,158, 49, 62,176,175, 74, 84, 79,239, 21, 81,191,188,214,101, 52, 87, 90,244, +132,208, 19,187, 35,202,254, 30, 37, 58, 52, 89,230, 60,246, 61,154, 38,154,107, 20, 34,157,175,228,233,146, 1,161,117,107,240, + 9,159, 86,100, 21,106, 13,200,202, 94,223,230, 42, 32,129,190, 21,243, 77,196,200,208, 53, 6, 81,230,108,175,153, 3,138, 4, +165,123, 36, 24,246,254, 91,232,250,125,187,225,199,220, 35, 1, 48, 1,233,223,219,171,223,119,182,118, 45, 98, 90,106,215,121, +178, 88,254,253, 92, 33, 52, 56,244,239, 77, 0, 86, 96,129,233, 63,195, 13, 56,101,227, 33,104,109, 22,214,253,203,228,206,212, + 70,173,141,185, 54,174,244, 6,252,122,112, 88,120, 63,206,234,240, 79,201, 24,116, 63,192,254,118,154, 48,194, 92,206,214,238, +138,142,178, 47,184, 36,244, 3,108, 91, 65, 91, 71,109,133,203,208,208,117,132,177,176, 19, 79,105,151,144, 60,121, 46,116, 85, + 72, 96,248,226,208, 97,210, 93, 97,218, 89,203,192, 71, 71,101, 79,211, 64,218, 22,188, 43, 20, 85,156, 14,116, 50,209,106,164, +133, 76,157, 3,174, 12, 28, 13, 74,136,246, 49,142,165, 16, 84,173, 59,142,179,157, 34,222,180,171, 52, 83,178,162,203,206,221, + 60,110, 56, 39,104,110, 22,132,211, 66, 22, 19,182, 32,246,123,156, 8,169, 85,156,243, 15,107, 99,176,116, 49,155,249,157, 93, +179, 91,189,170,208,196,108, 60, 77,176, 10, 25,230, 95,175,205, 35,190,217,255,127,112, 32, 16,165, 52,219,229, 57, 91,205, 89, +210,173,181,135,249,188,162, 15, 84,136,150,231, 20,245,148,102, 26, 64,117, 14, 39,105,129,227,244,150, 33,104,141, 24, 44, 56, +102, 41,125, 83, 64,122,156, 17,241,194,210, 31,109, 13, 13, 75, 87,178, 53,162, 11,244, 3,164,182,124,238, 98,234,189,220,160, + 67,113,177,218,174,210,155,211, 57, 21,187,105,187,162, 56, 23,169,106, 19,143, 0, 20, 28,154,171, 5,105, 48,189,103,112,142, +148, 50, 33, 64, 31, 34, 65, 29, 91,153,113,173,210,199, 72,206,106, 66, 27, 5, 25,236,139,241,230,203,239,112,122, 97, 80, 36, + 23, 2,146,178,201, 14,106,101, 63, 45,135,156, 16,104,206, 51,166,249,123, 67, 34,118, 93, 51, 44,112,181,144,137,146, 40, 57, + 18,194,129,237,118, 58,101,123,153,216,239,118, 36,122,110,157,223, 39,231,145,174, 27, 24,164,227,236,232, 42, 50, 52,250, 32, +232,152,137,195, 33,161,235,137,177,144,181,144,166,138, 75, 91, 98, 16,142,143, 35,173, 84,106,201,108,174,174, 41,217,113,251, +222, 5, 23,219,153,176, 19,188, 55,161, 69, 0,234, 60,113,126, 43,209,173, 87, 60,125,253, 6,117,156, 25,250, 21,117,110,172, + 98,199, 79,255,245,191,198,111,252,227,223,134, 84,121,245,197,111,115,229,198,117,134,131,171, 28,246, 3,199,107,229,246,217, +222,118,116,213,214, 36, 94,122, 67,250,122,103, 66,153,106,183, 16, 23,236, 64,243,248,213, 53, 79, 63,182,225,183,191,124,194, +179, 79, 10,159,252, 96, 37,118, 29,155,199,159,229,252,205,111, 49, 37,197,119,149,145, 30,153,161,151,130,167, 65,243,180,185, +224, 54, 14, 29, 42,161, 8,190, 43,196,131,192, 75,175, 86,214, 87,174,243,204,135,110,242,220,203, 47, 49, 63, 21,185, 87, 86, +164,230, 56,244, 29,117,174,180, 94,216,108, 60, 87,175, 92,227, 74, 55, 32, 52, 58,223,225,227, 21,206,238, 93,176, 62, 84,246, + 23, 74,167, 27,144,145, 34,224, 91,164,170, 16, 98,228, 50,103,230,125,230,227, 47, 60, 73,113,142,111,126,243, 13, 59,140, 86, +147, 18,185,165,152,228, 96,201, 19,120, 74, 25,217, 94,236,169, 90,233, 67,224,234,213,167, 56,216, 28,177, 14, 43,190,254,226, +183,184,115,231, 62, 67, 31,105, 5,106, 47,228,154,161,120, 75,125,235,136, 87, 37,150,140,203, 43,250,225,136, 57, 20, 92, 20, +116, 46,100, 43,143,224,221, 49,181,206,200, 16,105,211, 37,105,218,226,107,161,180,134, 58,111, 42, 94, 81, 98, 12,188,253,206, + 61,190, 32,223,230,115, 63,249, 41, 62,242,241,167,152,247, 91,254,233,239,189,200,127,245,107,191,206,191,243, 43,255, 42, 31, +120,225,121,158,185,249, 46,111,188,245, 26, 83,206,156,220,187,228,169,107,247,185,241,212, 77,238,238, 38, 88, 68, 30,221,225, + 10,191, 47,212,125, 53,239,183,120,170, 90,243,165,198, 64, 20, 79, 47,134,169,213, 6, 83,153,241,157, 16,252,138,170,153, 78, +149, 16,122, 92,176, 14,121,147, 74, 73,246,240,170, 52, 74, 48,143,131,138,169,166,155, 52, 38,245,116,169,160,220,163, 70,193, +141, 25, 87, 61, 97,213, 40, 36,156,118,136, 79,168, 20, 92, 30,240, 62, 66,200,148,146,240,170,132, 3, 71,218, 90,235,199,237, + 42,174,235, 16, 95, 73,206, 94, 51,215,190, 55,184, 86,117,164, 40,132,104,215,111,239,128,232, 24, 66,247,103,222,153,127,143, +157,237,253,129, 48,133,154, 27, 46, 89, 95,255, 96,136, 15,147,226,209,238, 50, 15,111,176, 77,190,247, 33,254,253,138,111, 25, +216, 78,153, 92, 51,226, 48,103,192,131,212,250, 95,176, 71,174,139,114,181, 21,203,113,133, 31, 0,203,113,127,202,175,221,247, + 9,206, 57, 96, 88, 72,134,169, 86,102, 4,149, 74, 88, 21,202, 56,113,177, 23,138, 87,134,169, 81,210, 5, 71,221, 26,201, 29, +251, 92,104,117,162, 95, 59,146, 0, 57,146, 99,161,120, 37, 68,165,159, 51,179, 8, 94,170, 65,134,188,199, 13,145,142, 53,187, +147, 29, 12,246,189, 85,115,130, 57,146, 67,161,181, 29,131, 56,210,229, 4,222,211,133, 21,100,165,172, 32,157,109,241,207, 60, +245,228,223,109, 11,152, 69,237,217,101,184, 86,100,129,205, 44, 38, 52, 85, 28,134, 76,245,222, 63, 8,184, 91, 21,162,153, 83, + 92,155, 73, 86, 92,112,134, 98,173,246, 62,188,247, 38,136,192,161,206,110, 73,226, 29,190,139, 72, 91,174,245, 18, 88,228,163, +168, 24,114, 85,176,132,185,170, 65,122,155, 46,220, 96, 17,196,217, 3, 81,212,204,113, 2,120, 23,172, 83, 14,102, 42,114, 75, +239,212,252,127,152,255,197,225,154, 61,156,107,179, 16, 92, 23,172, 10,145,115, 93, 70, 75,246, 80,177, 19,154, 34, 77,141,161, +237,133,224,237, 22,111,117, 55,232, 6,112, 5, 84,132,150, 27,161,143,116,241, 65,174,160,218,237,218,117,104,106,134,225, 21, +161,105,165,104,195, 5,197,247, 17, 47,193, 32, 50,226,151, 21,135,209,238, 52, 91,106, 92, 69, 73,217,170,127,165, 66,105, 32, + 68, 66,203, 54, 34, 83, 72, 37,243,206, 59,119,112,222,186,218,173, 54,114, 30,121,143, 34, 96,243, 56, 47,102, 32,186,115,235, + 29,134,245, 17, 55,159,121,154,183, 94,254, 54,255,205,223,251, 53,222,186,115,178, 76, 63, 44,148, 56,172, 14,192, 53,164, 54, + 98,151,129, 74, 46,158,132,195,220, 60,133, 46,216,168,200, 71,232, 92, 79,236, 58,148,198,208,119,244, 93, 52,117,172,102,130, +120,246, 83,166,185,194,170, 83,180,102,230, 73, 89,109, 34, 47,220,188,206,203,175,221,226,237,119,207,137,125,192,171,237,187, + 37,152,227,190,150,196, 60, 37,182,151,123,166,221,204,213,235, 71, 28, 93, 57,224, 91,223,124,133,175,125,245,155, 76,101,230, +153,167,159,225, 3, 31,120,158,143,126,248, 5, 86,113,197,110, 59, 19, 66,207,110,183,165, 91, 13,180, 8,151,251, 61,181,194, + 16, 3,190, 11,248,224,208, 82,141,158,183, 8,115,134, 85,207,167, 63,241, 33, 66,140,188,248,206,125,134,174,227,249, 39, 54, + 28, 93,185,198,229,249, 37,103,103,247,136,157,163,140, 9,230,130,106, 49,112,200,250,208, 38, 75, 30,252,122,141, 43, 9,223, + 28, 49, 6, 90,234,248,253,151, 39,206, 39,199,110,234,121,249,157,115,246, 5,170,239,192, 41,227, 56, 51,151, 74,139,106,129, +172,105,102,220, 79, 92,140,123,134,154,185,125,114,155,211,251, 59,238, 95, 94,178,159,102,186,131, 3,230, 92,232, 93, 69, 75, +229,116,123,142, 58,199,246,236,146,203,237, 25,159,250,244,211,252,216, 95,251, 40,127,242,173,119, 25,231,132,243,128,243, 4, +241,214,228, 0, 83,172, 98, 57,151,214, 42, 89, 43,199, 71, 87,121,242,241,199,121,226,137,171,100,113,188,123,231,222,146, 32, +246, 56, 41, 32, 80,117, 48, 99, 96, 15,157, 95,217, 42,105,232,240,195, 33,206,135,135,175, 29,218, 96,221, 31, 34,174, 35,251, +130,111, 66, 75,141,113, 60,183, 20, 58,133, 18, 4,105,158, 90, 51, 90, 44,120, 43, 30,238,221, 63,101,183, 29,121,238,153, 43, +188,250,250, 45,254,248, 59,111,115,251,100,203,173,123,119,121,250,169,235, 60,249,248, 77,158,124,114,195, 60,237,185,119,186, +163,181, 29,207, 60,187, 97,181, 94, 49, 93,236,209,102,135, 51,175,150, 1, 48,251, 21,204,169, 64,111, 63, 3, 62, 88,208, 53, + 33,228, 44,172, 67, 48, 23, 67, 80,104,153,214, 58,170,111, 76,101,111,249,157, 38,208,121,186,206, 2,168, 89,139,133,255, 92, +160, 73,197,247,107,164, 21,115,173, 87, 71,105,129,208, 5, 2,141, 85, 12,132, 40, 20,245, 86, 35,237, 28,186,175,244,177, 48, + 22, 33, 59,135,103,128,150, 17,188,173, 35,253, 76, 17,115, 99,196, 67, 65, 23, 45,174, 93,198, 27, 53,152,148,170, 61,184,148, + 0,171,213, 1, 55, 30,187,242,240,117,226, 65, 78, 76, 22,178,246,131,181,248,251,147,239,237,125,227,239,211, 89, 57,191,123, + 65,201, 51,206,195,141,235,199,108,150,177,190, 91,198,224,242, 72, 77,206,125,159,135,229, 63,119,219,221,101,166,221, 30,113, +202,209,193, 1, 7, 75, 90,127,126,164, 42,247, 16,126,243,200,131, 53,189,239,253,191, 31,164, 83, 20,238,157,141, 92,236,118, +212,218,120,226,234,134,131,245,230, 47,117, 18,112,231, 98,228,242,238, 61,198,105,194, 81,104, 69,209,201, 42,116, 89, 58, 74, +201,236,118,231,248,205,138,172,141,172,130,186, 66,220, 40,117,231,145, 82,113,131, 39,196, 21, 89, 7,106, 58, 95,204,116,106, + 23,201,141,199,247,158,118, 57, 51, 81,104, 85, 8,181, 81, 19,120,137, 38, 28,243,150,241, 10, 56, 66,104, 76, 85, 57,232, 29, +155,155, 79,243,250,252, 36,183,190,243,109, 66, 93,126,192,141,254, 98, 16,133, 86,154,221, 24,195,146,115, 47, 13, 93,130,111, +198,123,145,135, 29,116,167,141,228, 60, 62, 24,101,173,149,106,200, 23, 15, 78, 21,117,158,212,148, 32,222, 94,168,157,157, 46, +131, 83,154,150,197,135,235, 9,190,209,176,138,134, 87, 53, 53, 42,141,146,203,210,153, 55,232,141,136, 25,208, 68, 27,117,169, +223, 57, 93, 2,122,222, 91, 37,170, 85,163, 93,225, 64, 11,193, 71,178, 61, 93,237, 95, 87, 45, 43,208,132,170,149,172,142,188, +116,211, 69,253,210,213,110,120,196,184,241,193,126, 64, 68, 44, 45,232,189,177,115,157, 58, 52,217, 70,198, 97, 63, 96,165, 21, +186, 37, 53, 90,232,140, 19,223,189,247, 45, 47, 33,224, 3,132, 36,120, 13,120,245,139,193, 44, 24,169,174,233, 66, 11, 82, 98, +240,246,103, 86, 69, 52, 24,168, 68,204, 91,175,204, 75, 93,208, 81, 82, 98,220,110,209, 90,169,229,130,230, 28, 41, 77,104,179, +159,236,166,182, 94,113, 78, 81,241, 52,148,113,119,193,127,249, 95,252,103,252,175,255,243,255,196,246,252,148,221,126,107, 93, +245, 82, 41,101,166,235,143,128, 7, 95, 19, 37,180, 72,106, 66,115, 29, 65,236,118,209, 84,208,214,152,211,200,102, 24,216,177, +103,152, 18, 8,244,135, 27,114, 26,105, 85,168,213, 48,158, 62,122, 14, 36,112, 54, 87, 82, 41,184, 88,152,179,112,247,206,158, +183,222, 62,193, 5,227,113,135,161,195,199, 72, 23, 3, 94, 11,147, 52,156,107,148, 41,113,245,177, 67,126,245, 87,255, 77,110, + 62,243, 56,243,126, 68, 60,120,103,226, 17, 23,132, 85,191,230,183,127,243,159,241,223,253,218, 63, 96,211, 11,147,102,158,190, +126,131,147, 91,119,168, 89,113,177, 91,104,133,182,207,172,218,232,221, 0,113, 96,158, 19,171, 46, 48,244, 43,124,127,192,143, +127, 34,243,220,181, 25,119,188, 98, 74, 29,227,118,135, 44,156,240,119,223, 62,102,117,165,113,124,148,169,219,194, 80, 46,172, + 98, 53,172,108,125,133, 80,157, 50,110,247,188,113, 55,112, 57, 29,240,177, 79,124,156,219, 39,247,185,119, 41,136,139,172,170, + 35,174, 86, 6, 34,233,123,214, 7, 3,219,109, 33, 68, 33, 28, 56,242,229,158,211,147, 29,231,243,158,146, 35,110, 19,201, 84, +174, 28,117,220,124,226, 38,223,125,233,143, 57,159,118,184,150,105, 34,248, 40, 12,235,200,183, 95,124,151,191,242,195, 31,230, +147,159,120,158,223,253,202, 55,112,150,238,164,170, 29, 78, 89, 64, 82,210,234,195,124,198,193,176,230,202, 99,143,113,112,124, + 5, 21,199,201,253,219,198, 55, 92,156, 3, 4,235, 65, 11,150, 34,207, 89,136,171, 64,239, 54,132,205, 10,141,130,228,134, 87, +111,153,155, 85, 71, 83, 71, 45,208,183,142, 89,102,230,233,130, 58,143,180,186,216, 4, 83, 67,235,140,167, 26, 42,179, 46, 83, + 61, 58, 94,124,233, 54,162,133, 79,124,232, 89, 30,187,118,141,183,111,223,231, 91, 47,189, 13,237, 11,124,246,199,254, 69, 62, +242,161,143,114,180, 62,228, 11, 95,252, 6, 39, 39,151,188,245,250,187,124,244, 99,143,179,141,141,154, 39, 52, 4,168, 5,241, +142,181, 10, 37,122,230,113, 79,153, 61, 62, 24,184, 69, 39, 35, 70,122,215, 81,130,163,230, 25,102,165,143, 61, 45,194,148,132, + 32, 17, 45, 13, 23, 86, 12,209,156, 0,169,179,155,172,199, 70,226, 85, 32, 76,138,120, 7, 4,102, 95,136,190,210,215,142,230, +214,164,108,175, 89, 45, 84,196, 7,218,110,166, 86,163, 11,210, 69,250, 94,144, 50,225,178,163, 6,155, 24,133,122, 68, 11, 17, + 50,248,125, 37,123, 65, 92, 37, 27, 52,130,190,137, 29,174, 10,180, 97, 89,151, 14,253, 67,200,202,101,131, 67,103,225,183,139, +102, 60,129,195,110, 9,152,229,101, 90, 19, 23,186, 91,130, 85,120, 79,144,150, 39,179,252,229,154,232, 36,210, 61,178,251, 46, +143, 60,212,255, 60,129,179,154, 42,173,102,188,126,111,143,124,248, 1,245, 50,255,131, 58,228, 13,114,174,232,130, 36, 79,242, +222,251, 30,177,251, 93, 39,223,131,136, 55,254,198,159,245,227, 6,230, 57, 81,107, 6, 77,164, 84, 40,173,178, 79, 80,198,138, +110, 34,186,111, 28, 13, 29,181, 57,146, 2,113,166,141, 35, 85, 61,114,220,147,207, 61,165, 64,164,209,105,162,100, 72,110, 38, + 0,153, 14, 77,145, 50,158,219,101,179, 12,248,133,214,216,130,195,133, 2, 13, 98, 13,212, 80,113,205, 81, 4,250,206,113,116, + 44, 92,121,238, 9, 70,239, 24,227,138,176,120, 84,140, 37,110, 91,223,101,148,108, 8, 87, 37,224,163, 49,207,205, 82, 39,203, + 11,129, 44, 55, 58, 11,160,213, 82,241,205,238,133, 84,219,201,120, 49, 94,108,192, 25, 86,210, 41,190, 42, 4,104, 52, 90, 82, +196,119, 56,173, 52,113,214,215,166, 89, 29,100, 97,165,107, 5,139,215,251, 37,173,105,138, 84,125, 48,194,151,197,219, 46,138, +207, 9,143,163, 74, 32,107, 35, 46,200,214,220, 10,173,218,126,136, 96, 61,117,167, 24,119, 88,161,230, 98, 21, 47, 31,200,181, +210, 59, 1, 1,134,126, 0, 0, 32, 0, 73, 68, 65, 84,251,179,164, 51, 56, 69, 91,186,244,161,127,112, 50, 14,132,224,108,142, +209, 4,193,155,192,193, 67,201,141,164, 22, 46, 81,111, 14,116,153,167, 69, 50,176,120,219, 91,160, 44, 12, 30,166, 76,232,109, + 10,162, 37, 49,170,137,110, 98,215,227,162,199,181, 7,253,203,102,208, 22, 26,100,165,118,216,250, 64, 58,180, 9,187,253, 72, + 74,118,107, 12,150, 60,196, 19,104,106,188, 1,215, 22,158,189, 52,180, 37,219, 51, 55,225,157,183,222,178, 31,145, 90,201, 45, + 83, 74,166,161,132,206,227,165, 46,129,178,198,168,202,230,232, 58,183, 95,255, 22,115,154, 8, 97,160,239, 7,212,193,208, 29, +224,180,227,202,241, 53,198,237,125, 46,166, 29,211, 56,178, 25,122,154, 86,230, 22, 73,165,114,120,117,224,246,233, 57,219,139, + 29,157,131,253, 69,229,238,201,158,239,190,122,143,232, 29, 67,215, 17,187, 64, 28, 34, 71,171,235, 56,157,104,217,161,181, 50, +187,106,178, 29,239,185,119,114,193,115, 79, 63,206,245,107,135, 11,168, 72, 41, 53, 83,107,102,154,148,183,223,124,139,147,147, +219, 92,185,222,243,137, 79, 61,199,147, 87,175,240,221,111,191,140, 84, 91, 51, 8,198,152,111,206,153, 19,220, 5,154, 4,130, + 87,250,126,205,110,204,236,118, 39, 60,241,184,135,120,131,105, 14, 28,220,120,142, 34, 47,226,136, 84,231,152, 58,207, 91,183, +225,137,169,227,153,131, 83,210,168,104,109,108,219,204, 52,121,238, 95, 42,103, 59,199,221, 93,207,157, 83, 65, 92, 32, 17,184, +123,114, 74,158,118, 84,241, 36, 42,107, 9, 92, 91,111,136,171,222, 64, 43,190,208, 92,207,217,118, 68,231,140,102,171,103,169, + 76, 70, 30,163, 39, 79, 66,127, 24,168,173, 81, 53,211,135,206, 58,207,125, 32,117, 29,183, 78, 46,121,243,181,219,124,246, 39, + 62,196,215, 94,252, 14,121,204, 4,223,240,193, 20,194,186,160, 70,170,152,180,103,211, 13, 28, 93,123,140, 43,135,199, 56,239, + 57,189,191,133,217,234,154,185, 36,114, 43, 56,233, 64, 34,120,199, 16, 35, 26, 7,164, 11, 56,233, 88, 29, 92, 99,204, 51,170, + 59,154, 23,162,116, 84,117,228, 98,175, 15,185, 66,157, 51,211,116, 66, 45, 19, 56, 71, 45, 98, 33, 91,129, 42,206,198,139, 44, +248, 89,103,106,230,151,222,184,195,241,245, 99, 62,245,201,103,249,248, 7, 31,231, 96,240,124,237,197, 91,252,222, 31,124,131, +127,237, 23,127,134,159,250,177, 79,241,115,159,251, 81,254,143,127,252, 59,252,179, 47,124, 19,105, 47,242,145,143,125,132, 55, + 73,228, 54, 19,163,133, 98,231,169, 17, 40,172, 67,103,158,119,177, 92,181,196, 14,169,141,226,161,105,165, 15, 29, 26, 42, 57, + 23,152,132, 97,216,224, 92,177,183,209,104,123, 69,134,128, 56, 71,240, 3, 90, 77,102,211,247,107,230,253,142,160,158, 62, 54, +198, 58, 67,237,200,204,132, 62,227,194, 33,117, 63,226,195, 12,226,233,157,167,197, 70, 81, 79,215, 55,166,105, 34,174,122, 80, + 33,170, 34,177,183, 20,187,155, 40, 69,240,225, 0, 90,178,135,144,218,218,196,247,182, 86, 36, 8, 45,219, 19,235,250,193,128, + 95,198,233,171, 71, 72, 43, 71, 14,106,103,183,224, 10,236,253,123, 41,248, 75,224,188,193,161, 13, 30,169, 21, 78, 47, 70,107, + 27,161, 20,173,108, 83,121, 56,126, 79,179,193,124,188,183,151,211, 90,149, 85,144, 63, 19,138,182, 0, 83,158, 77, 21,221,197, +229,114,244,103, 27,143,251, 31,240,246,240,240, 57,166, 12, 14,174,174, 86,223, 91, 69, 91,246,232,229,193,199,161,112,117,209, + 44,108,129,109,131,235,242, 94, 54,192, 84,217,186,128,215,224, 50, 55, 46,183,231,148, 60,211,106,161, 8,196,217,211, 13,141, + 62, 4,146, 83,212,247,224, 34,173, 77, 48, 38,220,176,166, 27, 18,181,173,144,152, 8,212, 5,159, 94,113,172,241, 94,233,244, +156,174, 27,160, 37,166,180,165, 70, 71, 72,118, 20, 25,181, 32,226, 9, 46, 82,247,224,188, 18, 84, 73,234,152, 53,209,210, 33, + 85, 19,172, 28, 79,116, 43,238,102,144,150, 8,118,235, 93,198,179, 52, 30,220,220,131, 19, 10,222,186,213,213, 6, 52,162,142, +182, 32, 33,205,229, 26,105,203,200, 73, 48,252,171,228,250, 48, 26, 41,152,176,196,251,104, 39,201, 82,104, 78,104, 85,237,228, + 37,142,166,217,110,176,213,254,226,154,229,221,236, 59,166,232,146,158, 55,254,145,107,208,188, 33, 76,171, 46, 15,243,218,168, +106,200, 62, 17, 93,172, 66,106,245,184,133,184,132, 83, 27,187, 3,181,101,178, 90, 88,202, 73, 93,242, 2,139,198, 81,140,146, +213,180, 45,182, 43, 65,154,163, 95, 69,230, 57,153,104,193,137,125,231, 7,219,134, 75,174, 84, 47,164,146,233,162, 91,128, 55, +158,186,236, 89, 75,213,133, 86,103, 70, 53,239, 35,117, 54, 62,177,239, 76, 74, 51,231,204,208, 10,181, 46,208, 28, 31, 17, 45, +228,162, 68, 49,211,156, 60,232,196, 59,193,119,230,222,205,115,177,177,120, 39,204,187,209,108,109,221, 10, 17,187,253, 55,181, +106,130,115, 74, 93, 68, 61,174,202, 82,231,115, 52,153,236, 24,167,182, 18,104,173,218, 65, 77,141,251, 60,151,132,228, 30, 41, + 19,155,205,134,245,193, 21,198,221, 37,251,253,142,110,216, 48,237, 70,138,102,130,222,226,174,143, 28,222, 59, 96,181, 58,198, +247, 61, 83,157,153, 83,197,187, 2, 62,226,106,133, 20,152,230,153,253,148,217,230, 68, 55, 4, 82, 18,156, 23,250, 56,208,197, + 64, 92,109,248,236,207,126,150,159,253,201,159, 37,141,123,254,159,223,249, 29,190,248,165,223, 67,200,136, 54, 90, 58,227,159, +252,214,231,249,194,239, 63,205,207,252,248,167,185,241,196, 33,243, 60, 83,146,249,144,239,221, 63,231, 11, 95,254, 6,190,139, + 76, 83, 99,186, 40,124,235,221, 55,216,167,194, 16,156, 85, 1, 69,104,222,225, 21,138, 56,170, 83, 14, 99,196,245,145,227,205, +154,143,125,252,211,236,211,204, 27,111,253, 9,231,231,247,184,122,237, 5, 46,170, 35,157, 29, 83,231, 68,201, 66,119,237, 9, +142,217,113, 57, 77,188, 90, 6, 86, 82,185,216, 43,183, 47, 50,219,217,147,230, 70,149, 21,174, 19,118,229,148, 92,206,249,163, + 63, 25, 57,189,123, 98, 22,172,126, 96, 51,244,212,156,216,237, 18, 7,172,184,188, 84,142, 6,123, 96,108,183,230, 8,232,163, + 65,121, 74,174,236,242, 25,169, 20,100, 31,185,152, 47, 24,167, 68,104,176, 47,137,146, 29,251, 41,241,236,227, 87,249,240,205, +167,248,246,203,247,249,232,167, 62,206, 7,158,123,138,175,127,227, 37,214, 43, 79,109,149,224, 59, 10, 74,171,149, 90,224,232, +232, 58, 7,135, 27,214,155, 35,214,253,138,150, 10, 5, 65,131, 35,165,198,156, 50,142,229, 48, 16, 20,109, 25,149, 64, 84,112, + 85,161,171,132, 16,113,187,137,226, 29,222,175, 80, 49,223,115,149,140,119,145, 57,159,115,122,242, 10,210, 70, 91,211, 45, 24, + 79,105,130, 83,143, 86, 75,192,135, 86,169, 69, 13, 32,227, 34, 41,123,190,242,141,239,242, 83,159,249, 4, 31,253,192,147,124, +229,171, 47,113,114,114,159,119,110,159,240,129,231,175,242,185, 79, 63,205,245, 15, 63,201,191,251,252, 47,163,205,241,213,111, +190,200,199, 63,254, 24, 79,221, 56,230,213,119,182, 12,172,204,123,176,200, 93, 90,105, 28, 12, 61,147, 22,106,106,168, 55,241, +147, 47,153, 92, 26, 37, 70,218, 36,104, 16,188,119,104,155,104, 1,162, 31,152, 53, 83,139,195,239, 18,210, 53, 92,235, 9, 97, +160, 50,161,117, 66, 91, 65,250, 21,147,155,108,135, 41, 21,207,176, 76,218, 10, 18, 29,161,143,196,234,216,205,141,216, 71, 42, +202,188,205,104,245,139, 13, 46,208,250, 1,178, 67, 24,161,122, 19, 37,249, 66,152, 42,253,224, 45,107,226,141,251, 80, 16, 92, + 51,121,140,107, 29,171,254, 79, 23,152, 60, 74, 83,115,192,245, 71,170,108, 7,192,106,176,212,183, 3,118, 30,238, 68,161,166, +108, 23, 53,113,182,190, 90,210,225,123,243,229,224,151,219,113,153,148,245, 90,240,206, 38, 0,157,194, 81,247,222,237, 57, 46, +107, 90, 7,140, 99,177,247, 43, 98,120, 95,249,203, 3,207,212, 10,115, 46, 70,242,139, 29,195, 35, 59,245, 67,224, 80,222,179, +207, 85, 96,237,222,251,154,108,150, 33,174,123,127, 18, 95,228,225,127,239,213, 81,170,233,110,147, 42, 45, 53,154, 23,198,148, + 24, 90, 67, 74, 35,104,100, 91, 47,112, 58, 51,196, 13,151,197,170,172,101, 63,147,199, 61,145,142,214,175,112, 61,204,103,231, +164,253, 14,231,149,236, 28,228,102, 78,117,231,104, 78,192, 71,124,217, 80,229,146, 86, 60, 67, 23, 24,105,180,180, 35, 76,142, +172,142,110,227,169, 20, 86, 49,114,137,103,103,100, 31, 66,244,193,146,222,186,144,211,156, 1, 87, 74, 51, 93,170,184,133, 19, +221,202,146,100,181,219,178,125,210,206, 30, 32,213,198,245, 45,200,195, 94,116,196,144,119,185,218,105, 15, 28,189,247, 75,240, +237,193,208,198,210,244, 42,214, 35,199,217,195,187,177,164, 46, 85, 22,104,131, 80, 91,163,184, 10,205, 25,187, 90, 77,145,105, + 55,210,138,111, 66,110,138,247,206,170,120,234,168,173,154,185,197, 59, 84,131, 81,237, 44,189,134,119,214, 33,110, 15, 20,147, +174, 46,129, 49,103,201,126, 23,141,120, 20,236,244, 23, 69,150, 61,164, 66,179,212,180,177,237, 61, 61,145, 74,161, 22,143, 70, +235,243,250, 69,148,243,224,155, 67,163,117,254,231, 50,161,222,250,249, 41, 57, 60, 66,168, 74,170, 86,173,241, 42,164, 60,179, + 31,149,225,112,141,139, 14,223, 11, 45,219,109, 79,104,230,123,110,138,132,104,183,138,166,108,119, 35,181, 53, 92,171,230,133, + 55,186,192,210, 74,112,104,205, 54, 42,111,150,113,160, 62, 32,136, 89,240,207, 45,241, 73,109,217,170, 59,205, 38, 49, 37, 39, +240, 66, 33, 35,235,198,148,102, 86, 7, 87,120,234,153, 15,154, 11, 28,161,213,145,119, 94,127,133,119,110,191,195,245,235,133, +167, 54, 31, 36, 51, 2, 25,175, 1,117, 21,193, 83, 4, 66, 23, 9,222,198,248, 93, 55,224,125, 51,181,167, 90,167,248,198,141, + 39,248,229,127,253,111,113,245,232, 8,128, 39,111,222,228,245,183, 95,231,237, 87, 94, 65, 75,229,246,189,115, 30,211,192,217, +189, 87,249, 31,223,122,137,117, 60,224,114,119, 78, 78,133,161, 59,160,232,196,157,251,247, 89,175, 14,104, 21, 94,125,227, 46, +103,231,103,120, 58,106,176,181, 74,231,132,169, 22, 68, 29,174,102, 82, 42,236, 90,197,133,200,106,238,120,241,229, 63,226,202, +181, 27, 92,191,126,147,169, 42,175,191,123,135,111,126,251, 53,250, 24,185,156,247,196,120,200,227, 69, 89, 29, 94,103, 95,183, + 92,156,120,242, 52,218,195,144, 2,101,207,249,110,164,247,153,141,174, 41,101,164, 37,200, 58,177, 94, 15, 52, 2,158, 70, 60, +112,172,165,167,150,198, 92,236,176,188,223,194,110,123, 66, 65,113, 62,176,109,153, 52,111, 73,205, 72,139, 85, 43, 33,121,198, +203,153,177,238, 12,166, 68,161,105, 96, 55,103,238, 95, 20, 62,253, 67, 79,240,251, 95,251, 54,175,191,244, 22, 31,126,254, 25, +254,240,107, 47,209,176, 80, 43,106, 36,200,212, 42,235,245, 1,215,158,184, 65,232, 58,250, 62, 24,112, 36, 70,196, 91, 55, 91, +114, 33,134, 64,145,108, 19,186,220,140,154,213,219,193,208,171,167,182, 72, 73,213,166, 63,177, 35,198,158,113, 63,162, 62, 33, +210,179,187, 60,225,242,246,203,180,113,143,239,196, 14,242, 15,249,178,102, 87,108,216,106,200,182, 86, 54, 85,202, 98,244,183, + 41, 21,190,244,181,151,112,210, 24, 54,107, 14,214, 7, 28, 31,109,112,192,237,187,103, 92, 57, 10,108,110,220,228, 63,248, 15, +127,133,191,247, 95,255, 47,124,241,203,223,225,111,254,220, 79, 80,175, 31,242,230,173, 83, 35,177, 73, 64, 35, 36,109, 84, 81, +156,174, 8,100, 40,149,172,160, 82, 17,181, 21,154, 12,171,101, 60,108, 19,198,162, 13,153, 27,193, 5,123, 98,161,184,214, 19, +189,199,117,153, 82,122,234, 60, 34,126, 32,251, 74,116, 74,171, 1, 90,166,120,232, 90, 71, 78, 19, 93, 24,104,123, 97,234, 43, +177,247,224, 44, 87, 18, 92,160, 56, 99,114, 52,105,204, 85, 25, 92,195, 85,171,202, 54,153,200,115,165,174,215,244,218, 32, 87, +182, 69,112,210,144,222,163,157,146, 68, 88,187,102,135,165, 63,227, 40,217,189, 79,179,234,190,167, 27,222,136,205,234,124, 33, + 8,199,189,167, 95, 38, 0, 71,221,123, 15,195,181,135,243, 3,247,240, 64, 80,130,253, 30,255,160, 71,110,195, 24,226,242,235, +243,220, 76,205, 44,118,113,152,170,213,132,235,195, 94,255, 82,129, 94,254,253,255, 51,214, 47,205,214, 66, 82, 50,113,129, 86, +125, 63,146,156,255, 62,218,217, 63,109, 50,176,242, 38, 96,223,215, 76,117,130,134, 64,206,149, 58, 54, 38, 23, 41, 53,145,211, + 93, 91,175,224,152,194, 76,223, 6,198, 57, 81, 91, 0, 57,160, 56, 71,187, 44,100, 86,184,184,160,194,181, 18,242, 76, 66,173, + 5,210, 53,210, 22,198,113,166,111, 51, 68,155,132,239,118,123, 90,180,103,170,215, 25,113,145,178,191,192, 59,207, 65,173,148, +180,167, 92, 6, 72,151,132,222,123,166,214,150, 27,177, 37,182, 5, 65,220, 18, 48,211,138,226, 13,226,176,116,201,155,179, 49, +130,228,138, 11, 38, 86,105, 77,109,177, 31, 30, 4,220,132,212, 12,214,162,213, 72,102,245, 1,179,189, 57, 11,190,213,102,183, +124, 7,170,197,126,128,150, 29,121,107,141,214,132, 38,246, 64, 16, 31, 17,169, 22, 40, 83,197,133, 64, 45, 21,167,118,234, 47, +181,128, 55, 29,163,107, 32, 49,162,217,198,239,158, 96,154, 60, 49,230,187,195,126,136, 58, 9,212,133, 45, 31,196, 48,183, 21, +243,240,186, 96,102, 45, 21, 33,100, 69, 37, 16, 6, 37,149,229,246,219, 44,165, 46,234,209,206, 84,146,190, 86,180, 58,114, 51, + 72,133,132, 0,165,218,225, 40, 53,138, 47,184, 22, 44,192,179, 28,162, 74,178, 27,178,138,195,117, 15, 18,225,149,179, 93,165, + 93, 92,114,120,116, 68,191, 50,253,171,151, 70, 28, 12,132, 49, 56,111,187,243,160,228,113, 98,174,137, 90,149, 14,243, 92,219, + 6,195,120, 2,134,184,109, 54,134, 95, 2,145,162, 25, 33,216, 45, 73,160,166,134, 11,126, 89,195, 8,120, 79,206,141,224,148, + 46,120,114, 75, 92,222, 61, 69, 85, 89, 29, 29, 82,242, 72, 74,137,166,158, 43,199, 79,112,253,169,155,220,122,243,187, 12,235, + 35, 98, 31, 40,163,113,168,115,105,180, 73, 89,173, 55,204,115, 65, 74, 0, 55,208, 57, 49,205, 39,150,172, 46,216,129,172,247, + 16, 30, 41,193,246, 49, 18, 67, 96, 86,111, 68,184, 56,112,243,249,143,112,237,218, 49,125, 84,154, 23,206, 79, 46,249,194, 23, +190,200, 27,111,190, 78,191, 90,177,238, 6,243,219,215, 74, 74,198,122,183,239,217,128,199, 51,151, 66, 73,213,186, 57,173,225, +189, 35,213,130,247,145, 89, 29,175,189,246, 26,249,181,215, 56,238,143,121,242,185,167,120,225, 67,159, 96, 62, 57,163,215,198, +189,233,140,221, 56,242,206,155,223,197,175, 87,244,210,113,184,186, 70, 59, 88, 51,107, 98,222,109,153,178,101, 75,148,142, 49, + 59,210,156,233, 92,111,163, 55, 4,169,182, 99,205,115,101,102,162, 69,135,168, 77,109,234,121,162, 57, 59,240, 94, 78,231,104, +115, 12,193,248, 13,117, 86, 18,201,234, 70,219,115, 11, 85, 90, 28, 27,213,153, 77,231, 56,223,141,172,142,122,158,121,238,105, +254,228,197, 55,248,133,159,253, 81,190,250,149, 39,121,253,221,123, 48, 84,170,142, 24, 37,216,179, 94, 15, 54,117,171, 66,155, +205,178, 70,245,140, 57,145, 41, 72, 16, 92,243,184, 92,105,181,226,124, 52,186,164,243, 20,103,213,208, 94,149, 60,205,200,234, + 0, 39,133, 77,244, 76, 33,145,246, 51,251,203,187,220,187,243, 50,144, 88,135,142, 90, 20,155, 3, 44,202,101,169,212,106, 2, +165,154, 43,142,182,216, 24,205,255, 32,170, 12,113,197,217,118,207,215,191,243, 22,191,244,185,207,240,153, 79,125,148,163,213, +134, 23, 62,240, 24, 55,159,140,248, 78,217,191,243, 46,253,213,107,252,234,223,249,101,254,254,127,251, 15,249,131,175,254, 9, + 63,250,163,159,228, 98, 92,179, 59,155,201, 82, 76,149,106,223,214,212, 58,209,102,136, 61,180, 16, 40,179, 3, 55,145,104,116, + 8, 78,109, 5, 24,134, 64,221, 67,146,202,224, 7,211,157,170, 64,204,168,102,180, 68, 92, 19, 90,240,116, 85,208,170, 80,122, +130, 88,141,205,209, 76,161, 42, 32,109, 68,197,209,106,165, 23, 24, 75, 37,234, 6,245,166,210,236,156, 35,202, 33,174, 51, 21, +113,237, 4, 70,101,232, 35,162, 43, 98,232, 73, 50,163,217, 38,139, 97, 8,148, 38,228, 6, 7,193, 20,187,127,244,173, 87,184, +126,229, 24,245, 29,199,253,192,225,225, 10, 9,142, 82,149, 97, 8,116,193,217,199,160, 60, 36,205,188, 63,173,174, 10,105,159, + 40,146,105,181, 16,252,202,116,218,127,202,239,109,203, 46,252,193, 62,252, 64,222,227,169, 59,108,156,253, 61, 15, 74, 7,105, +206,148,148,113,171,129,184, 76, 22,116,129,229, 60,144,198, 38, 96,191,140,199, 31,132,228,178,194,230,145,209,120, 85,232, 31, +121,255,227,152,208,106,175,123, 65,222, 11, 5,126,191,244,191,252,128, 52,253,163,111,159,114,165, 44, 57,165,152, 29, 90,148, + 90,148,232,128,117, 65, 47, 26,193, 31, 44, 33,234, 61, 42,153,182, 27,241, 62,208, 92, 79,232,140,147, 17,157,226,135, 3,202, +121,195,249, 83, 90, 41,164,206, 49,238, 61,206, 79,172,139, 82, 80,164, 57,178,107, 56,237, 23, 18,168,226,200,104,129,172, 30, + 9,221,194, 89,232, 57, 29,215,188,248,134,112,114,247,140, 54, 37,252, 51,207, 60,251,119, 31,161,225,219,174, 73, 28, 18, 76, +242,193,242, 96, 94,152, 52,214,245,117,178,208,253, 22,213,159, 51, 32,253,131,127,156,115, 11,174,181,162, 77, 9,203, 13,163, + 53,111,178,145,165, 2,102, 94, 15, 75,138,251, 7,212,185, 37,245,206, 66,138, 83, 89,232, 52, 78, 12,227,185,128,113,170, 86, +104, 6, 95,209,224, 89,144,117,118,255, 87, 59,245,139, 55,105,140, 20, 27,201, 71,239,168,173, 45, 78,109,123,187,243,138,115, +216, 13,191,115,244,222, 45,206,103,183,136,105,236,175,214, 5, 79,177,200,188,125,174,178, 36,233,189, 85, 80, 68,173, 90,231, +154,129, 82,146, 86,114, 73,230,105,239, 28,203,194, 1, 39,206,190, 46,226, 8, 94, 9, 20, 90,183, 32,122, 27,244,222,177,223, +237,184,127,182,231,226,114,203,246, 98,100,188, 24, 57, 59,219,114,177,207,140,185,146,246,149, 92,132,210, 60,165, 88,229,112, + 30,247,156,159,143,196, 16,169,181, 44,232, 87,155, 14,104, 85,107, 31, 88, 88, 2,169, 75,253,208, 25, 14,152, 5,192, 67, 51, +173,108, 12,142,213,106, 67,240,145, 0, 4, 21,196,119,140,247,239,113,127,187,165, 15, 29, 93, 28,168,165, 26,244,100,233, 27, +239, 46, 47, 56,186,254, 56, 93,183, 38,231, 25, 45,101,105, 28,116,214,253, 47,137, 86,151,114,100,205, 84,105,120,137, 22,226, + 19,115,205,143,101, 66, 53,240,194, 11, 31,160,182,194,111,252,163,127,196,151,191,242, 21,202,172,236,114,226,147, 63,252, 17, + 62,246,177, 15, 16,250,142, 62, 12, 56,223, 24,214, 29,211,104,208,157, 0, 52,117,236,246,123,200,198, 31,119, 94,152,243,140, +247, 61,173, 9,251,221, 37,170,130, 15,145,218, 76, 94,130,115, 28,172,215, 28, 31, 31, 49,239,246, 28, 29, 94, 39,181,194,106, +125,200,143,255,244,207, 51,206,123,198,105,207, 19,207, 61, 78,168,158, 77,183,226,208,219, 48,239,236,226, 18,210,142,205,209, + 53, 94,120,246,195, 60,126,229, 73,226,176,230,232,198,117,222,125,251, 93,166,121,164, 11, 1,213,202,110, 63,211, 20, 98,176, +219,132, 83,103, 14,104,129,105,159,200, 58,147,198,137,253,180,227,252,114,203,184, 79,156, 93, 92,112,114,255, 62,248,200,102, + 24, 8,189, 61, 32,199,253,104, 57, 23,130,117,200, 83, 33,167,202,213,227, 99, 62,124,243, 57,222,124,247, 46, 7,135, 71,188, +113,247, 30,119,239,157,227,188,131,230,232,253,134, 46,116,172,215, 43, 36, 70, 60, 74, 23, 86, 68, 31,153,210, 72,245, 13,247, + 96, 50,144,102,168, 14,113,209, 38, 99,157, 71,188,183,191, 83,183, 97,221, 7,250,110,192, 71, 79, 23,122,106, 21,182,219,123, +220,187,243, 58,187,211, 55, 41,121,182, 29,190,243,248,216, 45,109, 14, 3, 89, 17,212, 88, 22,205,204,114,205,137,113,211,155, + 57, 37, 84, 31, 40,143, 61, 23,231, 59, 90,109,124,230,211, 31,230, 71, 62,120,157,167,158, 57, 96,181,233, 17,233, 72, 37,243, +198,203,119,184,241,204,211,252,208, 15,127,140,175,124,253, 21,230,180,231,195,207, 63,205,235,239, 90,163,195,139, 67,163,135, + 28,240, 57, 81,125,176,212,119,107, 72,103, 93,250,206, 45,175, 63, 33,208, 52,163,165,224, 8,224, 34,222,155,136,199,213,128, +107,106,164, 47,173, 54,185, 43,145,230, 86,204, 76,196, 14,195,193, 6, 37,101,165,182, 64, 8, 3,197, 87, 88, 57, 92,178,139, + 75,215, 27, 45,204, 59, 97,181,234,145,108,181,218, 13,133, 57, 21, 36, 21, 52, 22,218, 98, 46,116, 99,162,101,155, 44,224,236, +208,208,121, 24,170, 77, 37,213, 9,231,211,196,221,251, 91, 46, 47,118, 92,156, 79,188,115,114,193,219,119, 78,185,117,118,201, +221,147, 51,110,223, 57,231,157,187, 23,220,189,117,193,126, 59,115,185,155, 57, 57,155, 57, 63,219,209,114,161,228,194,249,229, +196,201,221, 51,198,113,139,102,232, 87, 29, 79,222, 56,198,251,240,207, 89,204, 30, 80,218,226, 35, 15,249,239, 87, 36,187,119, + 81,216,158,159,211,180,176,217,172,120,250,177,227,135,239,111, 37,223,235, 46, 31, 30, 9,177, 45,174,177,135,111,175,134,249, +127,248,231,206,192,237,179,137,253,217, 37,115,202,116,209,115,237,250,177,249, 54,128,221, 2, 77, 19,121, 0, 79, 91, 38, 18, +143, 16,244, 30,109, 7, 40, 44, 42,172,247, 30,235,183,183, 51,119,238,222,226,252,108,199, 52, 85, 18, 25,154,133,229,116,103, +151,223,234,123, 10, 35, 93,233, 40,115,198,123, 8,222,145, 52,145,117,132,177, 32,125,197,245, 3,251, 59,231, 56, 41, 20, 28, +115, 74, 56,113, 84,102,166,125,166,102, 79, 63, 68,106, 72,148, 57, 17,157,195,117,129, 90, 60,110, 48,219, 41,165,144,164,114, +180, 17,126,230,231, 62,202, 71,126,232, 51,220, 45, 7,220,123,253, 93, 66, 91,234, 98, 15,190,241,155, 23,139,234,103,115,198, +214,229,129, 78, 83, 36,152,209, 74,112,148, 7, 99,115,140,224,211,176, 94,186,136,125,209, 60, 66,112,150, 15, 85,177, 19,191, +202, 66, 83, 19,165, 36, 75, 86,235,194, 59,207, 8, 94,150, 29,186, 42,173, 20,106,131,208, 5, 80,219,195,137,148,165, 23,106, + 61,114,130, 77, 8, 36,103,196, 27, 0, 70,205, 38,251,176, 26,167,205, 44,102, 33, 56,219,117, 53, 27,193,106, 16,180,217,126, + 71,156,152,181,168,168,221, 98,157, 80,164,176,146,184,168, 72,237,243,181,139, 68,180,155,223, 98,165, 83, 20, 41,133,220, 26, + 82, 4,239,132,216, 57, 51,176, 53,104,222, 19,233,141,218, 87,102, 90, 92,198,255,203,144,169,212,197,112,229, 58, 90, 45,204, +173, 50,230, 14, 71, 99,221, 57,196,119, 52, 10, 18,204, 84,119,255,100,143, 23, 59,244, 12,253,218, 86, 33, 90,232,250,235, 60, +253,212, 1,185,205,204,105,100,222,207,168, 22,106,173,148,156, 45, 84,232, 5,215,170, 37, 88,197, 18,246, 15,146,209,141, 69, + 35, 88, 5, 31, 58,123, 88,231, 70, 8, 27,146, 98, 55,178, 50, 35, 90,216,237, 47,112,161,179,128, 89,109,104,155, 73,251, 75, +156, 10,117,222, 83,253, 64,154, 13,222,177, 34,224, 36,225,195,192, 62,101,212,193,188,132, 77,162,119, 52,177, 93,101,140,214, +199,204, 99,226,255,250,245, 95,231, 43, 95,249, 3,240,194,189,147,187,104,109,180, 54,113,243,233, 99,170, 20,222,189,117,135, + 16, 86,108,186,142, 55,223,124,131, 59,183, 95,163, 21,207,245,163,171,108,231, 29, 90,102,126,254, 95,254, 9,238,221,185,199, +239,127,233, 59,172,174,172,113,109,101,180,186,121,107,122,209,230, 72,251,189, 53, 60,130,179,158,121,205,236, 46,182,228, 73, +241,110,205,147,143,223,224,160, 19,190,240,127,255, 58, 13, 33,250,142,187,247, 46,184,115,126, 10,222,209,227,241,209,113,245, +184, 71, 69,184,113,112,200,144, 18,111,222,187,195,241,225, 33,170,141,237,124,138, 11, 54,101,152,246,137, 42, 25, 69,153,178, +169, 74, 83,218,210, 82,102,206,102, 53,211,214,204,144, 23,133, 16, 34,210, 5,122,223,211,111, 54,248, 24,240,206,147,210,100, +193,207, 96,130, 32,209,142,185,212,133,165,238,120,237,246, 57,143,223,124,154,245,209, 99,252,111,191,249, 7,108,207,183,244, + 93,135, 11,129,232, 7,250,245, 1, 74,163, 52, 33,138, 48,108, 6, 90,129,185,101,100,176, 70,135, 43, 30,245,138,139,246,240, + 83,183,160,149,137, 4,241, 16, 34,125, 55,152, 8, 40,128, 87,207,156, 28,101,188,203,233,237,183,184,188,119, 11, 13, 88,202, +189, 41,181,102,124,231,233,196,112,201, 37,202,210, 79, 53,203, 34, 84,162,216,164, 45, 89,111,149,232, 29,133, 66, 8, 3, 93, + 8,124,243,165,119,248,226, 87,190,201, 71, 62,244, 89,168,137,179, 19, 24, 14, 60, 49,218,223,195,139,127,252, 29, 62,249, 35, + 63,204,223,248,249,191,206,255,249, 27,191,197,241,230, 29, 62,245,241,155,124,235,197, 83,180, 22, 84, 51,213, 39,235,135, 55, +103, 29,121, 18, 45, 55,186,197,142,213,188, 49, 48, 92, 28,112, 69, 9,226, 24,181,226,170,163,182,137,182,138,196,169, 99,191, +157, 24, 54,158, 50, 21, 52,102,188, 88,168,169, 37, 27,227,171,122,252, 16,168,169, 80, 67, 51, 63,197, 69, 70,250, 3,138,155, +112, 5,138,140, 72,240, 54, 0, 15,142,224,247,108, 39, 91,243,185,160, 72, 56, 36, 5, 37,249,194, 52, 27, 68, 43,104, 35, 14, + 7,182,202,156, 11,251,206,113, 32,176, 94,175, 57,252,127, 89,123,147,102,205,178,235, 60,239,217,221, 57,231,235,110,151,153, +149,213,100,101,181,168, 42, 64, 16,193, 34, 64, 74,180, 40, 43, 20,116, 72, 17, 30,216,161, 31,160,137,127,132,198,254, 35, 30, +122, 34,135, 71,178, 29, 86,216,164, 45,211, 20,200, 32, 1, 16, 96,161, 41,161,250,236,187,219,124,205,105,118,179,182, 7,235, +100, 86, 17,166, 24,118,132, 48,170, 74, 20, 10,153,247,187,247,156,189,215,122,223,231,121,253, 77,140,117, 76, 87, 61, 98, 91, +245, 60,196,136, 76, 3,219,108,245,114, 54, 36, 40, 35,207,118,123, 76, 80, 67,152,254, 57,245, 70, 37, 51, 84, 39,103,161,105, + 42,253,126,224,103, 63,255,146,213,170, 35, 2,199, 77,203,217,209,138,166, 9, 28,178, 96, 76,197, 47, 3,198, 58,173,253,121, +243,119,184,200, 35, 57,205, 72, 84,255,255,221,192,246,155, 29,242,223, 52,174,121,244,121, 47, 57, 99,210,204,199,152,153,242, +117,238,210,127,243,133,125,152,141,115,221,252,107, 59,129, 49, 67, 59,103, 1,146,192,120,136,172,151,141, 62,163, 4,250,139, + 11,124, 18, 98,174,180, 77, 97, 26, 51,251,221,132,149,164, 96, 54, 3,174, 92, 49, 13, 19,201,119,116,139, 37,135,148,137,185, + 82,211,132,229,136,232,206,217,108, 22,148, 26, 72,236, 9,214, 34, 4,188, 68,204,148,193,119,212,186,215, 74, 47, 22, 91, 52, +235,165,246,163, 68, 25, 7, 74, 93,178, 12, 66,242, 45, 98, 4,147, 42, 47, 5,195, 17, 90, 49, 94,185,130,207,136,126, 65,230, +151,160, 17,139,109,132, 90,102,187,238, 44,251,112,104, 15,189,212,130,115,118, 14,151, 41, 7,182, 86,143,153, 11,238,117, 62, + 85, 85, 81,170,131, 1,146,204,164, 28,167, 31,143,169, 85,193, 50,202, 12,196,186, 0,165, 32, 24,170, 5,107, 10,115,167,141, +146, 53, 64, 80, 49,179, 14, 83, 19,245,213,104,240,197,207,130,136,156, 10,214,205,181,173,130, 90,198,172,211, 14,169,100, 74, +153,247,253,243,136,207,187,231,183, 83, 94,220,178, 49,144,147, 65,235,182,149,169, 68,108,112,170,133,149,164,174, 92, 17,252, + 92,165, 43,169, 32,206, 41, 71,220, 88, 37,188,213,140, 21, 1,111,177, 30,140,173, 20, 25,193,120,106,227,161, 20, 74, 74, 24, +175, 74, 71,153,213,123,173,215,154,223, 97, 40, 28,118,153, 41, 30, 88,116, 45,198, 85,213,241,121, 15,141,163, 75,253,252,141, +106, 49,177,103,215, 15,204, 57, 70,188,181,115, 63,188,101,113,163, 99,179, 62, 66, 82,230,217,249, 83,250,254, 64, 46,145,152, + 19, 41, 37, 13, 63, 74, 37, 81,213, 11,236,156, 62,140, 76,197, 89,139,115, 94,253,213, 86, 67, 82,166, 66, 28,162, 2,138,124, +230,234,252, 49, 24,163,170, 71, 49, 76,169,199,251,134, 48, 39,136,237,252,112,139,166,208,152, 74,208,239, 48,156, 8, 38,171, +140,194, 56,131,137, 5,239,102, 9, 70,137,212,236, 17,147,248,252,139, 95,179, 10,157,190, 0,242,132,107, 42, 71, 75,207,207, +127,242, 11,126,145,126,134,247,122,131,170, 78,141,119,102,210,207,212,174, 29,191,255,159,253, 14,255,228, 7,223,230,241,163, +135,220,187,115,143,255,112,247,138,182, 89, 18,135,131, 58,151, 69,244, 5,134, 18, 10, 13,232,139,199, 24, 46, 47,207, 49, 77, +203,211,203,175,232,251,128, 91,108,184,121,252, 50, 55,110,222,196,213,194,230,104,197,106,189, 98,138,133,139,167,231, 20, 99, +112,161, 37,201,132,136,227,201,197, 83,206, 31,222,163, 61, 57,230,171, 59,119,152, 14, 61,205,114,205,152, 34, 83,142, 56, 35, +140,135,158,203,180,213,155,168, 85, 40,204, 98,233, 89, 47, 55, 44,252,146,166, 83, 1, 10,243, 84,171, 68,152, 36,170,173,171, + 20, 98, 44,136, 84, 90,223,208,143, 35, 49,239,169,162,129,215,177,100,238,222,125,130, 55,134,221,152,216, 15, 19,190,105,177, + 97,193, 34, 4,170,209, 91, 72,157, 34, 87, 67, 79,170, 89, 13,109, 46,225,219, 21,118,178,248,234,169, 68,200, 89,171, 63, 14, +146, 76,248,118,165,245,211,166,165,216,128,219,180, 4,219, 64,233,152,204,196,246,226, 49,219,199,159, 50, 30, 46, 8, 33,168, +101,177,106, 32, 13, 17,100,170, 20,175, 63,247,186,118,179, 84, 91,240,198,225,196, 80, 68, 3,164,198, 10,198, 27, 61,236, 86, +245,150,135,110,137,193,243,231, 63,249,148, 91,183,174,241,143,127,239,239, 97,189,167,157, 6, 22,173,227,236,100,205,211,187, +231,124,254,249, 23,252,238,239,191,195,186,245,252,155,255,249,223,114,251,205,142,215,110,175,121,116,231, 41,141, 93, 50,213, + 94,201,141, 37, 81,242,200,132,193,132,128, 77,153,236, 50,193,118,186,222, 75,149,224, 42,197, 38, 76,177,100, 96, 49,179, 35, + 50, 35,185, 26,226,228,176, 86,247,237,147,140, 4,211, 96,168, 72, 45,216,146,113, 98, 17,211, 48,236,123, 66, 23,192, 54,120, + 12,185, 84,162, 12, 4, 87, 9,238,152,113, 60,208,148,134,188, 88,144,164,208, 68,167,134,189,210, 19,166, 21,165,241, 74,181, +155,132, 82, 44,195, 54,225, 54,149,188,240,116,217, 34, 85, 56,190,126,196, 15,222,186, 65, 4, 30,165, 51,174,207, 30,139,203, + 2,187,190,114, 20, 12,131,192, 97,204, 12,219, 65,217, 5, 37, 51,236, 6,117, 24, 88,139, 76, 17, 59,236,245,121,105, 21,214, + 84, 74,229,124,119,224, 98, 55, 34, 8, 79,141,229,179, 4, 77,167,129, 96, 41,176,232,148, 43, 97,141,227,108,189, 36, 4, 79, +117, 30,145,204,178, 11, 52,222,145,157,225,176, 61,167,164,164, 43,132, 89,176,245,159,194,210, 86,103,154,156,154, 55, 11,203, +198,254,141,140,192,145,249,155,187,242,179,223, 88,183, 47, 44, 44,154,175,167, 12,163, 5,187,234,104,230,105,193, 96, 96,204, + 13, 70,132,208,102, 98,111,176,135,217,180, 25,150,200, 98,164, 92, 85, 14,195, 68,201,142,188, 16,232, 51,118,156, 48,102,143, +208,208,116, 9,153, 4, 57, 20,114,152, 53,220, 38, 82, 35, 84, 87,208,183,223,252,238,179, 14,114,192,103,139, 11,153, 20, 51, + 22,171,208, 49, 25,153,170, 78, 77,154, 92, 89,156, 56,218,229, 53,157, 94, 28, 20,230,229,165, 84, 29,141, 86,131,215, 97, 18, +214, 88,156,211, 29,145, 11, 78,189,228,229, 57,196, 68,197, 15,234,108, 81, 26, 92,121,158, 54,127, 94,137,123, 62, 34,153,199, +233,179,247, 74,127,176,231, 79, 33, 24,131, 4,221,239, 72, 45, 47,170,116,165, 42,191,215, 26,131,183, 70,193, 51,206,226,157, +114,220,141,104,189, 75,252,188,159,182,138, 0,181,115, 98, 94,127, 7,162, 59,228, 26,181,190,100, 29,222, 25,130, 84,178,105, + 20,202, 96, 4,103,213, 33,238,190,177, 37, 50, 86,145,171,197,161,225,170,162,202,211,198, 26, 4,136,169,204,117, 15,149, 39, +212,148,168,206,234, 65, 33, 84,138, 64,202,250,123,118,165,208,120, 29,225,149,154,161,177,164,249,129, 44,217, 34, 46, 19,240, + 88,175, 35,242, 82, 13, 37,122, 66, 99, 72,180,184,166,165,177, 22,130,163,163,225, 16, 7,104, 60,142, 66,140, 58,178, 92,172, +150, 72,150, 23, 35,247, 49,234, 72,118,154, 6,182, 87, 87,132,118,129,115, 45,155,227, 14,239,172,170, 78,141, 97, 24, 15,108, + 47,175,216,247, 61,165,102,221,229, 27, 67,227, 21,120, 81,158, 47, 83,156,197, 73, 75,131, 99, 55, 30,240,203, 21, 39,167,103, + 42, 17,153, 50,222, 59, 98,201, 16,237,172,225, 69,201, 72, 88,130, 11, 88,215, 33, 76,140, 78,176,222, 80,162, 30,170,150,109, + 51, 7, 44, 13, 18,202,220,151,181,100,153,176, 70,171, 80, 67, 44,136,113,216,106, 24, 37,241,201,175, 31, 48,142, 73, 67, 85, + 67,193,218,137,205, 38,144, 68, 15, 80,165, 22,214,171, 5,215, 78, 91,254,215, 63,250,247,252,203,255,230,191,230,191,253,240, + 45,254,213,191,250,239,120,178,157, 8,203,134, 52, 36,166, 52, 97,157,193,139,195, 26,209,239,163,182,125, 49,130, 11,206,176, + 63, 12, 44,142, 58,166, 92,120,248,232, 46, 95,222,251,138,197,122,201, 75, 47,221,228,214,237, 55,185,121,109,195,178, 89,241, +236,217,125, 18,133,216, 11, 95, 92,125,142, 49,130,219,172, 40, 86, 87, 30,198, 58,166,113,192, 91,143,228, 66,182,218, 77, 63, +190,190,210,158, 61,186,190, 42, 70,144,236, 72, 50, 40,131,189, 8, 53,171,158,152, 86,201,119,181,177,244,243,205,118, 72, 61, + 49,121,210, 48, 81, 4, 98,173,180,190, 35,248, 76, 21,248,242,222, 57, 85, 42,109,183,208,181, 79,169, 51, 2, 56,145, 74,102, +154, 70,106, 85,184, 17,146,217,108,150,180, 86,195,111,160, 42,211,146, 52, 27, 35,185,224, 66,139, 37,232,195,191, 6,214,139, + 13,222,119,218,117,143, 79,185,123,231, 83,246,151,247,168,146,232,218,133,170,153,171,232, 4, 44,105,175, 54,229, 76, 2,150, +174,193, 24, 79,170,133, 92, 51,182, 38, 13,147,226, 49,161,168, 93,208, 43, 46,218,160,124,136,156, 35,109,187, 38,102,225,207, +254,244, 99, 36, 10, 31,124,247, 61,222,127,253, 38,130,174, 3, 79, 54, 11, 62,249,244,215, 28, 45, 91,190,253,157, 87, 57, 63, +252, 30,127,244, 71,127,206, 43,183,110,176,186,190,226,242,178,135, 98, 73, 40,247,125,101, 90,182,146,152, 36, 97,131, 26,214, + 74, 77,228,121,117,133, 13,152,236, 85,155,106, 10, 83,227, 97, 80,102, 71, 45,149,104, 10,203, 38, 16, 83,197,219, 35,178, 31, +177,232,196,101,152, 50, 77,208, 23, 90, 48, 11, 72,134,246, 52, 64,202,144,160,115,158, 98, 2,166, 70, 92, 42, 36,132,144,206, +112,229,130, 33, 27,214,116,140, 6,138,221, 98, 19,234,203,246,107,252, 96,168,141,114, 60,156,131,100, 43,193,192,217,106,243, +194,145,126, 22,190,198,160,182, 14, 78, 55,134,245,252,247, 79, 23,158,254,100,195, 53,171,253,237,199,227, 41, 27, 3,161,129, + 93,129, 39,247, 14, 76, 95,125, 73,157, 38, 50,142,211,107,167,180, 55,174,147,147, 80,182, 7, 42, 17, 41,144, 81, 77, 50,214, +208,103,109, 11, 65,228,208, 23, 50, 5,177, 80, 75,161, 51, 14, 68,137,146, 53,139,230, 74, 26,199,195,167, 23,148,148, 88, 46, + 87, 24,231,104,156, 99,189,108,241,193,147, 5,172, 17,218, 54,188,128, 36,105, 6,195,252, 71,161, 54, 41, 37,114,137, 10, 61, +242,255,255,240,179,225,111, 33,236, 45,236,223,172,203, 97, 12,251, 24,137,169, 48, 85,101,171,132, 69,160, 63,244,152,152, 48, +101,129, 11,215, 40, 54, 97,167,145,108, 51,102, 9, 77, 92, 51,164,145,105,220,107, 32, 58,195,224, 14, 80, 51,249, 42, 99,188, + 16,167,132,167,193, 38, 5,250,102,155,136, 84,178,100,188,237, 16, 91, 40,217,224,186, 37, 85,122, 76, 53,172,221,130, 62, 30, + 8,211,158, 69,235, 25,129,114,216, 83,235,132,111, 27,131,136,142,158,197,104,247, 91, 63, 32, 64,202,220,251,158,237,100, 69, +129, 45,198, 43,134,181,166, 57,236,102,133, 82,253,215,139,247, 92,177, 78,247,104,207, 67,114,213,168,162,206, 88,125, 33,102, + 51, 3,111,170, 32, 51, 57,169, 72,213, 23,185, 5,231,176,137, 30,187, 0, 0, 32, 0, 73, 68, 65, 84,204,139,132, 54, 78,113, +178,144,102,252,172, 67,234, 60,254,174,186, 23,182,243,218,192, 22,245,164,219, 90, 52,224, 97,130,142,249,170,190,132,131,201, + 24, 12, 89, 64,234,156,130,159,169,109, 37, 85,108,251, 92,248, 82, 8, 62, 19, 81,121, 76,114, 94, 67, 85, 34, 36, 99, 21,246, + 49,243,127,141,171,212, 73,187,246,110, 86, 63, 58, 83, 16, 3, 57, 59,138,181,216,182, 98,114,154,233,123,117, 54,177,169, 31, + 62, 20,221, 3, 27, 42,203,227, 87,113,135,158,152, 70,156, 13, 88,223,224, 92,197,153, 64,157, 14,120, 83,145,172,135,146, 90, +149,157,111,109,125,145, 26,181,226,177, 51,192,162,136, 64,158,200,162,135,182,222, 42, 7, 61, 52, 29, 88,195,226,232,132,211, +155, 47,235, 52,101, 72, 96, 34,219,203, 11,253, 28,139,106, 5,167, 67,101, 29, 28, 25, 33, 17,233,252, 9,190,237,232, 28,152, + 14,218,118, 5,161,240,244,254, 67,221, 49, 74,101, 26, 70, 85,236, 82,233,108,162,159,138, 2, 56,156,144,115,166, 98,184,245, +234, 9,143, 30,156,179, 27, 38, 37,128,121,121,209,157,173, 22, 66,117,164, 82, 8, 70,168, 88,198, 60, 42,144,103, 86, 77, 78, + 83,164,109, 60,227, 36, 88,163,234, 91,113,134,163,166,229,231, 63,253, 5,239,190,251, 29,154,106, 56,191,186,224,218,145,227, +211,207,206,241,139,160, 15, 21,163, 35,198, 82, 43, 73,132, 96,132,102, 54, 72,229,106,105, 93,135,196,200,227,251, 23,156,156, +174, 49,221, 9,157,207,148, 56,241,197,103,159,240,232,222, 87,172, 22, 39, 88,167, 7,213,208, 53,180, 33,208, 54,150,225, 80, +216,246, 59,134,113,100,218, 31,168,222, 48, 13,137,108,116, 77,229,231,195,242,238,114, 75,206, 25,235,103, 6, 66, 99,177, 4, + 38, 23,104,157, 39,216,138,105, 91,172, 53,196,152, 72, 49,210, 87, 88, 52,170, 2, 29,199,129, 82, 10,195,161,103,213,174,184, +241,210, 53, 14, 99, 36,111, 71,140,211, 92,139,128, 18,243,138,182, 86, 28,149, 49,141, 32,133, 38,120,154,176, 1, 3,195, 56, +145, 43, 28,155,128,115, 94, 5, 50, 94,237,124,181,104, 65,212, 85,193,136,224,221, 18,227, 23,184,102,195,184,219,113,121,126, +159,195,197, 67, 14,219, 39,152,214, 99,173, 87, 42, 26,170,215, 21,175,251,187,106,173, 94, 14, 18, 16, 58, 92, 51, 63, 63,130, +161, 74, 3, 24, 92,209,113,174, 65,127,102,107,181, 24,231,230,198, 73, 68,100, 98,189, 56,225,222,179,129,255,229,223,125, 68, +173,134,163,197,138,245,106,201,144, 18, 79, 30, 63,227,215, 95,126, 65,101,193,111,125,167,242,247,223,127,131, 39,143,246,252, +217, 15,255,130,151,222,120, 13, 91, 3,210, 0,105,134,221,200, 2,159, 35,181, 38, 76,237,244,112,104,147, 66,149,166,204, 36, + 70,215,104,168,181,210, 20, 13,206,154,164, 42, 87,103, 13,185, 26,164, 36,214,109,161,151,202,161,168, 36,198,153,138, 13, 6, + 91,162, 62,203,170, 69,174, 18,214,154, 57,219,224,177, 50,145,140,199,209, 32, 38, 19,250, 45, 7, 28,213, 78,244, 56,237,105, +205,207,214,241,188,176,238, 52,180, 76, 48,196, 92,241, 83, 33,172,192,210,210,217,191, 93,141,106,126,227,165,229,140,214,216, + 86,243,203,171,111,225,229,121, 63,253,178, 7, 57,105,249,242,158, 69, 44,180,213,240,222,155, 47,113,114,186,162, 7, 30,239, + 54, 52, 85, 48,193,209,199,204,184, 31, 8,109, 32, 98, 48,147, 32, 49,107,149,180, 8,210,143,138, 71,181,142, 40, 17,219, 15, + 24, 91,136,195,128,145, 74, 50,142,251,231, 61, 97, 55,105, 40,219, 24, 13, 99,163,239, 35,107, 43,141,179, 52,222, 81, 43, 44, + 27, 71,187,104,113,214, 50,101,161,177,149,197, 34,224,156,227, 50,102,118,151, 23,218, 4, 42,170, 27,254, 79,249,159, 2,212, + 49,146,178,190, 92, 73,137, 36, 5, 16,188, 43,228, 33,227,218,129,197, 8,161,104,181, 51,153,162,113, 51,241,212,162, 46,146, +156, 61, 39,214,146,165,144, 76, 67,105, 50,213, 6,106, 74,216,208, 96,188,197,246, 66,204, 19,126, 81,169, 67,197, 78,130,105, +243, 60,141, 76,216,149,133,232, 48,165, 34,109,229, 80, 10, 31,127,244, 25,241,233, 45,158, 61,249, 4, 17,193,235, 13,220,104, + 96,196,234, 75, 66, 94,220, 88,156,170,247,230,128, 87,170,122, 75,111,140,195,168,140, 82, 71,158, 70,125,230,214, 42, 78,177, +154, 58,247,158, 13, 37, 11,174,153, 21,172,115, 80, 11, 99,230,219,106, 70,164, 18,188, 74, 89,172,204, 90, 87,163,100,150, 82, +243, 76,181,155,199,238, 85, 11, 48, 22,247,141,223,155, 87, 38,124,142, 84, 49,208,232,148, 1, 81,227, 90,148,130, 49, 6,111, + 52, 15, 80, 69,215, 6,166, 90,114,141,202, 67,199,205,139, 23,171, 15, 26,167,171,132,113,202,248,224,102,151,122,209,191,182, +250,200, 50, 50,191,188,139, 40,160,198, 86,160, 80,170,165,206, 98, 1, 93, 1, 40, 30, 54, 20, 79,232,244,167,170, 74,157,191, +145,161,184, 74,142, 9,239, 2,194,146,118,115,157,253,213,151, 96, 58, 76,211, 33, 69,199,251,217, 36, 22,109,160,100, 40,117, +196, 89, 40,232,206,191,177, 78,165,111,162, 55,236, 90,181,111,174,244, 93,165,216, 7, 44,213,233,105,215, 20, 51,247,148,133, +108,122,114,169, 56, 31, 56, 94, 29,115,184,186, 36,214,172, 55,173, 12,169, 22,174,234,129,102, 95,168, 69,119,102, 67, 63, 40, +125,203, 24, 82,172,132,206,207,112, 29, 29,193, 21, 50,206,122,138,133, 93, 26, 8,126,201,178, 89,113,232,207, 57, 90, 45,184, +218, 79, 60,124,186, 69, 36,107, 11, 34, 21,106, 22,138,171,115,210,214, 18,131, 96, 37, 48,150,132,109,140, 6, 42, 75, 36, 35, +196,164, 73, 23, 51,187, 0,168,208, 4,237, 60,187,198, 51,140,137,179,163, 83,238,124,122,193,191,249,227,127,207, 54, 85,190, +245,247,222,224,226, 98,207,246,234, 48,211, 1,245,229,154,199,136,233, 44,110,209, 81,114,162, 90, 67,205,145,198,183, 28,157, + 28,115,180,106,232,199,130,245,154,103,166,107,169, 70,136,105, 75,220, 37, 50,130,223, 26,112,150,213,122,193,162, 57,193,153, +150,233,240,148, 73, 70,210, 88, 20, 68,100,181,134, 25,163,208, 46, 3,199,203, 53,253, 48, 97,201,196,172,140,130,104,244, 65, +145,197, 81, 98,198, 4, 85,122,230,113, 36, 77, 19, 75,115,132,179,186,200,144,152,232,199,137, 36,208,154,202,181,235, 55,152, + 30, 60, 96,187,123,138,169,142,213,122,205,205, 27,215,145, 82,185,186, 58,199,248,145,103, 23,145,110,217,226, 93, 71,104,151, +224,170,106,104, 75,203, 36, 19,195,238,192,209,250,136,234, 43,105,212,138,161, 32,136,215,125,123, 75,128, 34,196,113,199,179, +103,119,136,253, 51, 98,191,199, 59,171, 50,145,170, 36,189, 33,141, 4,239, 21,148, 82,117, 5, 85, 49, 52,120,166,156,216, 14, + 59, 22,169,193,181, 94,215, 31,214,171, 42,211,168,189,177,216, 12,121,206,173, 84,131,179,129,106, 43, 53, 71,162, 63, 32,193, +210,231,204, 31,253,217, 47,248,233,175,238,112,251,205, 87,120,235,213,155,252,242,227, 47,232,115,100,179,186,203,191,254,159, + 62,227,159,255,227, 63,224,159,253,225,247,216, 14, 87,124,254,213, 83, 94, 57,187,206,231, 79,159,104,202,202, 26, 14,110,192, + 57,193, 69,133,107, 17, 42, 77,235, 73,201, 96,151,142, 90, 91,164, 10, 53, 69,196, 20,194, 98,137,243,158,202, 72,152,131,178, +181, 24, 66,219,113, 96,164, 86,139, 55, 45,206, 10,217, 57,234, 60, 21, 60,148, 1,147,133, 54,180, 4,223,113,152, 18,181, 43, + 24, 9,172,130,103,148,145,198,121,170,201, 80,133,182,109,112,169,227,144, 71, 58,148,241,145,210,200,182,100, 22, 97, 65,189, +180,248,205, 2,223, 24,236,228,136,222,112,255, 42,195, 81, 37, 78,153, 38, 70,236,217,138,224,225, 48, 63,159,218,206,129, 5, +159, 53,203,132, 51, 47,158, 25,246, 27,142,211,154, 50,117, 78, 96, 47,154,192,201,178, 37, 0,199,128,217, 88,214,115,178, 98, +183, 8, 12, 71,129,107,115,248,108,171, 86,105,150, 86,131,107,207,226, 10, 39,149,106, 33, 21,184,122,122,201,197,253, 7,100, +163,181,221,245,233, 41,238,232,136, 44,134, 58, 37, 58, 99, 49,193,147,162, 96,210, 68, 33,209,151, 74, 47, 5, 91, 42, 59, 17, +100, 27, 85,174, 85,133, 90, 4, 87,133, 49,167, 23,151, 54, 74, 70,128, 95,127,245,152,243,203, 61,139,101, 75,193, 17, 92,224, +120,213,105,149,215, 25, 98,206, 44, 90,175, 43, 34,163,191,191,174,245,115,190,225,121, 34,252,235,205,126,173,232,212,215, 25, + 98,173,132, 81,139,212, 81, 70,188, 24, 38, 91, 9, 2,187,105, 7, 37, 83,140,224,219, 53, 69, 96, 55,237,105, 12,120,191, 34, +199,137,166,243,140, 25,178,157,112,161, 69, 74,194, 86, 71,154,246,200,160,117,237, 54,104,170, 61, 97,152,196,226, 38,240,197, + 83,106,160, 92, 69, 48, 17,227,159, 33,180,132, 35,199,179,107, 27, 70,183,198,199,204, 33, 38,188, 48,215,199,204,108,168,154, +103,251, 82, 43,209,184,121, 92,110,200, 34,170, 40,181, 78,137,254, 51, 49,184,136,158,122, 29, 50,215,225,148, 23,175,215, 4, + 93, 74,212, 57,144,245,252,135,212,200,204, 98, 55, 78, 79,179, 78, 41,106,224,245,133,110, 12, 66,193, 88, 52, 16, 39, 80,201, +154,204,118,110, 30,213,171,164, 33,103,181,121,129,213, 27,138,209,111,210,130,210, 4, 92,177, 47, 14, 19, 2, 42,104, 40,134, +138,130, 21,168,162,166, 40,235,212, 98,102,244,100,168,141,116,175, 39, 98,107,112, 86,253,201,206,185,185,250, 45,136,119,212, +108,200,197,128,171,200, 28,148,107, 90, 67, 78,122,250,180, 86, 15, 30,206, 84,178, 81, 58,154, 21, 53,119, 57,241,228,164, 82, + 22,239, 42,147, 52,236,174,158,176, 29,158,178, 88, 46,240,181,165, 11, 51, 52,198, 54,148, 0, 98, 43, 55,150, 11, 46,246, 79, +216,165,137,205,250,136,245,122, 67,153, 70,236,120, 32,102,153,119,147,105,134, 15,120,124,240, 56, 31,104, 44,148, 89,162, 44, + 81, 40, 34, 4,223,128, 15,172, 54, 43,134,237, 57,211, 52,225,219,142,105, 42,115, 61,177, 98,163,238,143,210,152, 89, 44, 1, +171, 4, 62, 42, 24, 39, 80, 53,205,190, 92,157,178, 58, 57, 33,197,158,241,208, 83,162,193,216,150,176, 80, 27, 94,183, 90, 96, + 75, 36,197,196,209,170,163,235,214,236, 15,151,216, 70, 52,153, 42,154,161,176, 14, 36, 22, 77, 71, 91, 75, 73,149, 82, 39,170, +204,146,156,172, 31,121,176, 1,114, 34,138,161,100, 75,215,120,142,218,150,123,251,200,131, 71, 15, 9,203,202, 85, 31, 56, 59, +187,197,135,191,253, 62, 95,126,113,159,255,227,255,254, 33, 67, 63,205,244,192,164,225, 71,235,112, 52, 76, 53,170, 12,199, 26, +144,196, 43,175,189,202, 43,175,223,230, 87, 63,253, 49,103,103,175,114,243,214,235,124,252,243,143,216,110, 31, 67, 8,108, 78, +174, 19, 69,216, 93, 92,112,254,228, 17,235,147, 99, 94,189,190,193,212, 72,117, 70,189,234, 84,188,115, 76,113,210,252,132,241, +184, 73,232,107,164, 31, 14, 72,213,188,135,161, 98,141, 35,116, 14, 17,157,108,184, 90, 21,106, 98, 19,203, 69,131, 55, 48,142, + 35, 82,149,237,141, 36,114,156,184, 24,119,252,201,159, 60,210, 85,151,247,100, 73,236,250, 43,222,222,188,206,186, 61,225,104, + 5,223,255,246,134, 63,249,217, 21,143,158, 29, 48,165,224, 27, 59,175, 63,230, 22, 72,134, 33, 78,152,253, 21,174, 9, 4,223, + 97,179, 6, 74, 69, 34,140,202,166, 31,166, 3,231,219, 61, 57, 31,232,108,160, 86,171, 4, 72, 99,177, 53, 83,170,197, 89, 63, +131,193,245, 25, 97, 45,228, 44, 76, 85, 25, 8,182, 84, 98,142,116,193,178, 89,174,153,198,137,195, 52,226,157,218,221,164,102, +170, 3,111, 23,154, 74,167, 34,174,197,251, 70, 67,156,249,128,136,176,221, 78, 92, 94,142,124,113,247,130,191,104,126,197, 36, +142,155,175, 28,243,213,103, 15,120,250,108,207,221,119,223,224,214,173, 83,254,224,251,191,197,253, 47,255,152,103,231,119, 56, + 91,159,241,236, 98,192, 74, 98, 81, 13,169,120,106,227,176, 49,232, 84, 35, 86,188, 15, 16, 39, 36,136,138,157, 66,197,136, 39, +149, 72,138, 3,221,162,165, 24,193,196, 22,108,102, 28,244,246,218,181, 6,153,132,128, 78,202,172, 47, 12, 67,130,234,112, 71, + 75,109,154,148,138, 95,120,186, 77, 75,154, 42, 83,204, 52,193, 83,147,103,139,197,214,137,236, 60, 99, 61, 16,130,163,164,168, +249, 23,107,201, 86,152,124, 97,221, 90, 66,152, 33, 93, 41,115,220, 29,243,234,237,151, 56,221, 24,238, 15,158,135, 59,195,179, + 90,113,197,144, 46, 19,140,145,205,233,138,206,194,238,114,192, 53, 13, 97,165,153,135, 97,183,103,187, 10,172, 59, 79,113,134, +195,197, 14, 91, 38, 74,204, 52,139, 64,248,134, 73,237, 55,251,236,207, 33, 52, 14, 56, 49, 95, 99, 87, 27,192, 54,176, 80,231, + 38, 5,248,229,188, 38,148,156, 41,222,241,202,171,103,188,116,188, 33, 1, 79,179, 78, 15,156,211,250,218,118, 16, 85,242, 58, + 67,202, 66, 25, 35,214, 58,140,181, 20,169,164, 49, 66,133,156, 43,109, 41,212,233,128, 25, 70, 14,211, 78, 51, 76,206,242,116, +210,128, 90, 77,218,176,192,239,176,181,206, 85,223,140, 7,130,181,196, 82,144, 82, 89, 45,155,153, 36, 42,148, 92,241, 54,177, + 88,119,184, 10, 87, 83,225,201,211, 11,166, 62,225, 99, 33,251,192, 48,238, 16, 19, 73,217,210, 24,199,148, 28,185, 89, 66, 25, + 49, 37, 99,178,197,230,129,182,201,228, 62,211,218, 74,148, 29, 82,215,164, 73, 43,113,245,144,112,173, 90, 30, 73, 30,215, 84, + 38, 91,145,164, 33,110,124,165, 74,196, 20,143, 24, 75, 44, 19,222, 23,106,234, 40,102, 66,226,200,153,179,188,252,214, 53,238, +197, 21, 61, 19,213, 56, 60, 50,199,133,172, 80,213,187, 58, 7,221,132,156,235, 92, 11,208,189, 59, 70,117,172, 50,195,115,109, +117, 32,149,130,222, 74,109,169, 51, 95,122, 70, 8, 82,102,154,155, 2, 47,220,204, 22, 87, 75,154,211, 32,153, 49, 96, 4,107, + 27,173,145,155,170,117, 44, 83,177, 98,212,202,102,173,210,234,170,210,238,140,177,196, 28,177, 24,149,203,168, 98,125, 54,199, +169, 96,198,184, 58,215,125,244,252, 33, 70,111,163, 38,100,204,188,171,179,222, 80,196, 35, 58,225, 39, 4, 75,197,106,255,221, + 27,220,243,145,108, 17, 26,111, 41, 20, 13, 46,165, 2, 78, 79,156, 98,116,119,228,103,119,175,169,122,216, 48, 54, 41, 48,164, + 26,188, 17, 29,215,100,171, 72, 83, 3, 77, 1,124, 80, 81, 78, 22,114, 29, 73, 57,233,205,165, 91, 98, 29,152, 52, 34,214,129, + 4,166,105,162,154, 68, 17,161,217,156,113,249,213, 5, 15, 31, 61,229,178,235,240,161,211,155,145, 49, 4,223,224,155,150,211, +211,155,148,152, 24,135,131, 6,223,130, 83,227,155, 13, 20,111, 72,174,210, 86, 67, 76, 9,153, 6,204,122,161, 7,180, 82, 84, +224, 18,156, 6, 26,173, 78, 94, 92,240, 8,133,126,119, 78,108, 26, 93, 13, 52,142, 38,168,188, 71,114,101,181,217,112,118,186, +225,242, 65, 15, 65,237, 97,166, 22, 66, 73,236, 14,123,198, 52,210, 20,104,188,163, 84,195,229, 56,205, 97, 72,165,148,121,235, + 53,209, 41,224,172, 86,243,158, 19, 12,173,204, 88,220,162,193,160, 96, 45,161,113,140,212,153, 71,144, 57, 58, 59,229,144, 44, +219,221, 72,173,240,236, 28,250, 67, 98,189,218,240,229, 87,143,248,241,143,126,202, 97,119, 0, 11, 83, 41, 56, 2, 50,155,238, + 98,218, 83, 98,196,186,134, 73, 42,139,206, 99,156,229,147,143,127,201,205,151,223,228, 59,223,253, 62,126,225,120,250,248, 9, +103, 71, 55, 88, 28,117,124,240,221,239,177, 61, 63,240,249,199,127,205,110, 24,160, 86, 46,206,239, 3,142,105,154,136, 83, 84, +170,159,211,100,112,170, 5, 67, 38, 77, 21, 41,154,189, 16,165, 47, 97,124,214, 17,123, 4, 35,149,156, 51,165,100,130, 51,116, + 75, 71,183, 88, 98,171, 48,148, 76,154,132,126,232, 25,198,253, 92, 47,115,132,160,159,191,136,193, 53,134, 24, 35, 15, 31, 94, +240,206,235, 39,164,210,176, 92,182,252,243, 63,252,125,254,183,127,247, 11, 30, 63,122,160, 65, 84, 59, 35,115, 49,220, 56,125, +153, 49, 30, 40, 49,145,147, 33,215, 9,147,210, 60,141,211,157,252,249,112, 69,154, 84, 3,233,189,215,160,172,241, 58, 61, 74, + 17,231, 53, 37, 43,243,193,218, 25,117,127, 23, 41,243, 65, 94, 19,216, 21,131,169,158,113,200,108, 26,104,187, 5,209, 36,210, + 52,225, 77,131, 21,167, 98, 27,139, 98,150,189, 99,121,116, 74,231, 87, 76,211, 78, 95,162,250, 95,210,182, 58,129, 58,136,134, +143,238,222, 59,231,193,253,103,120, 10,255,253,191,254,183,252,159,127,250, 19,190,117,251, 77, 86, 11,199,163,203,158,183,143, + 95,226,144, 87,148,105, 75, 73,149,138, 39,197, 68,181, 9, 71, 71,202, 35,190,142, 26,240,155, 34,141,247, 24,103,168, 4, 76, + 30,105,131,131, 40,202,139,159, 49,162,109, 99, 89, 5,203, 32, 19,214,173,144, 80,177, 11, 37,169,120,231,105,124, 67,204, 90, +157, 28, 67,131, 11, 13, 38,170,127,189,202,156, 3,106, 43,126, 44,224,143, 40,195,158, 98, 60, 49, 39, 76,151,176,102,129,115, + 94,229, 86, 35,244,214,178,114, 66, 29, 60,178,180,116, 77,224,149,101, 32, 24,184,222, 25,150,141,231,196, 43,254,244,178, 52, +176, 14,200,198,178, 43, 80, 83,199,241, 70, 39, 64, 87, 2,231, 91,207,238, 42,209,244, 21,201, 19, 87,151,231, 20,137,140, 41, +147, 75,225, 98, 55,209,110, 90, 74,130,126,156,216, 44, 60,222, 26,246,177,176,112,118,166,178,252,191,129, 54,205,111,252,125, +141, 25, 43, 5,231, 29,161, 11,156,180, 13,205,252,207, 57,175, 7,134,231, 27,243,110,105,105,105,105,102,138,221,246,184,227, +236, 27,166,183, 67, 93,178,156, 47,212, 61,240,232,233,134,243, 59, 95, 34, 86,240, 22,142, 94,186,137,217,156,104,198,106,200, +122,250, 9, 26, 2, 54,227,115,198, 64,161,148,164, 24,238, 56,114,153, 29, 53,101,144,136,175,149,113,154,152,238, 95,144, 37, +235,116, 50, 79,108,183, 3, 54, 11,198, 8,146, 50, 18, 26,170,139,228,201, 82,137, 44, 3, 28,166,130, 47, 29, 83, 19,149,254, +153, 26,172,131,125,156, 48,174,101,127, 56,103, 40,158, 58, 78, 24, 2,185, 47,186,202,113,142, 88, 34, 34,137,130, 99,100, 67, + 93, 78,216, 82,144,201, 82, 91,131, 59, 36, 36, 27,240,153,152, 33,229, 3, 86, 54, 4,183, 70, 98, 70, 38, 33,198, 17,143,247, +122,178,192,145,171,254,240, 41,180,223,226,189, 94,246,124, 53,218, 35,157,249,192,169,228, 23, 99, 9,227, 45,118,126, 25, 40, +253,209,234,203, 84, 12,214,169,140, 69,106, 81,143,121, 53,216, 16, 48, 98,230,186, 89, 81,213,170, 85, 89,140, 41,243, 45,237, +185,252, 4,135,216,168, 55,110, 9, 90,133,171, 21, 51,235, 87, 67,103,168,197,169, 15,222,168, 62,179, 86,173,209,132, 10, 41, +231, 57, 21,222, 48,214,164,123,231,168, 52, 60, 49, 6,147,237, 60,154,215, 67,140,100, 48,182,224,131,199, 59,136, 89,247,194, +214,235, 14,191, 58, 75, 41,162,226,131, 10, 50, 10, 33, 24,156,171, 68,129,234, 29, 34, 66,137, 19, 93,104, 8,115, 53, 39,249, +249,235,117, 40, 4,239, 72,214,144,171,176, 40,137,146, 10, 38, 24,114,174, 60,188,247, 41,175,190,115,202,122,125,157,169,223, + 99, 91, 77,153, 22,209,244,237, 52, 8, 71,171, 13, 67,220,242,236,106,135,181,158,148, 53,248,101,202,124, 10,157,121, 1,207, +158, 62,196,121,199,234,232, 38, 55,207,174, 67,217, 19, 92,203,194,105, 44,118,108, 20, 76, 83,140,208, 45, 20,209, 58, 28,118, +228, 90, 33,103,220,188,203, 52, 34, 52,221, 2,170,182, 22, 98,140,136,101, 14,152, 25,210, 52,106,110,162, 86, 26, 23,200,219, + 81,251,226,193, 97,170,161,144,145, 0, 77, 52,196,170,139, 20, 39,149, 60, 36,198,148,113,214,145,139,161,198, 66,105, 10,165, + 56, 82,137,152,160,105,124, 11, 20, 87,112, 34,148,164, 16,153, 82, 51, 71,221, 2,103, 29,216,136, 51, 21,111, 61,215,175, 95, +231,226,124,135,100,161, 9,134, 59,247, 30,112,216,238,153,178,240,179, 95,126,196,211, 39, 79, 9, 78,199,215,214,232,104,217, + 59, 71, 27, 90,114,140,184, 82,104,215,158,161,143, 88,239,184,247,249, 39, 12, 83, 36, 95,236,168, 99,130,101,195,131, 71,119, +240, 4, 94, 59,126,139,199, 15, 30, 48,197,196,122,185,226,232,104, 73,201, 25,113,134,169, 31,200, 89, 27, 24, 38,170, 62,184, + 82,200,169, 16,154,150, 97,156, 88,110, 2, 47,191,118,141, 60, 21,190,248,236, 19, 98, 17, 66,235, 40, 73,237,131,213, 24, 82, +201,212, 98,153,162,176,219,238, 88,175, 50,226, 13, 54,107, 32,211,134, 5, 93,227,145,108,181,246, 34, 26, 42,147,249,214,127, +117,249,140,225,149,215, 89,118,215,249,226,193, 21, 63,248, 48,209, 54, 58,117, 11,141,199, 54, 6,107, 61,203,229,146, 91, 55, + 94,231,209,147,251,108, 47, 47,200,185,208, 31, 70, 98, 63,168,113,111,177,152, 81,197, 5,113, 6, 95, 28, 38, 87, 6,147, 48, + 70, 56, 57, 58,229,228,250, 45,238, 62,184, 79,141,232,106,199,206, 45, 10, 84,171,106,172,135, 34,243, 74, 77,215, 93, 21, 97, + 59,238,216, 44,215,116,190,163, 12, 35, 80, 9,206, 17, 69, 25,237, 77,187,164, 89, 30,227, 67, 71,191,219, 18,199, 43, 68, 10, +214, 84,226,172,138,246,115,250,217,184,231, 13, 28,133,178,220,185,127,201,221,199,123,254,226,163,207, 56, 93, 29,241,210,245, + 19,124, 87, 57, 59,109,120,112, 95,215, 82,206,103,186, 84,233, 83,162,184, 68, 87, 85,138, 66, 87,169,163, 85,247,247, 60, 5, +116, 33, 96,173, 97, 74, 74,187,116,193,106,144, 49, 87,114,110,176, 38,224, 27,163,177,225,209,144,197,226,140, 71,170, 96, 74, +135, 53,133,148,244,230, 53,182, 3,221,216,232,203,165, 1, 41,158,174, 49, 24, 41,140, 69, 48,181,199, 20, 8,245,152,214,130, + 35, 48,150, 72,227, 27, 76, 22,170, 19,228,144,240,213,209,189, 26,120,158, 13,139, 73,159,209,155, 89, 19,125,153, 43,171,133, + 62, 63, 14,192, 50, 88, 94,153,171, 91,199, 64, 58,235,104, 58,117,203,212,190,129, 39,231, 28,178,126, 29,253,178,129, 77,195, +193,194, 37, 48,137,225, 73, 54,164, 92,113,187,204,170,115,236,130,230,161,198,109,225,164,181,180,173, 30,192,135,177,176, 90, +232,215, 39, 2, 83,127, 96,200, 25,201,153, 53,134, 96,237,223,200, 0,152,223, 32,220, 53,243,175,181, 51,202, 54,124, 35,212, +182,252, 70,129,125, 13,140,193,241, 76, 12,198, 27, 58,215,240,222,235,215,105,218, 64, 69,211,255, 94,148, 87, 95, 42,244, 69, +101, 60, 56,200,165,146,146, 48,236, 38, 92,215, 80,196,144,106, 38, 93,246,184,105,160,171,149, 60, 38,232,175,104,154,158,243, + 93,161, 68, 37,134,182,182, 97, 26, 51,181,115,200, 48, 80,171, 78, 17, 91,239,152,106, 34, 30, 70,164,105,113,165,193,155,137, + 90, 45,212,194, 97,159, 48,121,160,109, 59,198, 24,201,181,210, 82,161,140,250,125,231,150,136, 76,152,216,235,202,122,206,165, +229, 49,106, 79,205,130, 15, 25, 87, 42,213, 46, 56, 57, 57,162,203, 32,105, 55,187, 85, 10,190,166, 57, 94,255,220,186,230,173, +122,207,171,193,104,174,234,185,128,117,246,170,204,100,117, 83, 49,166,144,147,198,217, 77,208, 20,185,153, 15, 6, 98, 2,198, + 54, 32,170, 85,172,243, 92,220, 24,163,251,231, 58,143, 69,130,222,222, 21,253, 10,217,152,231,155, 12, 4,193,185, 70, 81,152, +186,216,192,136,130,237,149, 2,103, 16,171,129,183,231,128,193, 96,225, 5, 60, 78,147,116, 84, 91,104, 69,147,244, 82,235,140, + 66,172,170,145, 21, 53, 57, 37,141,187,206, 7,131,185, 59,110,102,170, 15, 85, 51, 3,206, 18,208, 91, 98,181, 66, 42, 90,205, +114,193, 97,242,156,166, 55,250,117, 44, 82,177,193, 82, 74,213,177,158, 5,231, 60,177, 36,133, 69, 24, 71,246,218, 20, 48,174, +193, 27,139,228,129,187,119,191,224,157,183,190,205,194,180,180,139, 64, 88, 54, 28, 46, 46,233, 92, 75,235, 15,184, 50,113,245, +236, 25,187,253, 78,111, 43,179,228,198, 91, 59, 91,162,244,192,145,166,137,126, 72,172,142,111,210,110,142,136,227,172,128, 93, +122, 76,174,172,138,144,108, 34,224, 89,173,142,120,251,229,107,220,249,228,231, 84,227,181,198, 49,244,186, 27,178, 65,247,243, +117,161,255, 95, 62,208, 45, 55,234, 7,240, 30, 95, 97,191,155,193, 38,206,114, 57,142, 36, 17, 29,107,137,142,200, 93,123,204, +123,223,126, 19, 83, 96, 63,246, 76,135, 61,249,160,183,130,219, 31,188,206,209,209,138, 31,253,249, 79,120,252,240, 41, 47,191, +124,202,230,116,205,254,114,164,228, 68,140,137,126,223, 51,149,202,148, 11,113,154, 88,117,158,174,105,233,211, 56, 27, 4,161, + 91, 44,248,214,219,111,242,127, 61,248, 41, 69,224,201,179,145, 39,207,118,228, 60,241,249, 39, 95, 17,251,145,214,251,185,179, +170,211, 5,107, 44, 97,177,164, 6, 71,156, 34, 1, 59, 31,236, 12, 38, 23, 82,170,220,126,253, 45,142,215, 39,148, 42, 60,252, +252, 14,183,223,122, 27,113,137,187,159,254, 7, 62,254,197, 30,231,130,174,113, 74, 38,204,107,153, 49, 38,189,245, 27,207,192, +220, 47, 77,145,229,170, 99,181, 92, 99, 37,115,235,221,219,188,113,251, 13,188, 52,156, 30, 45,248,203,159,252,148, 52,150,121, + 90,161, 15,172, 96,245,179,200,104,179,224,176,239,213,101,237,252,204, 78,247,148, 25, 36, 81,179, 98, 50,155,198,115,124,124, +157, 87,111,191,193,189,175, 62, 97,215, 63,225,253,219,239,242,248,217,129,253,249, 21,175,189,124,202,103,119,238,226, 60, 52, +190,161, 90,195, 56,236,248,232,227,159, 65,206, 88, 35, 28,134,194,217,201,138,127,242,207,126,192,143,126,252, 43,238, 62, 73, +172, 86, 11,188, 85,157,239, 56,238, 53,131,177,120,137, 55,222,120,149, 91,175,191, 69, 4, 46, 46, 47,184,232, 47,180,219,155, +161,144,180,122,105, 85,249,154,156, 18, 41, 77, 97,158,200, 84,198, 24,113,236, 89, 46,214, 44,150, 29, 37, 38,181, 53,186, 66, +215,116, 44, 55, 39,148,106,216, 30,158,146,251, 3,214,184,249,198, 38, 24,201,244, 7, 8,205,188, 38, 20,176, 2,222,169,120, +198, 89, 75,168,138,183,221,110, 15,140, 83,230,141,151,143,121,247,237,119,120,242,224, 74,177,190, 85,136,146, 0,135,199,131, +215,167,157,137,158, 96, 60,153, 1,146,163,161, 50,153, 66, 44,133, 22,253, 92,240, 6, 95, 51, 83,103, 95,212,241,166,169,195, +212,130, 4, 37,164, 52,203, 64, 78, 66,176,122,177,169,174, 98, 90,161,164,202,193, 68,157,128,229,145,146, 38,106,211,210,132, +137,246,108,205,164,215,106, 82,217,171,216, 41,247,212,102, 69,173, 6,147, 38,250,125,197,187, 6, 95,132, 80,103,152,143,213, +233,143,117,240, 12,195,121, 69,235, 80,235,128,199,208, 72,197,203,215, 53,178, 94,244, 89,233, 23, 26,154,219, 75, 97, 28,122, +164, 86, 58,223,177,234, 22,156,206,189,115,211,130,109, 26, 78, 28,108,129,167,171, 5, 55, 29, 4,171, 35,243, 97,109, 73,214, +208, 91,216, 71,168,201,208,181,134, 84, 97,234, 43,233, 50,146,179, 6, 54, 75, 20,206, 47, 7, 78, 79, 52, 92,157, 83, 97,181, +112,179,182, 23,130,232, 69,239,155, 47,249,191,155,251, 46, 72, 42,148,177,210, 93, 91,176,249, 70, 9,254,229,111, 50, 97, 13, + 28,207,238,121,243, 66,233,234,200,199,129,229,115,180, 45,129, 71, 39, 11,130,213, 3,227,174,192,227,175,174,216,125,250, 43, + 76, 81,135, 70, 63,141, 88,163,161,199,233,208, 99, 83, 70, 74, 98,155, 12,206,137, 74,180,178,165,173,153,146,174, 52,171,225, + 45,165, 55, 72,244,212, 38, 33,206, 81,203, 4,182,165,250,150, 82, 38,156, 24,176, 29,198, 10, 57,143, 32, 29, 86, 77, 13,164, + 49, 35, 82,232,130, 35,143, 78, 65, 97,206,240,171, 59,231,236,255,135,255,157, 75, 2,110, 0,169,215,240, 69, 34,118, 38,138, + 9, 6, 51, 91, 85,202, 60, 84, 41, 69,199,227,102,222,161,214, 44, 90,109,211,121,247,204, 69,127,142,125, 4,193, 98,130,193, +198, 74,169,250,250,244, 86,193, 51, 25,189,157, 75, 21,172,168,158, 53, 75,153,107,104,110,254,226,103, 61, 73,212,217,102, 46, +115,186,156,172,234, 86, 99, 84, 31, 89,209, 96,156, 17,144,130,181,102, 78,221,234,173, 63, 43,200, 29, 35,133,130,193,123, 13, + 0,138,209,125,186,173,122,108, 72,243,175,233,152,244,121,216,175,104,213,205,155,121,223,170, 20, 44,221, 65,122, 98, 17, 26, + 23,240, 77, 37, 71, 29, 9, 25,163,182,164,234,212, 46, 23, 83,196, 22, 59,123,213,117,117, 80,157,193,207, 35, 95,243, 60,220, +234,117,135,234, 76,203,235,175,191,202,231,119,238,113, 56,188,198,233,217, 53, 98,191,195, 75,199,162, 91, 17,115,194,118, 13, +139,124,197,189,123, 59,114, 18,156,215,138, 95,209, 20,131, 30,168,230,219,176,118,246, 61,155,213,134, 6,139, 52,158,118,213, + 96,170, 2, 72,130, 53, 72,234, 89, 57, 79,160, 98,107, 34, 22,157, 82,136, 8,185, 10, 37,103,109, 45,148,204, 20,123,253, 67, +196,204,212, 15,180, 93, 32,103,149,217, 84,235,112,214,178,234, 54,156,157,157,112,137, 78,110, 48,130, 53, 30, 87, 11, 79,174, +182,172,221, 17, 77,187,102,181, 88,209,189,220, 98,172,165,219, 24,228, 16,249,193,135,191,139, 9,158,235, 71, 43,214, 55,142, +217, 93,142, 24, 34,113,140,244,211,200,238, 48,114,249,244, 41,219,195,158,243,135,119,169, 89,173,129,214, 88,240,142,183,190, +245, 14, 77,215,145,178,165, 31, 70,126,253,217, 35,174,246, 59, 14,253,150, 24, 11,214, 55,179, 55,125, 14,188, 89, 93, 2,182, +141,195, 91, 24,147, 32,139,142, 41,103, 86,190,225,218,245,235,124,231,251, 31,178,123,114,197,227, 7,119,213, 82, 88, 39,202, + 84,248,157, 63,248,125,222,126,251,187,124,244,211, 31,243,224,203,207,192,168, 59,185, 11,150,125,223,147, 69,205,102,146, 19, + 18, 19,135,254,192,230,104,201,135,191,243,219,156,157,157,129, 20, 90, 23, 48,162, 45,137, 15,190,247,219,152,245,154,143,254, +242, 39,244,135, 81, 9,123,162, 21, 52, 99,244,175,141,115,138, 44, 14, 26,162, 19, 10, 62, 4, 4,253,217,189,113,114,202,107, +175,190,194, 75, 55, 95, 99,185,217,176, 12, 1, 91,180,239,223,191, 54,224,186, 5,159,127,245,132,215,175,223,102,213, 46, 41, +185,178, 29,175,152,198, 68, 49,133,166, 9,180,182, 99,113,180, 65, 56,240,218,203, 55,248, 23,255,213,127,129,111,225,243,255, +241,167,172,151, 71,228, 26,233,150, 75,126,235,195,239,227,214, 11, 90,183,100,233, 2, 77,163,134,193, 55,223,124,143,171,243, + 31, 34, 57,227,108, 75,178,133,198, 7, 13,223, 58,161, 21, 75, 65, 31,236,198, 88,188, 81, 92,242,144, 10,193,102, 92, 23, 72, + 26, 68, 96,181,184,193, 98,121,194, 97,188,162, 76, 7, 82, 63,234,234, 75,228,107, 81,209,252,115,249,124, 77, 40,165,146,141, + 33,203,136, 23,139,119, 13, 83, 5, 59, 39,250, 15,195,200, 87,119,182,124,247,219,149,211,117,199,253,167,207, 52, 48, 73,131, +177,122, 8, 77,136, 6,101,171, 80,219, 57, 15,147, 60,253,116,208, 80,157,109, 40,157,163,179, 6, 51,194,224, 5, 91, 33, 89, + 75,231, 61,251,113, 84,126, 67, 9, 44,187,134,148, 34,141, 3, 92,102, 18, 15,165,161,198, 3, 54,235,100, 20, 83, 9, 93,192, +174, 13,101,128, 92, 61, 38, 22, 93, 59,186,138, 23,205, 42,237, 99,131,235, 2, 14,135,152, 37,101, 42,212, 32, 56,239,120,182, +189,226,227,207, 31, 19,154, 21,207, 46, 46,113,109,195,242,120, 67,172,133,254,106, 75, 91, 55,132, 46, 48,246, 19,173, 49, 60, + 47,188, 73,213,155,111,154,199,231, 41, 38, 74,138,100,209,166,139,107,190,238,129, 95, 22, 56, 65, 43,212, 30, 8, 2, 43,255, +117,186,126,221, 26,110,204, 87,171,243,165,118,194,158,247,193,159,181,134, 95,220,235,104,140,182, 25,194,178,225, 73,183,224, + 66, 12,142,138, 75,112,210, 64,231, 97, 42, 48, 30, 10,155,149, 37, 56,203, 56, 9, 18, 11,155, 77, 96,182,113,107,139,228, 27, +144,155, 20, 35,212, 76,245,133,229,194,254,157,140, 88,243,183,212,217,252, 55,114, 2, 11,224, 86,203,243, 99,155, 94,100,174, +173,121,242,105, 75, 26, 35, 78, 2, 83,222, 51,153, 72, 77,144,226,132,175, 75,192,176,236,132,152,123,100,128,214, 44,169,229, + 64, 53, 45, 67, 26, 41, 46,225,109, 71,179,246,148, 4, 83, 26, 20, 57, 92, 11,102,172,148, 98, 17, 95, 49,249, 74,243, 3, 85, +167, 47,209, 25,124, 54,106,237,100, 32,138,182,237, 13, 66, 83, 13, 95, 92, 28,184,243, 87,119,104, 76,207, 27,175,157,233, 84, +171,214, 58,223,195,231, 0, 97,169, 51, 72, 70,193, 17,182,206,163,112, 91,103,151,178, 82,230, 44,134, 84,100,102,191, 91, 36, +101,213, 84,204,169,107,230, 36,175, 65, 73,116, 20, 75,205, 19,198,122, 13, 34,205,165, 74, 91, 44,213,107,229,205,160,190,114, + 85,186,206, 19, 0,163, 72, 85,102, 76,136,173, 22,201,133, 16,180, 79, 91,107,197, 27, 79,117,149, 34, 21, 17,139, 55,142, 98, +202, 92,230,215, 91,115, 49,250,178,107,141,165, 24,139, 17,193, 20, 77,219,106,152,195,227,157, 82,219,244, 97, 57, 75,102,188, +165, 68, 8,157,213,127, 87, 81, 55,124, 45,234,127,182,179,111,222, 27, 75,156,247,207, 82,138,142,231,106,213,180,172,179,148, + 25,225,105,157, 42,105,253,156,176,172,200, 44,159,201,216,224,121,235,214, 25,247, 30,254,138,163,213,111,227,221,130,188,159, +152,134, 75,134, 60,210, 46, 12,173, 77, 92, 92, 94,206,252,226,231, 99,100, 93, 31, 24,163, 10, 90,106,165, 22,131, 15, 13, 16, + 8,141, 69, 14,208,228,249, 27,194, 10,165,241, 56,177,212, 98,249,173,111,127,151,171,243, 59, 76, 99,194, 89, 75, 44, 66, 46, + 69, 43,140,190, 97,181, 58, 34,229,145, 20, 39,140,169,164,212,147,147,197,206, 19,155, 54,104,132,230,206,221,207,121,122,222, +210,120,199,245,211, 99,182,251,158,102,113,198,247,254,254,239,146, 77,100,187,223,209, 95, 93,240,120,215,107, 47,159, 17, 41, +130, 21, 33,180, 29,103,215,110, 16, 39,224,201,136, 12, 3,110,181,162, 9, 29,116,134, 27,199, 27,222,187,245, 38,171,227,142, +191,254,171,159,113,247,206, 93,174,250, 61,211, 52,114,118,237, 6,239,127,251, 45, 62,253,228, 62, 34,153,195, 40,220,121,240, +144, 88, 70, 36, 39, 22,139, 35, 36,171,139,222, 86, 33, 75, 81,200,137, 1,211,122,165,250,145, 89,122, 85,254, 38,147,184,254, +202, 43, 60,184,251,128,187,159,126,194, 98,179,226,123,223,253,144,227,179, 51,198,237,196,163,123,119,184,127,255,115,190,253, +238,251,200,238,138,187,207,158, 32,113,164, 79,115, 90,124,230,140, 99, 42, 82, 34,103, 39, 27, 62,252,189,223,225,230, 75, 55, + 48,165,146,104,180,206, 40,218, 79,150,100,120,231,214,155,156, 28,159,240,232,225, 51,126,245,227, 31, 51,164, 17,177, 42, 27, +122,158, 34, 52,117,102, 74, 80,231,240,165,186,203, 91,187,224,173,183,222,227,253, 15, 62, 32,203, 72, 38,211,199,204,141, 55, +222,226,179,175, 62,229,114,187,229,229,235,175,176, 27,133,111, 95,155,248,224,253, 55,249,171,191,254,132,195, 94, 39, 13,139, +197,138,206, 7,154,174,197,225, 9, 77,199,249, 46,243,236,201,192, 7,239,189,199, 34,252, 25,125,127, 78, 51, 59,231, 99,108, +121,213,111,168, 33, 83,114,196, 73, 67,168,153,215,222,122, 23,131,229, 23, 31,253,152, 24, 39,156, 88,205, 85, 88,125,104,196, + 82,192, 20,170, 24,154,224,230,166,129,138,149,118,211,158,224, 58, 68, 60, 77,227,233, 66,199, 48, 30, 24,251, 11,242,164,104, +221, 44,149, 96, 50,182, 86,245, 68, 56,143,179, 22, 59,135,103, 73,117,246, 76, 23,178,171, 26, 74,117, 6, 68, 15,159,141,107, +184,255,228, 25,159,223,185,199,217,201, 17,143,118,129, 58, 65,176, 69,167, 51,226, 73, 18,117,133,103, 42, 62, 42, 3, 62, 51, +225,237, 66,205,107,141,135,160,159, 51,174, 98,109,160,193,145,108,166, 24, 71,231, 90,162, 76, 24,201, 76, 51, 81,178,105, 44, +185, 36,178,129,154,213, 58, 41, 73,159, 97, 54, 88,166, 52, 96, 75,192,165, 22,150, 13,102, 42,248, 88, 25,131,208,181,150, 69, + 13,140, 43,149,185,148, 54,225, 59, 71,119, 48,179,231,194,176,104, 90,226,209,154,193,122,226,206, 19,142,143,216,173, 61,117, + 15,206, 44, 25,125,199,101,132, 56, 56,182,219, 75,134, 81, 45,120,151,253, 64,205, 61,167,103, 27,178,129,254,226, 10, 72, 12, +162,158,137,165,255, 6, 7, 93,163, 33, 0, 92, 61,127,185,126,163, 39,158, 51,152,249,159, 31, 43,172,191, 33, 90,247,117,102, + 87,152, 66, 54,137,110,179,224,157,163,192, 2,157, 40,132,206,113,242,141, 94,125,119,228,191, 86,189,206, 67,196,111, 0, 0, + 32, 0, 73, 68, 65, 84, 6, 75,177,134,105,126, 33,231,153, 19,182,156, 47,224,187, 65,184,188,184,132, 44,152,226, 24,135,204, +148, 42, 46,232,115, 93,210, 44,212,124,158,238,151,249,157,111,254,227, 47,250,223,108,185, 27,169,196,148, 84,116, 70, 65,156, + 37,143, 66, 91, 58,146,107, 72,131,157, 51, 36, 21, 87, 91,162,201, 76, 68,188,175, 36, 1,159, 28,113, 40, 44,143, 13,190, 57, +101,251,244, 9,141,201, 52,174,161,207,149,106, 28,248, 60,191, 31,149, 67, 33, 8, 37, 30,244, 0,236, 26, 44, 22,153, 43,167, + 18, 15,122, 17, 53,149,215, 95, 95,115,237,157,127,192,176, 23,138,236, 40,163, 50, 24,180, 17, 96, 44,150,175, 57,233, 50,203, +142, 53, 32, 46,243, 11, 83,230,112,141,222,200,125,208, 31,168, 42,147,254, 51, 70, 89,241,122, 65,183, 84,209, 68,108,148,129, + 90,131,134,227,140,204,120, 26,189,237,171, 81, 77,230, 17, 47,207,211,112, 56, 87, 53, 20, 87,133, 58,239,252, 93, 80,137,132, +195, 81,171,238,210,189,117,234, 98,151, 66, 99, 33, 74,129, 10, 78,192,250, 74, 78,149,214,233,169, 88,114, 65, 92,160,206,227, +124, 77,249,139,214,223,108,157,129, 41, 30,178, 50,228,109,167,228,184,106, 10,166,232, 3,180,186, 10,190, 34,105,198, 23,250, + 74,202,138,200,245,182,146, 77, 69,170, 39, 4, 71,107, 69, 43,117,212,121,207,175,161,195, 62, 37,108, 12, 44,218,160,201, 99, +128,154,145,169,208, 46,142,121,121,189,229,215, 63,251, 19, 76, 56,194,134,134, 16, 26,186,176,160, 91,172,233,150,158,107,103, + 71,132,174,101, 28, 19,125, 63,204,250,219,249, 86,231,244,198, 98,208, 61,230,106,115,196,171,111,188,205,195,123,159, 51,140, +145,165,135, 85,112,244,117, 66,106,228,157, 91,183,184,253,234,107,252,241, 47,127,196,229,118, 71,219, 46, 84,191, 91,170,126, + 54, 70,200,101,164, 36, 61, 52,104, 54, 98, 22, 60,216, 25,182, 35,145,106, 97,123,245,144,221, 54,224,188,229,230,181,150,221, +213, 21,239,222,126,151, 38, 44, 41, 87, 61,139,234,105,143,174,115,116,221,146,134,145,106, 35,229, 32, 80, 71,206,175,118, 60, +186,251, 21,190,105,200,189,130, 81,138,113, 84,211, 18,235,200, 38, 44,185,118,124,198,230,248, 24,186, 83,222,252,214,117,188, +111, 24,251, 29,171,227, 13,203,197, 41,199,103,194, 7,223,218,240,206,237, 3,191,248,245, 47,185,184, 18,108,163,211, 33,140, +157,201,132,202,222,214, 3,170,101, 26,138,238,220,112,164, 56,177, 94, 46, 56, 94, 93,103,119, 56,240,240,206,167,124,239,187, +255,136, 55,223,123,155,166,209,207,192, 28, 85,238, 62,254,130,195,213, 72,124,169,114,242,210, 13,238, 95,221, 39, 71,157, 38, +121, 58, 76,233,137, 57, 33, 89,153, 9,175,190,113,155,147,213, 25,121, 44,212,214,226,115, 85,141,172,245, 88, 35, 76, 73,153, +207,157,107,121,233,236,136, 79, 22, 75, 44,208,182, 65,167, 63, 89,213,157,243, 23,159, 16, 2,222, 5,140,169,132,160, 80,166, +237,110, 75,174, 3,217,232, 33, 49, 69,189,149,157, 94,191,206,195,123,143,121,227,198,107, 28,164, 97,219,239,248,189,239,189, + 77,145,235, 88, 43, 92,108,159,114,255,254,231, 84,175,173, 14,103, 33,180,129,221,110,224,231,191,252,132,127,240,143,190,199, + 91,111,223,228,231, 63,123,132, 44,175,115,180,110,185,118, 20,177,193,130,243,116, 38,208,167,200,141, 83,203,155,111,222,230, +139,179, 83, 86,235, 51,254,250,103, 63,100,183,189,192,214,140, 45,173,190, 0,141,209,238,185, 8, 5,253,121, 47, 85,176, 77, +171,187,235, 97,160,109,215,180, 97,193, 48,237,217, 79,189, 30,124,210,132, 9,110,158, 74,105, 45,179,193,145,171, 46,198,152, + 10,213,234,158,182, 72,197, 25,247,226,223, 93,171, 1,215, 16, 40, 56, 87, 25, 73,252,240, 39,159,242,237,183,110,177,244,107, +182,195,158,208, 4, 16, 33,214,136, 95,120,106,178,212,152,193, 38,124,104,201,217,208, 89,129,174, 85,227, 99, 78, 76, 57,225, +218, 14,151,133, 98, 50, 62, 55,136,205,180, 11, 71, 25,148,189,225,124, 67,200,115,117,116,244,170,118, 54,134, 18, 45,166, 22, +106,227, 48, 46,195,193,235,215,223, 27,210, 48, 81,131,199, 53,134,206, 27,108, 50,196, 18, 48,238, 64, 49, 81,221, 25, 7,161, + 13, 75,202,243, 29,250,210,177, 92,183,140, 9, 22, 93,203,245, 27, 45,226, 96,111, 45,203,182,229,205, 83, 61,248,127,190,241, + 60,245,150,184,246, 92,141,117,174,131, 53,236, 14, 14,151, 18,233,252, 64, 28, 35,197, 20, 22,222,243,248,217, 64,117,151,136, +241,108,135, 9,183, 94, 98,214, 29,206, 85,236, 88,160, 13, 74,225,172,186,246,120, 33, 75,145,175,189,228, 0,251, 4, 37,141, + 72, 1, 41,150, 96,194, 11, 43, 90, 6, 22,223, 0,203, 57,244,133,253,252,127,126,108,121,161,242,254, 90,177,102, 94,176,232, +218,206, 34,206, 33,162,111,251,118,181,164,204, 47,244, 61,186, 67,223,204, 19, 5, 3, 92, 13,149,198,131,107,117,205,155,250, + 74, 87,133,118,165, 97,174, 90, 32, 77,137,197,194,235, 10,192,192,216, 15, 80, 53,204,150,146,134,122,107, 83, 57, 92,237, 49, + 36,196, 70,188,141, 28,246, 25,187, 57, 33, 48, 80,198,145,140, 33,197,158, 28,139, 6,177, 99, 70,124, 37,212,105,198,172, 43, +122, 56, 90,139,165,208, 58, 67, 52, 80, 37,227,154,134, 84, 58, 76,142,148,146, 52,192,233,188, 78,141,107,165,150, 21,214, 78, +124,240,238,187, 28,127,255,191,228,203,143,239,243,244,203, 31, 98,242,132,151,250,252, 37,172, 1, 26, 59,143,188,235,236, 35, + 47,250,211, 65,145,138,113,141, 42, 35,141, 90,154, 76,173, 26,146, 50, 22,239, 20, 7,235, 85, 72,174,187,229, 96,217,156, 94, +199, 15, 91,158, 92, 13, 84,167, 99,120,176,138,127,116, 16,139,158,132,236,204,187, 5,139,179, 96,108, 70,202,115,233,138, 2, + 58,100, 14,213,213, 90,245,219,193, 5,172, 55,212,156, 72, 89,107,110,166,234,184, 29, 28,146, 52,161,158, 4,178, 88,173, 43, + 80,168,104, 2, 48, 87, 69,212,106, 93,194, 32, 89,171, 35,198, 25,154,249,207,145,178, 96,189,135, 90, 41, 89,244,247, 84, 11, +181,212,185, 34,103,213,189, 92, 53,124,209,200, 12,199, 49,150,132, 30, 8, 26,103,168, 98, 73, 78,141,108, 4, 13, 63, 76, 53, + 19,138, 66,103,138, 87,146,217,144,133,213,233,154,183, 23, 13,219,126, 96, 40, 61,227,225,156,253, 46,243,224, 1,108, 95, 62, +227,165, 91, 47,177, 62, 63,112,247,201,142, 49, 85, 92, 26,245,179,152,119, 82,207,157, 74,205,106,197,230,228, 8, 25, 71,188, + 51,220,190,245, 38,199, 97,131,233, 84,184,179, 92,108, 56, 61, 89,114,181,187,228,203, 59,247, 20,192,243,252,246,111, 52,197, +236,168,164,148, 94, 16,150,157,209,151,125,174,149, 82,193, 24,253, 90,138,168, 5,173, 9, 30,219, 58, 62,254,236, 17,235,245, + 13, 94,191,117,139, 47, 31,124,197,210,117, 20,233, 33, 26,194,114, 65,168, 13, 11,211, 48,173, 71,118,135,204,122,177, 34,183, + 45, 93,215, 82,143,133, 56, 70, 44, 69, 31,116,178,160,138,193, 47, 4,161,231,217,179, 61,105, 59,226, 27,203,208, 79, 8,133, + 95,255,170,195,135,150,213,241, 41,255,244, 15,255, 33,201, 28,248,241, 95,126,164,243, 66,107,136,227, 56,147, 16,245,176, 88, +234,188, 18, 17, 33,215,162,120, 78, 12,135,105,228,246, 27, 55,185,118,122,194,131, 59,159,114,116,227, 37,174,159,156,210, 15, +122,208,160, 86,190,248,245, 39,236,134, 29,155,227, 99,190,188,147, 41, 9, 53,156,121,143,171,129, 96,245,231,197, 89, 75,104, + 22,124,241,249, 23,124,242,233,103,188,246,210,171,252,224,195,223,194,217, 66, 31, 29,182, 17,166, 84, 72, 53,233, 33, 35,234, + 62, 63, 52, 1, 59, 25, 36, 38,172,109, 41,161,170, 88,200,104,184, 12,171, 2, 18,231,156,234, 12,178, 38,122, 75, 18, 76,227, + 24,134,145, 50, 70,186, 16,120,249,250,171,252,245,189, 31,113, 49, 92,112,188, 58,229,206, 87,143,248,238,135, 7, 94,125,229, +152,161,102, 22, 71, 29, 79, 30,222,215,145,102,176,232, 19, 0,164,142, 60,184, 56,231,149,151,110,240,225,123,239,113,231, 78, +207,247,126,251, 59,172,164,240,159,255,195,247,121, 50, 86,254,244, 79,126,201, 97,191,195,251,145, 15,222,122,159,247,223, 56, +227,181,151,175,225, 28, 92,110,159,240,241, 95,253, 8,103, 61, 98, 5,227,220,220, 38, 49,200,156, 57, 41, 49,225,189,161,228, +168,181,211, 92, 41,174, 48, 12, 17, 91, 71,114,234,145, 25,126, 83,167,252,194, 32,232, 28,140,162,193, 61, 55,163,155,181,178, +234, 17,169, 90, 75,156,167, 25,136,144, 25, 24, 71, 71,215,181, 52, 62,112,185,235,249,232,147,251, 92, 59,189,137,245,122,203, +244,238,136,106, 7, 98,158,176,198,227, 91, 67,118, 42,217,176, 38, 80,172,193,228, 9, 75, 59,115, 61, 44,117, 72, 84,239,136, + 21, 54,193,208, 15, 5,107, 35,206,174, 64, 70, 24, 43, 9,160,232,228,175,241, 66, 9, 80, 14, 3,193, 4, 74,244,184, 54,210, +174,244, 79, 54, 38, 33, 88,237, 57,247,131,208, 82,241,141,103,178, 7,150, 29,152,148, 40,209, 16,173,197,120, 21,237,228, 88, +168,255, 15, 95,111,246, 99, 87,150,157,249,253,214,218,123,159,115,238, 16, 17,140, 32, 51, 73, 38,153, 67,101,149,170, 84,115, +201, 37, 27, 18, 90,106,117, 11, 6, 26,240,147, 95,140,126,233,127,202,143, 54, 96,192,232, 23,191, 88,134,219, 13,195,237,182, + 44, 72,109, 89,182,212,173, 42,149,106, 72,101,229,156, 36,147, 12, 50, 24,211, 29,206,176, 39, 63,172, 19,204,148, 0,247, 27, + 25, 36,131,113,239, 61,231,236, 53,124,223,239, 19, 79, 74,149,184,139, 54,149, 72,118,217, 19,133,131,240, 37, 59,189,164, 74, +235,148,117, 23,104, 3,236,199, 5,254,104, 9,235, 0, 19,188,232,119,164,139, 51,210, 84,209,133,178,186,117,135,253,241, 17, +155,125, 70, 38,199, 11, 9,124, 17,177, 0,147,151,123,198,126, 65,219, 52,108,198,129,113,191, 35, 31,118,100,148, 93,204,172, +214, 13,139,131, 6, 28,196,109, 34,237,182,140,113,196, 59,135,247,198,213,152, 99,184,204, 55,207,151,137,108, 58, 11,229,248, +143,128,100,229,171, 81,177, 53, 91, 19, 42,133, 59,235, 37,203,175,140,214,215,221,151, 42,252, 2, 28,172,228,213,247,206,192, +212,152, 23,252,102,192,220, 23,184, 76,208,102,155, 8, 76, 3, 92,156,245,236,243, 64, 85,111,236,253, 98, 52, 71,173,133,236, +161, 40, 70, 10,213,204,216,159,163,123,179,228,225, 64, 39,107, 36, 93,137, 56,239, 72, 98,241,227, 58,245, 12,213, 32, 69,181, + 38,139, 33,151, 6, 77, 38, 12, 78,195, 22,157,181, 87, 74,162,117, 29,149,137, 84,123,106,113,160,153,224, 60,239,190,243, 26, +175,127,103,197,211,243,219,180, 23, 29,154, 34, 94,171,237,147,115, 49,111, 40,115, 74,154, 58,179,158,152, 50,205,112,176, 55, +239,228,152,204,102,150,170,237,158,188, 51,225,145, 24,134,157, 60,171,218,107, 14,132,118, 65,147,246, 38,164,210, 74, 46,206, + 64, 54, 20, 26, 47,184, 57,163,221, 7, 43, 18, 10,118,104,203, 92,145,219,120,220,161,126, 30,101, 87,219,185, 57,175,148, 20, +137,179,239,253,102, 2,224,157,204,234,122,235,254, 27, 60,144, 72, 84,200, 74,118, 22,187, 26,102,193, 84,117, 66, 35,206, 86, + 2, 10, 99,177,162, 69,156,163,162,120,141,120, 49,141, 65,240,144,139,237,101, 27,231, 77,241, 62, 36, 92,107,235, 8, 37, 80, + 92,124,101,123,115,170, 72, 19, 40, 14,210, 56,153,136, 37, 64,171, 74,163,222, 84,186,185,216,191, 47, 66,174,246,128,238,113, + 44,219,142,245,194,177, 42, 14,110,217, 5,185,221, 90, 20,231, 56, 86,190,120,113,197,182, 31,168,117,196,169, 21, 61,175,162, +239, 68, 56, 60,186,197,235,175,221, 99,181, 92, 51,244,137,126, 63, 18,215, 19, 79, 47, 30,113,231,248,136,215, 31,188,205, 98, +153,121,255,151,127,197,175,127,245, 75, 62,127,250, 20,117, 86,188, 8,197,184, 2,213,168,117, 82,138, 37, 67,137,152,126, 64, + 5, 63, 95, 55, 34, 5, 55, 19,161,106,206,164,172,248,228,240,135, 7,252,222,239,252, 1,107,223,178,115, 3,186, 86,114,239, + 17,215, 82,138,210, 28, 89, 92,237,254,202,118,164, 37, 77,228, 4,131, 14, 38, 62,164,210,116, 13, 33, 4, 66, 14,180, 30, 14, + 78, 60, 7,238,144,117,179, 70, 95,119, 52,173, 99,220, 23,174,166, 61,251,235,115, 54,219,137,183,111, 47,217, 95, 63,225,229, +211,103,168,122,170,247, 76,211,254,213, 77,155,171,145, 0,107, 45,132,102,129,111,221,172, 19, 49,213,178,122,207,203,235,103, + 60,124,240,144, 91,135,183,249,197,207,255, 3,206, 21, 3, 66,184,150,203, 93,207,179, 23, 79, 56, 58,185,195,213,126,195,211, +103,143,161, 84,170, 4, 90,117,164, 34,236,243, 96,107,153, 10,164,194, 56, 68,166, 56,241,233,240, 41,111, 60,124,157,251,247, +222, 32,151,194,180, 27, 73, 34,116, 97, 69,210,129,208, 65, 63, 86,106,205,228,152,192, 41,146, 38, 76,215, 87, 77, 52, 90,157, +125, 30,179,232,202, 8,117,194, 40, 66,174, 19,139,157,103,168,106, 36,186,154, 89, 30, 29,114,116,120,204,233,139, 51,110,127, +253, 62, 47, 55,129,167,167,207, 41,181,240,236,179,107, 78,238,189,201,250,224,136,139,243, 83, 36, 55,116,115, 12, 40, 77,224, +131,247, 31,241,254,251, 31,242,163,255,236,183,248,225,143,127,139,111,125,243, 1,255,227,255,252,191,241,191,252,171, 63,165, + 31, 71,222,255,236, 11,150,139, 35,222,124,227, 30, 87,151, 35, 67,206, 12,187, 11,116,120,206,119,191,253, 13,158,124,246,107, +174,174, 54,116, 4,242, 20, 9, 98,154, 24,180,190,242,240,215, 92,190,212,244,136, 90,224,135, 84,242, 52, 18,167,105,214,219, +204, 76, 9, 28,170,217,182, 17, 21,188,187, 57, 24,172,112, 19,169,136,218,115, 64,146, 82,196,248,226, 82,153,125,244, 80,147, +224, 29,236,118, 35,185,110,185,119,239,117,146, 86, 50, 91,179,139,166,134, 28, 50,213,183, 4, 2, 46,155, 96, 74, 91,193,213, +209,214, 70,227,132, 72,160,107, 29,217,108, 50,108,250, 17,231,139, 81, 96,221, 14,151, 6,208, 9, 93,118, 72,156, 44,205,177, + 40,211, 62,226,180,226,138, 32,101, 98,234, 43,226, 12,211,234,150,149, 26,231,128,161,156,169,185, 97, 40, 9,183, 44,228,216, +210, 72, 99, 57,218,165, 82,119,133, 26,148,182,107,112, 37, 51, 93, 92, 48,245, 6,125, 98,154, 31, 5, 99, 69, 87, 95, 30,137, +165, 86,156, 24,170,116, 55, 20,198,126, 96,117,176,194, 13, 70,190, 78,177,103,170,149, 28, 11,237,210,113,251,100, 73, 88, 11, +135, 75,207,216,122,190,126,104, 77,243,163,234, 56,243,135, 12,107,184,206,208,239,141,117, 50,101,235,144,199,113, 79, 68,209, + 28,168, 21,182,207, 46,137,211, 96, 20,207, 6,246,187, 29, 47,174, 70,212, 53, 12,113,130,206,193,194,191, 26,143,231, 27, 95, +245,108,105,107,255, 35,217,234,187, 49, 49,236, 7, 10, 19, 94,133,182,253,251,208, 87,253, 7,191,254,234, 20, 32,204,207,116, +153,253,244, 8, 44, 91,184,213,134, 87, 35,248,125,128,151, 39,135,240,129, 18, 68,184, 30, 54,116, 41, 34,105,207,232, 42,208, +146,182, 61, 73, 18,197, 21,220,222, 92, 43, 97,117, 11,145,145,202, 14,145, 68,236,133,237,184,131,225,140, 28, 39, 3, 13, 21, +135,211, 53,232,104,133,116, 30,209,154, 9,218, 18,107, 32,165, 17, 69, 73, 8,169,246,132,162, 68, 73, 64, 34, 87,143, 47,153, + 59,171, 3, 90, 32,244, 17,250,202, 88, 21, 95,196,212,227,222,155,122,182,224,237,225, 86,211,172,120,247, 56, 95,240,174,218, +222, 68,101,206, 53,159, 44, 61, 77, 60,181,220,220, 60,118, 16,168, 81, 99, 16, 34, 47, 30,125, 65,213,106,232, 73,249, 74,149, +229,205, 30,102,149,183, 29,104, 22,228, 98,192, 20, 81,143, 56,243, 76,103, 49, 21,117,112, 66, 77, 51,162, 53,207, 75,155,153, + 84, 87, 36, 19, 75,161,157, 11,128,169, 36, 2, 58, 71,190, 90, 72,139,175,142, 92, 48, 59,136,128,102, 35,219, 85,181,241, 93, + 85,193, 37,157,199, 59,201,246,247,115,132, 43,181, 32,173, 39, 36, 19, 0,170, 42,171, 32,228, 34, 20,230,174,214, 65, 28, 65, +171, 37,222, 81, 10,105,204,102, 67,114, 14,173,113, 94, 73, 8, 77,211, 18,107,154,145, 78,102,127,203,238, 38,220,166,204,187, +102, 71,156,234, 92,197, 65,183,236, 32, 10,251,161,103, 24,109,199,234,213,145,138, 49,235, 13,220, 97,135,100,183, 88, 48,238, +206,249,248,195,191,225,254,253,175,147,199,204,243, 47, 78,233, 14,148,187,247,191, 73,186,126,201,159,252,233,255,197,207, 63, +124,143,113,200,228,106,246, 46,153,163, 97,197, 9,174,204,193, 53,197,210,170, 42, 86,208, 84, 49,242, 20,243,103, 22, 93,153, +201,126, 6, 40, 72,185,242,214, 91,191, 65, 88, 52,156, 62,191, 32, 44, 26, 98, 63,226,107,135, 54, 48,140,145, 38, 22,174,174, + 71,210,104,249,224,197, 53,144, 38,106,246, 20,111,240,139, 69,109, 17, 17, 58,175, 44,188, 99,216, 65, 88, 69, 88, 8,187,109, +207, 69, 63, 34, 69,105, 91, 71,115,112,135, 7,111,220,226, 31,253,206,111,240,201,175,127, 9,210,144,189,162,190,208,213,134, + 44,142,137, 74,238,123,198,113,164,233, 26,139,188, 44,137,156, 11, 65, 90,211, 66, 36,199,246,242,154,103, 95,124,198,119,191, +255, 99,126,254,183,191,224,207,254,207,255,149,197,122, 73,208, 5, 85,132, 7,111,190,203,189,251,111,240,222,207,127,194,229, +139, 83, 92, 19,112, 10, 67, 63, 80,141, 48,140,160, 76, 41,177, 79,145,162,214, 85,199, 92,248,228,211, 71, 28, 31, 31, 19, 17, +164, 22, 59,148,102,173, 9, 89, 89,132,194, 55,126,227, 29,206,175,182, 44,125,192, 21,161, 52,142, 71, 79,158,176,219,238, 16, +231,205,245, 32, 55, 76, 4,101,210, 66,158,172,240,220,105, 65,163,208, 74, 32, 74, 66,125,224,222,253, 55,249,228,209,175, 89, +181, 31,177,219,140, 60,126,178,161,143, 31,115,121,177,231,181,211, 83,142,143,143, 57,123, 89, 40, 83, 68,186, 5,177, 38, 68, +225,241,211, 43,254,213,191,249, 63,248,175,254,203,127,198,249,203, 45,255,245,127,243, 63,240,211, 95,124,196,110,211,227,170, +231,224,232,144,227,213, 49,187, 77,230,175,127,242,136,197,226, 47,249,226,209, 99,190,247,131,239,240,253,215, 30,114,117,241, +125,254,237,255,254,127,147, 98, 37,231, 4,193, 25, 43,162, 78, 72,182,144, 10,211,225, 22,212, 89,242, 98, 45,133, 52, 12,228, +156,240, 85, 13,175, 91,197, 92, 43,154,173, 48,159,175,199,224,220, 92,208,207,189, 71,101, 22,248,154,104,215,116, 58,214, 24, +148, 42,244, 83,164, 9, 1,147,202, 36,246,187, 11, 46,175, 60,183,110,223,166,138, 77,232, 74,205,180,206, 19, 83, 37, 53,153, + 86, 42, 83,206,140,219,194, 66, 27,138,236, 17,239,105,218, 3, 92, 26,233,199, 72, 77, 5, 23, 20,218,128,196,134,117,169,108, +176, 9,160, 27, 43, 94, 43, 62, 44, 24,174, 35, 53, 39,194,177, 35,237,204,235,172,186,194,171, 41,229,157, 0, 83,198,217,248, + 18,105,148, 80, 65, 6, 33, 39,199, 94, 71,104, 35,153,150,181, 46, 24,114,198, 73, 97,191,175,164,167, 27,166, 56,178,110, 22, + 60, 31, 2,161, 49,113,223,245,201,146, 5, 75,162, 42,195,249, 30,169, 35,190, 58, 26,169, 76, 53,227,196,152, 9,105,152,144, +212,227,213,132,121,190, 10, 33,216,136,122, 63,193,162,124, 25,192,214, 22, 35, 56, 30,118,176, 1,210,232, 57, 88,174,240, 71, + 75,166,177, 66, 73,116,119, 23, 52,141,253,131,243, 77,103,200,106, 87,104,213, 17,155, 53,159,187, 57,240,231, 42,178,219,140, + 28, 30,172,112, 8,187,253, 68, 93, 5, 14,150,142, 22,136,251,204,113,107, 60, 2, 17,131, 24,217, 36,215,238,129,105, 28, 41, +105,100, 28, 35, 7,141,167,105,220,255,111, 46,122,153,187,243,240, 15, 16,176, 95,253,125,154, 39, 8,242, 21, 14,124, 29, 19, +227, 16,233,247, 3,149,145, 73, 33, 54,138,139,137,234,123,100,154, 40,125, 75,146,129,214, 5, 19,106,199, 61,212, 1,180, 34, +177, 80, 73, 76,185,101, 74,209, 52, 79, 69,112,161,162, 50,146,103,138,165,196, 74, 85,103,105,118,217, 65,241, 84, 77,212,226, + 13, 1,238, 21, 98, 32,168, 37,222, 45, 58, 97, 29,132, 1, 72,113, 32, 75, 38, 8,120,170,249,203,185,177,250, 84,243,212, 82, + 29,206, 87,106,174,166, 40,143,198,236,206, 55, 8,189, 36,179, 72,125,142,239,155,163,213, 67, 8,212, 92,172, 99,244,182, 35, + 23,153,243,198,113,160,201, 70,246,217, 89,125, 36, 38, 99,213, 92,113,248, 89,145, 81,173,170, 46,166,104,167, 8, 89, 1,157, + 87, 2, 21,163,199, 57,179,171,196,106,140,250, 82, 19, 17,103, 64,135,170,134,244, 3,130, 26,235,125,114,149,160,246,134,166, + 98, 99, 61, 45,118,211,122, 28,161,129,224,149, 88, 12,119,169,181,154, 98,218, 57,180,152,241,211,205, 73, 58,137, 68, 42, 51, +192, 35,151, 89, 83,144, 76,132, 17, 44,140, 34,107,197, 21,251,243, 27,223,189,159, 67, 93,118,195,136,243,106,130,185,105,206, +146, 22, 83,124,150, 70,137, 99,161,109, 59,104, 10,169,239, 13,250,147,236, 51, 25,134,158,148, 71, 27, 89,206, 35,241, 92,103, + 57,171,152,149,175,107, 27,218,133,231,229,243,207,249,252,195,247, 17,231, 56, 56, 60,100,181, 62,228,242,197, 11,190,120,244, + 49,103, 23, 87,196,100,193, 48, 94,237, 82, 54,208,198,108, 99, 17,219, 93, 21,245,148, 57, 51,190, 9, 45,119, 95, 59,161, 93, + 6,203,166,159, 42, 69, 76,237,190,221,141,196,156, 88, 29, 30,112,239,248, 30, 47,175,246,140,174,112, 84, 19, 50, 20,122,245, + 52,101, 98,218,103,188,107,184,115,247, 1, 31,255,221,223,176, 62,186, 69, 61, 90,179,189,188,196, 57,207,225,193, 9, 39,247, + 79, 72,174,240,242,249, 19,182,195,134,186,110, 89,234, 33, 90, 2, 87,187, 61,203,195, 91,116,154, 24,251, 17,159, 38, 70, 15, + 15,223,188, 77,191,189,224,209,227,151,132,238, 0, 39,167,104,130, 50,227, 80,115, 52, 39,134,118, 13,161, 93,128, 84,114, 54, +155,163,107,221,172,138,207,224,132, 79, 63,127,204, 23,103,167, 48, 37,210, 48,177,190,243, 38,183,110,157, 64,104,153,210,200, +255,251, 23,255,142, 28, 51, 77,232, 40, 57, 83,181, 24,162,182,223, 19,179,129,114,210,124,168, 84,148,170, 6,107,186,190,220, +178,185,222,114,120,112,196, 24, 42, 82,148, 41, 70,100, 37, 4, 7,107,127,192, 55,126,227,219, 16, 71, 66,178,117,149, 4,199, +110,219,179,187,218, 32,110,142, 64,158, 29, 34, 57,219, 97,144,211,192,208, 23,203, 30,200,150,174, 54,104,182,117,135,111,105, + 23, 11, 78, 47, 47,241,201, 49,228, 96,157,230, 26,158, 63,125,196,234,240,144,166, 13,148, 26, 25,163, 50,196,209,162, 36,181, +225,227, 15, 46,249,111,255,187, 63,226,211, 79,207,216,150,202, 65,115,200,173,213,138,234,148,197,162, 33, 28,174,233, 55, 19, + 87,189,240,233,135,215,220, 58, 58,226, 15,127,255,135,156,159,245,252,238, 15,190,207,175,254,246, 67, 62,127,246,212, 18,204, + 74, 69, 66, 67,238, 51, 34,145, 86,149, 8, 76, 53,226,146,117,158,130, 93,103, 69, 60, 56, 67,154, 72, 6,167,106,107, 10,241, +166, 1,154, 57, 18,206,219,164,162,148, 74, 8,134,179,166,202,171, 53,146, 83, 3, 95, 49,147, 50,243, 56,160,221,138, 82, 18, +101,152, 56, 63,115,172,143,110,209,122, 99,103, 72,235,169,162, 52, 2,105, 28,152, 26,187,255,125, 54,173, 17,190,179,232,231, +146, 40,121,154, 95,211,124, 10,228,142,152,122, 44,223,210,132,168, 26,102, 4,109, 63,145, 67, 65,157, 39,245,149, 82, 6,252, + 34, 64, 25,169,222, 19,180,176,159, 18, 53, 7, 80,199,202, 23,162,102,166, 88,233,154,195,249,190,172, 22, 89, 92, 18,181,141, + 48, 9,135,221,130,219,183,239, 35,171,187, 92, 95, 94, 34,235,142,225, 78, 71, 63, 86,210,147,137, 39, 23, 27,158,238, 12,102, + 52,109,174,241,237,130,221,246,154, 52,244, 12,211, 57,157,142, 56,237,216,239,123,166,161,103,146,121,175,171, 38, 0,102, 86, +186, 31,126, 69, 61, 22, 13, 73, 63,191, 78,251,130, 48, 18,164, 49, 69,191, 10, 39, 65, 8, 24, 28, 70, 99,164,143, 19,219,148, + 89,174, 58,110,221, 94,225,214,106, 33, 36,105, 65, 8,208,175, 28, 53,131,147,150,215, 14,141, 12, 58, 2,251,198, 60,246,141, + 13, 10,185,188, 24,105, 93, 98,209, 5,114, 76,188,248,226, 37, 18, 11, 82,173,169, 27,250,129,197,218,226,107,166, 89,200,236, +189,190, 58,165,165,252,253,246, 93,255,193,120,127,156, 15,242,175, 30,250,113, 63,225, 90, 11, 77,242,172,241, 97,100,220,239, +153,118,150,172,201, 52, 33,181, 69,189, 50, 14,153, 80,149,212,122,198, 62,210, 0,213,123,188,207,116,139, 5,211,126,133,166, + 75,138, 55,171,120, 78,189,137,211,205,179,132,184,132, 74,139,142, 61, 34,129, 41,123, 60,145,166, 86, 6, 50,226,171,141, 59, + 72, 20,133,143, 31,159, 18,203, 51,174, 95,190,143,108, 35, 67, 4, 31,173,173,128, 98,225, 41,106,139,108, 19, 95,161,184, 27, +133,106, 1,211,130, 90,171,166,106, 27,240, 82,110,100,117, 70, 96,171,217, 70, 84,170, 16, 39,195,124,218,133,111, 93, 92, 41, +198, 62,119, 90, 64,189, 9,125,162, 69,171, 86,111,130,183, 89, 70, 55,231, 56, 43, 97,190,200,114,130,132,220,228,192,160,206, +104, 60,168,169,226,187,106,130, 56,227, 69,207,156,115, 53,101, 57,197, 65,181,200,205,224,173,194, 23, 39,175,164,144,149, 76, +140, 74,158,233,117,181, 64,118,230, 93, 53, 38, 61,212,166,224,146, 80,197,207,239,147, 21, 44, 81,237, 80, 20,159,161,192, 52, +152, 21,172, 83,103,129,246,129, 87, 52,189,154, 43,190, 83, 24,147, 17,210,170, 34, 76, 56,231,172, 91, 44, 21,179,146,218, 78, +213,226,116, 29,174, 6, 38, 73, 56,173,102, 37, 43,133,206, 55, 22,154,131,220,212, 70,228,148,172,171,111, 58,163, 95, 21,153, +193, 64,145, 54, 6,142,221, 17,103, 47,191,224,229,213, 37, 5,104,187,134, 92,235,172,202,181, 7,144,159, 85,244, 55, 49,172, +162, 50, 67, 52, 18, 93, 27,248,222,119,191,203,242, 48,240,226,197, 5,169, 70,222,122,248,144,213, 98,201,199,159,124,198, 79, +126,242,115,110,223,186,199,195,119,191,195,233, 23, 31,153,250,184,117,196, 41,225,194, 64,223, 79,140,185,242,237,111,252,136, +147, 3,248, 55,255,250,231,108,119, 61,222, 59,138, 42, 33,116, 28,174,143,121,227,193,155,118, 99, 78, 3, 85, 2, 11,109, 56, +186,187,230,162,223, 50,140, 61, 77, 92,210, 54, 43,154,133, 67,170,227,181,213,109, 94,191,123,196,211,103, 31,242,233,147, 79, + 89,250,150,160,193, 92, 5, 73, 73,197,148,218,200,172,145, 16,163,251, 53,174, 33, 89,196, 31, 93,219, 26,212,100, 24,232, 25, +209,177, 16, 84, 80,239,121,118,246,132,179, 23, 79, 12,169, 76,182,204,109,153, 87, 69,206,155, 7, 23,229,106,219,191,138, 40, +174, 89,236,189,195,214, 26,234,133,218, 56,134,169, 18,114, 34,180,129, 82, 10,157,182, 20, 96, 17,132, 90, 70,115,152,228,194, + 46, 13,172,154, 5,181,100,186,198, 96, 62,165, 84, 52,207,164,230, 90, 16, 18,162,118,191,185,160,182, 2,144,194,100, 40, 7, +134,105,195,167, 31,255, 10,113, 13, 18, 28, 77,211, 82, 82, 36,107,166,140,153,169, 76, 60, 59,125,108, 19,163,154,145,170,180, +161, 97,213, 52,108,211, 72, 14, 13,191,254,248, 12,239,148,147,163, 3,148,198,160, 48, 65,104,154, 5, 71,139, 35, 14,186,192, +229,117,143,200, 45, 67,140,166, 66,240,158,223,249, 79,190,205,251,159,127,198,127,255, 47,255, 39,218,101, 64,130,112,188,128, +218,172,120,118, 62,226, 60, 44,157, 67, 39,177,157,100,172,104,176,150, 80,147,209,214, 74, 52,117,176,101, 74,152, 42,184, 74, + 69,114,193,121, 37, 71, 8,162, 84, 41,228, 34, 52,206, 28, 56,206,153,176,208,214, 46,142,224,132,152, 50, 12,133, 92,118,168, + 42,190,105,137,169,103,220, 95,210, 29, 31,130, 19, 92,177, 7,116, 13, 43,202,126,164, 68,193,181,115, 1,213, 10,190, 4,219, +157, 78,201, 14,247,166,218, 36,207, 41, 37, 77,212, 16,232,227,104,207, 49,183,132, 49, 50,213, 68,179,114, 44,180, 35,230,129, +154, 58, 52, 12, 52, 85, 72, 9,180,107,140, 57, 48,237, 8, 11, 37,120,199,229,126,164, 45,106,121, 19,139, 66,147, 29,121, 47, +164,169, 71, 23,129, 90,150,184,234, 9,157, 71,124, 67,112,208,133,150,147,215, 91,222, 56,132,235, 34,124,122,181,228,160, 93, +144,151, 11,250,253, 72,215,182,188,246,230,138, 77,133,103,143, 19, 92,192,101, 81,242, 62,209, 15, 59,118, 49,145,182,213,138, + 45,205, 60,249,252, 57,242,212, 38, 55, 26, 90, 14,244,150, 49, 57,174, 19,203, 82,112,165,177, 2,170, 31,217,135, 61,185, 47, + 76,125, 65,107,195,225,108,112,122, 89, 97,191,143,140, 90, 40,162,180,206,209,181,142,251, 88,151,255,196, 9,185,181,213,174, + 83,179,198,221, 88,225, 10, 70,154,185, 51,119,207, 17,136, 39, 11, 86,150,105, 67, 95, 33,189,184,164, 31, 39, 38, 28,190,194, +181, 40,147, 49,207,216,109, 10,141, 66,123, 96,167,243, 48, 84,220, 16, 57, 57,110,152,135,138, 92, 92, 79, 44, 91,111,147,128, + 10,113,200, 44,194, 44,195,191,241,174, 79, 19,187,190, 82,138, 67,100,193,245,254,194,172,207,181,103,200, 35,101, 29,168, 87, + 61,178,203, 22,254,162,209, 58,235,153,103,146, 83, 71, 91, 38,130, 52,184, 42, 36,151,200,170,132,125, 38,137, 93, 63, 37, 26, +138, 88, 98, 33,106,143, 4, 99,168,120,103,244, 77,153, 85,248,140, 22,253,171,192,209, 90,144, 7, 15,184,112, 39,196,190, 16, +128, 73, 3,182, 81,152,253,228, 41,103,163,190,105,182,176,140, 60,119,236, 78,240, 26,140, 28, 87, 11,226,189,249,205,139,165, + 99,169, 24,109, 12, 81, 82,169,120, 53, 76,100, 77,144,179,137, 89,114, 41,184, 57, 41,230, 70,213,110,157, 82, 65, 84,105, 52, +224,212,120,243,126,190,121,111, 64, 49, 57,155,226, 79,252, 77, 80,139, 9,186,210,100,147,128, 90,132, 18, 42,204, 42,244, 66, +162,173, 74,214,106,234,118,102,229, 62,198,249,141, 41,145, 68,104, 48, 85,174, 40, 20, 2, 34, 38,190,105, 80,138, 51, 53,121, +245,246,128,245, 34,102, 27, 83,251, 63,114, 18,188, 7,157,249,181, 94, 11, 99, 44,166,194, 68, 17,241,150, 79,238,178, 65, 77, +230,180,185,154, 11,184,140,134, 96, 92,123, 50, 78, 28, 22, 92,152,172,234, 20,135,107,109,204, 58, 77, 19, 73, 42,161, 88,129, + 52,165,145,126,187,183,164,185,154,172,128, 18, 1,175,166,172,205,137,197,114,137,122,229,244,233, 11,174,174,182,104, 48, 81, + 71, 65, 89, 31, 30,114,125, 49,130, 42,222, 7, 84,234,252, 57,206,242,213, 98, 86, 9,197,248,141,130,173, 77,156, 84, 68,220, +156, 11,173,124,240,203, 15,249,244,209, 35,164, 13, 52,178,226,219,223,186,141,111, 28,169, 36,110,191,246, 22, 97,209, 64, 73, +200, 8,146,123,104, 50, 99, 4,101,193,209,235,183,120,251,205,187,124,242,179, 63,229,122,179, 65,213, 84,165, 72,101,156, 44, + 41,238,233,163, 15,112,218,160, 77,224,157,119,127, 68,247,224, 77, 54,253,134,125,205,172, 15,238, 16,135,132,166, 9, 45,133, +195,251,119,249,241,143,190, 71,218, 62,229,227,191,253,132,247,222,123,194, 15,191,247, 77,139,202, 77,133, 80,212,162, 35,243, +140,120, 76,246, 89,105,105,141, 71, 79,139, 58,187, 78, 26,223,144,107,182,221,110,169,228,236,232,211,136,244, 61,237,106,197, +218,169,133,170,164,200,197,102,139,115, 29,183,110,223, 97,216, 93,177,219,237,136, 83,111, 33, 17, 83,180,194,115,214,162, 20, +108,189, 53,108,119, 92, 93, 92,112,120,120,136,196,128, 91, 20,106,137,232, 84,137,147, 55, 11, 75,153,152,178,221, 68,117,198, +170,130,146,197, 32, 40, 70,175,242,198,197,207,133, 68, 97, 28, 39, 54,167,167,180,175, 63,164,201, 45, 81, 18,117,156, 56, 63, +123,201, 46, 79, 28, 54, 97,198, 32, 23,114,142, 76,253, 68, 77, 25,231, 26, 46, 95,156,178, 92, 46, 57, 56, 56, 6,239, 13,164, +113, 61,130,115,132, 91,129,110,185,194,137, 41,171, 65,209,208, 18,164,218,251, 52, 13,136,243,196,254,130,135,247,239,178,217, + 9,239,253,234, 11, 46,174, 94,240,238, 91,239,242,251,255,233,111,243,254,167, 47, 73, 87, 47,121,251,173, 35,218,166,229,206, +241, 9,255,242,143,254,148, 41, 15, 6, 1, 82,197,181,133, 60,102, 92, 85,210,100,163,243, 90,231, 74,149,138, 84,251, 51, 40, +120,148, 76,157,237,183,222,214, 5, 65, 81,241,164,132, 89,197,180,144,179,216,181,237, 32,197, 57, 76, 88, 2, 57, 86, 66,107, +140,128,156,132,151, 47,206, 56, 62,184,101, 41, 88,193,147, 53,146,226,150, 42, 66, 35, 66,138,134,147,246,177, 50,197, 13,206, + 5, 82, 30,144,198, 64, 64,185, 84, 36,155,181,215, 75,161,122, 79, 78, 35, 69, 38,156, 58,218,218,224,134, 64, 8, 48,186,150, +218, 42,194,138,156, 19, 77, 59, 7, 39, 57,229,112,217, 48,214, 76,140, 17,201,182, 38,204,147, 67,106,102,146, 1, 77,126, 70, + 27,119, 12,123, 37,231,158, 69, 56, 0,181, 53, 97, 43,153,219,173,185,208,163, 81, 62,168,222,168,140, 82, 42, 93, 19,120,171, + 53,120,204,245,177, 35,200, 49,254,214,138, 58,129, 62, 45,188,124,122,198,203,205, 72,179, 44,220, 10, 71, 44, 78, 94,103, 75, + 96,243,242,140,126, 26, 56,125,108,161, 89,227,230,130,182, 21,218,139,181,161,141,183,231,172,214,194,116,157, 24, 99,196,215, +134,243,197,146, 69,231,208, 88,200,211, 21,165, 36,134,169,144,178,217,140,183,179,245, 45,204,158,115,153, 69,114, 94,255,254, +232, 60,127,165,179,150,153,148,119,248,149,196,185, 84,139,173,205, 70,155, 2, 60, 56, 57,192, 91,142, 16,254,216,177,158, 19, +232,112,112,237,133,109,211,208,219, 35,156,161,192,117, 53, 93,213, 84,205, 35,127,181, 43, 92,151, 17,127,184,198,101,184,120, +185,103,127,253, 4,134, 61,181,191,102,146, 72, 30, 91, 98,218, 89,195,236, 3,117,155, 72,100, 86,193, 38,102, 83,154,168, 53, + 17,242,146, 84, 54,212,120, 65, 12,194, 16,148, 49, 93,195,228,168, 30,106, 91, 41, 67,197,181,129, 82, 11,105,220,163, 69,240, + 62,144,167, 61,133,150,152, 34,165, 90,163, 23, 52,160, 82,136,217, 50, 51,171, 56,252,176,180, 6, 54,192,180, 76,172,250, 9, +239,213, 83,106,157, 21,229, 70, 98,147,202, 92, 45,103, 98,169, 22,216,162,179, 93, 65,205, 34,164,100,178,204, 99,141,146, 45, + 62,179,218, 76, 31, 21, 82,174,168,138,217, 75,164,190, 82,150,163, 2,217, 98, 74, 45,220,229,102, 53, 94,113,115,246,122,158, +253,237,102,123,179, 15,160, 5,166,100,135,139,177,227,132, 52,103, 70,136,218, 24,147,234, 40,213, 10,143,209, 87, 52,169,205, +137,196, 32,254, 2, 56, 31,230, 61,124,161,144,112,213, 2, 92,114,158, 88,180,158, 44, 80,178,208,120, 37,213, 27, 7,133, 89, + 99, 74, 18, 70, 41, 6, 6, 81,243,196, 87, 17,114, 77,164, 8, 57,123,212, 85, 92, 51,171, 77,243, 60,248,147,138,195,190,103, + 73,102,225,207,106,107, 13, 93,120,123, 80, 22, 32,154,130, 61,168,241,204,227,156,164, 36,177, 16,125,162, 38, 75,189,155,114, +165, 86,193, 59,207, 84,147, 9, 75,146, 85,137, 69,141,135,255,252,197, 25,215, 87, 87,118,112,123, 71,144,128,136,210,199,129, +235,205,198,132, 67, 40,164,132, 96, 55, 86, 74,204, 81,183,206,252,144,197,126, 30,106,181,248,214,156,168, 89,248,232,211,143, +249,236,227,207,168,185,226, 50,156,159,191,160,250, 55, 72, 83, 79, 77,240,236,241,199, 44,219, 63,224,251, 63,254, 49,159,125, +254,132,139,151, 79, 72,125,133,152,232,142, 29,239,126,237, 45,150, 26,249,171,159,254,148,152,139, 29,254,226,112,206,108,149, + 69, 42, 85, 61, 5, 97,209,118,180, 11,101,136,231, 80,146,105,179,213, 33, 8,251,180, 37, 69,207,189,195,187, 28, 30, 30,241, +171, 15,127,201, 47,255,238, 3, 46, 55, 23,108,119,251,217,250,145, 24, 74,102,204,217, 14, 79,113,120,103, 35,217,126, 26,152, + 98, 34, 52, 45,109, 23,240, 65, 9, 89,144, 27,209,103, 46,196, 52,226,150, 1, 34, 76,215, 3, 27, 95,240,174,101,202,153, 24, + 51,168, 50, 14, 61,253,176, 99, 26,173, 16, 24,167, 72, 41, 51, 97, 81,103,241,167, 26, 77, 45,215,194,233,217,115,222,122,248, +128,198,141,212,164,140, 41,209,202, 28, 83, 92, 5,167, 13,203,160, 51,125, 43,163,203, 22, 31, 58,144, 68,241,205,204,111,152, +193, 21, 88,194, 89, 63, 70, 62,248,236, 51,170,243, 28, 30, 62,176,136,223,201,177, 90, 30, 17,218, 96, 26,150, 84,153,234,192, +148, 35,251, 52,226,130, 7,104, 24, 82, 0, 0, 32, 0, 73, 68, 65, 84,199, 21, 33,199, 9,117,158, 41,103,164,100, 98,138, 80, + 10,235,245, 9,174,182,212, 2,174,109, 76,132,164, 54,149, 24, 39,179,181, 93,111, 55,172,110, 57,188,203,124,254,197, 19,182, + 19,124, 99,123,159,229,186,225, 79,254,236,223,178, 60, 56,230,187,223,253, 14,231, 79, 30,243, 79,255,233, 15,121,126,118,206, +122,125,194,237,227,191,229,201,227, 71, 36, 55, 39,129,168,167,250,201, 14, 95, 17,139,123,118,222,146,190,100,122,245, 44,176, +191, 91,161,120, 19,204,137, 32,120,188, 51,209,216, 56, 89,116, 42, 85, 64,131,101, 45,196,136,136,105,119, 4, 11,175, 26, 75, + 34, 71,197,139,103, 63, 76, 92, 94,109, 56,188,117,200,152,139,249,221, 67,194, 47, 91,139, 91, 78, 74,145, 68, 77, 3,197, 59, +202,140,123,106, 93,139,244,142, 84, 19,206,101, 35, 72, 98,164, 60, 81,165,230, 68, 10,194,178, 13,196,156,185, 78,145,154,153, +225, 34,137,218,169,253,172,193,209,167, 61, 75, 15, 58, 8,251,216,207,244, 76,227,111,176, 16,242,101,158,225, 80,183,144, 52, +146,229,154, 66, 99, 73,152,155, 45,101, 44,208, 79,140,219, 53,155, 22,174, 7,240, 37,209, 6, 79,118, 51,149, 45, 8,215,179, +207,220, 77,133, 57, 41, 11,231, 32,199,104,238,167,153,202,215,180, 45,221,162,133,226, 40,139,142, 69, 23, 8,135, 75,250,100, +219,197,213,235, 45, 91,175,228,231, 17, 55,100,134,112, 0,107, 71, 30, 34,244,137,143, 6,101,186,174,212,205,158, 97,179, 99, + 24, 43, 62, 9,174,122, 54,207,247,164, 67,211, 2, 77,155,107, 22, 97,133,107, 3,113,194, 68,147,173,252,189,147,253, 70, 41, +159,110, 44,115, 55,251,239, 10,113, 44,196, 58,145, 75,100,221, 28,226,103, 94,174, 0,157,124,169,162,103,206, 72,111,154, 47, +179,210, 59, 15,225,150,127, 53, 25,192, 67, 61, 9,244, 4, 82,176,255,107,220, 59,134,113, 98, 75,162, 70,230,128,157, 13,117, + 26,240,174, 35,145, 73,195,128,120,216, 77,213, 26,161, 32,148,152, 16,137,100, 58,164, 38,163, 3,206, 90,145, 80, 60,117, 76, + 36,111,150, 64, 70, 59, 20, 60,144,107, 38,167, 72,160, 37, 75,176, 64, 23, 17,180, 22,180, 70, 82, 77,120,245, 80, 23,136, 8, +163,174, 72, 57, 19,195, 68, 70, 40,177,224,139, 84, 84, 43,181,122,156, 51, 91, 87,169, 17, 73, 54,238,242,150,210, 48,103,101, + 39,196, 43,226, 10,105,176, 19, 79,171, 69, 94,214,155, 0, 7,205,182,135,206, 2, 37, 65,219, 89,212,101,153, 19,177,196,153, +231,214,158,205,102, 19, 42,115,154,155, 20,164,204, 73,113,246,204, 2,205,120,173, 76,213,208,126,234, 28,121,102,192,215,146, +201,226,112, 5, 74,137, 51,208,195, 4, 95, 53, 23, 34,217,126,254, 56, 3,118,212,132, 48, 78, 21, 87, 44,104,165,170,155, 59, +244,185,171, 23, 3,243,249,121,198,239,138,169,104, 83, 49,144,164,162, 76, 36,116,126,111,166,152,240, 34, 68, 18,185, 10, 29, +134,174, 21,145, 87, 97, 13,121, 78,186,171, 65, 17, 47, 52,217, 19, 73,115,161, 80, 77, 57, 25, 45,192, 70,189, 99, 44, 22,150, +225,114, 52, 14, 64, 53,100,173,165,150, 53, 28, 31, 29, 18,227,165,117,206, 94, 45,109,236,166,187,174, 74,236,123,246,165,208, + 52,193,222,139, 98, 8,217, 90, 12,255, 58,140,102, 33, 50, 60,176, 55, 61, 66, 41, 56, 39,243,215,197, 38, 18, 53,218,216, 71, + 61, 65, 1,223,177, 27, 6,174, 63,253,212,172, 40,206,186,198,231, 47,158,115,246,236, 5,101, 40,136,120, 46, 46, 30,243,222, + 47,126,201,239,252,227,127,204,215,222,129,135,111,222, 99,218,108, 73, 35, 52,135, 29,223,120,231, 29,182,167,191,226,163,143, + 30, 81, 82, 54,109, 70, 73, 68,177,131, 48,207,196, 61,173,176, 88,220, 97,233,215, 76,155,200,234,240,136, 32, 19, 49,159, 19, +163,144,196, 88,231,203,118, 73,206, 91,222,127,239, 23,124,248,228, 41, 42, 5,113,149,160,194,249,190, 71,231,145,108, 21, 11, + 32,138, 53,207,233,103,194,225,209, 33,139,245,154,152, 71, 64, 73, 41,162, 1, 26, 28,165, 40,253, 52, 49,109,119,182,207, 76, +130,235, 51, 89,247,198,137, 78, 19,174, 31,216,237, 95, 82, 81,214,139, 53, 94, 34,187,105,178, 21, 43, 5,201,166,102, 86, 53, +158,182,212,202,213,229,134,205,245,134,229,221, 59, 54,197, 9, 1,151,173, 64,108,154, 66,173, 29, 83,158, 8, 20,106, 3, 50, +139, 88,237, 38, 51,244, 49, 8, 69, 21,153,169, 92, 34,149, 49,102,206, 79,159,243,218,237,215, 25,198,204, 80, 11,139,131, 67, + 86,221,138,188,223, 19,125,161, 31,123,250,253, 68, 22,165,235,132, 58, 51, 6,250,126,164,120,165, 85, 79, 35,158,234,109, 2, +185, 10,149,141, 47, 52,141, 71, 93, 71,209,132, 79,217, 52, 36, 81, 25,153, 56, 17, 71, 94, 44,249,233, 47,159, 83,130,160,225, +231,252, 23,127,240, 53, 62,255,252, 57, 79, 78, 63,224,135,191,253,187,188,253,224, 46,175,221,121,200, 55,223,121,151, 79,158, + 60, 65, 93,182, 34,167, 20, 11,140, 74,182,238,169,226,230,233,159,165, 59,230, 82,172, 16, 83, 33,170,233, 96,236,154, 81, 74, +245,136,171,102,149,203,153, 41,142, 38,214, 44, 6,240,200,181, 7, 21,188, 4,212, 91, 66,100, 42,137, 90,103,183, 8, 13,217, + 87,130,120,206, 46, 94,208,172, 15,173,171,243,230, 33, 78,113, 52,178,216, 28,207,236,202,154,156,247, 72,181, 34,167,150,108, +118,222, 98,215,111,170, 21, 63, 13,150,191,160, 74, 40,129, 84, 51,125,172,212,164,136, 47,180,210,146,202,100,226,215,186, 64, +181, 32,113, 66, 74,166,210, 18,131, 3, 47, 52,131,146,146,197, 64,167, 77, 36,165, 68, 19, 2, 67,186,100, 93, 21,239, 58,170, +107,112,221, 93,134,241,136,169, 31,216,143,103,196, 95, 79, 44, 22, 75, 43,100,167, 29,151,233, 16, 31, 58,202,184,229,126,115, +196, 49,129, 93,129,116,157, 88,104, 70,114, 37,141, 19,211, 52, 32,100,234,148,240,107,133,198,209, 87, 97, 51, 64,217,143,164, +226,105, 90, 3,201, 84,129,215, 87,202,170,129,179,209, 19,167, 35,218,163,150,102, 5, 99,104,184,117, 2,119, 79,108,159,254, +249,203, 67, 46,207, 58,106, 86,150,157,226,151,107,206,155, 53,177, 8, 58,128,244,202,213,139, 68, 40,153, 58,141, 20, 87, 9, +175,159,160, 78,232, 83,102, 59, 36,186,163,214, 92,119,185,152,222,107, 86,184,143,179,222,165, 47,153,234,197, 92, 88,175, 32, +227,166,185,254,234,194,124,151,161,169, 95,118,254,181,254,125,145, 28, 38,219,226,142, 55,122,222, 22,248,192, 9,215, 35,108, +206,175,240,217,210, 63,243,156,110,152,118,153, 18,237, 57, 78,198,114,227,139, 71,164, 65,165, 33,231,129,170,153,145, 72, 30, + 10, 46, 95,163,213, 49,229, 45, 46, 44,168,141, 82,199, 29, 41, 38, 52, 56, 68, 2,190,142,148, 28,152, 92,162,230, 4, 25, 52, +120, 34, 35,211,188,150,213,162,148,218,115,220, 30,114,114,114,155,103, 27, 40,209,244, 91,187,184,199,223,224, 93,107,205,228, +153,218,228,110,204,253,110,174,138, 83, 68,234, 44,248, 73, 21, 55,199,166, 82, 44,117,201,200,104,117, 78, 37,178, 61, 99, 82, + 19,198, 85,201,175, 68, 98, 42,118, 8,220,120, 82, 74, 46,175,240,178, 18, 64,138,216, 65, 58,239, 50,110,118,222,137, 98, 93, +225, 60, 34,173,147,237, 33,196,207, 25,186,197,118,228,185, 22, 43, 80,164,226, 52, 32, 57, 89,193, 0, 22,198, 48,219,231,110, +236, 77,150,200,150, 44, 11,218, 91,247,171,226, 44, 10, 22,219,153,167,100, 9, 63, 55,251,242, 82, 51,190, 85,100,178,135, 54, + 84,166, 98,246,165, 32,182, 23, 86, 21, 82,181, 64,156, 6, 99,196,171, 10,165, 6, 84,140,217,171,210, 80,234, 64,174,144,147, +216, 67,205,164,208,243,251, 90,102, 81, 98, 33,207,121,232, 57, 71, 50,149,219,119,110,179,223,247, 92,247, 19, 82,173,227, 23, + 53,203,142,201,105, 42, 77, 99,121,193, 34,193,120,253, 51, 59,255,242,252,226,213,254, 87,253, 77,148,173,189,150, 20,235,171, +194, 73,213,108,126, 82, 13,102, 82, 29, 4,167,196,148,200,201, 14, 76, 17,219,183, 95, 94,109,248,127,254,242, 61,155,188, 80, +240, 62,243,241,175,255,146, 55,223,254, 22, 37,238, 56,186,115,155,161, 79,168, 83,218,245, 1,135,203,142,191,252,217, 79, 25, + 99,229, 7, 63,252, 46,247,238,157,240,179, 95,126,192,217,243,151, 44,187, 37,139,174, 99,219,111,152,166,137,176, 58,196, 45, + 2, 77,211, 34, 58,146, 93,161, 12,230,203, 45,165,114,112,231,136,227,195,142, 47, 62,255,136, 95,252,250,215,236,182, 3,109, +171, 44,218, 37, 71,235, 29,159, 61,218,217,174, 60, 56,218,102,193,225,178,163, 91, 47, 89,174, 15,185,117,124,204,221,215,142, + 1, 79, 30,237,189, 78,147,141,114,139,128,155, 25, 14,195,126, 32, 78,209,186,162,146, 44,124, 33, 21,166, 52,112,118,126,193, +211,167, 47, 88, 45, 91, 92,200,236,175, 6,131, 23, 5, 12, 48,145,203, 92,116,126, 73, 15, 44, 49,114,122,246,148, 55, 30,190, +198, 36,138, 47, 38, 54, 44, 81, 73, 37, 19,221,136,100,193,185,150, 26, 42,231, 47,207,249,226,217, 83,156,115,228,148,241,106, +121, 8,133,196, 27,247,238,240,214,219,111,241,232,209, 19,250,221,158,243,235, 13,251,113,207,144,149,177, 22,186,210,114,235, +240,117, 62,120,246, 83,188, 91, 16,171, 41, 96,186, 38,224, 85, 40, 26, 8,173,224,241, 54,161, 83,203, 81, 48,248, 77,203,241, +201, 49, 47, 55,215, 72,202, 72, 26,137,177, 16,199,132, 6,152,250, 1, 74,228,162, 93,112,123,113,204,243,122,198,216,195,123, +239, 61,166,201, 91,222,251,236,140,253,245,196, 63, 82,248, 39,191,255,219,180,139,142,147, 55, 14,120,244,228,115,242, 4,205, + 98,193, 56,109,205, 1,227, 21,226, 76,177,100, 22,188,137,206,194, 32,157,185, 9,137, 58, 39, 25,182,234, 73,206,158, 29,100, + 75,137, 44, 81,230,248,228, 57, 50,245, 70, 87, 83,237,254, 52, 44,171,162,217, 18, 36, 19, 9,167, 5, 23,132,113, 10, 76,125, +207,193,241, 17, 83, 1, 39,147, 77,140, 80, 98, 42,136, 26,191,157, 17,194, 90, 41, 53, 19,167, 74, 44, 3,206,117, 51,168,105, + 36, 75,107, 5,186, 20,115, 56,136,217, 17,125,174,208, 4,198,209, 38, 5,222, 59, 92, 84, 38,201, 72, 99,248, 95, 42,168, 47, +180,169,193,117, 17,137,149, 82,128, 98, 5, 94,138, 19, 90, 43, 3, 45,190,192, 97,235,249,206,253,183, 8, 15,151,156,158,173, + 25,159, 14, 12,205,158, 40, 19,125,159, 57, 56,120,131,122,188,160,239, 43,151, 87, 91,250,203, 71,156, 95, 30, 49, 20,165,191, +218,144,155, 37,110,119, 77,205, 59,174,175,183,140,147, 77, 32,243, 96,251,112, 95,108,191,188, 17,104, 23,129,234, 45,184,133, + 49,113, 57, 65,227,160,201,149,212, 56,220, 45,108,132, 61, 84,154,165,176,158, 5,103,167, 57,179,155,140, 34, 88,114,228,248, + 96,201,119,239,219, 74,224,195, 73, 25,215,199,112,104,226,187,124,209,177,237, 39, 62, 80,200, 35,212,173, 9, 33,163,237, 38, + 25,174, 50, 75,205, 12,199,129,156,225,249,211,107,242, 16, 41,181, 35,213, 61, 83, 78,164,161,199,249,150, 88,197, 78,245,238, +203,121,190,212,155,176,176, 47, 69,112,238, 31,122,228,212, 58,124, 1, 58, 96,223,103,246, 99, 33,212, 74, 74, 91,134, 60,224, + 85, 9, 42,244, 53, 83,247, 17, 41, 66,242,150, 54, 39,201,236,152, 40,228, 50,145,231,231,114, 27, 32,180, 29,151,227,142,218, +100,106, 30,208, 1, 98, 76,136, 4,210,100,231, 46, 41,145, 40,116, 62, 32, 76,134,235,142,166,119,210,154, 16,239, 72, 37, 26, + 34, 61, 69,134,151, 31, 49,108, 54,248,241,154,214, 79, 20,237,240, 57,102,212,123,235, 84,115, 70,164,204,105,107,206,184,233, + 86,214, 98, 9,227, 50,195, 71, 12,241, 88, 74, 34, 23, 67,200,170, 19,106, 21, 50,182, 3,114, 98, 55,106, 53,137,174, 21, 76, + 58,163, 81, 42, 72, 99,221,171, 20,193,169,146, 71,163,111, 73,149, 47, 15, 19, 75,111,177, 32,150, 89,225,253,213,232,215, 80, +230,156,247, 82, 80,149,153, 60,107, 22, 13,235,252, 5, 98, 52,230,122,245, 38,153, 85,211, 9,136,193,227, 77,157, 92,204,170, +231, 10,212, 49, 83, 22,214,173,230, 10,206, 21,219, 93,204,118, 56,106, 66,179,146,213,147,106, 66,213, 70,235, 49,154,229,162, + 36,179,151, 53,141,199,205, 74,123,201, 54, 41,240,206, 94, 95, 46,153,148,220,108,197,145,121, 79, 89,201, 67, 33, 43, 52,173, +101,199,231,152,237, 53,120,172,178, 37,152,175,210,101,250,105,132, 92,230,104, 84, 3,247,212,155,209,180,128,115,206, 72,248, +206,124,147,204, 95,179, 17,166, 55, 76,110,193, 40, 90,126, 38,112, 80, 8, 93,103,162, 73, 53,159,126,137,118,129,218,228,193, +118,154, 86, 72,153,178, 69,138, 35, 52,142,253,245,196, 24, 7, 99,146, 75,203,230,250,140,159,252,244,207,121,247,205,119,185, +222,236, 88,180, 13,119, 31,222,229,246,235, 39,156,159,126,196, 95,252,213, 79,216,236, 6,124,104,249,205,111,125,143,211,211, + 43,174, 46, 94,242,214,219, 15,248,237, 31,255,136,225,122,207, 31,255,249,159,243,224,225,215,249,205,239,253, 22,169, 76,236, +119, 23,180,186, 36,229,204,182,159,104,221,146, 34, 27,254,226, 79,254, 53,164,107,126,253,233,199,168, 26,124,232,229,213, 57, +183,142,142,249,222,247,190,207,225,193,154,131,147, 53,235,238,136,131,197,130,148, 19, 46,172, 24,114,207,148,108, 18,228, 92, +135, 91, 37, 22,165,179, 81,189,154,226,186, 19,199,113,179,102, 20,240,226,201,110,132, 90,104,154, 53,228,196,102,184,226,234, +229, 57, 93,211,225,124,195,127,248,247,127,205,227,211, 51,203,110, 78,243, 14,251, 6, 92, 36, 66, 8,128,120, 94,156, 95,177, +221, 12, 28,174, 22, 76, 2, 34,142,182, 21,198,169,208,185, 76,241, 11, 38, 28,161,102,246,151,123, 54,215, 91,139, 44,118, 95, +146,229, 52,195, 91,111,156,240,245,175,127,131,214, 47,249,236,241,103,188,120,254,130,253, 56,226,253, 1,161,129, 97,234,185, +188,190,160, 31, 19,200,158,174,109, 8, 65, 9,174, 49,204, 44,153,160, 30,117,130,171,198,251, 44,106,250,146,235, 97,203,184, +157, 8,234,216,111,183,168, 11,236,211,104,227,236,164,243,207, 18,216,109, 55,188,118,116,155,182,105,240,113,100,189,128,191, +248,217, 19, 84,148,127,241,207,255, 25,255,228, 15,255,115, 54,209,113,121,158,184,125,187,130, 54, 44,143,142,184,216, 77, 48, +153,176, 48, 21,197, 57,235,144,107,182, 67,216,114, 17, 44,153,175, 96, 8, 88,165, 5, 45,134,125,214,121, 20,174,102,239,116, + 40, 37,203,236, 10, 41, 84,211,247,218, 4,178,154,149, 13, 47,104,227,208, 84,172, 64,106, 90,170, 10,113, 24,216, 93,188, 96, +189,238,184,220, 95,115,107,189,160,241, 13,113, 42, 4, 28, 69, 51,148,136,243, 13, 49, 22,187,175, 75, 36,168, 53, 4, 82, 35, +146,156, 77,227, 38, 40, 62,209, 52, 38, 64,141,217, 26,147, 80, 27,138, 14,182, 40, 46,149, 68, 52, 25, 80,204, 56,233, 40, 49, +205, 2, 75, 11,195,137, 78,240, 73,209,198,172, 92,217, 9,109,105,136, 85,153,114,207,241,193, 61, 78, 14, 26,220, 45,120,250, + 28, 86,141,112,176, 92,217, 51, 4,199, 15,190,182,102,117, 0, 61,240,211,124, 76,222, 79, 92,215,200,126, 24,168,186,226,240, +193, 93, 74, 7,155,139, 53,233,233, 57,253,238,154,212, 7, 66,215,178,159, 22, 76, 79,182,212, 56, 17,251, 11,214, 10,126, 92, +146,251,129, 86, 21, 73, 7, 76, 23, 80,246, 19,135,157,178,242, 38, 92, 67, 45, 17,141,185,211,189,232, 19,187,237,134,158, 17, +175, 45,173,111, 95,169,203,151, 2,165,133, 67,129,209,195, 54, 24,175,191, 30,136, 5,172,180,129,183, 23,112, 48, 39,119,126, +210, 6,238, 72, 96, 61,135,200,108,142, 14,136,143,159, 18,115,196, 83,184,170,202,123, 87,214, 60,148,169,208,140,123, 94,191, +119,203, 10, 40,224,252,108, 71,117,153,241, 96, 69, 43,194,102,152, 56, 64,224,168,125, 69,198, 99, 42,132,133,137,167, 5,168, +227,200,126,191,195,209,130, 36,212,239, 16, 42,177, 86,106,177,107, 55, 84,161, 76,149, 41, 23,132, 72,174, 25,149,130, 47,102, +229, 83,231,169, 36, 8,158,178, 51,129, 97,174,197, 24, 44, 5,179, 60,183,133,210,239,236, 62,208,192, 56, 88, 46,138,243, 74, +156,122,112,138,215, 14,167, 74,146, 17, 73,158,235,101,199,211,180,224,250,122, 75,222,143, 36, 41, 68,153,179, 45,140,241,110, +129, 37,168, 81,171, 12, 32, 99,213,206, 13,181, 73,103, 27, 77, 44, 51,208,161,216, 97,219,168,169,205,115,170,243, 46,220,118, +222, 69, 44, 67,221, 20,171, 38, 42,171, 26,240, 70, 11,158,225, 16, 74,150,108,110,172,106,126, 95, 74, 65,107,166,168, 80, 75, + 50,206,112, 53, 58,189,237,125,205, 55, 30,163, 5, 93,136, 86,202, 76,220,210,249, 97, 35,181, 82,113, 84,175,120,197, 10,148, +108,118, 56,117,138,243, 30, 41,201,184,209, 50,127,255,217,254,162,165, 48,206,166,198,234,103,104, 5,118, 0,203,156,156,229, + 21,139, 2,173,224,165, 34,165,226, 26,219,145, 57, 4, 87,178, 41, 23, 69, 8,193,160, 44, 54, 27,168, 72,201,104,205,136, 83, + 75,154,147,108, 55,182,179,159,183, 98,170,248,166, 89,144,242,100, 7,119, 18,188,122, 60,130, 52,129,215, 94,191,205,147, 71, +167, 20, 23,230,177,134,249,201,133, 74, 19, 26,144, 66,117,134,230,144,108,201, 85,181,232,171, 11,124, 63, 76, 76,217,212,149, + 54,218, 53,200, 79, 46,217, 30,144, 2, 82, 12,207, 91,106,166, 76, 25,130, 29, 62, 37, 89,241, 33, 57, 83,124, 33, 84,143,247, +102, 13, 44,147,165, 9, 5, 31,184, 58,251, 59,254,253,147,247,200,213,113,114,114,143, 91,143,111,115,252,225, 9,236, 30,243, +249,233, 11,112,202,118,215,179,233,123,226,184, 71, 27, 3,122,248,101,195,254,244,140,102,185,100,181, 56, 96,247, 98, 79,179, +106, 57, 56,186, 79,231,148,234,225,120, 95,248,236,163,159,243,215, 63,249,119,164,152,120,112,247, 46, 95,123,248, 53, 46,118, + 59,250,221,142,203,231, 47,249,246,239,125,155,119,111, 31,205, 5, 85, 96, 26, 71,226,100,116,193,169,238,168, 37,226,252, 18, + 23, 28,244, 17,246, 38,222,112, 85,137, 84,198,201,147,202,100,193, 21,181, 18,217, 81, 70, 72, 57,145, 83,161,161,165,115, 11, +186,119, 30, 82,122, 37,141,133,251,111, 60,228,217,203,231,148,120,131, 63, 54, 12,113,227,213, 64, 73, 85,240, 8,219,205,200, +227,211, 83,190,251, 27,223,192,149, 72, 86, 71, 85, 79,219, 8, 37, 37, 10,189,141,163,219, 5,205,193,138,224, 3, 99, 76, 86, +120,214,104, 35, 63, 17,170, 76,108, 46,159,115,112,116, 11,127,250,156,146, 42,227, 4,141,115,140,215,123,222,123,255,175,233, +119, 59,186,102,133,119, 66, 27, 26, 98,206, 44,194,130, 84, 19,168, 57, 92,212, 89, 17,127, 51,169,147, 2,211, 16,121,114,241, +130, 69,219,112,169,158, 48, 89, 10, 93, 33, 17,240, 44, 87,135, 44,252,138, 88,119,236,227,196,237,147,135, 60,125,254, 25,103, +231,151, 92, 95,111,248,195,223,253, 49, 63,254,237,223,229,241,197,192,139,139,196,237,131, 53,207, 47, 35,103,151, 91,179, 68, +169,162, 77, 99,221,149,155,241,209, 89, 64,146,105, 6,102,196, 50,234, 13,237, 43, 9,215, 40, 41, 87, 74,157, 32, 42,190, 58, + 34,160,206,174, 73,102,167, 65, 86,197,205,216,106,193, 50, 25,100,126, 46,213, 50, 39, 47,138,226,178, 13,199,130,180,214, 60, +148,145,237,217, 57,187,151,158,187,175,221,101,213,117,100, 73,148,212,216, 97,220, 85,202,212, 82,203, 30,113,142, 92,213,104, +138, 98,254,242,220, 79, 56,241, 72,105,104,156, 35,107, 38, 39, 71,169,137,212, 79,248,197, 44,254,242,134,122, 19, 58,147,114, +167, 72,246, 66,141,149,126,215, 67,240,132, 54, 19,147, 53, 92,193, 41,211, 24, 25,171, 18, 22, 29,177,122,214,206,115,112,228, +104, 61, 28,118,149,243,150, 89, 64,156,105,146,190, 58, 92,125,129, 54,103,218, 69, 32,123,129,236,105,218, 53,223,127, 29, 66, +128,159,138,227,243,218, 49,198,194, 80, 11,199,183, 86,124,235, 91,239,176, 95, 42,143, 79, 43,227,163,150,151,131,121,198,251, +113,226,200,119,148,199,149,161, 20,246,155, 43,142,218, 74,188, 56, 98, 32,147,210,128, 95, 31, 67,107, 62,115,237, 13,115, 90, +118,133,208, 65,219, 52,175,188,227,185,192, 90,173, 35, 30,128, 58, 21,110, 32,226, 2, 44, 4, 86, 95,230,170,240,154,179,168, +213,155,224,149,133, 19,134,168,148, 60,145,170,242,206,253,215,120,251,238, 1, 21,216, 20, 24,167,134,182, 53, 57,242, 0, 12, +173,227,160,245,100,175,108, 10, 60,155, 10, 23,227,200,129, 4, 58, 39,244,165,176,189,220, 49, 29,175,112,234,232,119,153,221, +243,151,104,204,140,227, 14,173, 59,234, 14, 70, 25, 81, 18,101, 80,114,134, 36, 61,121,178,226, 83,147, 37,178, 77, 82, 24,117, + 66,213, 83,114,162,248, 21,251, 84, 40,113,162, 58,227,177, 36, 87, 64, 91, 36,101,107,148,178,195,137, 80,235, 96,114, 7,177, +176, 44,117, 70,194,175, 89,136,101, 36,150, 76, 39,137,175,223,123,141,251, 95,255, 14, 79,246,231,208,180,108, 46,182,196, 33, +226,115, 49,128,193,124,251,204,108,236, 57,155, 91, 76,224, 83,196,225,102, 49,157,204, 33, 30,222,153,162,187,148, 74,158,199, +230,130, 9, 29, 10,160,115,234,145,136,224,155, 57,189,165, 96, 0, 22,177,145, 90, 85,190,140,122, 85, 49,142,110,149,121,132, +236,236,208,159, 11, 13, 41,216, 14, 78, 50, 34, 30, 39,197,118,239,197, 70,219, 41,153,184,201, 32, 18,106,202,200, 89,200, 84, +102,136, 74, 81, 71,171, 51,201,170, 22,219, 87,207, 53,217, 92,202, 80,156,129,101, 40,101, 30,135,151, 89,244,102,135,112, 64, +168, 89, 81,167, 84, 73,136, 42, 83,129, 34, 9,193, 58,231,226, 20,173,102,193,139,213, 66, 81,156, 73,160,201,117, 78, 66,104, +117,246,220, 87,242,208, 81,188, 69,241,149, 41,145,130,117,249,157,243, 56, 15, 57,101,178, 84, 83,168, 55, 13,165, 86, 90,223, +224,212,186, 26,212,148,178, 94,157, 69, 51, 86, 59, 80,166, 60,204,239,149, 35,206,175, 35,204,138,216,251, 15,239, 16,199, 29, +155,171,173,137,117,164,188, 18,102, 57,167,248,106, 74,255, 44, 6,103,169, 53, 19,199, 72,201,149,140, 9, 7,133,202, 66, 90, + 82,129, 49, 78, 38,176,186, 9, 42,201,133,111,191,249,128,232,170,229, 14,239, 71,174,207, 62,225,236,139,247,200,100, 98, 76, +196, 34,108,246,123,210,144, 25,246,189, 21, 77,190,161, 76, 19, 79, 94, 60,165,115, 11,154,101,195, 85,127,205,129, 91, 19,188, +121,248,217,246,252,236, 47,255,152,247,223,251, 9,221,250,128,119,191,245,155,220,191,119,155, 85,187, 96, 36,195,188,159,109, + 69, 72,251, 13,213,205, 80, 30, 5,100, 66, 27,235,232,106,118,248, 82,241, 37,210, 75,143,182, 74, 78,222,146,163,170,199,231, +140,180,158, 65, 18,205, 60,109,202, 81, 77,120, 88, 3,169,169,228, 26,113,251, 53, 83,158, 32, 13,156, 28, 31,179, 90, 44,185, + 28,174,205,246, 41,157,221,236,222,252,188, 57, 21, 35,196, 21,229,244,217, 11,190,246,238,219, 52,139,142,101, 50, 27, 26,193, +155,245,209, 9,173, 91,178, 75, 59, 62,249,228, 67, 92, 80,150,190,101,138,211,124, 95,217,114,179,223, 12,156,215,167,232,242, + 53,206, 94,156, 18,188, 35,172, 86, 76, 62,209,167, 43, 74, 74, 52,221, 18, 77, 54,125,152,146,165, 36, 86,151,145,234, 80,245, +115, 78,128, 67,106, 33,180, 13,205,210,163, 53, 16,251,202,230,106,203,209,131,251,220, 90, 20,118,195,149, 77,124, 66,224,246, +201, 29,214,221, 33,139,176,164,234, 29,174, 54, 27, 98,222,224, 59,229,244,124, 36,180, 75,220,250, 14, 31, 60, 27,232,251,202, +242,176,165,184,196,126, 19,249,232,195, 79, 56, 63,125, 66,144, 5,109,104,153,246, 91, 60,158, 50, 79,177, 84,133,164, 25, 71, + 32,168, 89, 41,197, 7,131,135,212,108,227,243, 50,119,187, 58, 71, 81, 85,197,221, 68, 30,123,161,200, 92, 28,171, 77,175,124, +177,112, 38, 81, 71,174,213,208,181,185, 48,185, 9, 31, 86,136, 23,250, 24, 41,201,177, 92, 29,240,236,217,231,228,184,229,193, +155,239, 32,190,101, 44, 61, 94, 50,235, 81,153,234, 22, 45, 5, 87,132,118,225, 76,184,234,140,165,161, 98, 19, 56,117,158,177, + 79,176,244,224, 19,154, 2,117,236,169,213, 35,221, 2,156, 39,110,118, 56, 95,112,174, 18,197,209, 21, 40, 93, 69,119, 86,219, +148, 58,143,221, 9,198,188,200, 66, 70, 88, 23,200, 37, 18,100, 98, 56, 27,105,155, 14,223, 79,232,120,141,107, 3, 83,204, 4, + 89,224,111, 2, 88, 34,108,135, 9,105,122,155, 20,142,153,197,218,219,212, 8, 8, 61, 76,195,134,181,131, 73, 35, 75,241, 60, + 88, 43,180,112,242,134,240, 41,183, 56,188, 15, 23,123,232,158, 31,179,174,176,126, 8,245,218, 49,196, 59,236, 67, 98,240,142, + 52, 64, 26, 29,191,124, 33,248, 45,184, 17,174, 79, 47, 41, 83,194,141,142,112, 80,137,251,129,221,254,128, 18,224,250, 60,114, +103, 33,184,198,211, 85,216, 76, 5,191, 54,127,187,204,193, 45,175,130, 88,248, 42, 2,123,166,189,109, 51,101,234, 25, 98,162, +115,129,195,182, 53, 95,248,188, 27, 63,240,238, 85,246,122, 11,212,163,142, 35,247,229,247,240,183,151,120, 89,176, 84,211, 61, +105,113,220, 90, 29, 16,156,177,242,179,119,196,118, 77, 2,166, 9,100, 40, 72,201, 20, 63,144, 82,166,209,134, 82, 50, 83,201, + 52,174,144,138, 67, 67, 67,142, 19, 99, 26,105,154, 96, 48,177, 82,241,174,101, 31, 71,132, 72, 77,137,154, 21,167, 45,217, 7, +116,200,175,152, 32,177, 68,164,117,184,201, 56,214,105,156, 8, 44,208, 38,146,226, 64,138,166, 91,234,180,114,188, 88, 81,115, +203,176,217, 49, 93,101, 22, 65,145,168,120,145,106, 62,229, 58,139, 74,139, 29,160,182,153, 53,162, 91,205,182, 7, 55, 34,156, + 9,118, 68,103,124,163, 51,186, 91, 81,161,117,166,108,207, 89,208, 96,227, 94, 43,187,188, 89,162, 80, 68,102,183,123,181,129, + 62,115, 1, 33,179, 81,165,148,155,138,218,200,116,213,155,159,216, 94,178, 67,181, 34,243,190,222,196, 53,134,149,208, 57, 57, +174, 80,144, 44,224,234,171, 37, 74,214, 74,115,147,192, 53,127,224,200, 77,172,171,179, 78,124,182,207,136, 84,136,133, 70,148, +172, 54, 5,168, 69,230, 14, 54,162, 26,108,234,224, 61, 90,156,141,251, 75,196, 55, 22,110, 83,138,173, 34, 50,197,178,190,181, + 82,147,165,205,153, 96,207,196,108,169, 26, 46,182,250, 3,222,122,231,247,240, 77,226,239,254,230,207,184,120,121,137,184, 64, +101,228, 96,209,161,173, 18, 92, 71,163,152, 23,150,138,119,149,253,126,160, 93, 29,216,103, 37,133, 58,175, 66, 92, 51,103,200, + 39,179,177,184, 57,187,190, 74,161,122,177,253,190, 20, 94,187,123,143,131,182,229,195,143,254,142,167,167,103,102,205,153,119, + 73,165, 20, 98,132,174,179, 44,245,146,226,172,157,144, 25, 29,107, 65, 56,109,112,168,247,166, 38,142,150,125,174,222,196, 79, + 57,101,198, 10, 93,215,178, 90, 46, 89,189,222,176, 88, 31, 50,142, 3,207, 47,207,249,244,243, 71,228,253,196,238,234,138,253, +230,138, 49, 71, 40,137, 60,101,198,201, 49,198,196,227, 39,143,217,110,255,152,110,217,113,116,114,196,122,125, 7,114,195,139, + 79,254,150,245, 58,241,214, 59,247,216, 85,207,215,223,126,135, 92,138,133,241,212, 9,117,149, 16, 58, 38,122,234, 62,145, 92, + 33, 84,123,194,169, 40,226, 61,162, 35,163, 78,228,108,157, 45,206, 96, 33, 49, 43, 73, 28,190, 25,144,186,160,137,217, 82,151, + 50,100,117,132,133, 71,162, 35,230,200,212,155,237, 50,141, 47, 72, 2, 45, 5,215, 40,119, 78,110,115,126,117,101,197,239,236, +234, 72, 41,207,112, 32,131, 53, 5, 47,236,118, 59,174, 95,158,113,255,225, 27, 84, 31,208, 38, 19,175, 77,211,208,248, 64,140, + 61, 31,126,248, 11, 94,190,220,242,221, 31,124,155,243,203, 51, 62,126,255, 9,136,117,226,177, 86, 35,214,237,182, 60,254,228, + 9,231,231,103,124,243,155, 63, 48,239,125,222,225,180,163,113, 29, 99,156, 44,108,137, 66, 42,133,198, 57, 22,190, 35, 57,101, + 24,122, 84,188, 21,242,206, 17, 90,103,225, 65,126, 73,234, 18,155,235, 29, 53, 43,111,188,243, 53, 62,252,245,207,152,166,137, +245,162,227,232,214,235,172,156,103, 26,133, 84, 39,106,220,114,117,117, 74,173, 45, 77,112,220, 57, 62, 33,214, 21, 63,253,249, + 99,126,244,221,135, 44, 27, 71,154, 18, 49, 87,154,166, 35,105,162,164,145,133, 91, 48,104, 75,140, 3,162, 13, 94, 32,214,140, +102, 33,107,180, 93,191, 10, 82, 35,222,130,202,204,230,151,203, 28,163, 59,135, 71, 85, 33, 91, 58, 20,165, 26, 23,226,149,221, + 21, 69,170,218,180,174,164, 87,154,161, 34,144,134,145,136,167,109, 23,164,105, 98,179,221,242,236,236, 11,134, 97, 64,106,225, +122,115,197,201,157,123,248, 82,104,107,107, 32,153, 96, 20, 72, 21, 19,169, 74, 88,144,179,113,188, 53,168,173,173, 72, 70,197, +235, 33,122,179,227, 45, 23, 45, 49, 9, 68,168,236,113,183, 2,186,201, 76,219, 76,183,240,168,116,248, 49,227,187, 21,125, 30, +152,114,101,204, 3, 77, 11,117, 12,166,121,105, 97, 72, 59,196, 11, 31, 95,158,242, 71,127,246,167,172,151, 7,244,211,142,234, + 11,135, 93,197, 47, 90,252, 65,229,250,209, 33,171, 91, 13,211, 21,232,112,197,164, 61,154, 45,240,201,215, 89,184,164,160, 41, +227,210,192,245, 46, 50,101,101,237, 23,175, 14,211,221, 57,248, 30,242, 30,150, 51, 71,254,155,247,225, 96, 13,251, 37,252,252, +210,209,174, 28, 59,129,224, 61,183, 15, 23, 60,120,199,146, 60,207, 7,120,118,218,210, 39, 5, 34,161,233,184,208,142,231,103, +208, 42,140,207,119,236,229,154,208,182,144,161, 31, 51,233,246, 9,235,201,163,185,224,227,132, 44, 59,152,199,239,229, 43, 75, +240, 10,244,227, 72, 22,203, 60,200,121,100,135,114, 58,115,227, 47, 98,101, 85,235,255, 71,213,155,244, 90,146,101, 87,122,223, +233,204,236,222,251, 90,111,194, 61, 60,186,108,152, 73, 38,123, 17, 44, 21, 33, 86, 73, 66, 17,172, 65,141, 36, 64, 3, 13, 4, + 1,250, 5,130,254,129,126,136, 0, 13, 53,144, 80, 40,112, 34, 65, 20, 68,128,162,216, 21,197,166,178, 97, 50,155,136,140, 8, +143,240,240,231,175,191,141,153,157,102,111, 13,182, 61, 79,210,103,142,231,254,224,254,238,189,118,206, 94,123,173,111,113,178, +100,228, 38,133,235, 81, 25, 54,142,149,249,218,216,205,202, 42,194,208, 25, 62,118, 47,112,228,221,219, 61,251,208,195,119,157, +227,238,234, 64,170,133,226, 60,154, 64, 71, 27,180,234, 42, 80,196,170,121,179,218, 96,218, 90, 70, 36, 89,245,106,153,169,110, +137, 52,143,119, 86, 48,148, 60, 46, 27,133, 53,151,134,103,199, 76,195,139, 82, 17, 59, 43, 31, 60, 8,210,240,157,167, 49,225, +125, 36,197, 64,139, 80,179,153, 50, 43, 43,246, 99, 69,198, 61, 81, 15,212, 10,173,138, 93, 96,189,154, 33, 67,151,219,127, 21, + 49,132,101, 48,166,183, 91,246, 82,170, 15,183, 98, 3,216,187,197, 32,167,206, 45,211, 46,180, 32,230,208,109, 75,130,205,219, +196, 44, 14, 35,251, 16, 44, 87, 24,172, 1,238, 65, 26, 43,181,226,147,167, 75,145, 86,204,244,214, 57,135,139,158, 82,108, 29, +128,179,138, 83,117,230,128,181, 12,181, 77, 28, 86,237,103,153,251, 34,133,232,130, 69,220, 22,255,121, 19, 79,114,145,185, 25, +222,180,143,246,131,149, 38, 72,224,237,116,238,154,153, 69, 52, 26,104, 95, 69,209, 16, 9, 33, 90, 76, 69, 21,231,132, 60, 29, +172, 28, 4,243, 18,200, 82,145,169, 77,168, 45, 35,222,209,169,195,137,153,203, 4,107,120, 27,134,206,138,102, 4,130,119,108, + 78, 62,224,195,247,222,225, 47,254,223, 63,224,205,197, 43,226, 58, 81,114,161,214,204, 56, 77,200,178,246,240, 78,241, 49, 49, + 12, 29,221, 16, 25,139,165, 9,124,114,102,244,202, 66, 45, 19,206, 37,195, 0,133,133,103,143, 93,174,188, 70, 82,124, 40, 46, + 80, 2,141,208, 91,107, 94,109,213, 46, 51,205,227,172, 13,131, 24,236,147, 84,107,165,104, 69,170, 41, 32,210,154, 33, 63,189, +167,235,142,112, 41, 81,231,217,160, 55, 34,116, 62,130, 58,166,170,144, 60,174, 52,170, 54,242, 10,230,187, 27, 20, 56, 89, 31, +211,187,158,189, 76,148, 42,236,199,131,237, 66,241, 12,177,167,182,153,251,155, 59,182,247,183,108,119,247,120, 41,116,125,111, +106,141, 83,186,222,243, 95,252,243,223,225, 7, 63,120, 69, 81,165, 4,107, 20,156,165,226,131, 80,130,160,108,169,186,161,118, + 17,234, 76,150,201,120, 12,205,192, 70,218, 59,220,193, 17,164, 32,195, 98, 84,241,213, 60, 8,165, 18,139, 48,145,217, 77, 19, +235,245,198,222,175,169,209,228, 64,171,130, 87, 75,133, 52, 10,165, 54,138,203, 84,159,136, 62,240,254, 7, 31,241,242,171,175, +216,141, 19,210, 50,170, 86,190,128,115, 56,181, 66, 11, 23,149,185, 53,190,250,242,138,247, 62,120,223,228,244,217,140,152,104, +225,230,238,150,139,215, 23,188,252,244, 13,171,254,148,155,219, 43,238,238,182,248,104, 43, 34,177,155, 47,247,119, 51, 59, 55, +243,213, 87,175,121,246,244, 93,158, 61,127,135, 82,238,109, 90,124,104, 8,116, 74, 65,105,173, 25,116,195, 59,102,133,163,126, +197, 62,108,237,243,232, 6, 82,231,112,178,180, 85,169, 88,164,235,176,227,254,230,138,213,201, 49,201, 89,158, 23, 63,176,189, +188,230, 46,192,243,179,167,104, 19,238,119,183, 92, 92,188, 65,138,178, 90, 69,158,188,251, 62,234,214,252,229,159,254, 9, 47, + 30,255, 27, 54, 71, 3,227, 44,140, 99,225,247,126,247,183,249,226,179, 47,248, 63,255,232,207,121,242,104,195, 48,156,113, 91, + 94,227,100,196,165,136,199, 62,187, 1, 65,116,230,193,141, 43,120,154, 20,235,151,247,201,198,142, 5, 86,133,179, 67, 58, 46, + 23, 55,117,118,184,139, 19, 40,153, 52, 44,207, 29, 91, 96,145,165, 46,101, 32,214, 29, 97, 6, 93, 71,149,204,201,201, 35,118, +183, 55,140,234,185,185,190,225,241,201, 99,162,218,224,210,130,210,187, 72,105,149,185,143,132,170,196,108, 37, 44,120,144, 44, + 28,173,122,112,145,195,178, 74,136,205,180,199, 26, 71,106,141,184,154,241, 33, 17,103,161, 13,158,144,133, 62, 4, 91,215,100, + 3,151,212,185,216,186, 65, 61, 58,218,243, 81,189,173, 95,102, 73,248,166, 28,194,196, 79, 94,189,124,107,232,236,210, 17, 83, +222,114, 52, 28,177,234,182,252,237,247, 62,229,172, 95, 49, 83,153,226,204,170,115, 4,231,233,226, 64,127,186,230,101,121,194, +112,222,115,121,177,101,110, 19, 41,120,158, 36,199,102,243,115,124,220,174, 45, 54,154, 27, 8, 27,115,143,135,188, 24,207,156, +153,195, 66,132, 52,152, 93, 73, 70,216,240,243,164,214, 92, 39,154,102,139, 72,198, 53,191,246,222, 49,195,145,129,103, 62,110, + 27,106,173, 72,140,228, 67,163,239,214,156, 62, 25, 80,129,251,157,103,186,205,148, 38,172,135,129,210,132, 58, 54,198,231, 61, + 93, 15,211, 4,219,171, 29, 99, 22,102, 2,125, 84,200, 5,175,182,171,191,154,234, 98,109,183, 67,253, 78, 96,159,133,233, 40, +176, 90,246,253,219,172,140,209, 14,241, 14,152,170, 25,182,255, 49, 93,110, 55,102,170, 28,104,249, 30,137, 21,223, 2, 82, 60, +234, 34, 77, 51, 53,239,237, 98,169, 75, 33,129,243,198,209,243,214,195, 33,243,206, 64, 70,125,131, 18,112,213, 67,115, 84,215, +240,209,129, 68, 35,148,138, 53,181,165, 37,230,157,165,226,189,189, 39,231, 90,105,197,250, 87,156, 42,190, 57,171, 11, 22,161, +220,191,166,228,107,130,243,184, 99,101,158, 51, 49, 46,220,114, 31, 28, 30,121,219, 46,165,250,208, 16,111,153, 79, 17, 12,110, +162,214,134, 67, 52,131,153,119, 15,252,117, 53,233,252,161,103, 55, 6,147,187, 16, 44,138,106, 7, 53,242,208,209,103, 15, 16, +145,182, 96, 74, 61,218, 44, 1,170, 75,102,217, 34, 22, 98, 56, 87,111,230, 23,105,182,103, 15,186,248,188,117,201, 0, 59,219, +157,136, 46,123,153,230, 23, 40,142,117,166,107,131, 66, 37, 44,140,233,210,108,119,172,222, 19, 48,222,188,226,241,157,117,227, +206,181, 17,163,153,244,188, 43,132,152,136,222,227,170,163,136, 26,251,222, 47, 4, 60,175,182, 83,137,138,111,205,218,124, 8, +140, 37,211, 13, 61,130, 16, 92,162, 11,150, 51,183,142, 92,143, 36,193,197,192, 87,175, 62,225,243,175,126,134, 6,123,193,189, + 86,188, 58,236, 17, 4, 69, 43,181, 54, 92,173,204,211,104,198, 68,103, 43,141,182,180,188,185, 16,233,215,107,144,182, 0,112, +172,181, 14,241,111, 9,106, 34, 74, 45, 19,190,235,241,209, 86, 15,211,158, 41,176, 97, 0, 0, 32, 0, 73, 68, 65, 84,156,173, +113,110,233,255, 54,208, 76,192,133,184, 60, 48, 45,165,192,146,249,150, 38, 84, 81, 86,209,122,184,107, 41, 22, 45,108,213,252, + 19,181, 80, 90, 52, 66,112,104,116, 46,209,212,209,122,187,161, 90, 15,179, 48,244,137,118,173, 28,246, 19,151,247,123,114,201, +160,142,216, 65,157, 38,166, 60, 47, 17, 59,123, 13,134,110, 0,175,244, 67, 32,143,153, 79, 62,189,230,205,205, 53,231, 47,190, +129,215,136,186,209, 98, 99,234,209, 41, 34,189, 57,202,141,159, 29,152, 0,231,146,213,243, 78, 5, 41,222,114,157,206, 35,213, + 96, 70, 46,130,100, 15,117,102,114,129,226, 10,131, 11, 8, 5,239, 3,117, 55,211, 90, 69, 82, 68,165,210,147,168, 99,197, 31, + 41,238,222,145,186,136, 43,158, 46, 6, 30,157, 61,230,238,238, 83, 75, 18,184, 72,197, 89, 76,239,161, 96, 68, 5,209,192,155, +235, 91,238,111, 15,116,157,242,249,167, 95,240,234,242,150,105,222,145,107, 35, 52,168, 85,185,111, 91,174, 63,190,163,239, 61, + 67,244,204,139,132,142,194,235,139, 59,130,119,156, 29,159,242,157, 95,249,117,162,141,117,168,243, 12,195,176, 64, 92,170,125, + 46,213,222, 11,173, 52,238,239,175,240, 49,210, 13, 61,135,195, 30,197, 82, 13,157, 55,249,144, 24, 89,187, 30,183, 89,115,125, +119, 77,119,179, 66,187,129,118,152,216,239,111, 56,108, 95,241,248,201,123,172,143, 79,144,160,156,236,223,240,179,207, 43, 55, + 87,151,188,251,236, 29, 78,143,206,233, 54, 43,158, 61, 62,102,142,137,218,224, 48, 22,246,221,129, 15,222, 59,103, 56,219, 48, +229, 61, 69, 38,214,235,142,253,220, 25,152,196, 27,203,193,208,222,246,217,148, 7,133, 67,100,185, 88,186, 37, 78, 96,209, 82, +176, 94,117,145, 70, 85, 71, 23, 4,213, 96,208, 42,167,164,206, 47,101, 38,193,214, 85, 14, 58,103,132,201,138,163,180, 76,167, + 9, 23, 28,211, 97,207,187, 79,158, 83, 30,239,184,217,221,178,219,221,113,117,245,134,199,207,158,113,152, 71, 99, 90, 36, 8, +126, 96,190,207,132,206,225, 98,161,149,138,224,217,196, 21,227,161,160,110, 34,208, 83,240,116,169,210,212,147,115,160, 39,211, +130,213, 82,235, 88,112,157,145,246,154, 30,160, 57, 10, 13,169,118,121, 17, 2, 41,118,212, 82, 89,247, 43, 38, 23,168, 89,233, + 84,113, 73, 9, 27, 40,219,134,151, 74,212, 21,180, 61,206, 21,164, 20,238,101,207,253,148,184, 57, 28, 83,211,140,214, 76, 29, + 23,213, 18,199,143,227, 21,169,115,120, 34,181,131,195,152, 89, 19,152, 82,227, 71,159,127,193,217,191, 63,102,117,182,230,254, + 46,211,197,194, 81,119,142,108, 61,227,182,210,142,173, 7, 45, 8,172,131, 69, 31,227, 26,246,163, 29,168,110,209,183,183, 91, +200,247, 59, 43,177,137,194,209, 38,114,154,126,206, 88,247, 78, 57, 62, 90,211, 13, 43,198,144,121,228, 61, 31, 30,219,215,111, +142,224, 71,237,132,221, 9,108, 59,112,119,142, 71, 39,129,176,178,153,113, 31,172,210,117, 95,171,109,104,117,197,203,109,162, +253,180,112, 20, 29,251,219, 59, 78,134,137,246,248,156, 16, 61,119, 83,129,125, 65,211, 99,198, 30, 14, 2,117, 55,114, 52,244, +156, 46, 46,175, 88,117, 25,146, 22,121, 63, 47, 9,143, 86,168, 78,233, 18,212,221, 68,149, 25,213, 70, 55, 58, 6, 15,217, 59, +186,185,216, 96,151,108,133, 57, 75,179, 84,213, 92,105,109, 36, 14, 71,184,162,180, 58, 33, 56, 82, 48, 82,105,149,108,175,165, +122, 90,115, 20,138, 89,164,116,233, 42,105, 66, 71,160,213,106,190, 54, 60,234, 3,163, 10,159,222,122,194,103, 47,217, 93,220, +216,133,117, 25,160,162,177,150, 23, 89,245,161, 88, 94,151, 6,179, 69, 38,119,218, 12, 67,250, 64, 89,115,186, 72,216, 22,161, +114, 56,163,192, 45,210,172, 54, 59,217, 91,112, 11, 49,138, 37, 39,109, 6, 21,215, 89,105,137,229,107, 45, 3,158, 22,183,118, + 91, 14,102,175,214,111,238, 29, 54,117, 99,217,247, 66,123,203,145,215,133,247, 30, 31,148,118, 53,167,186, 41, 4,134,212, 12, +222,131,216,119, 54, 70,183, 51,160,195, 98, 68,112,222,178,201,193, 47,166,176,166, 84,105, 68,122,188, 66,244, 29,173, 41,196, +138,136, 21, 80, 24, 47,220, 50,244,210,132,184,180, 73,228,170, 11,154,214, 89, 68, 48,152,121, 48,161, 84,169,144,173,238,181, +239,143,204, 88, 19, 7,130, 42, 63,249,193,127, 96,206, 51,189,235,233, 26, 22,115, 74, 9, 41, 25, 23, 28,195,176,225,168, 31, +216,237,183,228, 82,105,109,166, 74, 38,122,111,209, 51,231, 44,182,181,178,106,220, 86,218,226,174, 52, 83,187, 46, 60,237,218, +172, 21,203,164,122, 97,222,239, 56,236, 71,251,217, 46,209,194,232, 19,222, 57,234, 92, 44, 26,228,140,254, 39, 11, 26, 88,150, +178,154, 71, 79,223, 97,232,123,110, 14, 35, 42, 98, 56, 97, 49, 92,112, 21, 37, 20, 65, 70,101, 28, 26,209, 39,250,104,170,137, +180, 30, 52,211, 13,131, 77, 36,181,178,223,239,201,243, 68, 63,116,100, 17, 90,243, 68, 9,212, 90,173, 25,207, 59,166, 90, 9, +222,177,146, 14,169,141,159,124,114,193,249,233, 19,158, 31, 63,165,239,132,169, 56,202, 44,214,126,164, 29,174,117,228,186,131, +108,241,196,161,247,100,233, 57,104,198, 57,139,103,105, 16,196,247,182, 22,105, 25,105, 3,149,201,204, 85,170,196,165,120,161, +228,106, 0,165,102,176, 23,230,138,122, 79,115, 66, 74,142,105,223,232,135,132,155, 70, 66, 72,164,216,243,181,231, 79,121,253, +250, 75,230,186, 76,189,206, 76,148,242, 16, 25, 21,131,255, 84, 7,243, 60,241,201, 79, 63,231, 39,159,125, 69, 41,178,224,135, +141, 54,214,245,198,229,238,187, 72,240,129, 67,153,144, 90,237,226,189, 8,145,255,242,183,191,205,217,217, 41,179, 79, 84,129, +166,129,170,137,251,237, 21, 74,163, 17, 44, 50, 38,205, 90,209,130,163,214,194, 97,127,203, 48,172,129,100,187,104, 53, 53,236, +176,219, 19,156,176, 62,234,113,226, 25, 15, 7,174,222,124, 69,215,159, 81, 68, 56,236,239, 73,210,248,232,253,196,201,163,158, +221,221, 72, 31, 87, 60,126,242,152,155,171, 75, 78,143,143,121,255,197, 47,178,122,124,198,127,246,235,207,249,252, 18, 46,111, + 50, 65,225, 54, 42, 47, 47, 50,241,248, 28,137,129,221,118,203,209,163,199, 28,175, 79,185,219, 95, 35,186, 48,160,213,246,156, +165, 64, 92,224, 87,110,169, 67,118,203, 20,110,198, 83,187,128, 42,134,135, 86,111,131, 71,195,226,173, 94, 44, 97, 35,210, 32, + 88,170, 67, 84,169, 44, 81, 80,181, 74, 82,113,137, 76, 33,226, 73,189,231,233,179,119,153,234,129,233,110,100,232, 10,223,254, +246, 9,223,253,193, 1, 45,130,182,192, 52,142,139,161,184,103, 87,102, 18, 74, 33, 82,139, 91,214, 35,158,135,108,216,202, 15, +168,116, 52, 49,205, 91,103,104,209, 67,114,212,241, 30,159, 86,184,100, 73,149, 42,129, 86, 21,223, 67,107,158, 12,134,136, 46, + 13,183,105,196,108, 23, 87,153,109,240,240,222, 83,155, 71,216,177,138,145,232,132,210,238,112, 18,208, 16,153,195,129,208, 60, +161, 54, 14,140,104,174,120, 13,204, 76,212,173,129,123,194, 96,133, 35, 45, 29, 83,139,242,253,221,103,188,252,242,154,156, 3, + 18,149,225, 88, 25,220,128,243,142, 97, 72,188,186,248,144,244,253, 99, 52, 42,249,176,229,197,211, 19,220,166, 35,103, 37, 28, + 31,129,246,111, 91, 4,157, 22,142,142, 35, 49, 58, 78,214,171,133,130, 99, 47,113,112,224,187, 72, 91,106,175,211,240,115,133, + 96,202, 16, 85, 56,238, 60,253, 26,246,197,241,110,132,163,229,143,116, 43,248,204,121,116,231, 8,181,241,209,243,115,126,237, + 23, 31,115,171,144, 5,102,247,136,204,158,151, 46,208,178, 82,238, 51,208,179, 59, 64,221, 89, 68,174, 93,101,227, 93,108, 22, + 37,229,106,199,241,243, 99,226, 58,208,121,184,189, 17,246,183, 55,132,214,131,115,228,125,161,150, 3, 49, 40, 78,109,216,168, + 4, 36,139,197, 93, 93,165,140,138,214, 70,140,157,149,135, 73, 35, 52,161,230, 25, 41,131, 49, 13,136, 20, 17,212,205, 4,141, +104,118, 72,155,223,182,146, 58,231, 33, 88,173,171,170,163,204,214, 65, 18, 30,162,231, 14,206,142, 34,167, 31,125,147,250,244, + 63, 38,125,250, 71,212,241, 43,180, 57,180,118,196,182,180, 20,171, 10, 20, 3, 45,184,133,118,246, 48,241,217,108,101,212,183, +228,157,177,104,173, 6, 9,109, 98,134,185,106, 55, 97, 23,197,118,243,152,212,137,179,239,221,150, 7, 37,222,211, 17,169,174, + 48,182, 70, 88, 56,237,226,108, 2, 87,113, 11,113,201, 38,249,234, 45,183,170,106, 17, 42,143,194,130,157, 93,144,221, 40,182, +251,110,213, 38,250,232,162, 69,197,156, 46, 15,212,102, 53,177, 49,216,102, 64, 11,170,113,145, 40,205,244, 21,156,167, 34,136, +122,164,121, 98, 90,214, 2,202, 2, 51, 49,156,163,171,101, 81, 86,132,114,176, 78, 31,245, 14,151, 28, 46, 45,146,254,188, 24, +123,106, 69,124,198, 71,219,255, 87,108,175, 45, 98,230,150,150, 35, 55,229, 13, 35,202,239,254,171,255, 18,157,110,184,120,249, + 41, 23,187,107,218, 62,147,156, 99,202, 51, 93, 90,243,238,139,175, 81,230, 74,113,194,122,213, 81, 14,247,236, 70,219, 31,111, +111,111,201,101,102,222,239, 9, 41, 17,213,218,117, 92,236, 24,146, 35, 14,145,104, 68, 13, 90,131, 16, 35,135,237,204,171,235, +175, 56,140,243, 82,155,106, 44,252,182, 24,228,250, 85, 71,157, 10,201, 5,178,155,200, 98, 81, 70, 71,225,252,236,148, 15, 63, +248,128,253,110,199,245,229, 27, 84,237,242, 52,137,225,108,115,206, 16,237, 66, 34,181,161, 49,224,170,224,179,210,188, 16, 82, +207,241,209, 10,180, 33, 90,185,190,186, 68,213,179, 94,173,108,111, 36,176, 58,222,224, 22,122, 88, 80, 37, 58,115,157,167,216, + 49,183,198,120,125,197,211,211, 99, 82,106,196, 38, 80,204,165, 31,130, 85,232,162,153,228, 18,210, 57,202,220,104, 35,168,223, +226,219, 66,201,243, 30,239, 19,181, 22, 52,131, 11, 74,174,153,216, 9,213, 43,177, 0, 93,135,115, 61,170,153,185, 20, 36, 91, +109,102,223, 41,174,154,122,225, 17,164,130,180, 10, 46, 16, 18,132, 42,156, 61, 62,225,228,236,152,139,139, 27,130,139,104, 51, + 63,132,247, 97, 49,165,217,202,232,116,213, 81,100,207,237,126, 71,109,249,109,124, 16,245,184, 10,197, 21,212, 65, 46, 6,218, + 96, 89,145,229,170,203, 26,197,243,197, 23,151,108,243,196,253,120,193,106,125,202, 59,239,189,195,246,171, 55,252,195,143,127, +200, 16, 18, 33, 26,224, 41,134,136,212, 6,209,227,171,167,204,149,174,131,110,112,236,239, 38,220, 16,217,237,183,104,171,244, +103,199, 86,138, 18,236,130,252,234,213,151, 28, 31,143,172,134,196, 56,205, 12,125,199,212,132,251,221, 87,228, 81,184,122,115, + 73, 27, 11, 41,245,164,213, 25,117,158,217,143,153,139, 85,199, 92, 42, 83,201,132,213, 0,179, 99,187,207,248,116,204,147,179, + 39,220,222, 94,115, 38, 14, 93, 15,176, 15, 72,153,205, 72,216, 44,146,134, 83,131, 57,105, 88,218, 32,237,240, 83, 21, 66,234, +108, 21,164, 51, 8,116,157,169,115,181, 69, 28, 13,159, 30, 12,133,134,167,110, 75,110,220, 59,208, 98,153,117,113,150,140, 8, +165, 48,105,230,205,254, 13, 77, 10,239, 60,127,198,163, 39,239,242,249,205,207,184,191,203, 28,135,200, 59,231,145, 47, 94,103, +200, 70, 64,212, 37, 6, 40,116,224, 29, 82, 51,208,112, 30,114,173, 22,177,213, 70, 11, 61,115,155, 80, 25, 41, 17,154, 4,162, + 76,180,220, 25,239,162,205,108,247,138, 46, 53,104,177, 10,178,244,110,135,169,210,134,138, 52,135,219,139, 65,182,164,167,235, + 19,161,102, 36,195,224, 6, 14,109,100,231,215,120, 18,154, 71, 58,223,161, 76, 22, 11,214,181,145, 27, 1, 41,133, 89,151,215, + 85, 29, 67, 31, 24,243,196, 84, 70, 54,125,133,245,128,204,133,157, 87, 90,139,180,172,236,199, 76,159,122,171,204, 13,158, 79, +190,184, 36,181,142,156, 34,110,206,156,157, 38,178,139,184, 80,120,167, 59, 99,245,151, 39,172, 87,137,203,121,228,254,122, 15, +100,116,240,124,121,113,205, 7,111,222,103,117, 28,185, 60, 64,189,191,167,239, 3, 49, 58, 60,149,245,170,255,185,244, 93, 45, + 20, 16, 23,146,169,102,204,108,250, 0,146, 25, 33,207, 35, 99, 30,153,238, 42,143,191,179,226, 60,194,249, 3,227,100,227,121, +114,116, 76, 26, 76, 70,255, 34,246,188,136,142,167,167,134,208,125, 57,195,237,250,156,211,115, 88, 43, 76,162,220,202, 49,183, + 41,216,129,175,240,229,181,112,127, 83,168,243,132,228,108, 43, 70, 13,196,180,240, 81, 90, 69, 74,179, 51,200, 53,106,109,230, + 55,138,142,181,171, 20, 21,178, 42,104,196, 77,107,202,116, 32, 56, 37, 57, 97,148,106, 7,127, 80, 92, 49, 26,168, 11, 44,207, + 39,131, 77,121,237, 45,230, 24, 65,169,104, 85,124, 23,160, 40,143,186,192,139,103, 79,216,118, 29, 63,165, 49,107,135, 59, 52, +180,108,137, 34,134,166,244,193, 52, 19,239, 77, 63,113,139,179,188, 25,189,218, 14,115, 75,155,225, 22,200,137, 96,123, 97, 34, +212, 98,147, 97,203, 14,162,129,102,104,198, 88, 55, 33, 77,233,146,183,134,180, 86,241,170, 4,177,184,155, 15,201, 48,128,205, + 14,108,231,171,113,191,197,147,107, 70,194, 18,167, 91, 58,241,122,239,200,205,163, 81, 9,106, 89, 63,197, 24,210,120, 43,239, +112,132,183,107,132,130, 46,135,133, 46, 57,109,171, 23, 85,117, 6,177, 1,198, 34,164,224, 73,189, 69, 92,194,162, 70, 20, 45, + 20, 13, 48, 54,162, 83,219, 41,170, 25,247,162,235,240,209, 28,183,125, 52, 18, 94,206,141,206,121,138,204,118,201,113,134, 13, + 84, 81,232, 34,174,122,166,150,233,221,154,169, 8,251,253, 27,158,188,255, 29,190,241,226, 59,188,190,252,156,240,225, 83, 30, +205,119,236, 14, 59,198,155, 47,217,237,239,216,110,239,249,225, 15,254, 18, 66, 79, 63, 12,188,251,206,135,116,105,224,163,143, + 62,226,228,241, 11,180,121,238,175, 94,115, 56,188,228,229,203,159,114,183,207,198,211, 70,233,194,128,142,158,236, 11, 81, 29, +199,167,231, 60,127,239,107, 92, 95,189,230,245,197,119,105,173,129,143,166,142, 96,236,113,154, 80, 75,161, 73, 49, 20,111,215, +179, 9, 61,130,181, 61,157,159, 63,198, 1,119,119,215,228, 86, 81,167, 28,173, 6,230, 92,120,232,102, 77,206,147,196,147,186, + 8, 94,169,251, 74,236, 55,168, 78,204,101, 98,125,188, 90,170, 20, 43, 87,151,183,244,113, 81,107, 98,164,202, 76, 74,157, 21, + 34, 52,168, 82,136, 49, 89,126, 25,248,218, 7, 31,113,180,129, 87, 23,215,116,111,222,176,121,244,132,232, 29, 29,142,169,205, +196,254,200,214, 44,147,162, 67,135,247,129,185, 30,240,173,225, 90,160,174,122, 8,130,211,158,164,149,169, 89, 53,106,244,144, +178, 73,159, 26, 28, 37,103, 67,229, 54,136, 49, 82,162, 67,154,205,115, 41, 98,105, 0,167,164,100, 81,169, 32,208,166, 66,115, +129,161, 63,226,189,231, 31,112,115,121,135,122, 83,145, 2,206, 58,222,245, 1,109,220,216,231, 3,251,233,142,103,239,157,176, +223, 29,184,223,141,111,125, 42,115,110,180, 57, 47, 13,138,102,202, 67,252,146,114,104,139,129, 85,249,238, 39,175,249, 96, 63, +209,173, 60, 95, 93, 92, 50, 28, 29,243,241, 79,127,204,110,183, 35, 28,157,208, 71,219, 63,139,143,150,227,175,213, 14,250, 6, + 49, 6, 54,233,152,156, 51,251,195,129, 60, 78,108,134,193, 98,155,234,144, 46,210,175, 55,200,197, 5,215, 87, 95,114,124,124, +134,247, 3,185, 86, 62,249,241,223,115,124,218,241,222,243,111, 50,214,239,243,249,151,159,162, 8,199,143, 79, 24,245,192, 7, +231, 79,185,222, 86,123,248, 23, 97,200,149,131, 58,182, 1,230, 61,124,240,225,135,220,222,188, 97, 46,123, 86,199,143,233,135, + 13,247,119, 35,218,132, 24,226, 66, 2, 52,122,151, 58,195,246,166, 24, 45,107,174,130,171, 70,132, 20,105,120, 31,192, 5,124, +180,173,121, 67, 44,105,224, 12, 41,236, 66,248,121, 12, 55,152, 31,200, 46, 79, 38,239,231, 37,221,160, 34, 92,223, 92, 65, 83, +198, 60,227,125,229,250,250,154, 39,155, 39,252,254,127,247, 47,248,163, 63,254, 49,127,252, 39,127, 69,174, 6,137, 74,235,206, +106,146, 43,164, 96,181, 86, 50, 11, 62,205,120,223, 81,106, 96,156,182, 52, 7, 74, 71,215,172,174,186,230, 29, 42, 7,179,255, +198, 13, 72,161, 28, 38,186,213,154, 26, 20, 87, 27,222,245, 84,159,209,226,136, 33,209,198, 74,117,158, 20,205,192, 92,197, 90, + 38,231, 84,169,179,224,100,194, 5, 51,155,214,176,181,232,218, 44,148,148, 9, 58, 16,171,145,243, 93,231,144,168,164, 82, 41, + 37, 82,107,181, 65,168,120,220, 88, 16, 28,101,156, 0,165,136, 18,130,210,176, 11,191, 31,123,154,236,233, 86, 3,125,115,212, +216, 56,236, 61, 89, 7, 36, 23,238,227, 30,247,250, 53,174, 21, 98, 50,118, 71,243,208,167,129,191,126,243, 19,126,248,241, 27, + 54,195, 9, 57, 10,174,220,115,114, 22,232,143, 86,180, 41,177,127,255,107,188,247,193, 57, 93,244, 92, 92, 23,154,142,132,251, + 19,210, 28,136,147,210,157,252, 28, 21, 51,102,200,101,180,116, 85,239, 57, 57, 30,254, 9, 84, 70,196, 86,138,109, 41, 26, 27, + 68, 89, 39,255,182, 71,125,173,112,186,129, 71,203, 69, 97,194,241,228, 60,112,244,243,123, 5,211, 20, 9,146,104,135,157, 41, + 63,169, 50,141, 86,214, 20,235,100,134, 78,159, 72,201, 46,142, 50, 46,109,144,210, 44,179, 31,109, 40, 81, 39,132, 96,173,157, +118, 69,169, 56, 49, 12,123, 93,160,232,193,123, 74, 81,164, 86, 82,112,120,183,178,179,214, 7, 91,245,202,178,214,104, 1,135, +176, 58, 77,248,254,148,171, 29,204, 45,147, 58,193,233, 49,174,215,135, 29,191,190,157,122,237, 96,183,195, 79, 84,151,155,231, + 3, 13,110,129,187, 60, 20,127, 44,109,170, 97,249,128,212,182,116,219, 57,103, 21,144,178,236,116, 19,111,177,143,210, 22,203, +106,176,250, 86,156,185,207,195, 98,138,107,139,228,217,212, 66,252, 49,218,206, 88,150,210, 2, 36, 82,171, 55,170,157,218, 30, +191,106,193,171,201,238,178,244, 47,123, 7,218,138, 85,138, 46, 50,123,240, 86, 51,235,196, 17,196, 62,208,213, 57, 98,122,168, +136, 16,106, 14, 6,179,240, 13,173,206, 88,234,209,106, 8, 15, 40,125,151,104,179,185,161, 9,208,185,165,219, 87,156,253,220, + 48,213, 1, 9, 72,140, 52,117,196,234,136, 78, 23,120,141,197,111,230,121, 66, 90, 34,172, 54,124,235, 59,191, 68,201, 91, 14, +119, 35,243,172, 48, 43, 46, 11, 45,121,186,147,133,250,164, 74,203, 35, 57, 31,216,239,110,240, 4,134,190,167,169,231,232,248, +148,190, 31, 8, 33, 50, 87,143, 91, 64, 30, 34, 54,233, 5, 5, 87, 97,162,146,111, 47, 56,121,250, 46, 71, 71, 3,211, 56,129, + 11,246,138,170,162,206, 50,248,121,158,241,213,189, 85,104,188,143,182,115, 70,137, 49, 48,141, 19,151, 23, 87, 28,246,123,154, + 52,134, 85,207,209,209,154,155,235, 91,136,182,139, 15,209,140, 97,213, 23,203, 18, 87, 40,190,224, 18,196, 20,233, 87, 27, 66, + 74, 32,158,253,126,162, 63,179, 86, 57,113,134, 3, 61,121,126, 70,252,161,103, 26,243,219,110, 0, 23, 60,215,183,183,188,120, +113,206,227, 71,199,188,186,218,113,250,232,212,146, 14,189, 67,102,150, 85,210, 68,201,201,144,160,187, 61,190,245, 16, 34, 85, + 22, 14, 65,181,203, 73,244, 70,113,115,189,229,211, 93,238, 56,180, 70, 11, 51,155,152, 40, 89,104, 73,136, 2,157,128, 70, 3, + 49,245,179,167,174, 18,206, 67, 96,166, 91, 37,202, 78,144, 54,226,162, 39, 55,161,185,200,147,231,143,121,252,213, 35,222, 92, +223,144, 98,180,215, 31,195,148,186,102, 74,193, 56, 86,174, 94,237,120,255,131, 71,188,255,252,140,191,255,233, 68,109,205,234, +140,253,210, 81, 32, 15, 29,225, 15,134,177, 98,223,107,121,207, 5, 60,219,253,200,179,179, 83, 82,171,124,246,217, 79,184,186, +190, 53, 78, 2,149,208, 29,211,164,145,130,103,136,199, 72,206,140, 58,146,231, 66,158,103,208, 13,222, 39,164,237,105,205, 92, +219,126, 22,106, 11, 68,151, 88,167, 53,235,245, 17,151,215,215,140,211, 27, 86,235,213, 98, 82, 85,198,237, 1, 61, 19, 3, 72, +181, 70,215, 13, 60, 59,125,143,163,147, 19, 83,229,122, 40,247, 14,124,199,172,133, 54, 55, 62,121, 61,113,183,207,172, 78, 31, +179, 57, 59,227,254,238,150,163,225, 49,155,213,154,221, 46, 44, 21,199,126,233, 30,176,216,166,168, 97,169,173,165,206, 76,149, + 66, 35, 69,165, 76, 6,164, 42,190,226,232, 77,213,195,224, 85, 94,163, 65,109,212, 88, 12, 86,169,236, 9, 88, 76, 83,229,161, +157, 80,145, 96,207, 2,135,227,118,119, 99,178,170,119,236,101,226,242,238, 13,143,223,255, 55,252,230,119,246,252,251,191,138, + 80, 61,131, 27, 24,235,150,210,130, 85, 38,171, 91, 36,101, 33,165, 21,173,121, 66,106,204,181,129,135,212, 85,242,210, 51, 17, + 21,232,140, 83, 97,240, 41,187,240,145, 50,243,190, 24,232,200, 27,240,167, 57,161,142, 7,162,122, 98,223,227,197, 49,141,149, +208,153, 34,170, 98, 28,254, 86, 51, 33, 23, 66,108, 32,137,198,204,152,133,164,112,104,247,168, 6,214,199, 3,229,208,136, 68, +170,120,196,239, 45, 25,161,142, 89, 43, 65, 38,196, 7,107,191, 11,230, 5, 82,215,227,117, 54,186,102, 29, 97, 8,212,170, 84, + 49, 19, 92,201, 43,188, 63,216,101,179, 10, 46, 30, 33,174,161, 85,232, 99, 99, 44, 30,225, 64,149,196, 97, 44,220,186, 27, 74, + 27,145,228,233, 46, 60,105,117, 76,157, 29, 63,250,248, 75,130,239,136, 36,124, 84, 98, 20,214,125,143,235, 3,157,143,124,249, +226,125, 78,159,156,178, 94,247,124,250,234,158,203, 47,223,176,241,214, 52,169, 26,255, 9, 19, 94,171, 69, 88,133, 96,205,105, + 89,232,207,126,126, 41,168, 2,253, 63, 2,201, 59,177, 60,255, 63,254,117,152,148,253,253,158, 41,239, 17,153,105, 1, 68, 38, + 27,150, 22,122, 92, 81, 35, 77,186, 42,168, 86, 74,141, 52, 58,148,140,148,153, 84, 60,174,115,140,171, 23,212,195,151,168,236, +169, 83, 37,116,142,130, 95, 90, 8,109,109, 27, 68,168, 96,170,138, 47, 84, 45, 68, 99,177, 98, 87,219,104,116, 87,113,156, 4, + 71, 23,142,144, 34,244, 2,210, 41,187,237, 37, 43,231, 77,169, 13,139,217,173,169, 29,186,193,189,141,149, 63,112,117,168,106, +192, 23,151,156,201,235,203,254, 88, 68,209,217,128, 43,205, 41, 49,184,101,234,118,164, 96,125,198, 56,203,111, 59,103,187,121, +197,150,224,226, 28, 62,218,238,184, 70, 37, 6,147,172, 61, 17,167, 70, 87,162, 45, 44,118, 35,200, 24,223,221, 45,209, 53,177, +105,218,121,171,141,141,222, 94, 44,239, 44,150,101, 14,216,229,129,160,144,194,207, 27,179,130, 51, 88,189,138, 29,216, 62, 90, +156,207,163,132, 5, 56, 19,162,163,102, 53,186,216,208, 25, 25,174, 42, 77, 23,153, 63, 6,107,171, 67,145,234,151,222, 92,195, +185, 58,183, 84, 16, 56, 71,205, 14,159, 34, 82, 77,166, 9, 62, 49,205, 51,251,195, 76,109,247,252,221,159,255, 95,120,127,202, +227,179, 15,249,230,135,239,211,157,126, 11,230,204, 63,252,236,111,248,226,243,159,218, 5, 37, 24,173, 78,176,250,218,224,148, +146,149,220, 42,187,221, 13, 78,133, 46, 13, 12,199, 39,196,193, 58,229,131, 58,124, 81, 90,172,196, 96,249, 4, 31, 58, 78,142, + 31,115,255,213,143,168,173,225,147,193,104, 84,221,178,159, 15, 20, 45,180,102, 26, 77, 67,241, 45, 25,198, 84, 11, 33, 69,138, + 20,242,238,142, 92,205,109,122,178, 94,225,117,233,155,214,229, 77, 25, 28, 49,121,219,105, 70, 15, 41,208,135,142,121, 62, 16, + 66,228,244,100,195,106,221,113,127, 51, 18,186,142,205,201,192,106,125,130,106,162, 76,149, 62,246,196,148,104,227,193, 28,192, +115,229,197,251,207,153, 51,140,219,145,240,232,132, 95,248,250, 55,121,255,197,115, 42,129,150,173,141, 43,132, 21,178,228,212, +125, 53,153, 90, 66, 49,198, 53,141,190, 79,196,154, 49, 42, 66, 91,222,151,129,105,223, 72,100,170, 52,196, 67, 65,104, 26,240, +115,165, 14,246, 51,225,144, 45,183,174,214,122,215,173, 19,117, 20,230, 41, 83,114,197, 71, 71,140, 3, 94,246,200,184, 39,132, +196,175,254,242,175,242,211,143,127,200,151,175, 47,205,108,234, 61,168,221,230,141,188,159,216,141, 7,212, 61,166,219, 12,116, +125,100,220, 90,150, 85,162,105, 92, 49, 44,229, 37,234, 44, 18,186, 16,201,112,198,115, 32,192,118,170, 76, 63,187, 49, 73,222, +111,109, 13,161,206, 12, 92,165, 18,131, 65,159, 98, 80,180, 11,116, 50,176, 45, 66,206, 19,210,172, 33, 77,107,163,230,145,146, +108,114,112, 88,158,221, 71,243,195,168, 40,173,206,236,246,133, 20, 34,155,245,154,146, 65, 98,130,206, 86, 79,143, 78, 79, 89, +159,111,200, 45,112,249,229, 4, 76,164,238,136,169, 4, 98,177, 34,197,251,253, 72,107,194,166, 31,120,247,233,251,124,255,213, + 95,179,219, 94,177, 62,123, 68, 63, 28, 51,239,175, 41, 11,163, 61, 5,255,182, 38,215, 47,228, 69,187, 92,154,163,127,154,171, +117, 54,121,165, 86,165,204, 35, 93, 26,232,215, 27, 52,207,204,243, 72, 76,105,233, 51,136,132,104, 80, 27,188,173, 7,213, 9, +177,115,120,215, 64, 13, 20,226,189,209, 47, 93, 12,184, 0,100,229,255,249,211,239,242,141,111,252, 33,223,248,232, 3,126,227, +215,191,193,231,175,110, 64, 2, 55,123,199,213,253, 22,239, 19,174, 5,130,159,168, 94, 81, 9, 36,223,200,217, 36,115, 92, 66, +139,165, 76,130, 4,212, 85, 66, 77, 11,145,243,222,156, 73, 30, 92,233,241,174, 81,212,122, 48,172, 3,161,144, 98, 7, 41,146, +141, 61, 12,222,211,180,218,228,217, 58,154,179,116,131, 56, 7,179,165,108, 96, 68,177, 21, 30,173,208,245,199, 6,202,241,133, +221,126, 71,148, 8,189, 67,199,138, 58, 71, 93,247,232, 44,148,118, 32, 49, 16, 93, 71,174,138, 31, 42,147,100,214,206, 17, 66, +199, 30, 97,156,246, 8, 35,177, 83,154,207,248, 18, 33,154, 34,229, 68, 40,226, 16,118,212,220,209,122,161,102,143, 20,207,208, + 57,114,236, 13,193,155,119, 20,103,159, 5,241,224,239,154,165,142, 90, 71, 77,208,213,202,205,106, 96,170,149, 21,137,207, 62, +121, 69,110,158,181,235, 16,221, 51,181,201,152, 36, 67,199, 31,254,201, 95,243,221,159,188,207,240,244,152, 81, 3,135,171, 43, +158, 61,118, 28,159, 28,155,177,117, 23,120,247,228, 5, 71,105, 73,105, 21, 8,255,168,237, 69,108, 51,252, 79,126,221,238, 51, +247,187, 59,124, 45,204,211,132,232, 1,241, 51, 77, 60, 99, 50,229, 5, 49, 19,115,240, 17,215, 39, 14,251,137,206,175,240,206, +145,139, 69,223,158, 61, 61, 34,156,127,157,253,229, 5, 50, 10, 93, 12,180,150,141,159, 17, 61, 84,123,158, 55,247, 64, 66,141, +111,227,228,213, 59,188,184, 37,154,108,207,184, 92, 10,243, 78,105, 23, 23,108,111, 51,251,121, 71, 24,149, 94,236,182, 18, 81, + 79,109,197, 36,170, 5,227,170, 11,140,196,171,237,174, 68, 22,103,131, 3,169,182,215,118,222, 19,156,183, 82,131, 96,127, 55, +169,145,169, 80,136, 24, 69, 45,250, 98, 84, 58,162, 33, 76,189,229,222,173, 43,221,234, 15,181,139,200,210,122,101,197, 42,246, +128,116,120, 51,122, 5, 71,109,101,217, 93,216,161,236,124, 64, 60, 36, 13,136,218,215,170, 90,249, 8, 78,150,138, 73, 89, 72, +107,160, 90, 77,254,240, 17,239,236,239, 58,191, 52,199, 57,107,116, 11, 41,162,190, 82,150, 56, 86, 12,145, 20, 42, 77,236, 80, + 14,173, 48,138,218, 5,160,202, 82,133,106, 32, 30,231, 33,183,182, 16,234, 2, 1,235,164, 87, 2, 18,148, 96,153, 65,251,186, + 87,238, 47,111,248,248,147, 47, 64, 28, 63,253,201,247, 9, 49,178,234,215,252,229,122, 67,191, 57,229,217,227,247,233,163, 99, + 62,220, 27, 34, 50,215,165, 24, 70, 30, 20,110,115, 41,107, 88, 12, 88,142,167,167,199,184, 20,201, 18, 25,210,128,119,142, 70, +195,135, 53, 82, 71, 90,203, 56,141,244,189,227,243, 87,159,227,151, 53,137, 69,157,150,127,183,131,226, 45,165, 96,210,149,241, + 8, 68, 45, 97,112,122,116,134,211,198,118,220, 83, 23,201,242,252,244,140, 60,238,104, 98, 13,114, 78,109,218,113, 93,135,206, +198,237, 71,149,171,114,203, 48, 56,230,169,177, 89,109,120,124,122,194,213,229, 29,189,172, 24,226,192,250,120,195,201,233, 17, + 58, 59,180, 38,214,253,138,157,155, 80,132, 34,133,175,127,244,132,243,205, 17,127,244,103,127,205,227,119,206, 57,123,250,158, +153,158,202,196,186, 37,180,247,180,216,153,225, 43, 23,156, 84,112, 61, 45, 85,218,164,196, 52, 80,154,229,249,155,247,228,113, + 38,249, 72, 72,150,162,104,181,226,131, 73,145,101, 20,124, 20,154,247,150,247,167,209,165, 72,169,224,250, 74, 8,145,150,103, +186,206,145, 91,160, 56,179,164, 4, 32,197,222, 46,146,115, 68,186,202,147,231,231,220,239, 14,220,221,236, 77, 74,246,142,152, + 58, 68,132,185, 21,214,213,113,115,127,199, 87,111,182,124,240,238, 35,222,123, 46,124,246,217,107,198,210, 56, 62, 90,241,222, +251, 79, 72, 78,249,248,227, 87,108,247,197,248,229, 34,248,206,226, 95, 18,172, 13, 81,100,121,207,247, 70, 73, 84,177,124,252, +118,183,231,228,228,132,105,202,236,247, 91,214,171, 21,155, 97,195,106,189,226,118,127,224,126,123, 67,203, 51, 57,207,172,214, + 71, 12, 67, 79, 85,152,166,130,248,204,118,159, 9,195, 96, 40,232,250,128, 49, 21,124,240,212, 92, 80, 85,162,139,132, 46,176, + 90,119,228,195,204,237,224,248,193,255,247,191,115,118,124,204,119,126,227,247,168,177,153,211,252,160,220,220,237,136,109, 75, + 47,149,231,207,158,243,233,201, 49,119,219,107,134,205, 49,155,126, 69, 25,205,225, 27, 30,184, 19,174, 45, 41,155,133,143,190, + 20, 54,181, 34,246,236,146, 96, 49,183, 24, 81,109,156,158,157,243,225, 47,254, 2,173, 84,238, 46, 46,120,245,250, 75,187,228, + 47, 41,141,232, 2, 56,107,138, 12,178, 36,104,130,135,154,145,197,236, 41,197,208,216,113, 25, 10,126,242,242, 75,254,221, 31, +252, 33,255,195,127,255,223,240,175,127,239,183,248,223,254,224,143,249,233, 39, 95,176,234,123,126,247, 55,126,145,191,255,228, + 75,238,118,123,212, 69,124, 54,169,181,116,205,202, 96,212, 17, 58,104, 69,240,213,227,123, 91,143,145, 13, 33, 42, 2,212,134, +174, 3, 97, 50,222, 66,138, 54,245, 6,215,152,179, 48,197, 76,202, 16,162,152, 9, 14,200,135,204,106,216,160, 28,144,108,241, +204,234,173,207,162, 77,158,160, 13, 92,134, 85, 71, 44, 3,165, 56,202, 52,226,186,137, 46, 37,100,154,201,147, 95,148,198, 74, +167, 30,241, 11,135, 1, 67,145,102,157, 88,183, 30, 25, 51,163, 43,196,184, 54,111, 81,174, 40,246,222, 71, 51, 49, 28,145, 73, +168,220,195,242,204,100,104,228,124,143, 76, 64, 58,193,215, 61,186,180,252, 57,146, 93,198,194, 72,110, 19, 82,123, 86,238,148, + 42,247,212,114, 64,231,200,236, 34,174,238,113,140, 52,183, 98, 47,141,224, 26,247,218,177,238, 11,226, 61,109, 82,122,223,248, +209, 87, 35,255,240,197,231, 68, 25, 40,209,227,147,208, 77, 21,215, 25, 83, 36,196,192,159,255,237, 51, 78, 54,103,244,113, 67, +158, 43,239, 60,143, 60,127,126,202,217,201,138,235, 61,156,169,231,131,143, 78, 89,175,108, 15,127,119, 53,242,248, 28, 86,238, + 93,182,183, 29,165,238, 80, 55, 81, 14,102,152,172, 65, 17,103,171,151, 67, 45,184,193, 19, 82,143,182, 9,231, 76,237,142, 73, + 57, 62,234, 24,125,135,140, 7,186,216,168,206, 8,161,170, 86,166, 86, 90,229, 80, 76,249,114,222,210,104, 97,233,215,200, 40, +205, 89,218,203, 98,209, 1,239, 61,183,110,195, 15,238,143,185,184, 58,144,184,183,245, 33,137,156,242,178, 83,199,204,106, 14, + 43, 61,104,117, 65,169, 58,193, 58, 81,252,226,124, 23, 51,130,121,139, 90,225, 13,103,106,249,117,143,249, 60,244,173,123,221, +187,182,160, 75,141,176, 70,176,195,214, 97,123, 74,231,148, 20,149,169,153,124,150,188,160,205,242,166, 42,129,232, 42, 4,147, +216,189, 26,247, 90, 84,169, 77,232,240, 84, 10,179, 40,209, 57,130,179,189,112, 85,197,249,246,143, 84, 6,115,203,187,176, 92, +131,154, 44,172,230, 72,169,149,228, 59,130,199,130,255,181, 17,156,253,191,145,165, 68, 38, 38, 84,133,105, 55, 25, 16,192, 27, + 24, 71,164, 49, 31, 26, 26,194,242,189,173,207,220,227,104,209, 26,150,156,218,110,194,227,168,206, 81,107, 99,149,220, 50,100, +153,210,161,222,176,164,222, 57,106,205,108,183, 51,119,219,107, 46, 94,253,212, 34, 72, 97,153, 22, 44,137, 99,182, 69, 93,242, +231, 30,139,249,137,209,252, 66,151,104, 75, 12,198,227, 40,206,227,187, 68,223, 29,243,173,175,253, 38, 87, 23,255,192,229,182, + 50, 29, 26, 55, 87,111,222,198,226, 4,139, 79, 4, 18, 99, 57,216, 52, 17,108,117, 98,105, 7, 97,158,103, 30,157,156,112,126, +210,113,121,121, 71,205,153,138,114,188, 26, 56, 59, 59,225,179,221,173,169, 48,162,224, 26,189,179,104, 18,193,177, 82,184,217, +223,113, 59, 70,186, 59,199, 23, 47,191,199,250,244, 20,161,231,236,232,148,224, 29,111,174, 38, 86, 39, 35, 71,231,153, 24, 18, +125,215,113,126,118,204,213,205, 29, 49,116,116, 93, 96,191,159,184,189,219,241,230,250,128,115, 3, 71, 67, 34,103,161, 75, 66, + 92, 41, 99,174,180, 67, 35, 97,128, 23,240,136,107,118,160,251,158,220, 10,110,174,248,206,145,151,162,154, 74,160, 22,135,104, +165,115,129, 92,148, 42,145,192, 76, 83,103, 85,184,213,211,187,140,247, 27,196, 87,146, 15,214,248, 85, 50,115, 8,212,234,169, + 84, 98, 3,105, 5, 15,246, 80,235, 26,119,215,111,208,185, 90, 78,122,121, 87, 90, 97,144,121, 48,168,149,219,109,227,254,135, + 95, 49,151,194,217,215,122,126,225,235,207,248,206, 47,127, 72, 19, 97,123,121, 75, 63,172, 56, 76, 35,171, 85,199,221,118,162, +235, 28,171,213, 64,174, 22,241, 4, 65,131, 85, 1,227,148, 92,140,116, 24,131,149, 63,156, 14,194,111,255,214,115,190,251,195, +151,124,254,241, 61,231,167, 39,108,206,143,209, 93,131,187, 45, 55,215, 23, 56,224,217,243, 15,120,250,228, 9,126,232,113, 10, +165,121,166,125, 70, 28, 28, 31, 63,198,135,142,237,213, 53,227, 60,162, 78,104, 98,245,162, 27, 10, 29, 29,193, 7,178, 10, 77, + 42,218, 38,174,183, 23, 56,175, 76,203,238, 58,111, 51,187,220,152,198,215, 28,201, 29,179,175,172, 86, 3,239,188,251, 1, 63, +251,241,223, 51,221,223, 18,195,192,241,241, 19,106,109,204,243,110,225, 95,152, 99, 61,245,150,162,152,218, 76,205,149,232, 61, +195,250, 17,247, 55,215,132,152, 8,209,153,114,161, 2,185,225, 90,229,249,187, 79, 57,204, 7,110, 46, 46,113, 49, 44,253, 20, +102,116, 12, 78,241,193,234, 75,141,157,241,144, 16,192,166, 97,167, 56,177, 84, 78,169,194,238, 80,112,195, 49, 79, 94,124,147, +211,211, 63,225,227,159,252, 3,191,255, 59,191,195,127,251, 95,255, 43,254,237,255,241,103,252,223,127,252,183,236,231, 76, 31, + 29,234,102, 82, 1, 23, 55,148,166,212,253, 12, 71, 61, 93, 53,167,247,216,132,193, 71, 84,246, 20, 73,118,200, 29, 4,245,141, +228, 19,115,174,184,208,104,179,149,217, 36,122,187,208,104,177,127,107,138, 16,132, 57,239,232,186,132,248,128,212, 70, 16,168, +190,225,235, 1, 73,130,106,194,207,149, 18,193,139,153, 46,141,198, 54,209, 69, 67, 78,183,185, 88,145,200, 65,112,233,200,208, +166, 34,148, 58, 82,235,196,168, 5, 52,224,155,103,150,108,165, 77, 46, 17,210,162,154,102,101,102,143, 58, 79,168,130, 23, 83, + 12,124,105,212, 41, 35,206, 19,219, 29,226, 29, 99,158,168, 18,112,105, 77,146, 25,157,150, 62, 14,151, 57,184, 59, 82,236,241, + 97, 99,245,220,146,153,243,150,147, 62, 81,230, 12, 65,168, 49, 18,202,196,174, 9, 65, 18, 62,194,174, 84, 98,237,113,117, 75, + 23, 38, 92,245, 52,129, 67,173, 48, 21,240, 27, 84, 50,183, 23, 87,104,141,164,116, 6,173,241, 31, 86,149,212, 26,126, 72, 16, + 54,116,181,113,118,116,198,209, 42, 82,188,242,249,171, 87, 28,118,111, 44,101,209, 12,249,186,218,156,144,206, 79,152,167,198, +237,216,113,127,123, 65,140,183,196, 89,209,113,161,109,182,133, 14,169, 21, 21,232, 66,207, 62, 13,182,238,197,153,122, 92,172, + 37,148,100,117,227,169, 91,145,235,193, 6,204,210,104, 78,222, 22,143, 65,160, 58,243,126,149, 92, 24, 2,252,202,215,223,229, +163, 95,249, 85,182,223,191,225,245,205, 15,168,108, 57, 28,148,239,124,116, 66,180,124,186,205, 99, 34, 75, 87,185,122, 50,178, + 62,150, 0, 0, 32, 0, 73, 68, 65, 84,104, 30, 9, 10,161, 17, 30, 36,243,229, 86, 27,253, 82,212,178, 84, 64, 6,171,164, 65, +189, 91,200, 89, 86,198, 16,150, 51, 84,157,208,180, 46, 82,167,185,202, 69, 20,213,194, 84, 18,162,141,212,117, 68,231,201, 82, + 76, 74,119,139,235,221, 5,203, 88, 58,147,195,194,242,176, 86,175,214, 92, 38,230,212,111,106, 21,142,193, 89, 93,163,149,180, +216,222, 13,239,113, 62,217,135,116,153, 66,113, 74,212, 96, 55,244, 20,232,106,163, 72, 35, 75,160,239,226,219, 98,122, 39,141, +134,152,105, 40,218,234,161,149,165, 14,114,233, 92, 71, 28, 89,204,193,152,212,246,210, 72,195,165,128,115,205,194, 51, 75,171, +214, 52,122, 82, 48,232, 77,242,209,140,106,216,247, 84,191,176,146,188, 93, 4, 68, 45, 50,231,130,201,161,194, 67,111,160,224, +189, 25,255,140, 96,100, 32,136,237,246,192,163, 39,239,144,142,158, 50,116,167,244,157, 50,142, 35, 45, 59, 66, 92, 49, 78,153, +117,223,243,249, 39,223,227,112, 56,224,221, 2,243, 88,138, 66,156,119, 72, 51,220,109,195,225,213,222, 92,173, 52, 30,157,157, +242,248,244,132,233, 48, 51,150,106,242,100, 85, 86,171, 13, 49, 5,198,253,193,202,103,180,226,194, 64, 58, 90, 27,115, 62, 42, +179,131,171,155, 29, 78, 31,113,177,187,226,110,119,203,246,176, 35, 6,199,249,163,119,108,189, 83,132, 79,126,252, 9,175, 95, +126, 78,236, 2,169,239,185,189,185,103,179,142,116,190, 35,118, 29, 87, 55, 91,126,233, 87,127,141,127,253,228, 67, 54, 39, 3, + 49,109,240, 13,138,142,236, 23,251,168,132, 74,158,227,162, 0, 57,163, 80,141, 86,195, 27,122, 40,181, 99, 26,183,136, 15,184, +190, 51,206,123, 81, 90, 45,236,151,154, 79, 97,178,221,170, 68, 66, 21,122,103,209,149, 97, 21, 65, 26, 53, 43, 41, 84, 52,118, +148,234, 8,173,218, 45,187, 55,121,124,174,224, 53, 82,202,150, 24,133,185,154, 63,163,137, 95,164, 63, 65,117, 90,208,200,158, +220, 28, 20, 51,194,125,117,117,207,175,252,230, 55,248,231,255,209,175, 81,220,158,251, 87, 23,252,205, 95,189,228,199, 31, 95, +114,125,127, 32,132,192,106,213,153,126,146,205,216,229,150,124,169,115,130, 52, 93,100, 91,161,235, 29,155,213, 49, 90, 39, 94, + 60, 61,230,183,126,245, 63,225,127,250,159,255, 16, 23, 59, 82,234,136,105,135,147, 74,215,117, 60,123,250, 46,199,143,158,144, +124, 66,180,195,105,166,150,145,105, 30,141, 47,161, 48,244, 39, 12,239,118,236,111,239,217, 30,238,161,217, 42, 96,142,137, 77, +127, 68, 23, 60,243, 56,114,123,125,205,251,167,194,123,143,158,160,171,129,150, 71,170, 15,204,115,230,240,230, 11, 86,171,107, +186, 77,160, 52,207,197,245, 27, 94,126,241, 25,185, 89,129, 76, 63, 56,186,225,132, 50,110,169, 85,173,156,197,131,208,240,101, +198,117,129,227,180,161, 36,207,254,176,227,249,139,247,121,242,244,140,151, 63,251,194,220,193, 46,160, 52,162, 55, 72, 75, 41, +194,166, 95,115,161, 21,223,108,213,168,234,240, 33, 18,186,100,123,236, 90,233, 98, 68, 80,178, 84,130, 6,171,157, 86,181,207, + 92, 48,186,230,103,175,174,249,155, 63,253, 30,191,255, 95,189,207, 7,239,189, 64,154,227,114,119,197, 52,222, 51,132,153,111, +125,227,140, 87, 95, 22,182,179, 41,135,179,100,122,217,219,231, 41,122,194,100, 57,241,185, 57, 6,239, 41,174,217,154, 44, 20, + 42, 38, 79, 35, 7, 90, 72, 84,231, 8,185, 18, 53,225, 59, 71,106, 25, 21,225,144, 43, 3, 17, 95, 4,219,228, 8,121,116,144, + 44,110, 89,180,226, 66, 34,231,137,212, 15,120, 87,104,234,161, 42,161, 21, 66,191,226, 48, 41,190, 84,220,176,194, 45,233,159, + 24, 61,206, 37,144, 70,150,145,134,103,192, 17,151,210,169,224,148,234, 49, 85, 84, 4,169,153, 54, 26,134, 52, 68, 65,203, 64, +240,145, 70, 91,148,216, 2,121, 99,220, 19,183, 36, 3, 52, 26, 11, 95, 14, 12,193, 49,231,106,113,216, 38,184,126,192,171,103, + 62, 20,196, 93,209,121, 7, 45,225, 80, 14,226, 44,127, 63, 23, 36,103, 92, 74,104,203,228, 90,208,232, 72, 7,143,180, 66,150, + 3, 99,112,132,190,199, 77, 66, 46,197, 88, 12,245,158, 92,196,226,168, 62, 80,154,195,133,145,178,159,200,179,162,247,205, 98, +146, 53,240, 38, 5,100,204, 20,167, 72,189, 71,155,146,101, 6, 38, 66,181,181,136,177,254, 29,234, 18, 41, 52,196,203,114, 62, +154,162, 73,179,104,181,184, 64, 45, 19,251,105,226,182, 93, 80,117, 38, 54,243, 93,169, 95,222, 91,162, 75,180,119,103,195, 21, + 11,221, 52,218,115,201,163,248,174,210,106, 88, 86,164,137, 80, 38, 62, 56, 31,248,232,235,142,191,252, 65, 69,182, 74,241, 10, + 97, 98,181,122, 70,120,250,228,236,127,124,216, 33,249,101,191,174,216,116,230, 22, 34,153, 42, 6,112, 89, 14,228,232,140, 64, +231,150, 47,122,239, 76,218,194,166,114, 22, 41, 95, 22,200,140,143, 14,151,146, 73, 18,206,166,210,214,108, 82,101,233, 74,126, + 27,145,115,118,113,112,222, 78,170,135, 41,223,249,128,136,253, 27, 2,222,118, 48,206,155,187,220,179,100, 79, 77,117, 72,206, + 72,105, 52, 5, 93,140, 96,210,136,203,254,209, 45,217,247,148,122,124,176,195,255,225,255, 34, 44,187, 22,177,216, 90, 69,112, +206, 19,176, 15, 58,206,126, 47, 26,208,100,135,225, 16,194, 2,239,193, 34,121, 64,145, 10, 85,150, 88,160, 97,108,131,127,160, +239,121, 82,234, 56, 57,217,112,114,188,102,189,217,112,116,212, 19, 22, 68,126, 45,229, 45,159, 94, 45,106,176,168, 33, 15, 36, + 39,219, 49,226,121,155, 90,112,206, 49,142, 7,246,247, 91,110,111, 47,217,110, 47,223, 2, 60,208, 70,107,133,195,118, 66,117, +226,245,197, 75,118,251,145, 16,252, 91,192,140,226,137,113,201, 0, 55,161,182, 70,105,149, 90, 50,169, 75,124,253,189, 23,164, + 46,240,250,230,150,105,158,109, 9, 21,192, 69, 83, 41,238,111,110,109,186,240,129,174,219,240,232,201, 57,143, 30,111,168,213, +110,184, 55,151,183, 92, 92,191,225,238,246,146, 38, 66, 80,177, 98, 56,111,142, 79,245, 54, 25,205, 99,102,191,223, 49,238, 15, +196,228,233,134,200,208,245, 4,129, 34,194,253,221, 45,121, 60, 48,229,202, 97, 63, 50, 79, 35,243, 56,147,115,163, 79,129, 46, + 26, 3,124, 86,112,174, 26,228, 72, 33,123,123,216,104,205,246,158, 81,165,200, 76,203, 21,154,185, 81,173, 67, 36, 27,101,208, +121, 82, 39,203,197, 81, 8, 39, 29,165, 9,210, 10,235,206, 25, 37,111, 22,235, 2, 16, 91,133,116, 17,124, 49,131,232,110,127, +107, 37, 16,206,113,241,230,150, 55, 87,247,102, 18,117,142,210,228,193,110,186,116,134, 87,112,198,214, 15, 17,190,249,205,231, +188,122,125,193,159,253,233,247,152,246, 19, 18, 2, 62,121,230, 82,169,217,214, 56,165,180, 37, 45, 18, 12,209,178,172,154,156, + 42, 62,120, 98, 76, 4, 31, 57, 62,234,216,239, 38,126,246,229, 37,207, 30,111,120,245,213, 53,215,119, 19, 39, 71, 27,154,204, +188,185,185, 98,189, 62,225,201,163,119,168,173, 80,201,248,106,109,141,187,105, 94,168, 86,129, 82, 27,170,197, 46,218,193,170, + 81, 75,153, 57, 63, 57,227,249,251, 47,152,155,112,245,250,134, 90, 51,231,231, 79,232,215,231,124,251, 91, 95,231,244,236, 9, +115,109,236, 15,123, 46,191,252, 17,167,113,203,215, 63,124,206,209,209, 17,115,110, 28,110,111,249,248,227, 31,219,206, 30, 83, +174, 28,176,219,221,210,202, 72, 23, 59,235,105,192,179, 26, 18,167,231,214, 15, 31, 99,164,136,103,123,119,201,215,190,254,109, + 78,207,207,184,189,189, 67,242, 76,151, 34,103, 79, 30, 3,106, 69, 45,120, 46,111, 46,205, 83,210,204, 64,231, 88, 76,109, 84, + 91,215, 53, 56,228,153,150,179,197, 89,101, 25,248,107,102,206,153,176, 0, 64, 62,123,125,193,123,207, 31,209,201,138,191,248, +155,239,179,221, 11,231,231,143, 57,236, 70,222,125,178,225,209, 81,207,253,190, 82,114,193,171,241, 32, 92,140,184, 32, 36,215, + 44,137,211,236,178, 47,218,204,189, 95,172, 58,182, 53, 59,228,188,139,182,182,107, 38, 49,135, 16,201, 84,164,130, 11,145,210, +148, 38, 25,245,198, 21,175,205,122,209,209,102,102,212,230,150,134,198,136,151, 70,109,160, 45, 80, 69, 81,205,132,133,169,238, +131,183, 46,239, 32, 52,137,148, 50,227,162,121, 10,172,119,126,180,125,183,243, 20,105,204,197,186,191,141,222, 55, 45,171,208, +106,230, 77, 5,105,142, 41,239,161,101, 90,155,161, 75,168,152,219, 95,219,132, 74, 94,138,141,132,178,175, 52,167,136,236,169, +174,153,239,200, 25, 75,189,201,126,121,254,100,186, 0,101,222, 82,164,216, 65,216,242,162,250, 6,170,100, 74, 62, 32,109, 70, +171,149, 83, 77,121,164,140, 35,173, 40, 62, 31,112,174,162,117, 54,133, 88, 26,181,140, 86,137,218,238, 40,211,222,160, 97, 8, + 77,118, 84,201,150, 74,104, 35,218, 50,170, 51,193, 21, 84,178,189,142,206,218,113, 28,106,117,202, 1,180, 85, 18,166, 80,149, + 86,236, 92, 91,210, 43,161,115,104,141,220,108,247, 28,238, 63, 5,217, 25, 33,212, 5, 26, 98,112, 44, 59, 44,236, 57, 44, 86, +121, 45, 90, 22, 86,129, 41, 92,190,197,229, 76, 21, 40,194, 32,153,255,244,215,126, 25,121,231,159,241,119,223,251,130,122,253, +247, 4, 13, 68,148, 95,253,198,115,226,219, 61,186, 44, 13, 70,206,118,190, 44,102, 51, 59,214, 23,201, 24,165,115, 75, 60,235, +193, 96,176,208,111,204,198, 98,121,111,195,199, 26,228,194,135, 37, 87, 90, 27, 69,149, 62, 26, 0,197, 57, 19,147, 85,109,199, + 25,151, 82,146,164,202, 92, 29,174,179, 55,164,168,218, 14,205,179, 20,202, 68,188,183, 9,179,105,163, 22, 33, 68, 59,148,157, +211, 37,183,186,220,238, 69, 44, 67,157,108, 10, 53, 31,151,237, 51, 13, 39,219, 72,193, 32, 39,101,201, 47,199, 96,145,152,172, + 75,159,185,154,193,166, 4,183, 84,209,154,129,197, 59, 71,203, 13, 31, 19,205, 27,100, 63,122, 99,107, 87,215, 8, 41, 25,116, + 0, 51,199,181, 37, 62,244,240,103,196,195,230,232,136, 16,237,208, 73, 41,218, 26,160, 9,227,161,112, 24, 15,236,199, 3,135, +105, 98,158,170,237,201,154,233, 34,110, 57,236,189,149, 80, 45,157,244,182,163, 41,109, 70,199,153,105,127,203,221,229,203,133, + 16, 20, 9, 33,112,122,246, 30,239,190,243, 28,173,198,242,143, 62,226,122,123, 56, 7,239,141, 85,175, 15, 78,225, 5,157, 25, + 34, 39, 71, 39,204,211,204,253,152,153,230,250,118,117,208,117,107,130, 31,120,115,241,134,237, 97,178,168,163, 26, 45,201,249, +128,215, 64, 8,142, 86, 71,166,177,224,156, 29,144,195,106, 69,183,238,153,166, 76, 45,150,221,174, 53,155,236,159, 28, 94, 34, +157,119,116, 36,230, 89,217,202, 76,138,158,182,107,220,221,155,195,124,211,223,211,109, 58, 60,118,128, 37,239,217,172,143,120, +246,238, 51,222,121,231, 49, 95,123,241, 53,126,246,241, 75,164, 76,196,174,224,102, 53,154, 26, 13,143, 48, 21,129, 69, 41, 73, +189, 25, 32,107, 19, 51,246, 45, 20,187,164, 61,141,108,135,113,105,132, 98,135,240, 84,237,193,239,165, 82,164, 48,183,198, 42, + 88, 42,130,224,136, 46,112,191, 29,185,157,175, 88,133,142,152, 28,165,152, 99,221, 7,191,168, 69,182,162,177,155,160, 67, 74, + 69, 81, 86,177,227,246,245, 61,223,251,201,103,188,252,244,146,211,227, 35,190,249,237,119,120,252,206, 9,207,198, 19,246,119, + 35,181, 61, 16, 20, 43, 84,107, 51,116, 97, 1, 5,133, 37, 65, 80, 27,177, 11, 68,191,226,120, 45,220, 92,237,248, 95,254,215, +191, 96, 63, 79,164, 24, 25,190,253,109, 66, 23,240, 18, 8, 41,112,123,184,167,115,129,225,104,197,102,125,206,201,211, 71,188, + 72,158,195,205,200,188,223,115, 56,220,177,155,247,228,189,210,170, 82,106, 49,252,113,104,108,134,142,117,255, 24, 93,159, 82, +238,183,100,153,185,159,111, 57,147,247, 24,101,203,184,223,242,230,226, 51, 98,190,226,195,239,252, 18, 71, 39, 1,169, 43,134, +254,192,217,147,167,252,194, 55,127,137,195, 97,207,245,213, 21, 37, 79, 28,109,206, 56, 26,142,185,159, 38,178,206,116,206,145, +186,142,212, 69, 66, 13,132,181,195, 53,161,239,123, 14,251,145, 79,126,250, 99, 75,157, 16, 88,159,157,112,250,244, 41, 87,151, +151, 52,245,244, 93,207,106,181,102,221,173,201, 50,154, 7,161, 46, 7,185, 58,164, 90, 49,149, 58,165,213,106, 23, 59,171,247, +192,135,142, 95,254,214, 51,142, 54, 43,190,247,131,151, 52,173,124,245,250,130,127,251,239,254,144,127,249, 59,191,193,147,119, +207,248,244, 71, 23,252,240,239,190,207,211, 23,239,240,249,103,175,248,207,255,197, 63,227,228,236,140,191,252,171, 79,184,157, + 22,124,109,109, 54,113, 15,107,252,221, 22, 31,102, 90, 14, 22,188,142,230,227,199, 53,195, 42, 87, 71, 45,149,208,139,145, 32, + 81, 74, 25,241,222,227,134, 64,173, 75,169, 82,112,248, 50, 66, 21,114, 45,244, 46, 65,112, 20,105, 11, 74, 55,178, 10, 22, 77, +213,160, 52, 9,132, 32, 4,177,122, 73,117,145,156, 27,193, 25,147, 33, 12, 66,136, 22, 49, 46, 57,144,232, 77, 9,212, 74,144, + 3, 46, 68, 58,140,113, 78,155,145, 4, 65, 27,161, 84, 83, 69, 92,161, 53, 33,121,227,150,180, 10,174,217, 37, 73,253,194,142, +104, 80,138,173, 55, 92,205, 20,109, 4,237,173, 23,195,141,212, 52,211,251,101,197, 58, 78,248, 80, 24, 75, 66,212,227,213,131, + 31, 16, 85, 10,153,228, 43,174, 21, 40,142, 22,205,120,216,230,131,109, 88,179,165, 49, 66, 20,242, 60, 65, 76, 56,111,209, 91, +137, 9,218, 14,201, 51, 77, 51, 49, 64,205,130,239,103, 74, 85,180, 22,134,144, 40,128,202, 68,147,100, 6, 81, 21, 90,205,248, + 2,154,150,102,211,169,226,147,163,170,162,197, 84,193,224, 44, 71,229, 66, 67,138,224,150,150, 54,223, 20, 77, 1, 45, 21,201, +211, 2,230, 89, 32,104, 75,122,170, 73, 53, 16,141, 91,218, 60,107,120, 91,179,167, 53,226,165,218,128,153, 28, 23,173, 35,126, + 5,161,218,231,121, 30, 27,171, 1,158, 61, 93, 19,189, 75,182,147,211, 5, 43,202,255,207,212,155, 53,201,122, 93,233,121,207, +218,195,151,153, 53,156,121, 6,206,193, 76,128,221, 36,123,180,212, 82, 72,161,112,132,110, 28,225, 8, 95,217,190,244, 95,225, + 79,241,207,176, 47,172,144, 67,178,218,205, 38,205, 86,179,187,217, 68, 55, 1, 18,103, 62,117,106,174,202,204,111, 15,107,249, + 98,237, 42,136, 55, 32,128, 64, 85,158,204, 47,247, 94,195,251, 62,175, 99, 91,233, 87,116, 52,247,211,250,120, 47,211,113,104, +131,195,105, 20, 98, 26,234,108, 79, 39,178,171,140,242,145,169,147,144, 17, 59, 90,145,166, 84,137,206, 90,142, 17,189,218,217, +210,233, 38, 68, 75, 52,245, 75, 58,116,167,234,180,238, 80, 27, 70, 7, 34,234,246,171,104,142,180,149, 32, 36, 3,141, 66, 38, + 97,177,123,149, 44,137, 28, 35, 18,194, 40, 2,134,138,169, 57, 13, 76, 22,145, 48,251,135,145,196, 19,150, 26,195, 87,169, 67, +213, 63,252,142, 41, 37,136,142,247, 76, 61,176,213, 74, 78, 3, 75,219,154,199,102,138,139, 7,187, 56,215,254,202,242, 39,209, +131, 85,188, 35,142,132,228,133,194,148, 19,177,127, 63,185,168,173,195,180, 68, 68,185,121,115, 98,119,111,151,135,146, 40,210, + 72,221, 56,191,188,224,247,191,127,201,229,166, 12,112,138,103,206, 51, 24,242, 93, 7, 64, 40,140, 9,126,204,255,141, 53, 81, +105,181,243,254,224, 27,206,207,223, 13,171,148, 87, 99, 49, 68,207,110,179, 72, 31, 30,124, 36,120,180, 37,129, 7,183,238,176, +183,191,195,225,197, 57,243, 92,199, 69, 63, 98, 94, 37,146, 82,162,151,141,175, 43, 84,201, 41, 32, 41,179,204,238,159,188,177, +218,229,236, 96,230,232,252, 18,137,198, 98,218,129, 24, 89,196, 93,190,248,195,175,192, 10,229,244,156,131,245, 9,231, 71, 39, + 36,140, 82,157,120,214,106, 71,109, 1, 73,168,173,185, 70, 66,226, 8,240, 48,182,151, 21, 73, 78,203, 18, 85, 46, 54, 91, 76, + 22, 60,126,244,165,139, 2,251,150,157, 4,107,155,152,146,142,215,183,160,182,206,210,115,152, 60,146,113, 14,164, 65, 47,180, + 88,208, 94, 89,134, 76, 51,255,242, 46,227,228, 54, 42,243,241,118, 65,124,196, 24, 3, 90,133, 24,141,237,236,182, 34,172,122, + 0,145, 4,158,255,254, 61,251, 55,118,136, 42,180,230, 43, 23, 51,144,228,170, 89, 17, 87,119,250, 63, 15,100, 17,230, 90,248, +249,223,252,150,227,147,115, 66, 8,108, 74,161,150,206,217,217,134, 55,239, 79, 88,175, 11,139,156,124,247, 54, 69, 90, 83,103, + 66, 72,164,135, 64,194, 92,237,190,200,124,249,197,151,172,183,151,180, 96,236, 89, 98,189, 57, 25, 22, 42,223, 25,107,245,223, +171,226,207,232,116, 99,143,157,105,159,197,180,131,168, 80, 46,103, 54,151,199, 92, 94,158, 19,136,236,173,238,178, 13, 5,206, + 55, 92, 52,245,131, 45, 70,214,179,208, 41,220, 92, 45, 57, 63,170,172, 55,151,220,154, 11,167,103,167,108, 90,229,232,248,132, +114,118,192, 7, 31, 60, 98, 63, 47,136,211,196,250,162, 96,115,129, 32,124,241,213,143, 0,229,239,254,246,111,120,245,242, 57, +180, 66, 78,153,180,179, 66,173,121, 50, 93, 9, 44, 22, 80,218, 76,210,132,100,144,217,105,133,235,179,203,193,218, 6,173,145, +139,139, 53,167, 71, 7, 16,150, 8, 74,158, 50,214, 59, 89,178,143,210, 91, 35,154, 51, 41,167,133,208, 76, 40,117, 67,208, 78, + 26,118,174,105, 17, 81, 2,159,126,246,132,127,245, 47,126,194,155,227,255,131,231,223,190, 65,122,231, 87,127,255, 59,172, 9, +237, 50,160, 58,243,245,183,175,248,248,179, 15,120,249,246,128,179,179, 11,126,252,131,199, 28, 29,190,230,239,190,237,208, 58, + 77,188, 64,232,165,186, 90, 59, 8,228, 56, 48,208,202, 98,103,129, 89,103,190, 84, 54, 52,178, 70,250,182,208, 36,251, 20, 41, +251,153, 89, 75,167,205, 29,105, 74, 23,165,182,153, 24, 38,167, 96,166,138, 88,114, 58, 94,110,132,222, 89,111, 27,102,157, 96, +153,102,149,190,105,244, 60, 97,210,113, 72,114,192, 82, 36, 69, 95,147, 74,191, 90,139,118,214,243,198, 15,146,232,222,234, 16, +151,152,110,125,149, 80, 35,162,234,235, 89, 2, 27, 3,173, 74,208,153, 38,197,215,136, 67,111,209,181, 15, 10,160,115, 33,154, + 10, 81, 27,164,132,182,237,136,177,158,200,178, 71, 91, 95,208,108, 70,163,209,122, 33,104,116,231,140, 25, 42,238,191, 15, 49, +163, 44,217,110, 47,145, 60, 66,138,234, 6,137,153,212, 3, 26, 42,189,205,212, 80,104,230, 78,157, 80,103, 66,102,232, 20, 24, + 43, 54, 87,166, 99, 23,116, 13,180,243, 54,114,208, 97,203,198,153, 28,179, 33, 20, 22,201,227, 98,123, 72, 62,253, 40,133, 89, +125,186, 18,213,221, 5, 18, 61,251,131, 1, 74,194,212,197,212,209, 27,181,232, 98, 7, 95,109, 15, 79,157, 89, 29, 73,168, 87, + 19,217, 64, 48,111, 42, 52, 56,176, 13, 85,122,109, 24, 13, 73,137, 30, 59, 27,141,252,159,191,252, 37,246,187,255,157,243,151, +175,208,254, 6,233,137,155, 59,137,223,124,125,151,120,255,254,189,159,218,136, 5, 85,115,203, 77,188,186,176,101,140,111,197, +253,144, 50,104,115, 81,130, 95, 6,209, 71,187,152,143, 9,174, 0, 48,189, 59,191, 93, 70,177, 64,240, 17,247,232,229,241, 48, +101, 23,128, 73, 12, 76,193, 83,148,252,146,241, 55,166, 99, 68,115, 91, 88,107,230,214, 51,235,244, 48,200,116, 3,145,233, 4, +159, 43, 20,180,143, 61,166,232,185,180, 33,186,239, 93,192,187,173, 16,174,147,227,172,143,237,180,140,200,214,177,171,207, 64, +109, 10, 83, 30, 69,138,143, 81,196,163,235,156,131,238,110, 56,180,187, 45, 15, 12, 75,190,162,112,196, 40,168, 54,170,249,238, + 69,204,237, 93,190, 58,240, 85,129, 95, 32, 1, 73, 66,202,113, 88,144,124, 20,221,240, 81, 51,166, 68, 19,114,138,172,215,151, + 28, 30,158,250,229, 63,168, 99, 18, 32,230, 64,148,116,181,244, 24,174,132,228, 23,175,245,129, 37, 13,136,132, 17,249, 89,221, + 71, 78, 66,146, 43,244, 61,226, 80, 71,130, 88,119,107,140, 25, 59,171, 29,238,221,187,141,245,198,197,229,150,210, 27,221,124, +171, 33, 33, 58,180,103,187,102, 59,207,244, 90,135,152,105,201,106,181,203,227, 7,247, 72, 89, 56, 60,185,100,179, 77,220,186, +125,199, 87, 35,113, 73, 70, 40,115,225,217,135,159,240, 23,255,242, 47,248,163, 63,255,239,248,234,179,175,248,232,217, 71,252, +240, 71,127,202,189,167, 31,115,255,238, 99,238, 63,184,203,173,187,194,241,225,154, 41,132,235,103,112,177, 74,168,141,100, 46, +237,208, 2, 33, 24,115,109,152, 41,247, 31, 62, 97,110,151,148,126, 65,235,129, 98, 62,229,136,113, 65, 67,169,117, 6, 21,102, +117, 1, 99,136,157, 58, 55,255, 12,167,133, 83,248,134, 39, 60, 14,110,114,136,144, 53, 80,130, 79, 42,230,210, 9, 67, 96,101, +234,226,176,164,238,173, 46, 6,235,205, 57,175, 95, 28,112,116,188,225,252,242,210, 47,243,232,164, 52, 29,147,144,174, 62, 29, + 50, 92, 3, 18, 66,164,214,202,197,102,235, 19,169,236, 28,254, 69, 78, 28,188, 61,163,110, 43, 31,127,120,143,245,166,248,164, + 65, 28,195,188,179, 92,146, 66, 70,187, 82,180,179, 90,172,248,131, 63,254, 19,158, 60,249,144,178,109,156,157,157,242,167,127, +240,144, 47,158,222,229,249,225, 9,166,141, 15, 30, 61,193, 44,243,254,253,123,210,148,216,223,217, 35,167, 68, 78, 43,170, 8, +103,103,199,156, 30, 31,179,185, 60,103,179,169,108, 75, 97,219,214,227,181,118,230,237,134,219,247,238,241,241, 39, 95, 18, 87, + 15, 57, 60,124,207,211, 15,239,243,239,254,248, 3,126,245,143,191, 65,251,146,180,186,201,201,197, 57,219,179,183, 60,184,181, +203,254,174,119, 76,155,147,153,211,147, 11, 46,107, 39,161,204,115,135, 94,137,203, 5,111,223,188,244, 96,139,188, 96, 90, 44, +249,252,243, 31, 48,175,103,206,206,207, 73,193, 45,169,181, 54, 54,219,194, 60,175, 41,101, 77, 83,255, 12,156, 92,169,172,215, +231,196,148, 88,166, 21,132, 76,157, 55,195, 6,231,197,186,168, 59, 62,210, 34,179,147,220, 61,210, 90, 27,147, 47, 35,196,140, +152, 79, 47,223, 28, 28,243,237, 55, 7, 28,190, 95,211,173,185, 62,168, 55,206,206,103, 2, 11, 74, 47,148,178,101,127,255, 46, + 15,110,239,242,229,151, 15,248,252,207,254, 45,247,239,236,115,112,124,194,209,225, 41, 49,116,230, 14,139,232, 89, 19,161,248, + 8, 90,162,178,200, 59,142,148,213,192,114,153, 61,245, 80,221, 98,139, 5, 44,118, 98, 80, 36, 7,122, 11,104,169, 14, 99, 18, +117,184,202, 24, 69,219,112,169, 76, 11,232,181, 19,101,194,130,251,240,107, 5,161, 58,116,107, 20,222, 53, 5, 98, 52,212,220, +118,103,197,169,227,165,118,132, 74,198,174,193, 49,214,189,233, 48, 26, 77,149, 62,244, 6,165,186, 35,167, 55,223,231,135, 88, + 40, 87,140,138,104, 48,251,235, 11, 49,121,241,168,101,196,171, 8, 41,186,152,121,138,222, 16, 17, 10, 58, 86, 14,161, 14,107, + 92, 76,136,118,199, 53,219, 85, 96, 21, 52, 42,216,140,228, 68,157, 55,126, 71, 20,165,137,120,162,100,221, 98,166,204, 38,136, + 20,180, 84,250,236,197,156, 10,104,237,180,109, 37,136,210,231, 45, 74, 99, 0, 26,199, 8,189,160,205,113,218, 81, 60,146, 27, + 21, 66,239, 36,201,110,181, 78,126,247, 52,156, 46,215, 69, 61,101,114,232,182, 60, 36, 73,124,141,129, 13,214,130,191, 62,139, + 32, 57, 33,209,207, 1,143, 58,183,145, 32, 60,148, 83, 33, 33,234,209,193, 14,132, 19,130, 36, 28,155, 22, 88,159,158,113,254, +246, 27, 74,121, 75,169, 27,234,124,198,217,197, 9,191,250,231, 87,196,123,183,239,253,212, 21,166,131, 62, 35,126, 49, 94, 9, +224, 84,140,132, 95, 10, 41,122,103,140,250, 98,218,189,207, 35, 98,117, 36, 37,101, 25, 42,120,211,113, 17,123, 65, 16, 66, 28, +136,198, 17,141, 24,131, 7,128,152, 16,195,132, 4,241, 61, 56,113, 68, 38,250,184,221,163, 77, 27, 54,138, 9, 6,156, 70,198, + 31, 84,112,177, 73, 74,190,143,143, 68, 39,152,141, 55, 85, 77, 6,184, 34,146,226,194, 83,198, 66, 31,168, 78, 79,168,107, 42, + 72,242, 75,242, 42, 15,158,232, 94,117, 47, 4, 2,210,227,136, 56,245,169, 69, 23, 63, 96, 34, 16,212, 1, 32, 62, 50,241, 0, + 13, 53,115, 0,143,132,209, 57, 7,175,218,154,177, 90, 77, 76,139,229, 80,176,123,133,214,219, 72,140,138,195, 47,169,145,144, +125, 68, 62,111,103,158,191,122,201,197,229, 60, 72, 88, 97,132,212, 24, 41,100,210, 20, 9, 49,146,114, 34,231, 52, 44, 49,105, + 0,119,220,154,119,181,139,159,242, 14,102, 30,118,146,196,223,155, 43,227,154,118, 31,237,153, 58, 58,115,119,119, 7,213,198, +250,114, 75, 41,238,171,118, 81, 93, 26, 22, 35,223,227,117,237,244, 58,196,127,139, 29,118,119,246,185,253,232, 22, 71,239,142, + 57,120,117,200, 98,239, 38, 79,159,125,194, 34, 45,185,119,251, 38, 55,110,222,231,248,236,144,127,248,251,191,230, 23,127,245, + 95,248,203,159,253, 23,254,241, 87,127,199,235, 23,135, 28, 95, 30,115,124,120,130,149,192,195,135,159,240,175,255,252, 75, 94, +190,122,205,217,182, 59, 57, 76,156, 26,168,131,147,236, 59, 59,255, 18, 53, 53,110, 44,119,185,121,235, 38, 61, 20,186,102, 31, + 21, 70,232,221, 87, 64, 42, 5,147, 60, 24, 6,174,146, 37, 7, 82,110,132,214,124,221, 20,124, 20,239, 60, 42,199, 19,183, 94, +189,184, 68,177,214,189, 43, 23, 67,104, 72, 52,186, 69, 23, 53,154, 81,186,242,226,245, 75, 54,231,151,110,189, 50, 39,152, 93, + 11, 84,204, 39, 84,221,220, 18, 24, 36,185, 93,204, 6,227, 57,199, 17,124,227,151,250,249,197,154,211,243, 53, 63,250,225,135, +252,207,255,211,191,229,230,205, 93,222,190, 59,246,195, 52, 68,242, 34, 19, 98,160,180,198,106,119,201, 87, 95,254, 1,143, 31, +127, 4, 91, 79, 71, 92,159, 31,242,249, 15,110,115,116,114,193,183,207,143, 89, 72,224,195,103,207, 0,229,224,240,136, 52, 77, +144, 18, 49,123, 42,163,169,139, 59,183,237,210, 3,127,212,127, 78,211, 74,223,118, 71,201,106,231,195, 15, 62, 98,181,218,227, +108,187,230,252,240, 45,127,240,244, 54,255,230,223,253, 11,254,175,255,248,151,188,124,245, 2, 82,198,202,150, 71, 55, 87,236, +172, 86,108, 16,206,203,218, 47,194,173,209,172, 82, 74,161,182, 78,107,141,105,127,201,217,201, 37,231,231,103, 44, 23, 75,232, +112, 99,127,143,123,119,239,243,246,221, 91,119, 11,152,176,222,108,104,243,236,147,156,222,125, 77, 40, 2,234, 89, 16,136, 79, +213, 98, 26, 51,195,145, 56, 88,123,119, 11,110, 47, 78,187,180, 78,169,234,221,173,118, 98, 10,196, 56, 93,229,193, 33, 65,152, +183,141,211,139,217, 17,201,161,211, 84, 7, 97,112,193,106,103, 34,165,137,245,102, 67,239, 51, 95,124,242,128,222, 55,124,242, +217,143,184,113,239, 75,110,223, 80,190,249,246, 45,151, 39, 51, 42, 17,201,206,233,216,214, 66, 19,101, 74, 11, 79,205, 51,101, + 17,118, 97, 74,244,237,214, 19, 11, 87,137, 28, 12,216,113,166, 55,234, 57,223, 90, 72,203, 9, 84, 9, 41, 51,169,119, 24,162, +226,185,237, 67,171,210,130,162,181, 35,166,180, 86, 73, 33, 83,197,252,188, 10, 66,235, 29,141,145, 86, 42, 13,111,128,162,217, + 8,146, 74,168,206,148, 81,224,211, 2, 61, 21,186, 54,239,238,213, 65, 43,221, 73, 94,196,212,137,214,144,144, 17, 38,230,178, + 65, 77,232,173, 34, 90,145,222,104,214,144,133, 63,235, 88,163, 23, 27,235, 84, 37,152, 66, 87, 54,219,181, 95,208,218,157, 17, + 98,174,241, 49, 51, 38, 64,115,192, 52, 18,251, 37,165,204,204,115,243, 73,169, 26, 98, 5,169, 21,109, 5,205,222,124, 89, 45, +160,230,182,176, 58,123, 46, 4,126,161,183, 90,145, 36,174, 27, 42,117,136,193, 27, 93,156, 58,169,230,186, 18, 19,168,163, 32, + 65,132,210,102, 39, 26,138, 3,110, 90, 27,218, 8,140, 24, 50,201, 60, 53,148, 46,116, 85,180, 67, 30, 26, 14, 83, 37, 68, 67, + 90,115, 72,207,208,120, 25, 50,214, 65,157, 16, 28,158,134,186, 87, 29, 3, 77,190, 6,215,230, 69, 64,156, 2,105,145, 60,118, +123,172,219, 72,234,147,226,185,144,160,249, 30, 96,196,123,106, 87,135,104, 72,164,141, 20,243,239, 59,204, 49,157, 69,125,108, +172,174,210, 14,195,139, 41,194,224,178, 13,232,254,228,135,103, 43, 58, 0,255,206, 99,135,128, 90, 24,129, 12,130,106,117, 33, + 28, 30, 30,146,163,179,170, 85, 70,198,115,246, 3,207, 6,101, 11, 95,143, 15,161,156,103,154,247,230,129, 35,233, 10,103,139, +195, 58,114,200, 20, 45, 96,110,209, 80, 19, 66,119,138,157,154, 82,131, 92,231, 10,247,209,233,196, 28,199,136,203,200, 34,152, + 58,151, 62, 96,136,100, 82,128, 98, 70, 51, 60,164, 33, 68,183,211,140, 34,166, 90, 96,138,145, 96,158, 10,215, 76, 61, 42,118, + 17,125,124,212,188,250, 19, 27,215,105, 85, 98, 48, 82, 72, 62,218, 85, 35,102, 31,163,246, 32, 92,156,156,114,114,186, 30, 73, + 83, 97, 28, 58, 9, 89, 46, 92,184,164, 87,152,223,241,239, 66, 32,231, 76,178, 37,170,149, 82,102, 76, 61,190, 81,109, 30,113, +186,209,119,200,130,119, 32, 54,156, 10,102, 76,211,196,205,189,253, 17,230,177,165,119, 63,204, 66,116,126,184,152,209,196, 47, +190,189,157, 5,171,157,125, 94, 62,127,227,186, 6,139, 44,150,129, 36,137,147,227, 11, 22,105,226,193,221, 7,156,159,157,145, + 23,198,124,190,230,248,226, 28, 21, 69, 91,227,108,179,134,139,115, 78,195, 33, 18, 94, 82,126,227,159,149, 5, 97,145, 23,220, +250, 95,254, 71,190,248,248, 9,239, 14, 79, 33, 6,114, 94, 82, 91, 3, 53, 23, 5,169,119, 84, 87,234,239, 16, 87,164, 41,162, +219, 51,164, 36, 90,108,148,154,124,138, 19,155, 83,231,100, 66,185,240, 17,180, 66,188, 72,244,197, 2,137,133,148,221,170, 40, + 34, 72,222,101, 18, 71,207, 74, 4,146, 49, 85,165,134, 70,170,160,105, 73,236, 66,239, 74,171,243, 96, 43, 76,204,235, 13,231, + 39,103,164, 41, 64, 45, 88,197,169, 93,193,195,143,220, 9,209, 9,226, 43, 18, 44, 12, 30,132, 63, 63,232,149,234,219,133, 99, +181,116, 30, 61,188,193,237,123,187,252,213, 47,190,230,237,187, 35, 54,155,153, 90, 27, 33, 6, 54, 23, 27,114, 14,236,223,220, +229,135, 63,248, 33,183,110,222, 98,123,185,161,206,133,229, 42,177,127, 99,159,191,252,217, 75,142, 14,143, 48, 51, 39,156,201, +224, 43,152, 98,205,197, 62,121,242,113,111, 18, 65,167, 9,182, 30, 76, 20, 37,184,179,160, 53,106, 43,180, 86,208, 86,176,234, +174,133,156, 61,227,225,213,249, 33,103, 23,141, 68,228,253,251,119,132,229,223,243,147, 63,252, 35,150,187,187,172,183,103,180, +144, 8,179,147,212,220, 7,222,177,238,197,174, 69, 35,214,196,227, 7, 31,114,242,230, 13,219,114,201, 34, 46,121,241,252, 5, + 63,248,225, 87,220,191,255,128,131,131,183,172,245,114,172,156,124,173, 38, 49,179,138,217, 19,242,166,140, 85, 72,169,177, 16, + 39,254,205,205,237,172, 55,238, 76,236,175,118,184,216,158,179, 59, 53, 74, 49,231,114,119,197, 26,172,215,194,101, 45,228,156, + 9, 49,209,122,189,222,177, 75, 47,116, 9,244, 0, 34,209,133, 86,173,209,107, 65,166, 9,201,137,215, 7, 71,188, 57, 41,132, + 90,120,241,143,191,224,217, 79,254, 7, 62,249,244, 75,190,252,252,159,248,217,209, 17,189,119,234,133, 34, 49, 50,229, 64, 47, + 74,233, 67,148,103,145,166,151,180, 6, 27, 26, 38,209,115,216,197,133,109, 54,132,171,150, 27,210, 18,213, 58, 89, 38, 36, 58, +231, 61, 52,165,217,160,225,213, 72,242,252,193,145, 47, 15, 49,103, 66, 10,228,224,153,242,165, 57, 34,155, 90,156, 43, 18, 60, + 17,112, 86, 23,109,134, 40,244, 90,129,197, 88,197,174,177, 57,194,184,144, 91,247,148, 78,137,193,225, 70, 10, 88,242, 78, 53, +140,192,164,226,214,195, 41, 68, 82, 88, 96, 50, 99,115,199,186, 49, 75, 32,137,210,173,122, 34,159, 69,122, 23,239,210,205, 39, +188,109,110,144, 3, 90,160,140,105,172,228,137, 82, 47, 89,182,113,115, 88,199,146,199,149,170,249,103,134, 68,104, 16,181,178, +237,133,168, 11,239,242,155,199, 42,199,166,222, 8,132,198,246,162, 16,146,239,235,107,159,209,226, 40, 86, 27,100,210,222, 26, +152,145,162,163,136,123,240,239,169,108, 12, 66,115,155, 31, 29, 53,215, 57,245,222,233,102,196,232,113, 65,214, 59, 65,157,227, + 79,243,220, 15,154,107,181,130, 4,159,112, 23,199,196, 6, 7,191, 95, 15,190, 25,231, 52, 4,172, 13, 24,220,112,186,212,210, +201,178,130, 20,174,215, 27,109,128,212,178,116, 18, 18,174,197,110,142,136,117,175,113,163,141, 40, 23, 25, 35, 5, 15,153, 8, +195,114,133, 57, 15, 56, 93, 81,217,204, 92,112,210,125, 4, 31, 66,244, 75,185,187, 8,165,245,238, 94,242, 36,136, 42,210,197, +133, 33,234,227, 7,237, 62,162,143,147,123, 69,187, 53, 80, 15,140, 49,241,136, 64,228,202,127,174,142, 55, 21,175,190, 83,114, +238,179, 53,101, 27,140, 41, 70,207, 14,111,230, 30, 72,198, 27, 98,174,206,239,173,251,248, 67,194,128,200,100,143, 60,197,131, + 61, 76, 93,236, 33, 67,244,231, 10,110,161, 91, 32, 7,163,139,184, 8,130, 33, 0, 9, 35,158, 84,125, 82, 48, 13,178, 94, 15, +137, 86,141,197, 34,140,206, 47, 33,238,160, 33,246, 62,176,138, 62, 13, 9, 33, 82, 90, 67, 82, 36, 76,110, 95,179, 22, 40,101, +205,203,163, 3,218,224, 94,123, 4,173,184, 16,109, 12,221, 25, 29,180,136,239,214,187,130,213,230,136,220, 33,120,235, 77,189, + 56,137, 62, 74,182, 62,144,155, 30, 35,143,210, 49, 9,228,156,184,123,251, 54,139, 41,112,126, 89, 93,149,219,250,136,218,245, +113,157,153, 87,250, 83, 78,124,252,201, 71,180,186,225,249,139,151, 78,209,147,198,205,219,183,233,109,203,201,225,123, 36, 71, +210, 55,255,192,179, 15,159,241,228,241, 71,228,251, 43,238,110,214,252,246,183,127,199,251, 55,207, 93,131,160, 94, 84, 50,138, +139, 22, 28, 79, 89,181,242,127,255,231,191,166, 16,145,188,226,222,157,219,236,221,184,141,196,200,173,229, 46, 55,238,236,178, +217, 28,240,250,187,231, 60,127,127,194,250,226,130,157,253, 61, 82, 54,239,110,114,229,252, 82, 9,210,136, 50, 81, 76,144,222, +105,237,210, 71,238,173,176, 76, 75, 36, 5,182, 52,172,248,115,143,184,162, 60,100, 99,174, 27,144,236, 73,133, 89,168,213, 72, + 61, 82,181,210, 75,133, 86,137, 65, 73, 41, 48,215,153, 82, 47,121,243,230,152, 90,189,131,152,107,243,207,165,185,242, 61,196, + 72, 18, 27, 68,102, 47,236,108,112, 27, 76, 70, 0, 82, 48,122,247, 9,153,137,127,182,119,238,220, 34,132,204, 47,255,246, 27, +222,190, 61, 33,164,236, 86, 76, 9,200,114,162,181,194,179,143, 63,230,198,157,187,212,121,118, 81, 94,130,185, 43,203,189, 91, + 14,165,233, 70, 57,122, 71,213,134,212, 64,177, 45,115,155, 93,123,146,132,208, 38,114,186, 42, 66,183, 4,139, 44,242, 2, 9, +145,178, 29,151, 59,198,165, 42,181,193,217,220,184,145,178,199, 32, 91,224,232,112,205,250,228,152, 24, 39,246,110, 61,230,131, + 15,191,224,206,237, 91,108,206, 55,212,160,132,160, 62,110,157,133,110, 27, 44, 9, 49,174, 60,157,172, 53, 74,173,220,190,127, +143,189, 59,247,185, 56, 61, 96,186, 49, 81,171,242,245,175,255,129,237,188,117,222, 67,237,132, 32,228,105,135, 27,251,119,185, +185,179,203,222,141,219,188,223,204, 64, 37, 95,107,126, 2,151,219, 51, 66, 50,230,237,204,237,253, 37,255,219,255,250,239,185, +247,232, 14,200,154,237, 37,104,204, 8, 51,229,114,205,193,219, 51,254,195,127,250, 25,191,250,251,223,211,227,146, 56,237,211, + 54,231, 62, 77,177,230, 8, 50, 13,142,211, 6, 31, 93, 75, 66, 91, 98,177,156,216, 94, 92,240,205,215, 47,121,248,199, 31,243, + 55,255,245,111,248,224, 7, 63, 36, 46,239,241,236,209, 77,254, 38, 53,102, 2, 22, 42,166, 43, 15,130,161,211,105,232, 60, 81, +204,161, 56, 77, 26, 44,196, 63,131,217, 25,227,102, 91,188, 76, 82,202,182, 35, 97,114,181,180,219, 65,220,141,147,128,160,104, +137, 62,162,215,226,185,242,147,187,115,168,126,158, 68, 26,102, 66, 14,147,103, 95,244,128, 42,174,123, 10, 70, 43,141,101, 84, +154, 40, 33,175,104,115, 69, 71, 33,170, 77,232,230,207, 85,156,252,251,111, 37,251,212,176,119, 54,125,118,239,252,194,215,162, +173,207, 30, 47,139, 50,215, 45, 77,148,168,221, 11,107, 4,139,184, 95,189, 55,166, 12,181,184,112,174,107,100,138, 78,130, 12, +178,112,103, 83,237,116, 77,176,222, 34, 52,160,208,173, 0, 0, 32, 0, 73, 68, 65, 84,189,177, 33, 17,227, 2,237,213,197,195, +221, 85,255, 65,204, 19, 42,251,104,138, 44,160,109, 30,180, 75, 69,139, 39,196,244, 80,145,238,204,149, 62,207,180, 48,185,195, + 43, 42,162, 25,180,162, 84,255,255,166, 62,253, 25, 5,176,168, 59, 3, 28,251,221, 6, 94, 91,157, 17,161,222,105,107,159,176, +222,253, 46, 25,197,186, 98,100,205, 14, 58, 50,195,164, 14,237,153, 39,188,133,144, 29, 64,148,243,224,120,130, 22,197,174, 20, +242,226,147, 91, 83, 65,170,175, 32,194, 52,185, 19, 42, 42,169, 39, 90,223,208, 53, 16,239,222,187,253, 83, 29,162,167, 16,198, +178, 31, 27,187,232, 17,247, 38, 54,176,167,114, 61,250,165,251, 47, 38,122, 71,172, 87, 64, 25,132,184, 24,246,160,198,117, 72, +140, 13,232,134,232,176,139,117,247, 6,142, 31,235,129,242,230, 23, 77, 20, 87,114,217,192,182, 74,136,144, 71,252,170,121,113, +193, 80,105,167,113,209,249,242,192,247, 18, 49, 6,191,192, 71, 28,158, 54,195, 66,186, 30, 31,131,141, 32, 8,143, 12,149, 56, + 42, 97,145,107,192, 11,221,113,172, 62,141,117, 6,188,147,168,148, 62,118,230,194,128,195,128,187, 2,192,253,207,209,176,224, +157, 80,199, 71,172,130, 91,140,220,214, 7,139,236, 93,154, 8, 84,147,193,203,240, 11, 5, 2,185, 9, 26, 2,239,223,191,227, +245,155, 67, 32,186, 90, 61,186,158, 33, 38,167,107, 73, 8,206, 13, 48, 87, 81,234,192,228,250,212,196,215, 5,165,235, 64,186, +250,239,187, 90,175, 16,100,192,108,134,223, 89,132,155,251, 55,216,221,217,103,189,217, 80,181,211,106,245,244, 51,185, 26,145, +200,245, 4,227,147,103,143,249,224,195, 39, 92,158,110,120,245,242, 53,221,140,221,253, 61, 62,253,228, 19,118,151,194,155,151, + 47,120,243,238, 29,135,239, 94,242,205,111,191,230, 87,127,247, 75,126,245,247,255, 31,223,189,248, 39, 78, 14,222,114,118,126, +230, 54, 49,145, 49,254, 82,215, 82,104,160, 85, 15, 30, 33,103,144,192,222,206, 62,139,229,142, 91, 86,122, 65,226,196,222,173, + 59,236,164,137, 59,251,183,249,183,127,252,231, 76, 35, 22,119, 90, 78, 88,104,148,217,168, 53, 58,251, 32, 78,164,210, 7,156, +165, 34,152,227, 79, 43,244,176,101,158,103,250,236,168,224,148,193,180,184,103, 95, 50,147, 45, 72, 40, 86,171,175,113, 66, 66, +181, 99,181,123, 82, 83,234, 92, 94,156,114,116,244,158,227,227, 51, 94,189,121,135, 69, 33,231,192,249,217,236, 59,244, 48, 82, + 3,199,142,237, 42, 56, 52,140,168, 80,223,245, 58, 6, 88,204,227, 89, 83, 76,238, 20, 73, 30, 93,121,122,118,201,235,183,231, + 94,229, 71,127, 54,123,247, 21, 78,181,202, 50,172,184,127,231, 33,155,185, 34,116, 86,139, 68, 75,194, 36,201,149,181,166, 84, + 81,234,122,230,201,163, 71,212, 90,120,243,250,141,143,147,167,232, 5, 42,254,153,151, 58,211, 91,103,153, 86,164, 60, 86, 11, + 24,219,186,101, 46, 27, 36, 4,166,213,138,221,221, 29,170,117,182,235, 53,185, 85, 62,252, 96,151,231,239, 59, 22,111,243,244, +201, 61,166,188,131,174, 22,164, 54,179, 92,237,163,193,104,115,241,206, 34,120,228, 39,181,140, 12, 2, 35,239, 8,155,245,154, +247,111,223,146, 23, 75,118, 22, 43, 74, 41,148, 90,104, 90, 88,228, 21,123,251,251, 60,184,251,152,189,213, 62,133, 17,155, 43, +209,245, 13,209,216,174, 43,231, 23, 27,218, 64,233,214,121,230,232,232,148,211,203, 19,158,126,112,151, 63,248,226,115, 62,248, +234, 83, 30, 61,251,148, 71, 79,159,241,193,167,159,242,197, 79,126,200,191,250,243, 63, 32, 90,229, 55,223,190, 28,216,223,128, + 13,171,175,153,145, 22, 19, 18,160,214, 66, 10,145,197, 98,135,214,102,159,250,169,114,121,126,201,114,119,193,201,250,130,163, +183, 7, 60,121,178,199,179, 79, 62,162,172,141,239,126,127, 64, 23,159, 4,230,228,254,100,209,128,118,183, 34, 77, 49, 80, 69, + 73,248,180,164, 37, 96, 46,104,236,126, 25,247, 48, 4,152,205,251,136,145, 84,105,230, 17,214, 54,249,190, 93,162,160,161,179, + 96,225,221,122, 83, 79,213,108,134,169,139,120,219,160,114, 26, 74, 26,103,162, 57, 88, 31,187,202,175,232, 62, 61,140, 67,103, +181, 92,142, 68, 76, 9, 76,201, 87,172, 70,165,153,207, 69,123,243,253,123,215,130,206,138,106, 70,172, 33,161, 81,181, 19,186, + 50,155, 99,138, 99, 72,180,222,232,226, 66, 62, 68, 92,243,212,221,182, 85, 7, 96, 43,152, 14,193,181,208,138, 43,213,189, 1, +168, 84,243, 49, 61,218, 92,188, 29,156,252,215, 90,115,107, 31,110, 51,213, 94,175, 89, 3,189, 52,106,109, 68, 21,199,144,107, +243,137, 51, 74,194, 39,181, 97,160,207, 37, 57,155, 64, 44,208,135, 59, 66,171,123,212, 45,250,243, 16,186, 79,214,122,116,145, + 86,112,175,223,208,203,116,183, 65,155, 13,250, 34,190, 62,100,172, 59, 37, 13,199,216,192,164,165, 68,176,142,144, 65,117,172, +244, 12,235,221,115, 81,240, 34,196,130,185, 88, 47, 69,204,234, 72, 31,132,208,219,149,199,156,248,232,254,221,159, 58, 1,246, +138,186,230, 67, 92, 25,227,109,134, 63,221,239,123,239,212, 7,153,214,109, 99,102,163, 18, 26, 99,248,224, 63,225,234,130,109, +234,121,200,105,172, 96, 71, 95,201, 32,133, 95,239,206, 49,241, 66, 98,140,145,147,184,104,197,134,199,219,149,124, 46,212,155, +146, 67,250,175,103,241,193,127,209, 88,183, 14,229,186, 95, 22,170,206,122,214,241,122,188,138,119,102,187, 71,229, 5, 23,189, + 85, 29, 32, 8,223,201, 51,128, 49,222, 24, 15,224,139,118,255,112,123, 31,162, 63,239,174, 68,220,146,151,146,147,239, 66, 84, +162, 56, 41, 40, 44,157, 72,101,193, 53, 9,158, 20,231, 73, 56, 97,116,220,174, 24,180,145,226, 21,136,248,239, 44,243,150,223, +127,247,154, 82, 10, 41, 37,183, 9,166, 64,136, 94,200,184, 78,193, 93, 7,140,104, 92,193,209,131, 14,180,105,204,243,204,182, +120, 69, 41, 33, 92, 39, 83,165, 48, 58,172,239, 99,247, 88,174,150,228, 24,233,165,178,157,231,113,161,123,145,149, 82,102,145, + 38,183,207, 76,145,207, 62,121,202,227,199,247, 73,217, 83,253, 14,222,190,101, 91, 11,159,125,254, 41,183,111,239,179,187,152, +184,123,231, 38,111,223,190,243,160,159,232,162,188,214,103, 54, 23, 23,108,214, 23,215,152, 60, 25,169, 90, 85,125, 52,213, 91, +195,198,232, 43, 72, 96,185,187,207,147,167, 31,240,244,147,143,121,184,119,143,148,132,105, 90,178, 12, 75, 94,189,251,150,179, +243,153,143,239,127,206,254,157,192,239, 94,255,158, 32,153,152, 61,179,220,153,239,158,119, 31,174, 51,146, 64,131, 3,133, 90, +109,244, 33,176, 84, 81,143,232,235,206, 86,136, 98,164,148,189, 3, 48, 99,125,177,113,123,214,225, 59,214,155, 13, 55,119,246, + 96,202,156, 95,156,113,122,118,200,171, 87,135,188,120,125, 76,140,194,122,189, 37,133,196,157,155, 43, 79, 91, 27, 54, 66, 51, +215,167,152,249,235, 33,248, 23, 63,242,125, 96, 82,140, 87, 69,142,235, 85,114, 74,204,115,227,244,108,141,186,234,147, 90, 11, +134,121,128, 77,239, 64, 98,189, 93,115,251,246, 29,166, 41,162, 89, 72,139, 68,180, 70,136,145,144, 50,151,167,103,132,166, 92, +108, 46,120,240,232, 49, 90,132, 23,175,158, 99,230, 83, 32, 69,136, 57,185,219,163,185,104, 51, 70,165,149, 78,111, 70,169,202, +102,187,165,183, 13, 65, 50, 41, 11,243,246,130, 90, 10,101,222, 50,133,196,131,251,247,121,117,112,192,106,113,155, 71, 15,111, +211,203,214,243, 16,172, 96, 59, 1, 43, 62,205,139, 57,248,228,173,251,168, 40,150, 70,143,174,168,127,245,187,111,153, 55, 27, +146, 68,106,239,180, 46,190,254, 9,145,157,197, 14, 55,118,118,145, 0,167,151, 23, 92,170,113,124,122, 64, 2,150, 59,183,209, +222,232,101, 75,211, 70, 22, 65, 53, 96,234,137,131,223,252,238, 45,127,253,139, 95,243,237,111,126, 15,151,103,196,190, 38,166, +192,180, 51, 1, 51,139,189, 91,252,241,159,255, 33, 59, 4,126,241,203, 95,211,212,136,139, 37,189, 13, 6,128,203,104,208,228, + 81,184, 65, 92,108, 86,172, 49, 45, 2,235,245,134,121,219, 89, 78, 59,252,245,207,255,134,182, 57,231,199,127,244, 19, 30, 63, +125,204,119,191,127,205,235,151,111, 8, 49,147, 72,227,108,243, 32,171, 22,161,184, 0, 7,219, 54, 74,203, 80, 10, 77, 29, 74, + 99,189,141,224, 15, 63,188,213,160,121, 42,144,227, 98,123,199,106,245,117, 68, 85, 98,138, 4,241, 51,170, 53, 35, 5,101, 21, + 34, 77, 29, 65,234,218, 37,191,120,166,201, 3,152,106, 83, 68,140,214, 61, 62,185,119, 37,141,231,180,138,141, 93,175, 79,143, +218,176, 55,135,193,199,143, 49, 19, 82, 38,101, 37,212,138,244,140,153, 95,174, 26,125,237, 23,174, 28, 76,128, 73, 27, 9,194, + 46, 28,235,109,140,173, 5,186,186, 31, 63,197,236,207,160, 53,239,214,147, 59,120, 90, 23,230, 90,233,181,163,181,186,115,170, +121, 96,149,104,167,197,238, 49,109,173, 57,193,180, 55, 68,148,214,219, 32,242, 49,220, 83, 70,235, 13,237,144,228, 42, 31,125, + 8, 33,233, 88,112,135,143,154, 23, 36, 88,247, 24,219,152,221, 37, 48,184, 40,102,140, 85, 98,245,168,103, 92, 63,224, 63,133, +241,158,113, 29, 25, 92,205, 95, 71, 14, 97,124,190,226, 23,187, 54,191,251,186, 67,208,180,123,238,189,137,135,115,185,160, 54, + 95,115, 90,176,238,140, 16,117, 77,136,217,247, 76,153,120,255,225,253,159, 74,136,215,255, 80,112,168,136,255,189, 92, 51,204, +196,194,181, 50,221,130, 31,122,218,221, 78, 37,226, 93, 69, 74,227, 50, 28,101,129,168,199, 77, 94,253, 50,198,161,229,254,245, +116,253, 6,219,168, 48,188,243,205,222,226,143,169,129, 12, 9,102, 83,223,214,167,228,172, 98,241,105, 38,166,141,222,188, 48, +112, 75,150,139,233, 90,241,206, 95,132,209, 17, 95,137,197, 92,157,216,154,139, 70, 76,148,222, 60, 89, 45,166, 64,183, 78,173, +238,169,190, 10,202, 75,226, 23,122, 55,168, 54, 34, 27,241,206, 38,134,232, 86, 59,140,144,133,136,249,123,149,134, 93, 47, 38, + 22,217, 31,232,156,124,162,145,166, 68,169,179, 71,242, 17, 8, 99, 20,147, 9,195,226,230, 8,209,131,247,111,121,251,254,132, +128,139,152, 44, 8, 49,102, 82, 78,163,232, 24,175, 80,252,247,199, 0, 49,123,150,188,246, 74, 41,149,185, 84,239,194, 9,215, + 48,159, 24,220,114,209,186,143, 82, 76, 96,185, 90,177, 90,100,106, 45,108,231, 74, 85,239,162, 66, 8,132,148,145, 16,169,101, + 75,142,194,135, 31, 63,227,193,163, 71,152, 68, 98,232,172,210,196,221,123,119,120,248,248, 9, 31, 60,122, 72,206,206,119,206, +203, 29, 98,242, 66,105,103, 49, 49,133,161, 23, 72,105,120, 63,253,121, 72,163, 34, 87,223, 3,248, 72,113,140, 16,230,178,229, +244,248,136,111,190,253, 45,223,254,250,107,126,251,187,111,120,251,246, 21,239,223,191,163,108,215,180,121,230,254,221,155,228, +101,226,197,251,175, 57, 63,219, 16, 87, 59,144,221,183,220,154,147,158,220,161,167,148, 14, 22,189, 91,238,165,210,186, 82,250, + 64, 2,119,144,236, 23,155, 52, 65,166, 72, 82, 97,187,157,121,119,124,192,249,246,144,180,232, 28,191, 63,226,229,219,119,156, +156,156,113,118,118,204,193,201, 17,239, 14, 46,120,127,120,198,114,145,120,252,112,159,103,207, 62,224,135, 95,126,204,167, 31, +220,226,197,171, 83,182,173,140, 80,161, 68,200,190, 56,177,232, 88,217, 24,174,160, 75, 54,166, 57, 92, 11,235, 66,246,244,193, + 50,123,134,130,160, 20, 85, 2, 94, 44,171,250, 69, 40, 4, 74,157,217,187,115,155, 27, 55,118,145,234,123, 81,235,193,139, 28, +129,105,103,201,246,244,152, 50,207,220,222,191,201,249,188,225,240,240, 0, 53, 72,203, 21, 41,174,200, 49, 16, 70, 76,113,178, +192, 86,157, 9,223,230, 45,115,171,148,245,134,109,217,144,243,202,215, 87,189,145, 17,154, 53, 22, 41,241,213, 15, 30,240,187, +151,223,178,119,227, 14, 33, 71, 90,219, 66,143, 52, 19,114, 27, 22, 36, 58, 73, 22,244,217,105,134, 94,108, 71,103,129,107,231, +240,240,144,179,139, 75,215, 19,212,142,106, 37, 5, 97,185, 88,144,147,219,254,206,183,151,215, 29,138,160,204,165,144, 87,123, + 8,201, 3,154, 48,106, 43,168,109,209, 54, 99,173, 58,102,179, 42,191,123,254,138,255,247, 23,191,230,215,255,240, 79,124,252, +240, 1,143, 63,186, 77, 59, 57,133, 54, 35,171,137,211, 55,103,252,199,255,231, 23,108,180, 49,133,132,116,241, 8,216,214, 9, +105, 66, 66,118, 36, 43,157,253,229, 46,155,217,169,142, 93, 59,102,202,106,247, 54,167,103,151,124,124,127,143, 31,254,228,135, +236,220,122, 72, 98,230, 31,254,233, 27,247,200,147,232, 85,145,101,242,172,185, 46,104, 53, 82,247,149,141, 31, 90,141,237,188, +185, 62, 10, 29,162,225,110,158, 58, 38,155, 6,132,230,226, 81, 29, 36,189,214, 27,162,234,122,168,118, 37, 72, 14,108, 91,161, +245,226,251,250,152,188, 8, 32,211, 77, 41,117,235, 35,226,174, 36,137, 88,136,132,156, 60,167, 35,102,180, 84, 98, 55,183, 89, +245, 97,217, 10,222, 16, 25, 14, 91, 50,233, 68,243,145,126, 71, 73,187,174,119,200, 18, 29,187, 13,228, 20,145,152,104,189,187, +168, 81,235,152,168,250, 36, 88,146, 11,167,193,134, 31,219,252,252,194,159,253, 54, 23,255,206,104,119,141,151, 26, 13,232, 58, +211,187,139,218, 84, 13,109, 74, 41, 67,224,233, 32,143, 81,216, 65,208,136, 49, 95,131,202, 80,247,236,135, 1, 3,194,174,198, +221, 74,178, 68, 41,141, 16, 59, 77,187,159, 37, 22,105,189,141,179,209,239, 21, 53, 71, 14,155,249,249,106, 97, 36,152,138,141, +251,205, 87,211, 93,205,159,155, 17,111,206,152,134,235, 16,231,114, 53,237, 29,159,173,119, 60,142, 65, 55,115,104,141,105,247, +215, 28,188,169,245, 84, 74,134,211,161, 59, 57,240,193,131,187, 63, 13,163, 67, 54,211,161,214,214, 33, 62, 50, 31,243,217, 8, + 66, 9, 78, 76, 19,240, 52, 43,243, 12,108,223,203, 15,161,221,136, 50,140, 35,228,197, 70,117,123,245,191, 32,120, 0,140,186, + 95, 48,100, 79,115, 51, 13,196, 56,198,237,216,176, 73,248,120,217,180,187, 96,109,144,223,100, 20, 26, 72, 28, 42,236,126,173, + 22, 86, 95, 51, 97,214,209, 40, 35,135, 79, 28, 85, 40,110,241,242, 7,211,197,101, 97,136,221, 66,240,135,175, 15,153,159, 43, +208,187,239,194,109,224, 39, 51, 78,171, 35,186,104, 42, 69, 79,126, 11,230,136,216,152, 71,161, 33,136,172,188,240, 8,174,210, +214,166,126,217, 34,172,114,114,157,129, 93,113,220,251,216,187,132,225, 62,128,245,229, 5,207, 95,188,161,206, 14,178, 49, 60, + 21, 46,135,124,109,203, 11,146, 80,148,185, 86, 36, 70,130,138,143,131,172, 83,183,101, 88,208,140,144,178,119, 21, 87, 59,118, +134,253,103, 84, 90,171,197,138,156, 38, 23,255,168,127,182,136,187, 7, 66,114,237, 65, 47, 51, 41, 9,159,254,224, 99, 30,221, +185, 51,118,248, 78,162,107, 77, 88,174, 86,220,218,223, 35,197,129,215,149,137,188, 16,238,223,191,195,211, 71,143,249,228,179, +167,124,252,241, 51,158, 61,249,144,135, 15, 30,113,255,225, 93,110,238,238,114,107,103,135,144,188, 20, 21, 73,195, 34,230,106, +104, 83, 87,131,247,238, 99,181,210,102,214,155, 51,206,207, 79, 57, 56,122,199,119,175,126,199,219, 55,111,120,119,112, 72,109, +133,180, 52,230, 57,179,218,221, 71, 91,245, 3, 52, 14,132, 99,247,196,175,210, 43,117,174, 88,117, 5,189,135,225,116, 66,132, +184,138, 44,210,146,165, 76, 88,156, 57, 63,191,228,226,244, 20,147, 53, 79,159,222,228, 95,253,235, 47,249,227, 63,249, 17,183, +247,118, 57, 61, 59,227,226,124,195,166,174,169,181,113,126,186, 97,154, 2,159,124,254,152, 39,143,239,113,251,214, 62,235,121, +195, 47,127,245, 29,239, 79,206, 60, 60, 7,119, 82,216, 40,151, 91,237, 62, 94, 31,154, 15,128,152,174,254,125,240, 16, 33,241, + 80,150,222,174, 44, 50,230,100,177,161,152,237,221, 45,153, 68,207, 91,120,250,228, 25,121,218,115, 77, 72, 82,178, 37,154,118, +186, 42,139,197, 13,142, 78, 79,152,231, 66,140, 75, 14,142,222,115,126,121,129,154, 49,165, 76, 78,153, 24,242, 72, 21, 27,249, + 6, 5,230,178,245,253,174,186,190,100,179, 89,179,179,191, 67, 94, 44,192,148,156, 38,164, 11, 33, 27,127,246,195,103, 20,221, +241,233, 76,104,212, 16, 89,165,228,182, 83,160,149,121,196, 45, 7,180, 27, 83,112, 65,106, 27,171,151, 32,254,188,190,123,243, + 6, 53, 31,139,202, 32, 39,106,112,234,222, 92, 11, 18,125, 2, 54,207, 30,106,212,123, 33, 38,183, 71,181, 90, 8,193,104,218, +169,243, 76,169,227,253, 11,145, 40,129, 73, 18,197,224,240,240,130,143, 30,223,226,214,222, 77,222,190,124,203,241,233, 41,155, +227, 99,254,195,127,254, 57, 63,255,229,183,110,229,237, 46,234,109,204,238,224, 69,145, 56, 17, 13,202,188,117,212, 44,194,118, +187,198,186, 51, 61,130, 4,214, 23,107,246,246, 18, 79,159,220,231,238,253, 61,110,222,186,205,193,187, 11, 94,189,120,139,100, +143,131, 13, 26, 40, 42,132,214, 92,104,137,249,104,183, 55, 36, 54,106, 83,130, 76, 76,171, 21, 18,179, 71,226,106, 64, 91,245, + 11,163,225, 17,209,210,136,109,184, 64, 26,222,192, 8,222, 49,154, 81,108,156, 97,113, 92, 54, 33,208,181, 32,221,155,129,166, +184, 67, 32, 12, 55, 17, 30,208, 67, 87, 84,103, 23,227, 38,255, 28, 50,222, 77, 55,115,161, 88, 83,195,250,140,116,163,139, 23, +151, 26,148,212,101, 8,103, 61, 52, 75,128, 20, 5,181,177, 6, 28,128,179,101,136, 72,158,152, 96, 36,241,141, 75, 61,169,175, + 78,171,249,110, 91, 32, 38, 40,173, 19,174, 96,161,226,214, 63, 9, 46,218,179, 90,177,226,246,178, 56,208,184,173, 59,142,156, + 46, 67, 43,213, 92,249,111,174, 35,106,234, 26,170, 74, 31, 76,148,192,108,190,170,160,122,199,174,162,158,144,168, 66, 12,213, + 11, 70,117,181,185,141, 9, 50,102,244, 16,168, 84, 7, 88,209, 6, 88,198, 6, 74,124, 52, 86, 68,108,196, 6,119,237,164,224, + 98,111, 85, 35,152,211,255,166,232, 12,148,110, 67,159, 96,234,119,131, 94,173, 80, 96, 74,131,212,103, 62,170,167, 42, 9, 25, +197,184, 23, 77,126,128,143, 88,200, 64, 64,194, 80,177,247, 43,180,169, 98, 36,223,211,104, 31,222, 58,239, 92,131, 25,166,133, +102,193,119, 36,248,110, 55,166, 97,145, 24, 69,131, 96,238,205, 30, 92,117,183,186,123,215, 24,178,139,241,100,164,178, 49, 48, +141,202, 8, 90, 48, 35, 6, 31, 11,169, 66, 78,217,197,121,230,201,104,158,163,110, 87,141,171,219,134,186,211,219,100, 68,217, +217,213,104, 94, 96, 74,129, 46, 62, 77, 88,165, 48,172, 12,227,193,138,254, 87,195,173, 93,174,118,175, 68,117,159,116,192,119, +236, 12,255,187,133,192, 52, 8,118,137, 72,136,138, 82,220, 30,163, 35, 70, 49, 12,127,166,193,102,158, 93,141,218,141, 28,161, +182, 64, 53, 35, 14,192, 77,180,206,241,209, 17,235,117, 37, 79, 11, 98,188, 54, 87,249, 24,200,146, 71, 99,134,136,182, 25,173, +142,147, 36, 70,223,161,209,105, 87, 97, 58,226, 95,124,144, 33, 70, 28, 56, 92,103,255,178,183,218, 97,239,134, 19,227, 74, 85, +191,208,237,170, 91,112,235, 90,157,103,246,119, 22,124,244,209, 51,110,222,185,197,146,177,147, 11,238,191,235, 81,104,193, 71, + 93, 89, 2, 57, 70,178, 24,181,204,104,116, 18, 24, 65,152,166,204,254,206, 29,238,106,163,196,193, 15,152, 27, 77, 27,141, 70, +189,172,204,155,153,109,221,114,121,122,198,182, 84, 78,207,206,217,206, 91,230,222,152,231, 58, 62,115, 7,112, 69,132, 94, 11, + 47, 94,125,199,187,163,119,252,248,203,175,184,255,228, 9, 89, 34,101,144, 15,117,246, 63,211, 34,100,182,205, 64, 43, 75,132, +173,121, 14,168,136,139, 5,187, 94,241,218, 61,236,102,110,199,176,154,248,163,175,158,242,249,167,143,217,191,245,136, 26,215, +156,189, 59,224,252,114,166, 53,175, 86,247,151, 43,182,173,112,247,214,210,163, 83,167, 5,235, 75,229,249,203,151, 60,127,121, +192,249,201,154,157,157, 60, 16,157,174, 37,185,174,198,205,177,186,173, 43, 41,184,157,138,222,135,110,194,217, 3,243,166, 58, + 0, 10,232, 50, 32, 80,214,221, 50,164, 29, 98,194,186,179,235,247,119,247,216,191,177,130,108,216, 28, 49, 38, 26,129, 30,183, +131, 88,165, 92, 94, 94, 96,166, 28, 95,158,177,217, 94,210, 90,245,236, 7,235,104, 47,148,226,182,202,218,189,227, 17,113,218, + 97,217,120,129,232,228, 66,248,147,175,158,177,183,183,207,127,250,249,175,216, 70,103,232, 55, 77,156, 85,229,206,205, 15,185, +220,188,195,172,186,179,166,206,196,100,204,179, 50, 13, 86, 64,239,149, 36,141,218,149, 90, 11, 49, 37, 52, 8, 77,133, 91, 55, +110,115,247,222,125, 46, 78, 14, 60, 19,222,160,213, 54, 26, 1,159,210,245,162, 88,114, 30,122, 31, 98,165,237,217, 25,203,157, +125,154,217, 88, 19,204, 78, 95,171,219,161, 1,138,180,224, 54, 32,130,210, 52,240,159,127,254,119, 92,110, 47, 29,218,179,204, +244,237,204,207,126,246, 91,154,249, 51,131, 86,234,128,146,168,184,122, 59,216, 26, 20,138, 86,206, 46,207,216,221,185, 73,235, +221,105,111,150,216,174,215,172,107,225, 55,223,188,231,151, 63,251,175, 44, 22, 11,158,125,242, 17, 79,159,236,241,237,173, 93, +222,157,215, 65, 95, 44, 35, 74,217, 92, 26,213, 59,166, 9, 74,163,180,230,235, 76, 18,165,108,137, 49, 16,186,239,226,147,224, +182,195,232,151,170,199,176,118,255,239, 99,118,212,174,245,235,213,131, 12, 14, 70,107,190, 94, 42,163,104,215,190,165,169,103, +104,164, 0,189, 39,170,205,196,184,160,215,153,185,117,166, 9,186, 85,164, 71, 90,139,232,213, 51,172,160,177,185, 8, 55,234, +112, 46, 57,209, 83,204,156, 98,215, 42,154,129, 58, 46, 93,243, 6,224,234,252,113, 54, 7,244, 86, 9, 18,201,146,232,166,206, + 19,240,217, 39,203,149, 50, 91,167, 87,104,181,147,122,248,190, 1, 85,163, 23,159, 56,134,152,125,197, 53,208,220, 69, 5,233, +213,155,172, 56,249, 72,187,117, 82,244, 81,120,243,202,216,185, 42, 99,202,137, 25,149, 62,190,167, 3,110,150, 19, 90,253,253, +157, 12,186,137, 79, 56,175, 86, 25,214, 7,198,103,140,194, 49,106,175,164,161, 27, 8,233, 10,157,142,127, 31,166, 5,210, 60, +212,154, 81,200, 16,156,230,231, 43, 0, 95, 87, 88, 20,186, 65, 30, 43, 96, 21, 29,105,122,130,201,194,139,102, 43, 88, 20, 82, +247, 66, 1, 11, 4,105,174,126,247,226,200,133,101, 54,114, 93,163, 93, 49,223,227,245,152,215,217,196, 46,154,210, 48,120, 37, +166,174,176, 20,103,165, 75, 24, 49,144,214, 93,225,126, 37, 60, 27, 23,174,142,238, 63,228,201,233, 91,221,133, 28,193, 92,192, + 17,130,124,127, 17,169,239,196, 98,242, 98, 40,146, 49,173,168,248,129,131, 92, 29, 60,226,169, 54, 67, 41,175,234,138,226,222, +253, 77, 78,214,125, 44, 79, 36, 68,127,160,186, 42, 77,125, 95, 95, 77,199,174,201,247,219,142,220,236, 52,243,202,191, 99, 78, +241, 82, 67,171,209, 68,201,113,225,157, 18, 56,230, 48, 36,194,228,106,126, 23, 55,249,100, 32, 52, 99,177, 19,105,150,145,162, +196, 36,168,102,232,138, 76,157,156, 19, 92,118, 82, 18,234,168,144,183,243,134,195,211, 11,223,163, 4,135, 13,136, 68, 31,245, + 39,255, 60, 34,217, 1, 26, 97,197,206,106,242, 14, 63,120, 53,218,155, 11, 87,124,231, 10,214,132, 24,199,164,162, 15,137, 86, + 72,220,220,219,227,230,222, 30,115, 45,116,173,174,131,107, 62,250,137,100,162, 36,182,219, 13,183,246,118,248,252, 7,159,178, +179, 88,161,189, 49,135,136,105,164,181,153, 60, 77,238,229, 15,209,225, 54,109,198, 66, 70, 84,153,166, 29, 66, 18, 47,106, 12, +250,220,217,234,165, 43,135, 27, 72,107,190,163, 34, 49, 77,145,221,213, 14, 11, 11, 84, 25, 85,117,247,170,122, 46,149,185, 94, + 50,111, 59,109, 46, 92,108, 46,216,172, 43, 23,103, 27,230,178,165,246,198,118, 91,120,253,238, 13,207, 62,249, 8,116,102, 25, + 97,182,128,133, 68,154, 12,102,239,254,187, 37, 23,206,153,143, 84,139, 22, 22,113,137, 6,227,232,253, 27,206, 15, 79, 80, 43, + 60,251,248, 30,127,250,163, 47,249,236,211,143,168,210, 57,219, 28,242,230,249, 17,207, 95,188,226,245,203, 99,222, 29,188,167, +206,202,249,153,175,107, 52, 68,246,196, 71,140,175, 78,103,222,189, 57, 68, 21,166, 69, 30,123, 34,187, 22,186,244,246,189,231, +127,208, 51,137, 83, 34,154, 81,139,142,156, 5,103,203,187,176,110, 20,169,234, 9,136, 14, 72, 1,186, 31,110, 72, 64,187, 50, +237, 46, 71, 23,220,153, 38,223,125, 54, 81,164, 5, 66,111, 88,223, 80,234,150,139,205, 37,251,201,199,221, 86, 59, 58, 69, 74, +131, 88, 60,129,171, 53,231, 38, 36, 34,183,246,118,185,245,232, 62,243, 60,115,112,124,196,209,187, 45,165, 54, 62,120,120,131, +251,143, 30,242,151,191,252, 53,171,213, 10, 9, 19,203, 4, 55, 86,187,180,176,164,190, 86, 31,187,214,202,108,129,108, 11, 76, +214,254,236,171,127,183, 26,213, 35,100,147, 67,116,130, 69,214,235,194,251, 55,175,217, 92,158, 95, 31,134, 18, 3,189, 20,162, + 5,100,225, 7,143, 26,180, 90,252, 2,145, 54,120,218, 51,155,141, 63,189, 69, 43,148, 74,183, 74,235,243, 72, 98,100, 76,179, + 6,227, 34, 24,223,190, 58,225,213,193,223, 18, 2,164, 69,162,215,206,155,131, 1,186, 25,147,175, 56,212,211,155,170, 36,203, +228,133, 7, 45,181, 6,155,205,204,237,125, 99, 38, 51,215,130,138,114,177,217,208,204, 56,186,156,249,199,111,222,115,243,238, + 63, 50,207,194,148,133, 56, 53,127,125,243,102, 20,107,145, 24,156,159,222, 76, 9,221, 3, 88,122,129,148,160,197,177, 54, 88, + 23, 31, 57, 7, 7, 28,245, 10, 65, 60,194, 53, 72, 34, 37,165,170,123,200, 67, 80,122, 15, 4,117,117,248, 50, 70,146, 84,108, +130,106,145,208, 11, 50, 67, 17,199,194,250,250, 58, 97,189,250, 5,210, 10, 21, 67, 19,108, 55,141,101, 88, 18,146,175, 58,139, + 25,105,146, 33,118,118,251, 44, 42, 3,190,210,253, 78, 8, 6,213,207, 85, 33, 58,148,174, 43,219, 50,123,110, 60,129,104,222, + 20, 20, 51,255,158, 7,176,224,118,190, 60,160, 43, 98,226, 72,228,209, 57, 71, 17,114,202, 52,107,152, 54, 23,111, 91,101, 10, +145,174,141, 41,249,247, 29,237,204,120,243,167, 6, 86,202,160,181, 57,190,150,216, 9, 54,210,198, 66, 35,132,136,149,193,137, + 8, 35,110,220, 60,223, 32, 52, 47, 30, 6,176, 16,105, 70,235,176, 8,114, 29,128, 22,131,255, 46, 27,211, 16, 27,107,198, 16, +109,104, 9,124,154,171,226,223,183, 78, 39,152, 11,233,132,129,125, 9, 50,130,185,100, 60,223,131, 30,163, 14,100, 51,115,184, + 78, 8,153, 64,165, 42,164, 52, 13,238,130,187,188,170,205,152,101,210,148,211, 53, 65, 76,162,145, 36,186,215,188,186, 21,202, + 35, 29,135,244,205,240, 39, 77, 28, 81, 42,193,223,168,124, 37, 38, 11,120,247, 27, 92, 8,208,171, 91,116,166,156, 60,180,195, +209,101, 88,136, 94, 65,170,251,221, 37,248,151,199,205,244,174, 42, 84, 4,137,145,116, 53,118,144,224,225, 6,201,109,110,125, + 28,118, 58,210,204,174,252,244, 78,236, 50,166, 36, 16,197,173, 77, 87,244, 58,241,241, 83, 10,238, 19,141,209, 83,136,252,146, + 31,190,120,186,115,134,211, 68,186, 50, 3,180,161,142,183,200, 98,202,222, 77,137,250, 67,150,253,181,182,222,145, 58,118,111, +163,194, 18,235, 52,137,216,172, 30, 7,155,147,191, 86,153, 60,213,203,130,143, 83, 71,240,202,148, 4, 26,156, 28, 29,177,221, +110, 73,121, 49,108,118, 78,226, 51,113,213,187,116,229,178,156,123, 76, 97,200,164,232, 22,149,170,149, 82,188, 67, 55, 11, 4, +190, 7,240,244,238,159, 35, 24, 33, 9,203,157, 37,211, 98,193,118,222,178,221,206,148,174, 94, 33,170, 33, 41, 16, 82,160,213, +153,189,157, 37, 31,125,250, 9, 55,119,110,248,197,143, 82,187,191,239,116,232,165,145, 87,201,133, 78,132, 17,222, 80,135,229, + 78,233, 51,144, 19, 49, 76,244,114,137, 36,136, 53, 80,164,248, 26, 41,249,225, 48,205, 66,223,129,139,214, 28, 18,163, 30, 95, +184,147, 50,139,165,176,220, 91, 16,250, 68,138,193, 81,148, 93, 41, 27, 69,181, 81, 74,101, 59, 55,106, 45, 14, 29, 34, 19,243, + 2,237, 51,211,232,112, 52, 85,122, 80,122,117,122, 97, 87,163, 39,255, 98, 93, 92,158,240,230,237,107,202,118,205,221, 7,187, +252,201,143,191,224,233, 7, 79,184,183,191,224,229,235,215, 28,157, 93,112,124,252,150,151,191, 59,230,253,201,134,139,205,154, +205,122, 38,196,204,122, 91,169,189, 33,221, 59,140,222, 59,111,223,156,250,184, 49, 45,156, 15, 80,219, 16,133,126,239, 83,151, + 1, 3, 82, 51, 82,136,104,113, 20,230,213, 84,170,142,188,234, 41, 39,239, 54,209,161, 52, 30, 41,133,221, 15, 12, 53,151,218, +160,234,191, 15,119,142,244,230,154,136, 94, 28,208, 19, 36,178,202, 11, 38,113,187,141,213, 70,195,147,190, 68, 33,139, 57, 7, + 91,113, 53,118, 74,220,190,181,207,141,219,183, 60,239,249,252,146,157,197,130, 47,255,236, 75,126,243,207,240,219, 23,239, 57, + 88,119, 22,121,197, 78, 90,113,190, 94,115,161,153, 60,173,120,124,119,159, 95,125,189, 37,247, 72,154, 18, 76, 66, 91, 55,176, +192, 86, 11,180,128, 36, 63,180,187, 5,178, 4,106, 54,222,191,125,195, 63,125,253, 27,108,158,137,217, 29, 29,115,117,186, 92, + 16,161,170,210,202,214, 69,158,113,216,137,112,116,116,143,238,244,176,205, 6,137,110,169,181, 40,244,210, 8, 33,249, 94,146, + 48, 38,117,238,116,137, 67,196,187,187,187, 67,179,206,209,217, 57, 71,167,107,223, 75, 6,215, 11,140, 22,206,215, 67,106,174, +248,174, 67,148,106, 74,221, 20, 46,215,231,164,229, 2, 93, 87,106,245, 17,100,110,129,237,220,248,221,251, 99, 30,127,247,134, +128,114,247,209,167,252,201, 31,253,152,119,255,233,215,204,165,147,178, 43,206,105,130,180,230, 90, 6, 81,102,221, 16,131, 16, +101, 98,219,252,210, 10,209, 40,173, 66,117,196,105, 90,152,123,211, 45, 17,233, 20,109,238,151,150,136, 21,131,169,210, 69,188, +176,178,206,166,155,235, 68, 48, 52,122, 96,151,153,121, 32, 81, 53,135, 53,153, 95, 78,168, 55, 87,193,154, 35,104,163,145,241, +187,161,217,150, 94, 51,193,250, 0,139, 13, 79,188, 69, 50,193, 65,114,173,248,239,202,209, 27, 54,109,100,240,232, 99, 11,228, +180,164, 7, 31,137, 47, 82,164, 79, 25, 9,153,214,103,135,182,196, 78,159,135, 86,196, 58, 83,152,124,165, 16,157,222,167,227, +245,105, 52, 66, 95, 64,223,140, 48,166,171,239, 87, 98, 10, 13, 22, 75, 58,141, 86, 7, 27, 37,249,189, 21, 67,192,130, 83,240, +250, 80,107,215,226,128,165,148,196,249, 4, 8, 21, 31,189,199,241,157, 37,121,130,105, 28,123,114,233,120,241,163,254, 44,132, +152,209,226,239,135,133,238,150,186,170,132, 60,194,202,204,245, 0,134,141,187,210, 41,165,140, 12, 17,223,233,123,147,234, 23, +117,244,212, 75,191,245,253, 46, 18, 87,243,135, 24,208, 90,208, 14, 51,190,122,179,110,180, 94,137, 31, 60,121,248,211, 16,130, +179,200, 7, 43,125,146, 72,140, 54, 50,214,125, 39,236, 73, 97,174,126,215,107,141,188,143,237, 85,100,192, 94,124,111,226, 34, +243, 56,140,241,190, 23, 39,142,102,121, 80,219, 2,190,219, 38,197,239,119,226, 35,192, 32, 12,118,176,143,186, 7,138,112, 84, + 56,170, 62,238,182,145, 4,110, 64,235,230, 20, 38,174, 30,198,224,135,155, 94, 13,173, 93,196, 54, 68,134,215,136, 85, 69, 71, +120,135, 31,184,138,177,154,226, 16,116, 76, 64, 96, 18,163, 53, 29,254,204,140,226, 9, 94, 59, 83,118,204,172,185, 13, 37,249, +164,206, 59,156,156,198, 84, 66, 9, 57,195,232,176, 99,134,168,201,171,213,144, 61,197,103,116,189, 33, 56, 46,247,228,226,148, +231, 47,222, 80,198,207,137, 33, 32,164,161, 50, 55,162, 36, 68, 34,203,189, 93, 62,251,244, 41,155,203, 11,230, 82, 80,243,204, +115,237, 46, 40,116, 18, 19,195,101,224,107,138,213, 98,201,238,106,193, 34, 77,228, 52,177,153,103, 15,231,168,109,136, 63,198, +151, 98,140,135,247,247,246,249,193,151, 95,112,235,214,174,115,171,195, 24,139, 13,109, 66, 72, 48, 77, 1,137, 19, 65,132, 69, + 22, 22,209,195, 85, 8, 94, 38,171,186, 13,144, 86, 92,200,178,173,148,160,196,180, 24,228, 47,231,248,231, 28,233, 10,117, 91, +124, 71,103,145, 90,175,104,108, 35,123,186, 42,235,186,101,189,153,209,218, 73, 4,114,154,200,147,176,179,187,100,218,217,197, +146,142, 73,142,161, 73, 64, 58,165,109,233, 10,189,141,169, 77,240,247,176,215,153,195,247,239,120,251,246, 53,214, 58, 31,124, +240,128, 31,125,246,132, 39,247,238, 97, 65, 57, 60, 58,229,155,231,111,248,237, 63, 63,231,235, 95,191,228,221,241, 57,151,151, + 27,234,218,197, 53,189, 22, 90,245, 4, 49,134,168,235,252,108, 30,157,160,199, 65,234,176,171, 13, 93, 11, 58, 68,158, 97,120, + 39, 83,156,188, 75,163, 12, 90, 30,180,238,225, 54, 62,253,234,126,152, 95, 89, 49,245,191, 85,157,186,156,215,204, 15,180, 15, + 63,120,202,195, 15, 31,208,170, 23, 70,214, 6,241, 49, 71, 52,185, 3,225,213,239,126,207, 92, 46,217,219,221, 39, 69, 72, 83, +230,246,157,219,236,223,184,193,238,206,130,148, 2, 41, 76, 60,120,240,144,189,253, 61,150,203, 37,155,237,153,135,117,244,198, +159,253,233,231,252,235,127,249, 99,126,253,143, 95,243,250,229, 1,111,222,189,101,110,107,132,202,235,215,175, 57, 61, 63, 33, + 10,108, 6,201,177, 26,208,157, 21,222,205,167, 63,102, 5, 13,133,160, 70, 32, 82,154, 79, 39,222,188,250,142,163,247,111,137, + 41, 59,224,232,106, 42,193, 8, 95, 25,223,103, 9, 54,132,142,205, 15, 56,145, 49, 97, 26,194, 36,171, 99,119, 89, 17, 83,210, +208,164, 4, 92,212,100,195,203,174,138,187, 57, 22, 75,126,240,233, 99,254,252, 39, 95,113,112,180,230,232,228,140, 56,214, 89, +170,221,167, 8, 81,198, 72,246,138, 94,232,150,203, 40,208,212,184,121,251, 22,189, 42,165,108, 89, 78, 25, 11,137,121,179, 33, + 50,177,179,152,216, 93,116,226, 98,129,234,146,111,191,123,193,220,221, 13,209, 90,103, 46, 74, 76,110, 57,108, 29, 66,118, 36, +104, 47, 46,105,106,214,105, 10, 42,126,192,196,225,138, 16, 38,186, 56, 69,207,146,147, 59,181, 86,178,186, 86,199, 5, 91,126, + 89, 89, 31,251,216,224, 54,219, 86,189,136,204,196, 49,229, 16, 90,173,174, 59, 0,212, 26,145, 4,137, 49, 78, 22,230,238,162, +211,148,134,206,195,198, 25, 51,156, 53, 17, 27,252,244,224,205,105, 28,206, 40, 53,202,240, 94, 7,247, 2,121, 48,214,240,105, + 95, 77,205,164,123, 62,195, 21, 7, 37,139,143,251,175,144,102, 82,125,245,192,176,174, 90,247, 3, 93, 71,123,103,131,186, 86, +205,191, 63, 50,146, 58,175,162, 99,137,248, 4, 49,164,161,100, 31,196,205, 16,137, 9, 66, 28,142,151,101,246,207,192,188,166, +115, 33,162, 91, 79,227,176, 5,171,185,139,160,117,255,243,197, 48,194,181, 2, 87,139,210, 97, 55, 27,106,252,232,211,239,126, + 69, 33, 21,103, 80,136,233, 88, 53,140, 29,122,184, 34,124,250,138, 88,213, 32,250,250, 54, 6, 29,172, 16,220, 74,173,230,147, + 39, 17, 44, 5,114,200,244,174,196, 71, 15,239,254, 52,132,116,189, 31, 13, 34, 99, 95,235,227,135,156, 93, 12,150,134, 36, 55, +135,232, 25,187, 38,228, 44,164, 33,252, 9,146, 33, 8, 57, 48, 50,199,251,247, 66,177, 96, 67, 72,231, 85,160, 68, 39,101, 37, +146,119,239,138, 63,189,209,198,126, 79,135, 7,211,199, 94, 87,231,151, 12,235, 91, 12, 35,215,124,140, 66,162,248,133, 23,174, +119, 20,134,225,182,183,104, 87, 98, 46,187, 86,235,135, 48,248,207, 10, 41, 37, 31, 7,171, 34, 41,123,215, 52, 86, 10,225, 90, +185, 31,134,125,220, 19,200, 2, 66,206, 17, 73, 78,251, 82,243,206, 32,192, 16, 7, 14,237, 64, 8, 36,113,192, 8, 18, 73, 41, +147, 70,151, 72,116,225, 91,104,145,144, 2, 41,123,140,233,203, 23, 47,120,127,188, 33, 7, 87,198, 42, 78, 52,242, 11,222,173, +108, 57, 46,185,255,225, 83,246, 86,153,131,131,247,180,238,221,106, 99,248, 44,199,123,165,227,240,239,173,177, 88,237,242,233, + 71, 79, 73,162,180,106,148,222,188,106, 52, 70,242, 83,191, 38,226,165, 36,220,127,112,159,143,159,125,196,254,254, 98,240,134, + 59, 70,119, 81,158, 8,139, 24,145,144, 8, 22, 89,166,204, 32,241,146,162, 34,221, 85,150, 17,195,121, 0, 0, 32, 0, 73, 68, + 65, 84, 81, 53, 14,101,107,107,244,106,212,222, 33, 39, 31, 55,141,209,102, 88, 64,102,120, 64,107, 39,238,184,182,195,196,181, + 27,105, 74,172,210,130,222, 58, 51, 91,130, 6,106, 51, 98,134,162,176,169,157,106,174, 2,183, 40,244,173, 39,239,165,168,244, +217, 19,204,226, 78,134,117, 35, 36,119, 66,104, 23, 46,214,151,188,120,241,156,227,195,119,164,148,120,252,248, 30,207, 62,188, + 77,154,150, 92, 94,108, 56, 59, 59,230,159,190, 61,226,229,139,119, 28,159, 92,114,185,105,148,109,119, 10, 97,239, 72, 8,212, +185,146,162,211,214, 74,113,139,228,200, 58, 28,202,213,177,186, 26,244,168, 97,226, 28,194,184, 43,185,156,103, 9,228,148,136, + 18,168,213,201, 87,134, 67, 55,180,251,116,203,139,231,241,124,143,113,190,224,251,197, 48, 70,118, 31,126,244,148,221,188,235, +192,163,156, 40, 24, 49, 47,252,155,160,149,180, 90,160, 58,243,201, 71,159,242,217, 23, 95,240,236,222, 67,238,223,127,194, 71, +159,125,193,141,253, 91,236,173,110, 34, 18, 88,237,237,176,123,107,207,211,173, 4,118,151, 59,220,188,125,159,203,205, 37, 39, +103,149,255,254,223,252, 5, 95,125,246, 33,255,252,205,119,252,230,235,127,230,243, 79, 62,227,243, 47,127,204,102, 19,249,235, +159,255, 21,173,117,110,223,121,132, 76,129,216,133, 82,182, 46,172,138, 99,189, 35,197,103,142,234, 34,185, 56,172,175,111,223, +188,229,236,236, 4,137,129,218,113,177,173, 65, 27,103,132,136, 79, 36,174, 10, 37, 29,151, 87,111, 3,113,109,206,144,240,226, +215,190, 63, 0,211,228, 7, 72, 47,174, 6,113,201,182,139,103, 85, 57, 59, 95,243,238,240,148,109,237,188, 59, 60, 99,189,217, +248,119,118, 16, 7,175,224, 85, 30,131, 49,118,252,189,141,243,201, 51,198,151, 97,201, 34, 79,172, 55, 23, 35, 74, 26, 54,181, +178,156,150,220,216,223,229,230,221,125, 98, 16,190,254,250, 27,222, 28, 28,210,106,244,104,229,170, 16,157,205, 16,136, 4, 51, + 84, 20,107,117,116,123, 74,235,149,208,187, 79, 15,134,208, 77,212,249, 32, 34,157,201,140, 74, 0,139, 46, 84, 85,255,238,244, +110,200, 20,189,166,174, 51,178,136,116,137, 80,189,251,116,104,138, 39,138,185,141,202, 65, 52,134, 39,198, 49, 10,169,201,160, + 89,164,106,247, 53, 94,115,125,129, 12, 17,107,183,113,166,171,167,190,105,215,161,255,240,130, 61,154, 79, 23, 66, 31, 73,154, + 58,146, 9,135,173, 59,117, 15, 48, 49,117,253,149, 74,245,115,184, 27, 57, 64,193,133,207,166, 66, 27,201,158,100, 25, 58, 41, +127,143,212, 6, 0, 12,189,126, 93,173,251,179, 50, 69, 95,121,169, 8, 22, 59, 29,165,107, 24, 12, 18,183,210,198,232,147,199, + 48,114, 53,162,184,208, 91,134,106, 61, 5,223,249,143,173,215, 40,166, 71,180,182,186,125, 45, 40,232,120, 46,186,186, 29, 55, + 17,220,245,131, 79, 86,204,220, 97, 0,110,125,182,232, 13,160,168, 12,138,157,235,166, 66, 12,184,214,239, 74, 31, 31,104,125, +252,204,225, 46, 98,196, 45,187, 39,219,241,197, 34, 66,188,113,107,239,167,243,118,166,110,103,230,178,101, 91, 42,219,185,186, + 98, 15,175, 52,100, 36,203,132, 32,126, 49, 77,233, 90,204, 48, 45, 18, 41, 77, 44,242,130,197, 40, 0,124,239,235,213, 68,140, + 30, 7,153,226,184, 34, 7,173,205,212, 71, 33,150,252, 66,116,101,188, 17, 76,137,230, 16, 16,141, 35,237, 39,184,103, 29, 13, + 99, 13,224, 15,146,118, 87,204, 94, 69,143,146,133,160, 94, 81,129,179,205,221,255,238, 73, 86,190,171,247,226, 68,213,223,139, + 62, 68,108, 46, 8,154,152,166,137,197,120, 64, 21, 27, 44,120, 23, 50,137,137,167, 37,198,232, 97,246,193,223,224,100,208,131, + 16, 82, 32,146,200,203,137,197,238,138,189,157, 29,143, 44, 12,145,180,200,254, 97,198, 65,239, 19, 37,165,232, 36, 49, 20,137, +194,229,229,154, 87, 47,222, 48,143, 47,157, 4,207,215,205, 57, 17, 83, 30,163,230,198, 20, 19,189, 52,222,191, 63,166,245, 70, +109,149, 86,170, 31, 96,100, 66, 8,131,252, 54, 56,194, 49,243,217, 39,159,241,201,135, 31,112,122,114,204,241,229,197, 8,167, +105,244, 62, 32, 12,230,222,208,219,119,110,241,209, 71, 31,240,225,179,167,228,156,177, 86,168,221, 71,167, 98,230,168, 73, 22, + 44, 86,113,248,215, 23,132,165, 14, 21,183,143,132, 91,183,107, 78,126, 25,100,187,176,240, 3,112,154, 38,168,141,190, 45,254, +190,103,163, 84, 88,152, 19, 6, 93,183,225,236,227, 62, 37, 22,198,112, 10, 8,181, 85,122,141,254,108,150,234,218,134, 20,152, +154,171,230, 67, 16,114, 78, 44,131, 31,120, 1, 87, 0,247, 25,164, 87, 90,168,108,186,242,254,253, 1, 47,190,251,142,245,229, + 41,251, 55,119,185,119,255, 22, 55,118, 92,124,178, 89, 55, 14, 15, 79,121,245,250,136,231,175,143, 56, 60, 60,101,189, 25,150, +159,218,152,107, 37, 70,231,235,107, 11,212, 1,177,104,117,118, 71, 64,112, 1, 91, 24, 30,252,136, 23,119,138,251,139, 51,110, +207,188, 74,112,186,218,187,153,186,194,223,221, 19, 12,111, 52, 67,244, 52,162,117,213,191, 31,225,218,238,226,211, 59, 51, 47, +196,159, 60,253, 8,201,137, 44,209, 99, 74,131,176,191,152,136, 57, 51,207, 91, 98,217,186,102,165, 41, 71,199,135,156,109,103, + 34, 66, 52, 79, 46,204,217,145,167, 0,139,180, 66,181,147, 45,178, 90,253,255, 84,189, 89,179,101,217,117,157,247,205,213,236, +125,154,123,111,246,153,149, 89,149,213,163, 0, 1, 32, 77, 5,101,218, 18,237, 8,203,150,195, 86, 4,195,244, 79,194,223, 81, +132, 95, 28,126,115,132, 27, 89,242, 3, 3,148, 68,152, 36, 72, 11, 64, 53, 89,168,204,170,236,111,115,206,217,123,175,102,250, + 97,206,115,147,126, 66, 1, 72, 36,238, 61,205, 94,107,142, 57,198, 55,214,204,125, 97, 60,219, 80, 84, 89,246,149,255,238,159, +255,103,252,250,203, 39, 60,249,246, 57,143, 31,190,199,221,251,239,241,241,195,219,220, 60, 91,113,227,206, 35,134,237,138, 48, + 9, 61, 68,163,139,149,163,139,221,253, 24,101, 66, 37,160, 13,115, 12, 15,208,150,153,231, 63,252, 64, 80, 33,134, 68,239,213, + 47,244,150,138,209,238,149,195, 88, 42,195,228,204, 2, 33, 26, 23,254,232,182,238,248,170,207, 38,236,186, 52,119, 92,119, 22, +231,237,219, 36, 27,124,106, 74, 28,166,153, 31, 94,188,226,176,219, 95,151,249,104,247,135,183,119,146,103,177,110,243, 20,227, +245,129,213, 20, 95,117, 52,198, 60,112,168,197,113,213,217, 92,248, 57, 17, 55,198,164, 80, 26,245,176,227,229,121,101, 58,242, +191, 59, 70,135,171, 66, 81,107, 39,236,158,139, 87, 53,133, 34,123,175, 69, 80,143, 17,143,206,182, 72, 22,129, 43,170, 72, 52, +216, 75,148, 78,139, 70, 86, 67, 18, 90,204,196,220,187, 51, 41, 90, 35,186,159, 33,198, 76, 20,175, 0,214,106, 10, 99,183,105, +182,249,128,148,174, 75,175, 26,181, 26, 82,183, 5,177, 52,129,151,145, 72,196, 58,205, 37,218,119, 87,132, 94,237, 66,170,162, +144, 44,193,100,222, 39,243, 79, 73,176, 42,100,237,198,140,192,169,163,201, 1, 53,213, 39,124,155,226,109, 45,216, 90, 49, 87, +122,192, 7,181, 98, 20,182, 32,134,151,237,141,230, 43, 36,106, 55, 40,144, 39,147, 8,199,250,112,219,165, 71,204, 96,232,133, +161,246, 28,244,169, 28, 95, 55,119,245,110,235, 96,151,203, 36,246,187,171,127, 23,155, 63,115,142,170, 18,106,150,185, 16,130, + 49, 0,143,118, 53, 81, 87, 65, 13,104,166, 14,218, 50,244,178,186, 2,101,190, 3,179,114,188,107, 46, 13, 30,107, 19, 87,119, + 37,152,220, 79,169,190,195,119,137, 28, 69,212, 86,175,241,206,237, 27,191, 8,189, 27, 55, 91, 58,218, 76, 86,234,117,166,181, + 98, 38,134,165, 82,107, 99,105,141, 82, 43,165,116, 74,183, 93,116,109,226,191,136,237, 0, 82,202,246,195,135,196,144, 71, 35, + 8,165, 68, 14, 22,227,176, 91,108, 36,199, 76,204, 6,166,183, 40,155,185,125, 91,179, 3, 78,213, 37, 84,123, 71,108,175, 30, +236, 96,104, 88, 9,130, 65,244,195,241,249,102, 83,190,120,218,190, 91,230,176,105,243,226, 20,251, 67, 71,248,138, 98, 42, 68, +120,215, 68,105,111, 70, 54,158,111, 45,213, 46, 12,110, 82, 16, 73,164,156, 9,254,207,155,205,138,152,173,122,116,149,182,172, + 86, 25,141,129,117, 62, 97, 56, 73, 16, 35,245, 48,115,113,113,224,114,223,174, 47, 18, 61,192,184, 90, 25,201,204, 60, 78, 44, +181,160, 13, 94,255,240,146,239, 95,190, 65,162,151,107,132, 64,204,129, 60,100,155, 42,106,103,119,216,147, 98,180,178, 1,237, +244, 50,115,152, 23,154,196,107,212,175,122, 59,219, 17, 95,123,247,189,247,248,252,211,143,129,200,184,222,178,223,159,115,121, +113,105,151, 43, 53,131,210,217,217, 41,239,127,244, 62,159, 60,254,128,245,106, 36, 54,101, 46,147,101,241, 91, 96, 16,187, 40, +228, 60, 48,108, 87,244, 90,189, 77, 74,144,106, 15,221, 30, 18, 26,173,221, 78,114, 34, 69,199, 10,167, 72,104,238,152,111,205, + 11, 42,132,213,152,136, 49, 27, 45, 43,218, 42, 38,164, 12,139, 80,154,237,239,123,181, 44,185,101, 80,124, 23,152, 35, 73, 50, + 42,145,208,141, 76,117, 92, 29,109, 82,164, 84,163, 82, 5, 1,230,198,178, 76, 44,190,122,249,225,233, 51,126,255,236,123, 74, + 91,216,110, 54,220, 60,221,176, 26, 7,154, 86,230,253,194,197,249,142,243,171, 75, 94, 94,236,216, 95,238,205,252,233,123,241, +165,218,229, 38,196,104, 70,203, 86,125, 10,234,118,184,240,142,200,136, 95, 98, 69,109, 93,149,130,137,141,197,241,148,105, 72, + 86,164,210,173,203,189,107,119,170,223,113,250,179, 67, 61,116, 51,155, 40,238,118, 23,241,138,228, 96,166, 28, 55,207,125,242, +233,103,220,121,240,128, 49, 14,196, 65,209, 48,216, 23,165,207, 92,190,121,201,139,167,223,115,216, 93, 82, 91, 97, 59,172,201, + 39, 43, 86, 97,100,125, 50,144,135, 53, 57, 25, 2, 57,133, 21, 33, 36,139,135,213, 74, 15,157,101,174,182, 75, 68, 89, 13,129, +239,190,123,201,131, 15,110,243,193,251,247,248,187,223, 62, 67,180,113,239,238, 35,238,110,224,193,123, 15,152,218,202,246,129, +173,209,162,241,213,135, 16,168, 75, 53, 38,133,211,228,162, 26,240, 74, 68,208,182,176,217,110,121,115,121,193,180,187,178,103, +136,218,165, 93,123,247, 85,153, 15, 6,106, 4,178,166,238, 70,247,164, 64, 16, 91, 7, 90, 94,216,113,213, 40,181,204, 6, 53, +233, 22,213, 21, 95, 37,198,144,188, 97,207,118,156, 57, 88,149,173,237, 73,109,205,102, 55, 4, 91, 9, 90, 74, 33,154,113, 81, +196,163,176, 70,171, 44, 75, 97,154,247, 14, 12,202,228,156, 41,109,177,130,165,144,208, 5,186, 70, 94,190, 61,103,119, 48,104, + 75,136,129,222, 26, 34,217,218, 33,219,132,198, 68,142,221, 94,171,166, 72, 22,250,226,113,191,152, 77, 74,246, 53, 76,104,150, +130,232, 1, 66, 41, 4,146, 81, 24, 99, 2,245,127, 86,123,182, 43,118,241, 35,184,242, 81, 27,205,135,156,227,250, 43,103, 75, + 17, 53,235,105,162, 22, 43, 49,169,221,158,201,173,129,132, 78, 19, 8,189, 89, 21,113,239, 4,245,195, 6, 39,141,170, 37,166, +162, 68,135,127, 90, 41,146,205, 52,102,222, 13, 57, 94,203,247, 41, 37, 42, 70,187, 11, 21,138, 67,167,212,191, 47,141, 78,243, +166, 69,179,111,217,103, 3,191,248,138,163,200,143,171,216,160,216,251,228,159,177,163, 26,166,106,123,240,224,127, 86, 85,140, + 82,167, 92, 27,174, 43,174, 4, 35,148,230, 75,155, 0, 89,176, 53, 81,116, 21, 96, 94,236,239,141,199,203,130,122,198,191, 57, +165,206,158,195,205,155, 51,113, 67,171,247,210,218,115,161, 70, 83, 3,180,217,170,214, 91, 59,205,220,109, 3,170,136, 85,188, +210,252,194,234,207,108,146,181,127,198, 28,174,137,148,131, 36,150,218, 72,203,212,140, 82,230,199,106, 78,106, 5, 42,189,123, + 14, 92,209,104,163,125, 95,204,249, 45, 78,114, 11,142, 84, 59, 36, 99,173, 7,201,132, 33,146,180, 81,154,144, 87,107, 70, 91, +198,219,131, 62,153,196,159,106, 32, 15,195,245,164,220,164, 24,166, 82, 27, 37, 68, 74,135,144,149, 49, 25, 92,192, 26,119, 76, +122,215, 96,114,251,177,196,195,140,114,157, 20, 65,107,179, 91,175, 88, 89,125,245, 72, 87, 20, 3,221, 52,154, 65,246,147,137, + 76, 71, 87,126,208, 78,143,230,224,108,161,250,244,108, 46,202, 30, 32,198,193, 32, 14,201, 88,219, 42, 66,105,176, 76,197,118, +151,253, 64,109, 11,243, 82,233,101,225,234,112,224,106, 42, 44,135, 3,181,204,246, 80,143, 35,195,106,197,106,179,225,228,116, +203,102,220,112,231,193,125, 54,163,146, 10,148,174,206,249,182,203, 75,112,174,190, 68, 43,159, 65,132,245,118, 77, 63,114,245, +181,210, 75,227, 48,205,148, 90,236, 65, 38,234,209,195,232,217,111, 32,193,126,127,224,245,249, 5,103,235, 21, 26,133,143, 63, +254, 20,209,223,240,242,205, 21,119,239, 62,224,236,228,132,155,103, 39,172, 78, 87,180,226,238,253,208,223,197,171,114,164,134, +192, 16,237, 0, 43,211,204,102, 12,206,142,183, 78,240,106,128, 2, 82, 22, 86, 67,224,224,114, 89,247,200,210, 24, 86, 4, 45, +214, 11,156,215,196,184,102, 46,123, 6,148,144, 71,148, 66,172, 21, 77,182,198,233,197, 34,134,173, 69, 99,111,163,132, 56, 88, +195,209,210, 33, 41, 81,186,253,108, 93,233,154, 48,204,245, 66,205,208, 14,205,162,118,173, 16, 99,228, 48, 85,158, 63,253,142, + 55, 23, 23, 68, 85,242,176, 98,189,201, 40,202,213,110,103, 6,165,171,153,214, 59, 75,129,105,182,126,229, 94,187,229,148,109, +183,130, 40,148,121, 54, 92,102,180,104, 76,237,139, 39, 39,108,202,241,238, 93,186,154,185,235,236,108,228,100, 51,242,242,249, + 57,218, 59, 99, 74,215,240,155, 35,220, 73,143,152,228,214,253,139,110, 12, 88, 21,147, 36, 77, 46,118, 47,137,243, 36,106,179, +248,225,143, 62,253,130,207, 62,253, 49,173, 43, 63, 60,123,202,131,199,239, 83,175,246,188,126,251, 3,203,114,129,104,228,228, +100,203,122, 60,229,244,244, 6,171,213, 17,244, 19, 24,214, 35, 45, 70, 78,243,138,185, 44,196,101, 38,164, 21, 75,155, 72,131, + 17,202,163, 10, 81,173,208,100,232,157,179,237, 41,255,250,223,254, 45,127,254, 47,254, 19,254,224, 39, 31,242,235,191,251, 61, +111,119,133, 54, 77,220,189,125,131,147,141,114,177, 88,189,173,204,142,157, 78,230,161, 9,173, 17,219, 98, 42, 79, 20,150,194, +117,255,130, 14,129,199,143, 62,224,111, 95,190,180, 75,142, 4,107,240, 82, 55, 96, 10,212,102,201,133, 64,180, 29,166, 4,180, + 47, 38, 79,122, 27,150, 25,138,178, 13, 29,101,246,149,156,213,245, 14,121, 96, 61, 38,166, 90,188,253,209, 36,207,168,182,206, +105,106, 10, 83,144,232, 96,146,119,151, 4,241, 24,169,170, 82,123, 49,195,149, 42, 90, 23,135, 65, 37, 75, 19,228,234, 14,245, + 78,157,139,121, 64, 90,103,183, 44,148,182, 99,149,239, 80,166, 78, 74,234,235,160,153,189, 87, 44, 47,165,112,104,141,117,202, + 44, 46,243, 75, 72,118,177,243, 34,158, 42, 98, 50,125, 79,206, 32,247,238, 12, 96, 72,194,210,141,155,168,173,162, 43,203, 87, +167,144,208,214, 72, 57,209,163, 80,131, 48,136, 41, 34,225, 24, 33,235,129, 40, 74,141,197,214,157,161, 91,190, 90,133, 62,153, +202,106,220,122,227,105,116,233,150,155,215,234,205, 98,205,170,156,197,160, 55,170, 66, 95,140,179, 33, 61,120, 89, 76, 48, 47, + 78, 19,230,106,180, 56,154, 88,225, 18,213, 6,179,166,244, 94,168,106,205,101,221,171,137, 99, 12, 4,127, 93,213,135,183,214, + 13, 26, 19, 75,132, 49,218,179, 65,148, 34,230,112,239,199,237, 87, 13,164,228, 43,186,210, 8, 67, 50,162,228,210, 72, 99, 32, + 13,163, 39, 7,196, 27,218, 32, 5,203,142,183, 46, 44,154,104,209, 58, 28,186, 19, 84, 45, 13,213,188,162, 89, 72,132,235, 66, +179,138,130, 38,130, 90,130, 39, 37,243, 4, 25,147,249,232,142, 47,102,110, 52, 61,132,118, 60,204,155, 80,163, 93, 78,162, 43, +185, 29,195,245,138, 68,106,179, 72, 99, 12, 62,188, 98,175,117,177,211,144,248,224,238,141, 95,136, 90,198, 88,125,191, 80,107, + 51,135,179, 79,226,173,218, 95,218,163,213,110,102,137,190,224,247,224,191, 21,117, 91,252,166, 22,187,217,181, 70, 91, 22,230, +102,109, 92,181,207,236,246, 51,211,178,152, 27,216,247, 32,165, 88,221,170, 6,163, 9,165, 28,145,176,178, 94,247,148,200, 67, +242, 3, 46,146,194,177,137,205, 92,224,209, 39, 21, 28, 90,208,220,240,102, 45,236, 38,133, 70,130,213, 37,138, 16,162,129, 25, + 68,109,146, 82, 58, 73,163,187,249, 29,104,163, 70,109, 3,203,214,167, 56, 48,140,153,213, 38,147,135,200,144, 2, 63,124,255, + 3,191,253,234,247,188,120,249,150,139,243,115,158,191,124,201,171,215,231,236,118, 7,174,118,151,156, 95, 94, 81, 14, 11,173, + 89,211,142,121, 20, 76,254,139,173,112,249,230, 53,207, 95,189,228,106,233,172, 54, 39,228,152, 32,219,225,113,117,190, 55,230, +189, 24, 6, 54,199,129,253, 97,199,220,149, 60,102,155,152, 91,161,148,153,195, 97, 98,174,139, 93,118,186, 37, 24, 66,200, 68, +204,120, 39,222,244,181,236, 39, 74, 19,238,220,188,101,231,124,202,220, 56,189,201,237,219,183,184,251,240, 1,219,205,198, 12, + 65,222,160,135, 99, 75,135,117, 70,116,160,183, 5,180,217,197,102,136,150,177,116,114, 95,202, 66, 30,173, 99, 56,118, 83, 88, +150,102, 92,230, 62,123,169, 65,181,106, 90, 29, 50, 12,145,158,236,178, 88,157,240,219,180, 81,171, 48,172, 70,131,204,180, 9, + 51,194,170,181,238,117,239,142, 22, 51,243,149,106,230,152,156, 7,186, 70,210, 24,145,212, 25,213,204, 83,211,174,210,155,103, +103, 67,102,154,246,124,251,251,175,121,245,250, 13, 34,194, 48, 68,198,149, 25, 67, 75,179,252,244, 82, 42,115,105, 76, 75,101, +169,166, 40,128, 53,192,117,237, 94,172,107,173, 72,173, 26, 56,162,183,238,189,247, 6,201,177, 41,178, 95,179,245,171,118, 90, +169, 24,253, 81, 88, 74,183, 38, 45,239, 73, 56, 62,136,155, 90,252, 82,176,216,139,113,158, 77,166,195, 15,147, 16,205,192, 36, +209,214, 30,173, 21,136,129,207,191,248, 49,159,125,246, 99, 68,149,231, 47,190,165,206, 51,135,233,138,221,229, 75, 86,121,224, +244,228,140,147,237, 9,183,239,220,229,244,236, 6,163, 8, 11,194,201,118,205,230,230, 13, 78,238,221, 97,236, 29,141,131, 87, +209, 22,139, 12,161, 12, 57, 19, 52, 17,194, 64, 12,129,185, 20, 22, 9,140, 41, 83, 74,227,230,221, 7,124,244,222, 77,126,249, +215, 95,241,250,237, 91, 62,124,239, 46,127,242,199, 63, 33,172,132,111,159,190, 69,147, 53, 47, 90,245,103,112,242, 93, 68,195, + 64,144, 64, 21, 69, 66, 38, 4,155,158,106,239,220, 56,185,193,213,229, 5,231,231,111, 13, 91, 45,129, 36, 98,242,104, 53,194, +161,118,155,222, 76,206,108,199,122, 65, 75,204, 56,210, 90,131, 69,165,212,110,212,164,144, 33, 25, 79, 98,189, 30,184,117,114, +202,122, 28,174,177,205,174, 96,210,177, 75, 32, 57,209,171,248,100,239, 94,158, 33, 33,201,146, 40, 41,101,143,249,218,238, 56, + 39,119,158, 11,228,156, 57, 59, 61,229,234,176, 51,243,237,122, 69,115,137, 95,187,178, 90,159,250,202, 68,169, 49, 81,251, 98, +235,196,218,161, 47,166,202, 89,216,140,156, 34, 73,188, 90, 53, 64,247, 70, 63,237,193,148,225,230, 81,212, 36,104,104,182,182, + 9, 56,169,206, 62,139,199,184,169,200,177,215,219,192, 76, 33, 37,139,129, 53,113,188,161, 56,226, 20,122,177,215, 58,250,202, +163,131,119,119, 88,242,232, 58, 30,150,193, 66,238,130, 54,239, 31,239, 54, 92,136, 26,157,240,200,149,144,227,174,190,119, 74, +179,157,180, 28,205,159,209, 10, 82,106,175,102,112, 86,165, 53, 65, 28,151,218,245,168, 94,249,247, 66,133, 65, 34,157, 70,164, +211,186,120,124,179, 90,227,184,239,236, 69,156,175,160,246,140,239, 62,168,136, 8,161,185, 17, 51,225, 23, 55, 3, 65,213,165, +251, 37,189, 83, 93,129, 39,218,180,222, 61,142,218,143,124,250,112, 92,147, 4,186,151,181, 4, 9,214,200, 22,154,179,219,142, + 21,192,118,105, 58, 54, 48,166, 96,234,135,186,225, 60, 74,176, 88,182,226,173,167,141,226, 24,109, 99,167,200,245,164,159, 13, + 51, 72,239,199,207, 70, 51, 31,131, 6,226,189, 59,183,127, 33,170, 84, 18,146, 50, 67,176,195, 50,250, 11,212,142,165, 39,110, +128,232,254,144,171, 62, 99,116, 63,252,205, 8,100,110,238, 16,146, 31,246, 71,244,172, 57, 49,135, 36,164,222,160, 54, 14,243, +194,180,204, 28, 14, 7,174, 14, 51,203,116, 96,127, 40,236,167,153,101, 54,154, 82, 13, 38,173,208, 20,201,129,152,147,247,253, + 90,255,121,148, 64,136,102, 36, 27,162, 51,114,187, 18,163,145,184,108, 33,233, 82, 87,176, 93,142, 73,215,239, 90,219,130, 87, +180,166, 60,152, 89, 34,216, 58, 65,130, 50,228,129,156, 77, 18, 73,113, 69,107,149, 87, 47, 95,240,244,187,239,173, 69, 43, 70, + 90, 45, 44,211, 66, 41,197, 84,135, 14, 33, 39,134, 97, 96,187,222, 48,140, 3,113, 72,156,158,110,249,224,206, 9, 39,235,196, +229,161, 48, 77,149,195,229, 57,175, 95, 95,146,214, 43,110,108, 54,188,122,250,130, 23,111, 46, 9,217,233,122,113, 96,189, 26, + 89,166,189, 91, 37, 76,130, 47,213, 14,244,226, 32, 19, 61, 22,242,136, 92,223,144, 81,163,249, 5,191,141,199,144, 56,187,117, +195,138, 2,150,206,144,147, 97, 92, 49, 96,144,210,141,117, 45,150,205,215,118, 52, 6, 89,205,162,237,145,229, 26, 97, 24,188, +110, 19, 79, 19,235, 98,104, 34,141,102,196,171,181, 17,197, 92,198,137, 64,233,141, 36, 16,226, 72,236, 64,175,100,212, 38,224, +214,200, 41,217, 52,177,152,105,135, 56,144, 93,242,157,139, 27, 73,146, 66, 78,172,176, 66, 25,235,130,111,132,208,160, 8, 75, +155,153, 14,149,185,152, 76, 22,135,200,238, 98,199, 87, 95,125,205,238,242,146,144,108, 37,176,202,150,157,157,166, 70,105, 11, +101,169, 44, 75, 99,158, 11,197,110,179, 38,201,250,151,158,107,252,100,117, 40,209, 49, 67,218,253,224,117, 24,198, 63,128,179, +244, 86,209,230, 12,135, 16, 41,222,213, 46, 94,240,160, 30, 67,107,189,154, 49,211,251, 6,244, 56, 5,136, 94,239,205, 77,189, +180,194,147, 20, 2,235,117,166,169,242,163, 79,127,196,103, 95,124, 70, 90, 39,158,191,120, 77,189,122,203,122, 28,105,109,225, +189,251,247, 57, 61, 61, 97,123,178,229,100,181, 37,110, 6,171, 86, 21, 24,242,150, 7,119,110,145,215,137,172,118,216,149,150, + 9,173,144, 66,181, 7, 89, 52, 3, 83,144,192, 24,130, 21,153, 40,228, 32, 28, 14,133,178, 40,111,119, 19,127,242, 71, 95,240, +228,233,151,252,245, 95,253, 61,127,254, 47,255,148,255,225,127,252,111,121,117,222,248,238,249, 43,166,203, 61,218,173, 78,211, +184,182,107,178, 55,229,229, 20, 77, 97,106, 46, 79,246,197,138, 99, 84, 56, 57,185,193,197,229, 57,187,253,206, 40,122,197, 34, +142,193,190,184,206, 96,183, 97, 34,250,103,188,138,189,182, 71, 95,131, 93,202,204, 36, 23, 37,122,121,145, 82,171,178, 44,133, +165, 26, 59,123, 53, 12,220, 60,221,208, 74, 97, 55, 77,244,110,135,157, 73,159,134,108,182,117,162, 93, 16, 66, 55,215,114,142, +131,247, 43, 44,212, 86, 60,215,108, 28,254, 60, 36,182,155, 19,166,195,236,187,100, 37, 15, 17, 93, 26, 33,143,164,156,169, 90, +168,125, 54,168, 14, 66,238,221, 14, 3,245,137, 54, 36,178,154, 1,178, 98, 7, 81, 67,137,213,214, 87, 68, 43, 3,145, 96,151, +194,238, 89,106, 9,208,171, 90, 43, 32,150,248, 17,245,122,107,119,135,247,102,138,152,224,145,169,100, 64,174, 46,214, 58, 40, + 68,122, 53,179,114,196,134, 38,162,153, 87, 59,102,212,236,165,160, 89,136, 49, 18,186,210,155, 81, 57, 69,149,166,213, 46, 16, +193, 19,129,189,217, 10, 69, 21,169,126, 7, 11,230,171,234, 98,147,184, 21,100,169, 53,187, 57,213, 82,212, 76,162, 67, 18, 47, +209, 50,243,116,119,249, 90,213, 42,161,235,162, 52, 49, 21,150,110,236,143,166,225,122, 87, 45,193, 94, 83, 28, 50, 35,193, 36, +108, 53,249,216, 59, 34,174, 87,211,230, 59,195,188, 25,173,155,242,219,151, 74, 84,115,237,215, 35, 66,219,245,222, 24,109,210, +238,210,108,144, 12,129, 94,171, 69, 32, 37, 57, 70,199,108,239,221, 29,253,210, 45,106, 28, 7, 87,178,163, 94,247,150, 52, 12, + 54, 19,163, 87,109,119,177,203,156,116,211, 2,252, 92,141,120,146, 38,218,122, 69, 92,246,143,167,167,155, 95,180,218,232,205, +160,254, 75,183,136,154, 89, 5,162,239,119,147, 85, 70,134,204,144,236,225,110,101, 39,209,205, 83, 86, 39, 34, 62, 45,214,222, +168, 75,165, 19, 9,106, 73, 70,155,159, 59,115,183, 61, 73, 45,133, 82,109, 79,217,123, 35,116,165, 46, 11,165, 53,122, 93,104, +173, 49, 47, 51,243,188,216, 65, 95, 27,243, 84,153,150,153,165,246,107,226, 79,147,227, 27,174, 72,138, 12, 49, 19, 83,102,200, + 86, 56,145, 7,147,168, 98, 20, 86,155,124, 68,236, 50, 12,201,234, 38,135,196,144,162,221,209,130,237,204, 36,192, 56,172, 65, +224,205,249, 5,175, 95,191,229,245,243, 23,252,240,244,123,158,191,186,160,107,180, 86,181,186, 48, 47,139, 53, 3, 5,187,252, +196, 49,179,221,110,216,108,206, 56,189,113,131,245,176, 97,115, 54,114,182, 93,145,164,243,230,114,225, 80,149,148, 51, 67,138, +148,121,226,234,106,207, 50, 53,222,188,125,115,205, 12,136,193,147, 5,218, 25,134,108,194, 74,107, 44,243,204, 92,138,187,114, +125,162,247,213,128,161, 86, 35, 99, 30,188,181,206,190,116, 49, 90,188,112,117,122,194,144,163, 89,118,196,110,193, 93, 22,170, +199,143, 98,108, 22, 93,115,132,110, 41,157,160,141, 85,206,182, 59,170,194, 60, 21,123, 88,198,232,230, 15,231,184,247, 72,163, +154, 19,182,219,205,191,247, 70,143,120,196,208,153,238, 78,189, 11, 40, 61,123,202,162, 65,149,198,220, 22,106, 21,234,210,209, +184, 80,196,202, 68,114,198,219,204,204,213,222, 17,134, 4,105, 5,181, 26, 14,178,165,102, 57, 85, 1, 36,145, 99,230,237,155, +215,124,253,229,239,216, 93,236,104, 10, 67, 78,140,233, 24,111, 18,235,132, 47,157, 86,139,237,197,107, 49,220,163,154, 90,213, +154,183,171, 85, 51,238,136,154, 4,142,231,160,123, 63,186,174,237, 51, 85,187,119,162,123,251, 83,142,153,228,171, 45,219,193, + 31,213, 20,155,248,123,213,107,163,102,192,168, 85,215, 37, 63,222,192,103,208, 33,115,196,133,100,255,159,173, 42, 31, 63,254, +152, 47,190,248, 17, 41, 7,246,251,137, 23,191,127, 98, 23,239,222,249,248,253, 15,121,244,248,125, 98, 94,113, 99,115,139, 49, +103,242,102, 52,147, 99, 26, 89,159,142,220, 58, 59,181, 98, 35,133,188,186, 5,251, 43, 66, 16,187,212,104, 99, 19, 78, 29,136, +100,242,102,237, 11,171, 49,209,177, 75,191,212,198,249,235, 75,222,238,103,254,201, 31, 60,228,175,126,245, 21,255,249,159,254, + 49,171,237,138,178, 95,248,217,231,159,242,246,242, 21,111,118, 87,164, 4,171,148,236,129,213,141, 79,160,241,136,157,109,168, + 86,186, 87, 30, 55, 13, 12,171,145, 59,119,239,179,236, 14,188,124,249,194, 98,143,201,158, 31,150, 26,176,200,172, 56,111, 91, +157,105, 97,185,119,219,157, 91,143, 68,240,142,138,102, 74,100,115,201, 82, 34,135,105, 98, 63, 45,222, 97,175,230,137,145,206, + 52, 23, 47, 92, 50, 99,168,155,162,157, 2, 88,137, 41, 89,175,131, 19,253,138, 75,200,218, 59, 49, 38,255,204,116,198,213,200, +180, 44, 44,147,193,122, 98, 16,134, 65, 25,226, 72, 72, 3,165, 89,161,144,173,154,108, 10,238, 94, 67,157,131, 16, 36, 27,221, + 17,203,175, 75, 11, 80,173,112, 4, 9,134,120, 61, 26, 7,163, 77,194,189, 27,219,160,149, 74,139, 74,202, 35, 34,205,250, 5, + 36,210,197,164,109, 51,178,194, 48,200,181,191,160,187, 81, 75, 34, 44,254, 60,166, 91, 39,123,148, 64, 76,131,149,202,168, 33, +151, 83,180,146,170,210, 5,157, 11, 33, 65, 17,243, 29, 28, 63,179,234, 4,182,235,236,117, 0,205, 70, 13, 77,158, 15, 23, 12, +156,132, 38, 90, 47, 4,154,169, 57,218,188,138, 56,250, 90,197,163,156,189, 25,111, 64,195,117,132,177, 97,191,187,157,150,166, +250,106,105,239,136,164, 98,166,209,238, 96, 53,179,191, 4,122,176, 60,184,122,118, 60,104,183,159, 37,121, 61,150,152,164,110, +131,164,241, 68,172,138,213, 46, 82,122,125, 17,115, 22,187,250,235,233,158,140,224, 61,233,199,195,250,200,118, 15, 4,186, 24, + 34, 54,184, 55, 68,130, 41, 11, 70, 78,181, 46, 10, 31,135,237, 50,155,189,132, 76,205,112, 23,197,214, 2, 98, 95, 38, 7,215, +216,170, 36,222,184,121,243, 23, 61, 6, 67,182,122,144, 30,109,104,175,212,230, 59,141, 86,169,165, 25, 58,210,161, 32, 34,129, + 72,183,219, 14, 30,217, 17, 65,226, 64,246,252,177,248,180,161, 57,146,101, 97,222, 79, 28,166, 98,152,217, 32,118,235,165,163, + 85, 41,199, 95,250, 24, 95,195,126, 14,113, 96, 71,111,149, 86, 23,179,242, 99, 15,206,105,178,202,204,233,112, 96, 55, 47,148, +106,248,201,165,153,187,180, 54,111,197, 10, 66,146,108,177,179, 97, 32,229,196, 42, 38,198, 97, 68,178,144,194,192,122,189,102, +179,202,108, 86, 35,235,237,150,216, 42,191,251,237,127,228,247, 79,159,211,230,198,126,183,103,127, 40, 86, 75,233,133, 39, 98, + 72, 61,182, 39, 43,110,158,109,185,123,123,205,157, 59,107, 78,214,107,242,176,229,198,201,134,245,217, 0, 61, 82, 22,229,226, +178,114,121,176,223, 95,189,182, 53,196,132,244,198,197,197, 37,115,245,233, 66, 60, 45,174, 30,219, 33, 26,108,165, 76,148, 90, +175, 89,245, 33,216, 94, 39, 88,141, 29,104, 55, 52,109, 76,164,193,235, 65,181,155,100, 24, 3,159, 60, 56,227,238,217, 9,189, + 69,222, 94,158,115,152, 15,244, 82,169,189, 91,185, 77,173,214,254, 20, 32,229,200, 42, 69, 66, 14, 84, 21, 67, 84,122,243, 93, +136,102, 49,237,197, 72,249,189,153, 67, 62,103, 51,127,148,178, 24, 36,166, 9, 25,177,150, 49,173,246,103,134,136,180, 72, 28, +161,213,104,239,109, 12,132,165,211, 67,162, 39, 65,103,123,143, 7, 13,150,215,143,130,144, 88,202,132, 86,200,106, 41, 2,218, +145, 26, 88,145, 60,146,186, 80,197,118,249,231,151,151,124,249,213,111,185,188,220,115,114,178,181, 27,122, 11,164,113,160,139, +178, 56,119,189, 22,219, 79,181, 96,114, 95,111,149, 82,171,125,245,146, 79, 61,221,157,196, 46, 67,226,196, 41, 31,211,129, 70, +169, 71, 83,166, 18, 99, 96,200,217, 43, 37,171, 61,232,187, 32,209, 46,151,218,222,201,182,193,149, 33,219, 17,246, 99, 15,177, + 73,159,106, 19,178,122, 73,227, 49, 90,245,225, 71, 31,242,179,159,255,156,148,132, 10, 60,123,250, 12,180, 81,181,114,227,236, + 22, 55,111,221,102,140,137,205,250, 38,103, 55, 78, 25,114, 98, 41,133, 30,225,246,233, 67,182,171, 21,123,148,170,153,243,171, +115, 94,190,122,193,102, 53,162, 81, 40, 77, 88,180, 18,157,139,176,234, 3, 75,177, 29,241,152, 86,208,133, 97,101, 15,232,213, + 58,242,253,243, 87, 60,122,239, 17,159,127,116,151,170,107,126,243,229, 87,252,242,175,254,146, 63,250,233, 79,249,248,211, 15, +121,246,244, 41, 83, 85,131,254,116,155, 50, 58, 66,104,133, 62, 36,147,104,165, 67,207, 72, 88, 17,134, 0,181,144, 72,220,189, +247, 62, 33,193,155,215,175, 41,165,216,193, 46,225, 24, 1,230,221, 63, 28,205,175,118, 32, 90,226, 38,121,205,129, 77,119,222, + 67,121,109, 88, 53, 75,148,186, 90,208,184,119,255, 30,103, 55,110, 51, 29, 10,117,153,141,213,175,226,244,178, 35,147, 92,144, + 40, 36, 73, 6,130,202,201, 48,215, 62,249, 25, 33, 80,145, 36,108, 86, 55, 40, 75, 99,183,187,160, 54,101,153, 23,134, 24, 57, + 57,187,109,166, 48,178,201,206,189,153, 23,168, 31, 65, 49,214,207, 80,123,167, 37, 65,212, 24,247, 82, 26, 37, 52, 24,252,130, + 92, 45,174,149,196, 38, 56, 1,164,117,219,171, 70,203,102, 27, 99,164,211, 99, 52,213,169,217,255, 62, 72, 64, 91,177,203,143, +100,130, 9,253, 70,201, 67,105,179, 93,110, 37, 10,164, 35,200,200,226,151,161,187,210,201,145, 67,225,109,152, 98,138,106, 24, + 3, 57, 24,219, 95,187,213, 6, 75,136,164, 56,152,161,175,154, 60,109,159,113,135,165,182, 74,243,152,113, 8,194, 82, 23,187, +120, 75, 48, 53,178,123, 71,130,103,226,123, 55, 4,109,243, 66, 42,136, 86, 42, 22, 2, 41,252,131,212,130,133,166,141,252, 25, +236,114, 29, 48,172,184, 38,156, 63,208,173, 21, 82,155,189,151,206, 29,160,138, 23,177,200,245,217, 70,239,215,121,114, 61,130, +108,131,184,236,110,177,212, 99, 3,104,116, 24, 69, 8,205,140,110,226,241,213,163,220, 78, 39,137, 73, 98, 33,138, 61,103,150, +102, 60, 19,191,176,168, 26, 4,204,124, 85, 71, 60, 94, 36, 13,225,186,207,196,115,212, 32,129,140,241, 29,226,118,187,253, 69, +239,225,186,183, 86, 9, 72, 72, 22,235,136, 1, 73,137,113,200,228,144,204,140, 38,234, 77,103,222, 18,213, 26,197,191,244,173, +155, 27, 82,189,249,170,248,164, 24,188,235, 60,134,129, 16,131, 73,224,118,169, 50, 85,206,155,168,130,247,214,182,218, 88,106, + 53,140,107,244, 47, 83, 56,198,234,188,162,240,104, 36, 59,246, 29, 55,181,219,122, 47,230,136,165,176, 76, 7, 46, 47,246, 92, +205,133, 82, 11,135,101,177, 56, 84,173, 20,119,207,171,218,151, 52,143,145,184, 30, 24,199, 21,155, 85,226,135,239,158,240,187, + 39,223, 19,226,200,144, 35, 75, 89, 40,221, 63,236, 1, 98,202,156,221,124,192,123, 15,238,115,243,108,224,246,141, 83,238,223, + 62,229,206,217,218,216,195, 75, 70,210, 8,179, 29,102,251,195,129,182,216,161,105,140,120,147,105, 84,108, 50,139,226,147,173, +250, 27,235, 49, 63,235,224,110, 76,117,161,151,238, 7,140,231,149,187,151, 37, 4,147,222, 37,218,155, 29, 82,230,244,244, 4, + 45, 11, 75, 41,212,218, 89, 13, 3,255,248,199,119,184,123,170,124,245,237, 83,190,125,242, 13,111,223,188,228,106,191,227,222, +141, 21, 67,220, 80,106, 39, 69,235,140,206, 49,178, 94,153,255,160,137, 77, 61,116,119,106,214,110, 29,201, 98, 81, 45,137, 24, +101,171,218,195, 69, 99,179,114,144, 33,209,232, 44, 98, 18, 85,136,201,157,174,194, 56, 68,234, 92, 76,226,235,176, 10,129, 18, + 20,157,155,237,252,180, 50, 74, 34,100,101,154, 59,211, 98, 78,252, 20, 50, 18, 12,124, 33,254,101,110,245, 88,103,106,153,213, + 23,207, 95,242,213, 87, 95, 50,207, 54, 89,173, 54, 43, 62,120,124,151, 56, 6,118,135,133,222, 11,173, 86,159,172,171, 93, 12, +154, 49,226, 75,171,140,121,100,179, 93, 91,245,108,109,102, 92, 52,195,133,197,170,174,165,118, 67, 39,155, 43, 30,251, 28,197, +228,145, 66,139,168, 93,175, 43,252, 61,147, 99,119,186,167,210,180,217, 69, 65,143,123, 63, 9, 30,213, 50,217,181,117, 43,140, + 56, 94, 24, 62,121,252,152, 63,252,217,207, 73, 67,162,246,192,114,152,249,230,171,223,161,189,112,235,244, 6,119,110,223, 49, +216,201,201,150,241,228,182, 81,207,106,160,118,225,253,247, 31,113,186, 61, 99,154, 39,174, 46,222,176,219,217,191,182,221, 37, +183,110,223,182,203,116,180,104, 99, 18,161,210,233, 89, 57, 44, 11,195,106,100,179, 89,161,193,212,187,221,225,138,231,207,127, + 96,218, 79,188,126,245,134, 63,255,179,255,154,175,190,126,198,223,252,250,183, 60,121,242,146,205,122,195,207,190,248, 49,207, +190,126,202, 55,223, 60, 37,159,108,108,162,113, 53, 41, 72,165,213,224, 19, 81,117,202,158, 16,142,181,201, 4,100, 16,238,223, +187,199,205,155,103,204,243,129,121,182,142,123,117,186,229, 17,250,147,146,239,108, 67,178, 74,215, 24, 60,190,165,174,142,244, +127,176, 54, 57, 18,168,212, 77,118,230, 82,174, 75, 97,187,217,114,178, 25,216,237, 15,102,252, 76,201, 17,216,226,123, 84,123, +207,179,151,159, 12,121, 32, 32,204,203,100,102,177, 38, 52, 21,134,152, 57, 57, 93,113,255,246, 77,174, 14, 19, 83, 57, 0,141, + 49,175,216,156,222,180,159, 95, 2,170,145, 24,212,232,102,217, 30,240, 29, 83, 71, 2, 46,103,183,192, 82,139,199,118,223,149, + 87, 69,181,120, 88,247,246, 72,232, 84, 9,132, 96,242, 49,193,248, 27,109, 17,143, 74, 25, 1,165,251,164, 23,114,176,162,146, +121,161,185, 57,204,106, 65,149, 88,204, 1,111, 70, 51,107, 99,235,189, 32,201,211, 67,193, 61, 8,230, 42,176,247,180, 85,146, + 64,194,228,207,212, 85, 0, 0, 32, 0, 73, 68, 65, 84,200,104,221, 77,134,228, 72, 84,187, 72,217,251, 36, 84,109, 6,136,242, +194,232, 35,229, 79,124,202,150,238,184,153,230,151, 47, 9, 84,143,232,250,182,158, 32, 6,165,178, 53,170,199, 30,181,217,186, +194, 39,124, 57,166,165,130,237,188,165,118,126,242, 96,203,103,159,124,192,171,157, 82,247, 7, 52,114,173,148,225,112, 24,187, +115,116, 90,232,164, 44,148,218,140,251, 95,171, 87,111,219,243, 64,220,199,225,179,249,187,194, 22,169,136,228, 35,198,203,212, + 82, 53,238,137,164,224,235,205,134,118,167, 21,138,208,163, 48,136,197,211,186,255, 89,195, 69,123,137,161, 95,106,136, 9,191, +214,217, 64,133,163,106, 53,160,193, 84,170,148, 98,188,150,180,142,131, 71,239,141, 5,159,154, 75,163,101,107, 64,247,113, 2, +196,218,166, 44, 98, 16,200,126,123, 52,170,144, 73,185, 43,127,203,180, 23,147,123, 8, 54,217, 30,225, 27,248,171, 23, 18,121, + 48, 51,140, 54, 51,146, 73,138,148, 98, 82, 3, 30, 73, 56,198,181,122, 41,204, 77, 73,238,224,180, 8, 73, 32, 37, 65, 75,225, +160,221, 50,144, 29, 82, 10, 12,221, 17,138,205,220,131, 90,103, 84,132,101,110,236, 93, 54, 78,195, 64,218,217,180, 36,154, 9, +114,224,187,223, 63, 39,143, 43,195,140, 6, 37,101,219, 9,222, 56, 27,233,181,176, 28, 26,171,213, 13, 30,126,248, 25,151,207, +255,142,195,220,200, 33,163,193, 92,172, 81,160, 44,133,178,219,113,185, 76,180,214, 88,161,164, 52,128, 8,193, 91,238,196, 75, +230,187,218,206,176,149, 78,209,133, 97,149,125, 31, 5, 75, 51, 35,200,177, 8,225,216, 85,175, 30,163, 72, 41,144, 99,194,250, + 26, 58,189, 28,216, 93, 98,151,162, 60, 18,129, 7,239,109,153,181,241,219,175, 95,242,252,135, 31, 72,162,164, 20,184,117, 58, +112,186,106,188,126,253,146,188, 57, 35,135,126,237, 65, 16,172, 98, 82,101, 97, 41,110,210, 74,208, 15, 70,202,147, 20,173, 81, +170,192, 32, 13, 37,219, 36,227,114,243, 50, 87,210,144,136, 77, 88,101,207,150, 78, 21,209,198, 20, 71,208,196, 82, 39, 98,142, + 28, 80,202, 98, 4,170,156,148, 82,149,121,217,195,224,151,159,110,107,159,113, 48,170, 88, 95,108,143, 90,117,177,216, 79,105, +104,237,124,247,226, 25,191,127,242,148,185,118,114, 54, 88,207,213,213,158, 87,111, 51,219,117,162,213,133,165, 52,178, 87,215, +106,183,242, 18,233,134,119,220,110, 79, 25,115,102,119,121,201, 82,139,197,187,130,101, 84,139,171,237,221, 47,179,134, 14,182, + 41, 60, 37, 75, 9,208, 77,130,108, 90,175,227, 87, 40, 84,127, 56,105,199, 47,193,253,186, 87, 93,189,220, 66, 67, 32,180,110, + 49,201,113, 96,181, 57, 97, 53, 14,108, 87,107, 86,219, 53,119,110,222,224,198,233, 45,210, 42,153,178,213, 59, 57, 8,203,188, +231,100,115,131,245,233,134, 33, 12,172, 87,103,172, 78,238,241,254,227,143,233,203,142,167,207,158, 80,231, 29,175,158, 25,109, +173, 1,211,126, 71,233,157,155,247,238, 65,181,120, 95, 37, 50, 79, 87,180,218, 56,180, 66,185,172,212,101, 97,179, 74, 12,227, + 64,239, 43, 78,198,206, 85, 57, 16,242,138, 59,103,119,120,246,253, 83,158, 61,189,226,242,170,241,225,135,247,248,119,255,254, + 63,240,195,239,127,224,127,254, 95,254, 55,238,221,191,199,189, 71,119,224,111,102,130, 54,102,245, 73,165, 43, 45,143,116,170, +113, 40, 52, 18, 82,162,149,137, 52, 4, 90, 53, 78, 67,153,109,157,115,255,222, 7,220,186,125,151, 87,111,223,240,246,135,231, +188,121,251,154,171,171, 43,230,186, 88, 84,114, 1,213, 68, 26,160, 30, 21, 13,237, 4, 13,174,123,180,227,253,216, 46,255, 33, +160, 85, 25,178,152, 91,187, 9, 47,223,158,211,165,243,233,135, 15,185,119,247, 22,223, 61,123, 99,135, 97,118,154, 88,235,150, +255,207,182, 70, 80, 26,211,178,103,157, 7, 86,195,154,171,125,101,174, 51,170,112,178,218,176,205, 3,127,252,179,143,216,108, + 50,191,254,205,215,172, 67,229,214,173, 51,131, 63,185, 73,110,169, 19,213,137,156,171, 16, 96,108, 76,123,207, 40,199,232, 15, +248, 25,137,230, 48,111,173,147,177,180,135, 87,193,184,252, 42,212,217, 18, 33,244, 78, 13,129, 32,141, 58, 53,191,200,128,178, +166,117,163,209,133, 96,189, 13, 38, 59, 99,205,102,221, 14, 5,210, 17,141,106, 7,101,107,199,136,151,253,255,244,208,105,243, +108,254,130,232,121,116, 85,195,119, 19, 1, 27, 34,204,219, 16,160,204, 84, 53, 9,123,105,190, 19,111,174, 62,117,107, 43,235, + 26,136, 97,160,206,147,169,118, 93, 8, 14, 25,210,108,125,227, 33, 98,174,119, 55,188, 53,197,234, 90, 93,225,106,158, 4, 73, + 41, 27, 11,194,115,121, 34, 66,168, 22,132, 22, 81,238,220, 94,243,232,243, 79,249,143,111,159,113,245,246,156, 80,172,106,181, + 59,183, 61,104,178,193,101,101,107,130,190,188, 75,167, 48, 36,106, 53,195,179,246,102,238,116,167,198, 5, 73, 14, 74, 91,140, +155, 16, 33, 30, 29,118, 93,104,126, 49, 55, 96,158,123,102,164,251,138,219,134,234,170, 66, 74, 92,211, 85, 21,107, 97, 84, 53, +116, 55, 13,132, 66,105, 28, 93, 61, 22,131,211,238, 91,123,165,147, 72,130,231, 37,181,155,140,115, 68, 10,250,228,220, 29,104, +127,180,241,139,239, 66, 76,194, 18,223, 17,218, 77,199, 24,229, 29,130,201,133,225, 90, 34, 59,118,160,219, 62, 40,138,120, 20, +195,238, 57,109,174, 72, 74, 30,180,143,150, 13, 28, 34, 57, 56, 80, 64,205,185,217,213,235,250,146,185, 1,231,185,248,238,223, +195,167,189,219, 45, 42,218, 11,177,244,104, 46,122,181, 47,142, 54,107,216, 89,220,104, 21,189, 54,181, 76,123, 46,206,103,230, + 98, 95,202,152, 34,105,216,112,115, 29,157, 78,133, 53, 61,133,136, 72, 96, 89,148,152, 35,243,238, 21, 63,188,216,144,154, 33, + 93,175,166,137,133,145, 94, 22,222, 94, 30, 12, 9, 90,173, 9, 73, 17,230,238,178,149,187, 39, 67,176,157,211,245, 30,198,119, +219, 90, 11,135,229,192, 42, 15,215,125,245, 57, 7,150,163,132,230,102, 32, 83, 46, 2, 49,173, 24, 87, 35,120,231,117, 91, 26, +157,133,113, 28, 16, 34,155,117,226,253,135,167, 60,125,250,156,223,126,243,138, 20,133, 97,140,172, 55, 35, 49, 37,254,254,155, + 11,110,158, 13,220, 59,205, 44, 58,154,108,223,132,165, 86, 74,175, 30, 29,244, 93,104,203,196,236,152,221, 94,201,209,107, 68, +155, 85,239,206,251, 3,195, 48,218,100,235, 28,126, 65,153,154,115,166,131,157,142,165, 78,180, 22,104, 75,101, 14,157,218, 35, + 67,112, 10, 20, 74, 81, 65, 75, 37,201,154, 30,148,245,198,178,158, 13,119,136,246, 14,213, 10, 83, 76, 52,236, 60,249,246, 91, +190,249,250, 41,138,245,217,219,174,206, 62,155,175, 95, 93,114,158,130, 49,213,251, 59, 78,107,183, 80, 56,173, 11,219,147, 19, + 98, 10,236,118,123,150,102, 78,109,187,145, 91,228,112,169, 6,233,209,250,238,247, 18,167, 46,134,144, 29,142,241,142,128,168, +250,110,183, 75, 15,166, 14,104, 39,167,200,141, 91,103,108,198, 21, 57, 15,108, 86,107,203, 9,175, 7,134,148, 57,221,222, 96, + 76, 3,228,129, 30,149,172,153, 60, 36,242, 0,189, 8,109,241,169, 32, 69,222,188,125, 73,211,206,217,233, 77,110, 13, 39,220, + 58, 59, 65,214, 27, 98,134,171,229, 37, 47,159, 62,167,206,123,150,203, 43, 90,104,200, 16, 88, 71,152,123, 97,220,222,230,209, +131,143,168,151, 47, 25, 86, 43, 78, 78,215, 92,188, 86,230,195,142,114,190,183,198,189, 97, 75, 80,171, 91, 21, 13, 28,106, 69, +165,114,231,244,148,245,253,123, 76,203,158, 90, 34,247,238, 62,228,223,254,197, 47,105,218, 25,182, 3, 47,223, 60,225,219,111, +127,195,221, 59,143,108, 85,149,172, 38, 50, 39,208, 98,157,231,189, 87,107,218, 11,214, 5, 63, 14,214, 69, 29, 67, 32,137, 82, +138,192, 42,209,180, 16, 36,112,251,244, 62,247,110, 61,162,177,112,254,234, 5,151, 87,151, 44,135, 3, 87,187, 43,166,121, 97, + 41, 11,243, 60, 95,239, 54,131,187,156,197,129, 85,118,136, 53, 82,136,220,190,119,143,135,247, 31,243,252,229,247, 60,127,241, + 61, 49, 4, 94,191,185, 96,153, 23,110,223,186,201,184,138,182,154,105,198,216,142, 18, 24, 66, 50, 40, 86,109, 8,133, 74,228, +144,148, 60,140,108, 55, 91,118,251, 75, 68, 50, 45,116,166,101,199, 7, 31,158,112,247,225, 31,178,187,170,188,190,120,129,196, +145, 82, 13, 83,220,231, 74, 82,161, 19, 73, 88,244, 81,131,184, 2, 58, 82,169, 68, 42, 41, 56,136,197,229,236, 41,184, 65,203, +105,144,189, 43, 50, 36,194,102,180,103,101,155,233, 75,123, 7, 59, 9, 66,202, 1, 74, 69,130, 45,179, 53,118, 40,193,148,163, +108, 53,216, 96, 53,173,210,124,119,220,205,148,233,248,148,235, 18, 45,165,112,108,229,238,238,228, 78,201,128, 41,181, 26,119, +210, 48,191,209, 20, 23, 47,115, 33, 68, 83, 26,143, 13,144,173, 59, 65, 77,205,249, 78, 51,108,171, 87,197, 74, 55,111, 2, 45, +155,235,157, 74,175,254,115, 58,191,161,137, 24, 78, 92, 29, 36,147, 26,165, 44,132,144,232,170,100,231,143,136,255,251,210,224, + 87, 95, 95,240,235,215,191,226,205,219, 43,130, 22,219,193,183, 64, 20, 83, 15, 66,119, 53, 85,173,218, 54,166, 0,120,137, 88, +241,102, 53, 28,250,226,207,107, 91, 33,169, 51, 7,130, 55,105, 26,213, 84,130,119,169,104,177, 75, 88, 55,133, 81,147,201,250, +164, 64,175,134,180, 85, 47, 38, 27,130, 61,123, 53,184,111,173, 86,154,202,181,235, 62,113,164, 38, 70,183,230,171,149,135,121, +121, 78,234,248,206,192,119, 19,142,193,242,135, 89, 39,164,227,222,208, 76, 72, 33,184, 59, 87,237, 0, 63,238,127,187, 40,210, +202,117,206,214,114,155,114,236,104, 3, 17, 98,244, 41, 95, 77,126,138, 41,145, 82,179,182, 41, 95,141, 37,177,130,135,170,134, +191,172,150, 24, 39, 36,203,245,150,224,198, 1,196,214, 2, 41, 16, 99,164,246, 66,113, 9,116, 92, 39,234, 50, 51,207, 51, 85, + 44, 22,151,180, 50, 77, 54,253,199, 16, 41,105, 32,171,177,154,167,253,129, 42,194,106, 28,173, 64,195, 10,135, 80, 39, 60, 17, +186,237, 91, 83, 71,151,133,222, 58,227, 56, 16, 67,161, 94,189,177, 66,152, 80,233, 49,112,245,226,146,125, 89,204,217, 24,178, +117,221,250,100,189,120, 82, 32,132,102, 70,147,102, 55,200,222,236, 0,171,205, 71, 65,177, 3, 96, 70, 33,102,134,152,144,174, +108,214, 35,178, 30,108,210, 81, 65, 93, 58,174,243,204,164,199,238, 98,115,251, 11,126,211, 85, 37, 37,248,254,201,115, 94,190, +186, 66, 21,198, 49,179, 89,143,148, 89,185,184, 60, 48,207, 74,138,157, 87, 87, 59,182,219,100,181,137, 75, 35,169,201,116,165, + 45,150, 66,168, 21,177, 22, 12, 59,181,170,210,135,104,166, 69, 73, 68,109, 48, 70,170,152,212,166, 85,220,101,218, 65, 6,106, + 12,208,140, 36,183,214,200, 44,202,144,147,205, 18,163, 48, 47,149, 90,187, 85,202,170,213,216,138, 90,182,185,102,195,137,246, +165,144,176, 28,231, 82,102, 74, 13,164, 28, 40, 75,227,249, 15,175, 57, 44,149,113, 48, 6,114,136,110,112,105, 98,148,170,169, + 80,151,106, 30, 3,113, 35, 77,179, 53,204,176, 30,137, 57,177,223,237, 88, 22,143,162, 4,177, 30, 99,109,180,186, 88,187,154, +127,164, 3,182, 70,138,241,184,167,109,215, 82,189,250, 83, 47,250, 14, 86,233,212,165, 16,134,200,227,123,119,249,252,163,207, +184,115,239, 30,102, 45,140,164, 77, 36,231,209,164,208, 90, 81, 77,204,165,177,148,153,200,104,211,147, 86,154, 70,200,118,216, + 36,127,120, 60,251,230, 9, 39,219, 45, 39, 39,183,121,252,197,143,204,165,127,152, 56, 28, 18,207,255,214,228,113, 13, 74, 14, +137, 86,103,164,251,133,184, 84, 62,255,226, 67,138, 78,228,245,192,106,157,216,159, 95, 25,107,190, 8, 93, 19,235, 85,167,199, + 68, 95, 58,196, 72,110, 5, 77, 48,110,173,220,167,134,133,199, 31,125,204,195, 71,159,114,126,245,130,255,245,255,252,223, 9, +154,248,199, 63,249,132,213,250, 67,238,222, 61,225,135,151,175,184,117,243, 46,159, 62,188,195,111,190,126, 67, 15,149,158, 38, + 43,217, 8, 66,207, 66, 47,209,162,143,165,122, 47, 66, 96, 42,149,180,138,244,217, 26,183, 66,176,146,166,185,205, 68,137,220, + 58,187,205,173,219, 15,200,161, 25, 19,162, 44,212,178, 48,237,206,121,251,246, 45,251,221,129,105,191,103, 94, 38,255, 78, 69, +134, 49,114,118,118,147, 7, 15, 30,178, 61,187, 67,208,145,143, 63, 57, 97,187, 89,243,237,183, 79,160,119, 46,119, 19,251,249, +149, 69, 63,131, 80,103, 8,110,160,141,195,241,144,240,181,143, 59,189,181,136,113, 15, 70,101,154,246,212,105,226,106, 31, 89, + 14,157, 15, 62,190,195, 31,254,209, 99,158,124,147,120,245,182,178,168, 96,133,143,157, 78, 70,106, 67, 67,177,105,176, 70,235, + 43, 32, 34, 75,161, 71, 37, 53, 33, 71,235,139, 87,143,223, 85,108, 47, 29,114, 67,154, 77,244,170,179,151,124,152, 43, 62,166, + 96,106, 81, 87, 88,212, 28,244, 33,121,201, 79,165,117,123,166, 80,109,122, 44,158,123,166,219, 10,179,213, 64,141,141,152, 2, +145,129,134,173,226, 74,181,193, 42,199, 72,175, 92,163,151,105,206,253,192, 25,253, 65,236, 96, 22,107, 12, 58,242, 66,164, 44, +198,177,143, 1,209, 98,185,119,143,193,209, 3, 85, 43,177, 97, 9,145,102, 17, 45, 51,193, 59, 97, 78,212,144,230,209,152, 9, + 21,117,143, 86,114,234,229,145,193,208, 41,209,122,229, 67, 82, 35, 26,210, 57,223, 79, 48, 61, 71,123, 33,134, 72,167, 64,200, +116,141,180,210,173,160, 38, 7,139,209, 73,181,245,226,177, 37, 81,187,173,127,125,181,150, 66,176, 53, 5, 88, 67,137, 31,194, + 33, 90, 10, 74,232,244,122,188, 84, 54, 7, 25, 89, 65, 87,244,213, 17, 94, 70,102, 3,132,197,127, 75,180, 85, 79,108,226,107, + 85, 75,192,207,126,182,166,104, 96,156,238,195,114,119,131,109,169, 21, 45,141,212,125,214, 13,130, 79,228,174,178, 59,113,169, +219,167,216, 91,165,172,152,158,238,144,148,227, 98, 5,131,248, 6, 49,105, 71,157, 19,127, 52, 20, 57,201,154, 86, 3,234, 55, + 45, 81, 99,101,207,190,111,116, 20,182,199,212, 18, 49, 89,252,172, 91,170,131,168,137,113, 21, 89,121,198,143,230, 48,125,137, +144,132, 84, 21, 89, 37,147, 73,188,249,138, 85, 34,166,129, 85,118,201, 40,118,130,154, 1, 98,158,118, 92, 58,171,123,149, 71, +134,100, 69, 3,117,113, 89, 92,173, 32,161, 53,203, 35, 55,231,209,207,197,220,176,211,162,172, 71, 97, 46, 51, 82, 27,200,154, + 60,140,148, 82,172, 63,120,240, 55,172,120,111,175,216,135,162,186,241,207,216,246,141, 86,142, 78,126,187, 5, 18,130,197,181, + 56, 18,254,237,203, 54,140,137,113, 24, 24,134, 13,105,173,212,195,194, 60, 21, 46,174,246,148,182, 48, 29,150,107, 7,118, 10, +201, 92,167, 75,129,160,156,156,110,232,243, 68,200,129,187,235, 76, 36,179,223,119,174,166,234, 45, 4,133, 23,207,103, 68,206, +184,181,185, 97,166,170, 65,153,107, 71,170,221, 6, 67, 72,222,199,100,178,250, 42,175, 45,103, 91, 22,104,153, 24,187,129,122, +122, 48,117,161, 86,123,227,176, 29,209,170, 24, 39,223,154,193, 76, 25, 90, 90, 37,170,144, 5,234, 98,109,100,105,104,148,201, + 81,150, 58, 51, 6, 67, 15,151,174, 44,173,179, 74,226, 80, 26, 75, 93,212, 94, 17, 25, 88,150,153,182,120,111, 60,182,151,147, + 35,101,207, 25, 1,213,233, 84,177,191,155, 44,104, 88,212, 11,229,234, 98,111,135, 42,134,201, 12, 94, 10,212,106, 53, 88,137, + 90,108, 79, 36, 18,179, 77,224,234, 95,240,107,174,123,195,229,116,187,248,204,197,166,173, 7,247,238,240,209,199, 31,242,225, + 7, 15,201,195, 13, 74,153, 73,204,172, 17,166, 22,168,186, 64, 85,180, 2, 49, 19, 67,103,181, 78,164,148, 25,131,161, 56, 67, + 8, 44,138, 69,196,134, 64,185,218, 49, 77, 19, 15, 31,222,231,131, 15, 63,224,198,221,123, 60,251,246,107,174, 46, 95, 33, 87, +111,152,166,110,252,117, 18,164,200, 92, 39,202,161,114, 85, 43,195,102,100,189,221, 80, 47,207,105, 53,241,230,205, 5,245, 80, + 8, 55, 70,182,235, 13,165,236,204,232,212, 38,160,114,146,215,172, 79, 78, 89, 40,212,189, 33, 78,167,125,101, 24,183,124,120, +255,125,254,167,127,245,175,248,205,223,127,205,184, 30,248,232,131,123,252,249,127,245,223,243,224,189, 71,124,253,187,255, 11, + 33,240,248,253,123,188,125,189,227,201,203, 11,242, 58, 19, 6, 27, 33,202,220,233,186, 16, 71,143,199,206,129, 88, 21,233,145, +188,177, 10,213, 48, 87, 36, 70,138, 22,171,185, 44,153,210,170,241,185,155, 85, 81,110,134,145, 18, 19, 55,111,110,184,247,232, + 17,245,208, 56,236,246,236,118, 23,236,118, 23,164,113,197,237, 59,247,216,142,131,213,151,150, 74, 9,157, 90,149,187,183, 31, + 50,110,215,124,243,187,175,184, 60, 92,209,102, 43, 54, 33, 70, 98, 72,150, 65, 15,145,122, 68, 79, 58,111,123, 76, 43, 68,212, +165,226, 66, 30, 7, 78,182,107,106,181, 36,198,213,213,196,201,102,197, 31,253,228, 1, 55, 79, 35,127,241, 31,190,229,226,194, + 65, 36,170,136, 44, 78,201, 52,250,156,169, 19, 21,105,141, 24,204, 89, 80, 82, 34,116,163,227, 36,132, 69, 60,255,221, 13,141, + 74, 14,132, 34, 44,210,188,214,179, 16, 36,211,155, 83, 87, 60, 17, 17, 99,116, 62,186,181,205,133,166,126,216,200,255, 47,158, + 44,161, 89,250, 66, 58,131,184,243, 59, 8,173, 23,164,217, 48, 82,139, 82,180,152,123, 95,178, 73,221, 29, 55, 13, 26,197,141, +107,218,159, 64,240,242,146,110,223,205, 16,142, 53,194,217,170,176,123,187, 46,255,234,173, 17,232, 16, 50,173, 41,244,226, 89, +149,104,223,145,102,145,200,238, 28, 18, 69,141, 70, 41,221, 14, 74,154,167, 31,236, 76,146,208,142, 7,154, 25, 85, 67,198,111, + 9, 52, 49, 35,117,210, 70,151,104, 20,196,234, 38,195, 99, 25, 86, 79,142, 55,183,105,186,117,165, 52, 95, 69,168,103,239,195, + 49,137,100, 13,166, 77,195,181,209,249, 8, 57,179,225,160,191,147,222,187, 93,180,130, 68,114,202,126,161,176, 60,157, 86,181, +203, 84, 23,138, 86, 2,137, 66, 55, 73, 95,140,103, 34,136,141, 4,221,206,219,138,169,136, 34, 66, 58, 50,165,193, 28,126, 54, + 5,187,195,220, 27,105,204,128, 36,214,110,229,203,247,118, 36,152,137, 25, 81,208,100, 14,200,224,149,169, 98,112,130,235,191, +207,108,188,118, 11, 13, 98,125,237, 88, 30, 88,157,150,211,213, 8, 96,180, 66,168,145, 9,185,222,123, 30,251,196,211,104,216, + 62,186, 83,204, 80, 74,177,200, 83, 76,246,192, 21, 4, 73,137,216, 93,150, 17, 33,141,107,206,182,137,101,222,243,246, 98,207, +126,182,108,244,102,189,242, 66, 49,235,117,239,199,140,178,168, 69, 68,212, 58,130,211,176, 33,165,132,200,200,192,204,178, 28, + 56,175,133,113, 89,216,228, 8,161, 81,235,129,174,197,242,221,154, 60, 98, 2, 89,109, 21,161,209, 11, 9, 28,135,219,106,181, +146, 19,204, 81, 30,131, 1, 37,240, 10,193, 97,200,228, 28, 88,165, 1, 69,216, 29, 42, 18,103,100,206, 44, 7,131,164,196,148, +144,232,187,170,227, 36,105,129, 84,186, 81, 21,120,249,114,207,217, 58,115,255,206, 9,243, 2,231,151,141,210, 26,109,105,104, +176,222,242,113,189,225,238,205,141,237, 35,131, 23,182,168, 85, 39,106,180, 60,118,232, 71,198,116,225, 80,103,178,120, 44, 36, + 52,164,186,236,150, 34,189, 5, 58,222,239, 62, 55,134,149,101,146, 43, 1, 29,163, 93,146,138,203, 33, 41,218,151, 87, 23,114, + 20,234,164, 12, 6,243, 3,141, 52, 93,136, 50,248, 23,173, 81,251,232, 0, 7, 95,231, 4,187,248,212, 86,232,193,111,242,102, +127,189, 46,228,200,209,246,138,181, 85, 99, 18,184,130,148, 16,134,237,134, 24, 35, 23, 87, 59,207, 20, 31, 93,230, 86, 28,209, +181,209,138, 77, 3,183,206,182,252,228,195, 15,249,250,251, 23, 92,238, 39,163,143,185,196,223,187, 99,139,137,215, 69, 33,181, + 54,214,171,145,159,253,232, 71, 60,124,252,136,245,118, 64, 84,184,218, 95, 48,108, 34,212,196,110, 41,104,143,104,170,244,170, + 44,181,131,238, 8, 73, 24,113,215, 50, 22,205,210,154,160, 44,164, 60, 32, 33,243,221,247, 79,233, 40, 15,238,127,204,159,252, +167,255, 37, 79, 95,255,158, 84, 58,181, 69,118,203,204,152, 2,189, 22,210, 40, 84, 61,144,134,200,235,243, 55,188,125,241,154, +127,250,207,254, 25, 49, 6,166, 90,152,166,201, 38,146,193, 24, 2,170, 5,137,217, 0, 56,101, 98, 53,140, 12,195, 72, 15,129, +211, 37, 51,109,149, 90, 2,151,251,204,237, 91, 31,114,126,241,130, 95,254,234,111,208,222,169,211,194,191,254, 55,127,201,197, +213,194,230,228,148, 62, 85,238, 63,124, 68, 57, 52,206,110,159,209,158, 62, 35,170, 80,105,212,144, 17, 81, 6, 50, 90,237,153, + 18, 86,209,119,153, 7,118,135,198,106, 8,196, 54, 82,165,217,100,152,131,145,206, 66,164, 37,181,105,175, 10, 85, 42, 77, 58, +251,197, 42, 85, 21, 97,117,178,102,187, 61, 37, 12, 15, 89, 20,243, 97,168,165, 79,114, 12,118,225,142, 80,164,113,182,189,199, + 79,126,118,147, 47,191,250, 91,206, 95,189, 2,113,244,108, 50,138, 37,213, 20,181,104, 69,146,180,210,200,177,177, 30,214,180, +102,181,168,173, 20, 90,142,172,183, 27, 14, 23, 19, 87,135,115,210,250,148,205,237,202,248,122,231, 80,168, 2,161, 56,181,210, + 20, 41,233, 80,123,164,177, 56, 51, 34,184,172,108,131,145,162,104,182, 3, 56,164, 72,116,153,187, 54,159,134,212,146, 5,189, +119,162, 26,130,183,250,144,144, 98,162,139, 85,162, 6, 45, 44,213,124, 21, 81,178,245,203,135, 96,184, 85,181,184, 87,212, 96, +106,152, 95, 2,234,210, 8,169,179,116, 67, 34,219, 14,206,232,145, 61, 69,164, 85, 23,232, 13, 9, 27,113, 15, 66,175, 14, 4, +130,164, 66,107,118,144, 55, 34, 57,152, 31,165,245,104, 61,247, 75,177,132,130,203,238, 11,221,211, 54,166, 62,246,232,157,234, +199, 68,149,218, 57, 83, 36, 92,127, 38, 56,230,202,155, 29,222, 6,133,177, 20,139,150,163,104,142,247, 7, 88, 7,189,181,120, +250,185,229, 25,239, 78,161, 87,177,159,153,110,207,245, 46,116, 10,129,193,207,191,201, 98,106,168,199, 10,227,245,107,115,157, +220,242,214, 54,149,234,173,141,198,121, 49,211, 95,119,168, 79,164, 5,177,103,231,160, 14,151, 49,117,207,144,216,199,162,151, +118,125, 70,135,209,218, 43,237, 3, 36, 44, 85,137,249, 8,189,177,216,103, 18, 13, 94,247,230,229,238,218,174,101,248, 36,193, +100,117,240, 62, 98,147, 72,172,247,221,176,128, 26, 70, 18,221, 36,100,255,179, 6,233, 55, 50,155,127, 46, 45,187,171,106,210, +149,187,131, 45,123,235, 86,127, 49,211,129,244,108,183, 56,223, 9, 5, 55,195,169,115,155,151,185, 80,124,191,223,155, 77,125, +193,115,195, 20,191, 32,136,155,246,196, 72, 59, 41, 9,181,117,150,221, 21, 23,187, 61,162,194,118,181,178,206,240,218, 92,121, + 48, 50,210, 56, 68, 6,148,165,168, 67, 10,160,232,138, 24, 7, 52, 14,228, 60,178,236, 94, 51,149, 5, 20,182,235, 19, 78, 86, +153,183,151,151,136, 20,107, 32, 18, 33,235,114, 45,147,191, 43,113,177,123, 77, 43, 11,189,118,170, 42,171,245, 72,107,106,166, +160, 86,200, 57, 49,174, 51, 41,103, 86,121, 64, 90,103, 41,141,234,113,149,185, 68,202, 60,179,155, 22,242, 96,140,233, 94, 77, + 77, 9,217, 42, 33,173, 42,214, 80,139, 41, 25, 58,177, 36,229,234, 10,118,115,163,116,251, 34, 29,243,216,235, 97,228,241, 7, +239,177, 89,103,166,101, 33,174,140,111,157, 5,170,170,239,175, 58,154, 70,154, 24, 91, 90, 92,158, 14,106,114,124, 79,246, 70, + 7,236,161,194,108,147,187, 10, 70, 39,236,157, 74, 37,237, 35, 75,111,228, 85, 96, 29, 50,147, 75,213, 42,102, 10, 73, 67, 38, +132, 68,101,102,204,209, 10, 46, 74, 97,212,200,201, 24, 88, 90,133, 16, 88,229,108,243,116, 13,204, 5,134,113,197,103,159,189, +207,151, 95, 63,227,234, 98, 34, 38,203,128,119, 85,218,190, 17, 99, 69,213,140, 53,226,185,253,245, 56,144,114, 96,183, 59,160, + 90,201, 65,220,156,226, 75, 67,212,229,249,206,227, 71,247,248,249, 79, 62,231,193,237,251,144, 7,126,245,235,255,215,254, 59, +237,142,241, 52,114, 23, 85, 89,218,130, 2, 15,238,221,225,103, 63,249, 9,247,238,220,167,117,101, 42, 11,210,173, 16,166, 75, + 98,223,172, 11, 64,151, 25,157,221,213, 59, 68, 66,111, 12, 98, 89,216,193,107,106,151,165, 1, 7, 66, 24, 9, 81,153,202,158, +183, 47,158,243,224,238, 93, 62,255,228, 67,238,222,187,109, 78,229, 59, 59, 14,135,198, 84,206, 25,215, 17,105,131, 57,142, 75, +225,201,179,167,124,248,240, 17,159,191,255, 62, 63,255, 71,127,192, 15, 47, 95,177,236, 38,214,235, 45,123, 85,230,249,156, 80, +179,145,219, 48,199,252, 92, 59,227, 58, 50,156,110, 56,212,128,234,142, 65, 3, 97,189,102,211, 58,183,239,220,228, 87,255,238, +255,224,183,223,124, 73, 28, 3,210, 77,241,250,139, 95,254, 18, 9,194,127,241, 79,254, 41,103,219,192,201, 73, 96,184,178, 26, + 98,131,138, 64,107,139, 71,252, 60,110,214, 19,161, 55,203,198, 15, 86, 70, 82, 15,118,224, 84,169,214, 57, 93,154,245,123, 55, +243,207, 20, 26, 61, 4,227, 7, 56, 15,252, 88,237,217, 28,229,169, 52,150,218, 8,126, 34,107,129, 42,202,152, 6, 75,110, 72, +131, 58,179, 74,153,143, 62,250,130,191, 57,255,247,180,186,160, 33,208, 12,216, 72, 12,214, 9, 97,109, 89, 29, 90,101,158,173, +190, 53,196, 64,169, 54, 41,150,105, 38,137,181, 46,126,249,187,167,252, 89, 18,110, 62,248,140,151,223, 30,232,253,119,166, 36, + 53,163, 13,198,216, 8, 53, 80,233, 72, 42,126, 94,218,165, 88,233,126, 0,181,235, 98,160, 38, 29,102,207,119,231,132,246,106, + 81,192, 94,237,162, 34,118, 57, 64,178,253,172,193, 39,215,166, 20,137, 6, 20, 19,168,221,246,243, 10,180,101, 33, 98, 10,103, + 8,193,168,100, 1, 90,114,198, 72, 83,218, 92,125,143, 28,173, 40, 70,109,157, 99,216,226,110,173,109,170,228,220,233,154, 60, +178,105,127,191,116, 97,174,166,124, 4, 35,220,216,207,216, 26,218, 23, 74,115,152, 24,130,182,226,201, 42, 43,140,209,238, 5, +223,122, 4,225, 56,187, 33, 96,223, 81,181,215, 92,221, 75,229,159, 34, 47,100,193, 25,245, 71, 46,188,157, 17,173, 21, 66,138, + 84, 21,104, 74, 58, 22,190, 52, 87, 4,212,128, 51,199, 1,183,209,208,144,172,193, 45,218, 69, 36, 17,252, 0,110,132,108, 74, +166,244,102,141,131,214, 26,198,187, 13,184,209, 86,113, 43,155,248,103, 18, 73, 22,229,244,210,153,168, 22, 17,175, 98,116, 78, +169, 13, 73,217,134, 17, 47,246, 73, 77,233,234, 84, 69,111, 59, 57, 58,225,193,200,114, 18, 34,169, 97,197,245, 81,196,203, 83, +124, 58,214,198,130, 27, 37, 60, 11,109, 53,143,126,208,135, 64,136,153, 32,118,195, 74, 1,203, 26,122,150,221,118, 99,174,148, +123,230, 49,226, 61,184,213,121,190, 71,119,176,203,205, 57,184, 19,208,220, 72, 22, 89,114,146,142, 85,166, 10,253,218,101,232, + 47,210,181,212, 99,230,189,230,237,105, 49, 4, 52, 67,236, 74,153, 11,243,126,199,249,229, 76, 90,173,216,172, 6,147,149,156, +200, 22,147,239,117,188,203,125,125,182,226, 78,206,108,134, 64, 45,133,239, 94, 52, 14,213,106,103,235,116,206,229,229, 91, 74, +239,172,198,129, 48, 36,230,218,188, 22,143,235,138,188, 46,253,154,199, 14, 94, 35,171,157, 64,164, 54, 3,145,172,214, 43,198, + 16,121,179,191,162,245,206,102,181,226,198,233, 41, 39, 39, 35,251,195,204, 97, 50,226, 84,239,206,183, 31, 3, 90, 27,135,105, + 50, 24, 12,246,123, 39,223, 91,169, 8, 33,100, 66,176, 78,239,211,237,200,118,187,102,154, 11,135,253,194, 68,112,218, 81,113, +180, 97,103, 51,142,124,254,217, 39,156,108,215,104,179, 6,184,117, 12, 76, 42, 28,220,217, 45, 42,140,155, 12, 97, 96, 57, 40, +213,127,159, 94, 58, 99, 78,164, 16, 41,189, 51, 45,141,144,128,100,217, 88, 37,208,164, 82,150,153, 32,158, 25,165,209,251, 66, +157,133,131, 6,150, 80,137,171,204, 74, 19,186,120, 23,186, 24,166, 86, 23,165, 47, 1, 66,101, 66, 57, 44,198,124,110,181, 83, +250, 66,169, 22, 3,219,156,110, 88,165,200,157, 91, 15,216,140,183,249,234,171,175,120,249,230, 21,101,246,174,109,209,235,155, +180,160,148,121, 38, 13, 3, 42,137,203,203, 29,189, 85, 55,225,217, 14, 30,117,103,124, 16, 62,250,232,125,110,222,216,240,224, +225, 67,198,180, 98,175,133,247,223,127,192,247,207,158,241,228,135, 23,118,244,151,226,248,221, 68,239,157, 28, 3,159,124,252, + 1, 63,251,233, 79, 25,157, 44,150,186,146, 7,101,100, 64,123, 96, 90, 2, 34,197,112,144, 73,236,146,104,114,142,181,250,169, +201,172,227,118, 77, 20,152,151,217, 14,164, 24,145, 97,195,213,203, 75,106,239, 60,126,244, 49,143,222,123,204, 50,237,185,184, + 56, 80,198,204,171,233,130,203,139,215,204,243,200,102,125, 66,236,194, 2, 28, 46,206, 57,253,252,199, 60,124,240, 35, 46,119, +149,195,190,113,114,178, 37,116,171, 81, 30,194, 41, 61, 10,122,181,135,105, 34,246,206,233,217, 29,230,114,201,244,226, 53,104, +224,236,254, 9,107,201,188,124,115,193,237,211,219,172,211, 57,255,230,151,255, 55,173, 85, 54,227,198, 34,171, 33,162,179, 81, + 14, 31,222,187,205,144,133,205,217, 29,222,252,221,115,226,106, 64,107, 39,123, 93,103, 40,238,211, 56, 22, 56, 37,241, 54,187, +145, 22, 43,138,145, 7,123,183,203,112,210, 76,212, 70,149, 70,170,145, 82,221,163, 18, 70, 98,180,140,189,246,206, 16,172,175, +224, 48, 79,132,138, 69, 42,131, 66,139, 32,150,200,145, 20, 24, 67,166,207, 80,165,160, 93, 72, 49, 17,197,106, 70,219, 49,194, +137, 32,217,240,179,145, 8, 25, 52, 38, 98,176,168, 85,104,130,186,113, 78,171, 50, 76,151,252,244,139,247,121,125, 62,243,155, +191,251,146,127,249,103,255,130,243,183, 31,112,247,175,182, 92, 30, 38,148,129,132,201,236, 61, 86, 82, 53,247,126,169,246,196, + 77, 9,171, 6,117, 24, 18, 14, 59, 9, 67, 66,171, 32,193,166,123,186, 79,240, 5,187, 24,120,149,169, 61,103, 12,166,210,164, + 59,175, 94,188,170, 53, 34,152,175,197,234,172, 35,146,133,170, 16, 66, 35,106, 48,102,185, 15, 86, 41,153,234, 86,181, 81,122, + 39,117,115,186,135, 0, 75,169,228, 40,158, 49,239,200, 34, 44,125, 62, 58,128, 25, 83, 50,126, 67,235, 70,196, 19,175, 60,245, +204,117,107,199,110,114, 83,124, 85,142,254, 35, 59,158,173,227, 98, 49, 62,123,136,215,127,182, 21,147,194,147, 68, 98,118,117, +221,213, 49, 67,236,198,235,244,139,122,249,139,168,173, 80,113, 28,111, 72, 1,117, 74,163,248,127,174, 14, 26, 10,222,170,166, + 98,248, 91,212,155,247,162,216,247, 80,149,238, 36, 78, 99,222, 27,108, 42, 29, 11, 91,194, 81, 17, 16, 95, 33, 24, 83,222,106, +177,133,168,102,108,115,228,167,197, 78, 11, 88,217,182, 41,189, 68,152,251,236,138,141, 35,126,197,112,217, 26,186,249,181,154, + 69,226, 74, 53,207,137, 85,190, 6,146,241, 46,222, 1,242,173,209,220, 14,183,230, 13, 81, 4, 71,137, 86,147,165, 45, 55, 23, +105,161,123, 27,141, 29,184,193, 1,251, 33,102,151,230, 13, 83,152,146,130,172, 64, 27, 57,121,199, 49,110,254,169,213, 77, 35, +234, 37, 23,246,179,132,224, 45, 62, 29, 98,142,142,168, 85,231, 26, 59,222, 48,102, 87,246,223, 85,208, 73, 83,235, 72, 79,114, +109, 86,144, 52, 48,158, 68,238,111,236, 67,179,168,237, 92,114,181, 15,107,175,118,211,237, 4,154,199,141,234,186,243,182, 44, + 92,236, 11,115, 53,134,184, 72, 99, 62, 92, 58,120,198,238, 73,243,254,202,189, 3, 71,186, 85, 53,186,145, 27, 28,162, 55,149, + 85,133, 94, 29,110,210, 42, 57,101, 86, 67,226,106,183,163,214,206,102,179,230,198,217,150, 33, 71, 88, 26,243,110,102, 95, 27, +195,224,210,218,210,217,228, 13,183,111,156,112,152, 34,111,246, 19, 73, 35,195,104, 95,186,212, 19,115, 89,108,186,139, 3, 61, +219,244,178,148,194,180,204, 8,137, 28,224, 48, 79, 20,151,204,134,213,138, 15, 63,250,192, 12,120, 73, 57,205,107, 84,148,180, +202,124,241,249, 39,232, 60,241,244,201,119, 28,218, 64, 31,132, 16, 51, 41,102,234,126,166,205, 19, 61, 42,125,180,198, 34, 82, +102, 16,107,185,194, 77, 68, 1,123, 63, 90, 47,212, 50, 83,131,185,210, 99, 12,164,117,162, 30, 22,164, 43,177,218, 36, 84,178, + 18, 19,132, 86,153,231,153,175,191,251,129,195, 92, 24, 82, 48,197, 67, 42,171,100,190,139,222, 43, 75,233,104, 19,110,223,187, +131,222, 60, 35,166, 21,195, 74,248,224,227, 71,220,190,119,131,105,154,248,253,147,103, 76,229,104,164,177, 9, 60,199,196,122, + 28, 56, 28,230,107,207, 68,111,222,137, 28,173,142,179,122,158,252,236,246, 77, 62,121,252,216, 46,155,197, 12,111, 34,194, 31, +252,252, 15, 56, 59,251,138,171,157, 93,176,114,206,215, 45, 97,119,238,220,225,189,135, 15,216,134,196, 65, 42,121,155,145,131, + 73,104, 37, 9,173, 66,109, 7, 36,225,192, 27,147,206,196,203,124,178, 3, 66,134, 96, 19, 68, 91, 39,198,147, 1,102,171,120, + 44,147,242,250,229,107, 30,220,189,203,103, 31,127,196,141,179, 59, 40,145,215, 47,159,241,245,147, 47,217, 77, 59,238,223,127, +100, 93,211,205,190, 83, 57, 6, 62,251,241,103,124,251,236, 91,126,244,249, 79,185,184,120,203,106,104,196,205, 9,243,116, 73, + 10, 25, 29, 51,181, 47,148,165, 16, 36, 50,174, 86, 44,193, 38,152, 33, 5, 54, 97, 96, 55, 57,174, 84, 19,119, 30,220,231,175, +255,159,191,228,171,175,190,226,108,187,101, 53, 12,132, 0, 83,177,236,114, 30,236,243,114,235,222, 45, 36, 8, 23,111,175, 8, +173, 90,109,192, 34,215, 69, 69,181, 84,180,137,169, 97,139,131,128, 88, 72, 52, 90,234, 76, 13, 86,216,144,218,250, 76,212, 68, +151, 21,113,128, 85,140,148,165,210, 41, 84, 53, 70,124,200,118,209,110,117, 50, 83,101,243, 85,141,118,250, 16,200, 26,169, 98, +126,150,165, 55,130,248,228,235, 7, 67, 26,146,197, 54,171, 53,100, 5,167,145,105,140, 52,188, 63,194,193, 68,221, 85,206,160, +193, 14,149, 20,169,181, 50,166,204, 31,255,163,247,248,245,175,255,158,127,254,223,252, 41, 63,254,241, 99,126,250,243,207,248, +250,217, 43, 66, 47,102,226,244,129, 35, 6,195,221,198,152,189,226,183,209, 42, 52,175, 22,142, 26, 45, 94,233, 84, 54,123, 46, + 87, 51,244,206,147,153,167, 66,162,118,219, 99,167,104,197, 37, 69,186, 53,183, 53, 69,117,242,157,175,225,139,155,185,158,205, +136,222,124, 42, 22, 87, 60, 56, 54, 71,118,198, 49,209, 60, 38, 24,181,218,122, 13, 59, 36,163,239,138, 83, 50, 42,222,210,139, + 13, 27,173,218, 0, 84,188,220, 37, 68,122,241, 26,221,110,144,151, 46,118,169,107,189, 59,138,197,118,241,157, 99, 55,120,163, +105,245,231,125, 66,186, 41,128,205, 39,183, 60,248,122, 32,136, 7,182,173,173,179,105,187, 78, 22,165, 96,141,111, 72,160, 55, +129,190, 56, 1, 46,162,165, 32, 67,164,119, 55,135,171, 33,155,143, 5, 41,209,211, 49,226,236, 20, 91,243, 10, 93,108,218,215, + 96, 48,161,238,201,176,128,145,246, 68, 42,161, 71,107, 99, 20, 53, 34, 93,244,149, 46,225,154,176, 26,142,205,121,106,187,252, + 46,234,117,183, 86,195,107,174, 96,131,230, 91,164,209, 46, 83, 66,244,179,170,218,231, 48, 58, 85,180, 91, 22,223, 21,118,203, + 84,219, 1, 92,220, 80, 16, 29, 81,103, 59,128,148,131,229, 17, 93,126,231,184,103,175, 70,180, 9,110, 56,104,149,107,178, 18, +177, 81,171,197, 9, 66, 3,164, 94, 71,136,196,111, 93,200, 64, 24,162,239,190, 13,115,199, 98, 11,255,218,253, 67,171,149,174, +201,162,114,106,237,113,221,155,147, 2, 71,143, 66,164,247,128, 28,113,123,252,127, 76,189,219,175,109,219,117,167,245,245,214, +123, 31, 99,204,185,214,222,123,237,203,217,103,159,155,207, 57,246,177, 29,199,177, 83, 9,185, 57, 9, 85, 20, 16, 82,170,155, +138,146,160, 36, 36,144, 0, 81, 8, 30,224, 15, 64, 66,145,120, 67, 66, 20, 15,136, 7, 30,144, 10, 21, 82, 69,133, 2, 2, 68, + 42, 74,225,220,202, 46,151,147,216,142,237,216,177,125,236,115,191,236,251,186,205, 57,198,232,151,198, 67,107,115, 29, 63,248, +193,183,179,247,154,107,206, 57,122,111,237,247,251,190, 64, 36,146,252, 7, 86, 9,228, 60,218,173,185,249,139,230,246, 57,209, +134,166, 78,144, 70,234, 86, 45,105, 13,158,158,173,180,223,248, 92,147, 0, 0, 32, 0, 73, 68, 65, 84,117, 53, 87, 49,160,125, + 97,223,140, 40,135,155,227,106, 43,134, 52, 69,188, 81, 87, 29,237, 41,222,251,247,224,139,122, 73,246,176,215,237, 48,110,204, +183,188,174,157, 33,101,142,183, 19, 73,225,114, 89,152, 59, 20,109,140, 57,113,116,180, 65,235,194,165, 54,142,134,108,218,215, +163,155, 44,237, 1,180,195,159,101,111,154, 16, 35,185, 91,146,180,174,171, 37, 67,103, 59,108,140,131,237,253,148,110,130,135, + 16,184,121,231, 54,173, 41,143,159,156, 35, 41,112, 62,100, 34, 74,222, 31,243, 75, 47,127,130,151,158,185,198, 63,123,248,127, +243,224,225, 37, 71,227,134, 49, 8, 45,118, 90, 6, 73, 91, 54,201,247, 57,185,177, 44,141, 54, 69, 66, 15,180, 82,188, 86,100, + 24, 70,103,196,122,194,181, 89,245,112, 85,242,104,230,168,221,110,230,178,239,168,173,176,150,202,186,175,156,157, 61,225,195, + 71, 79,200, 18, 25,134,200,241,209,192,179,119,111,240,177,103, 79, 56,222, 12,164, 96,196,173,203,179, 61, 79,206,102, 62,126, + 7,194, 52,240,221, 31,157,129, 8, 39, 55,239,112,250,248, 17, 75, 91,217, 47, 43,181, 53, 68, 18, 41, 89,230,226,236,233,217, + 85, 38, 3,159,238,228, 96, 85,168,165,154, 89,233,214,205,107,220,188,117,211, 84,139,187, 29,105, 76,132, 96, 35,215,241,250, +200,107, 63,241, 73,198,124,196, 92, 11, 49, 41, 49, 36,114, 20,186, 36,218, 92, 40,189, 90,152, 51, 5,114,135,160,131, 85,119, + 68, 9,154,168, 75,161, 22,131,104,140,227,136,100, 99,173,107, 72,244,100,159,107, 24,208, 53, 26,101,175, 53, 36, 11,107,221, +115,254,244, 1, 63,253,249, 79,115,227,246,117, 74, 92,120,244,100,161,235, 57, 79, 30,189,199,181,107,183,184,113,251, 54,187, +203,115,202,229,158,180,221,144,211,196,229,217, 19,238,221,123,134, 87, 62,249,113,190,245,141,111, 48,140, 35,115,153, 9, 12, +196,188,101,185,188,164, 45, 51, 49, 10,151,235,138,236,149,202,204, 81, 22,174,143, 35,103,187, 74,185,124,202, 18, 58,211,176, +165,158, 63,228,255,250,127,127,155, 77, 78,196,148, 40,218,201,205, 70,167,157,206,115,247,110,210, 66, 97,147, 55,212,102,117, +163, 54, 23,152, 6,235,138,235, 10,205, 94,183, 30, 43, 53, 88,224,172, 55,147, 92,175,161, 19,230,206,144, 18,139, 64,148, 78, +144, 17,154, 16, 83,177, 92, 72, 80,122,180, 47,218,220,125, 58,212, 42,213, 97, 99, 41, 5, 82, 43,246,122,107, 36, 53,231,102, + 15, 6,248,208, 96, 55,178,222,149, 82, 87,131,184, 52,179, 47, 50,101, 18,209, 86, 44,221,136,132, 97,176,124, 70,107,157, 82, + 22,219,195,138,243,193, 91,231, 83,247, 78,248,252,167,158, 35, 72,224,179, 63,245, 19, 60,220, 95,242,198,155,239,242,211,191, +250,243,124,254, 39, 63,207, 87,191,250, 58,143, 30, 63,245,224,151,203,172, 58,148,110, 40,215, 32,137,185, 55,122, 42,136,250, +200, 88,171,123, 31,108, 52, 30, 53,162, 84, 74, 89,141,224, 25,157,208, 22, 44,117,236, 74,121,151, 43,205, 6, 38,233,157, 33, +195, 94,149,156, 6,180, 85, 90, 15,104, 86, 66, 55, 3,163,101, 29,186,113,239,187,173,207,214,197, 46, 95, 99, 12,228,148,217, +215, 66, 23, 51,133,197, 14, 89, 58,189, 8,213,235, 94,177, 91,200,186,134, 64,211, 21, 82, 96,168, 54, 9, 80,237,228,104,235, +183,174, 21,233, 38, 67, 65, 33, 54, 75,245, 91, 23, 91, 73, 81, 40,181, 34,205,220,245, 42,157,126,133, 79,117,210,156, 8, 97, +237, 54,182,246,236, 18,193,234,101, 81,236,125, 96,162, 46, 91,251,150,106,249,136, 32,102, 32,109,213,130,143, 70,133,115, 13, +108, 16, 84, 44, 72, 43,154,160, 27, 6, 56,133, 64,245, 42,158,115,184,204, 93, 78,240,223, 27, 40,245,170,185,116, 72,194, 91, +205,218, 66,125, 7,159,187,184,150, 24,137,246,250,151,195,119, 80, 53,218,157,246, 43, 21,184,197,212,148,205, 96,251,252, 46, + 29,105,163, 61,107,253,182, 47, 1,195,200,170, 32,107, 37, 37, 49,184, 64,143, 54,162,178,211, 70,184,210,208,169, 90,151,208, + 14, 84,110, 64,234,135,164,186, 5,168,154,167, 66,237,228,237, 6, 41,181,240, 4,197,228,243, 7,146,173, 96,163,132,210, 12, +177, 42,118, 48,179,189,191, 8, 34, 3, 18, 32,183,102,191,228,238,156,112,151,148,116,133, 24,204,201,107, 50, 0,163, 25,217, + 15, 96, 29,192,152,212, 82,251, 61,160, 33,217, 11, 91, 26,113,204,126,160,176, 95,106, 76,163,215,173,108,111,108,183,111,117, +144,191,194,182, 49,100,251, 37,149, 82,168, 42,104, 75,180,181, 80,221, 11,108, 60, 94, 11, 15,170,107, 92,109, 76,116,168,116, + 28, 14, 61,234,144,128,142,196, 12,170,204,107, 49,171,211, 24,141, 19,109, 6, 21,242,118,226,198, 96, 39,239,117, 94,160, 43, +227,144, 8, 83,160,148,217,107, 19,209,236, 82, 13, 98, 26,208, 84, 8,181, 49,215,143,200, 81, 74, 53,253,163,155,232,172, 50, +209,145, 24,185,125,231, 14, 83,178, 7, 75, 76, 66, 40,157,179,253, 76, 30, 39,226,124,202,239,252,246, 23, 25,179,240,254,187, + 31, 16, 66, 99,183, 44, 76, 1,171, 81,116,227, 24,132, 49, 33, 37, 64, 14, 72, 74,104, 19,242, 80,233,209,117,168,181,211,197, + 60,191, 53,194,102, 18,180, 26,227,120,202,182,255,123,252,244,140, 55,223,122,151, 16,237,195, 57, 36, 59, 88,244,106, 65, 47, + 92, 63,155, 98,166,105, 98,110, 74, 92, 45,216,168, 49, 48,151,200,163,211,133,207,188,146,121,249,185,219,252,240,157, 5,136, +236,207,247,188,254,163,119,152,231,234, 55,232,200,102, 24,105,170, 92,238, 47,237,195,153,178,237,167,130, 50, 13,147,141,185, + 75, 33,244,206,152, 3,159,122,237, 21,174,167,193, 89,229,129,181, 84,134, 33,147,198,224,156,249, 4, 17,198,104,155,173,178, +159, 13,139, 57,118,136, 66,209, 13,194,130,148, 70,141,118, 98,207, 17,234,140, 57, 15, 74,179,155, 88, 24,145, 97, 36,230, 72, +216,175, 72,180,101,251, 10,132,170, 72,183, 41,130,166, 68, 47,129,211,243, 83,242, 24, 57,121,230, 54,219,219,119,185,125,251, + 14,127,254,173,111,178, 59, 61,227,214,141,187,196,205, 17,143,159, 60, 38,213,202,144, 70,186,116,122, 61, 99,119, 49,243,210, +189,231,185,255,240, 17,105,216,162, 41, 50,181,153,186, 40,243,254, 28,213, 29,183, 55,199, 44,219,213,224, 54, 85,137,121,195, +178, 22,206,215,194, 26, 43, 12, 9,221,237,185,118,107,203, 63,255,202,215,248,240,193,251,108,199,145,101, 53,190,185,138, 92, +237, 92, 63,251,218,167,121,249,149,123,188,240,226, 51,156,157,239, 41,203, 66,158, 70,211, 74, 14, 22,214,154, 47,149, 20, 44, +208,104,208, 21,101, 84,161,171,213,172,114,136,172,116, 90,237,164, 60, 88, 0, 43, 71,187, 92,116, 19, 94, 68,215,107,244,222, +104, 45,120,170, 56, 17,195, 96,128,160,102, 33,168, 44,182,183,109,201, 40,103,181, 99,148, 76, 34,189,172,100,177,110,178, 86, + 35,209, 73,109,254,157, 98,127, 31, 85,179,156, 33,198,215,200, 49,217, 45,208, 84,112,180,218, 88,214,153, 59,119,174, 65,142, +148,186,227,229,151, 95,228,209, 7,247,161,118,158,121,225, 54, 47, 60,127,155,135, 15, 30, 59,142, 89,200, 89, 89,215,234, 41, +243, 78, 43,123,243,198,123,139,162,225,135, 15,223, 27, 15,195, 8,177, 82, 84,136,105,180,118,105,237, 31,133,180,204, 49, 77, + 91, 59,201,235,150, 68, 33,183,100, 25,134, 96,212,187,106,192,121,114,177,146, 77, 22,161,209, 89,202, 74, 10, 31, 29, 38,140, +181, 0, 90, 97,141,246,239,197,241,197, 41, 64,109, 2,217, 19,222,118,201, 37, 6,101, 41, 51, 45, 38, 82, 41, 84,205,148,110, + 1,197, 36, 74, 45,133, 16, 29,215, 27, 18,134,210,177,181,218, 21, 15, 62,224,151, 72, 91,144, 23, 85,164, 26,133, 45,248,216, + 58, 10, 22,246,235,166, 73, 85,109,214, 59, 87,231,171, 68, 99, 30, 72,176,160,107, 28,109, 90,167,158,255, 18,172, 14, 86, 91, + 35, 99, 30,147,171, 80,152,211,221,170, 54,119, 55, 4,151,217,248,119,122,116,242, 99, 83,151, 52,217,180, 26, 21,127, 55, 26, + 7, 64, 15,147, 2,237, 68, 15, 70,166,168,246,119,112, 87,132,184, 5,146, 30,173,240,228, 20, 56,237,118,209, 24,228,240, 12, +244, 66, 17, 54, 25, 48,132,110, 33, 73,186,162, 13,170, 6,210,225,102,218,235, 1, 31, 31,220, 9,237, 53,182,195,141,220,111, +163,118, 28,179, 61,235, 1,179, 26,176,138, 79, 60, 32, 48,125,127,222, 91,161, 81,233, 45, 58,121,199,247, 22,213, 59,141,206, +174, 53, 43,154,255,101,131,207, 78, 8,100, 20,178, 61,184,210,161,244,175,174,174, 12, 29,173,149,166,221,246,250, 4,219,191, +119,171,156, 72,180,135,119,180,134,166,133,100,186, 82,122,167, 20,151, 36,116, 32, 88,128,198,127,100, 59,224, 96,234,188, 24, +178,229, 6, 82, 99, 24, 13,118,144,212,198, 56, 85, 97, 93, 13,118, 17,170,241,155,235,225, 97,167,129,218,235, 21,102, 49, 68, +177,219, 49, 6, 65,208, 96,224,156,165,184,254,112,200,244, 2,105, 28,216, 78, 91, 34,141, 82, 23,235,160, 23, 39, 15,181,202, +233,105,224,104, 59, 48,104,133, 10,146, 7, 75,173,214, 70,163,177,150,195, 58,195,252,222,221, 45, 70,248, 58, 35, 74, 34, 76, +112,114,243, 4, 17,168,107,181, 64,202,162,164, 44,158, 86,175, 12, 67,224,254, 59,111,211, 74,163, 15, 98,233, 92, 13,172, 49, + 18,233,244, 18, 24,162,178,236,109,236,214, 4,242, 32,132,214,145, 20,152, 91,131, 26, 24,242, 72,204, 29,213,140, 68,241, 55, +190,123,159,243,200,205,113,226,195,119,222,225,236,226,146,187,119,142,217,142, 19,105,176,247, 74,220, 69, 46,246,197,220,208, +165,243,248,108,207,227,243, 29,111,189, 43,150,202,119, 57,202,141, 27, 55,216,110,183,252,193,215,127,196,167,159, 54,106, 24, +169,203,202,155,239,188,205,217,197, 41, 33, 64, 78,131, 1,113, 98,162,172,179, 51,188,147,213, 76,174,212,184,198, 58,168,205, +250,253,175,125,236,101,158,127,230, 25,235, 5,199,234,211,167,100,187,176,170,244, 34,150,132,238, 43, 90,212,165, 58,153,201, +193, 41,171, 88,168,102,174,198,162, 15, 3,104,107, 92,236, 22,147,178, 4,119, 58, 70, 35, 34, 70,129, 52, 4, 74, 55, 48,139, + 65, 61, 58, 18, 27, 75, 11, 48,129,236, 4, 25, 50, 79, 31,223,231,198,241, 77,142,211,109,234,238,146,251,239, 61,225,209,211, + 29,187,146,152,182, 27,230,249, 18, 26,196,235, 25, 82, 36,246,206,254,204,148,148,199,183,159,229,135,223,255, 1, 55,174,111, + 88,245,136, 28, 39,234,102,101,140,137,121,159, 56,159, 47, 44,232,153,132,139,186, 48, 52, 75, 11,135,152,236, 51,169,202,209, +141,231,185,104,231,252,206, 31,254,174,121,156,171,175,206, 90,179, 26, 44,202,107, 47,125,140,103,111,221,229,229, 59,119,121, +254,238, 11,252,159,255,236, 75,172,113, 70,210, 53,100,153,145,162,172,186,210, 53, 82, 66, 33, 20,163,172, 5,201,104,131,124, +104, 59, 72, 67,234, 64, 14, 6, 0,210,186, 18,134,145,186, 22,242,224, 55,202,170,196,208, 41,161, 89, 27,163, 39,180, 85, 58, +201,190,241,115,180,112,164, 67, 89, 80, 40,173,153,128, 5,165,175,179,179, 0,156,191,230,249,157, 40, 7,243,153,239, 79, 67, + 37,196,193,113,177,201,191, 99,204,121,221,123, 32,165,204,155, 15,158,242,206, 7,143,248,229, 95,249, 44, 66,224,100, 51,113, + 94,224,244,254, 3,114, 12, 44,187, 39, 76, 89,216,151,234, 59,214,236,204,132, 78,169,166,190, 18,175,234,138, 52,180,205,134, +124,245,192,112,109,197, 87,143,214, 41, 47,173,216,119, 86, 17,154,250,228, 44,234,149, 95, 59, 70,131,179,244,216,104, 54,200, +246, 11, 91,242,118, 94, 32,134,230, 57,159,122, 32,146, 80,181, 17,154,221,224,123,200,172, 90,160,117,198,104,135,161, 24,160, +168,173,102,165,117, 11,233, 73,176,224, 97, 53,122, 91,210,142,180, 72, 79, 92, 5,197,122, 55, 87,249,161,195, 94,235,226,200, +222,224,117, 84,227,153, 84,181,137,222, 21,193,180, 71, 91,239,210, 9,206, 78, 9, 65, 24, 52, 28,134,199, 24,215,170,250,101, +174, 35,221,242, 87, 11,254, 48,148, 67, 81, 85, 28,226,117, 8,243, 43, 45, 59,127, 66,109,213,167,173, 89, 16, 87, 15,114, 22, + 75, 59,247, 98,191, 43,193,214,101,253,192,106,241,105,183,150, 6, 17,247, 13, 88,194, 93,130,146, 83,112,115,158, 25, 48, 85, + 6,187,137,215,238, 54, 64,107,159, 29,206, 21,221,167,225, 74,114,229,179,101, 28,114, 50,131,158,229,111, 76, 7,156,248,168, +249,212, 85, 72, 86, 65,176, 15,133,120,145,255, 80, 63, 15,110,167,193, 65, 52,218,237,148,103,189, 76, 83,124, 6,215,158,181, + 98, 21, 51, 17,235,209, 86,119, 16, 35,131,191,145,154, 99,251,112,198,185,237,239, 53,120,152, 44, 56, 7,250, 48,102,119, 91, + 85, 10,209,110, 46,222, 57, 86,199, 1,118,204, 28, 36,218, 73, 41,154, 14,207, 79,209,253,128,227, 67,209,140,167,147, 45,165, + 89,203, 1,215,105, 95,202,226,238, 96,171, 36, 43,186,136, 33, 61,163, 80,129, 42,254, 80,142, 92,221,192,115,204, 68, 53, 34, +221,184,201,140,181,184, 49,206, 56,188, 90,172,131, 72, 16,227, 5, 59,197,191, 53, 69, 82, 68,123,103, 45, 54,157, 32, 42,203, + 92,216, 12, 27,142,143, 6, 36, 40,243, 92, 88,139,105, 4,171,194,152, 35,203,190,176,239, 43,171,141, 87, 72,209, 67,111,206, + 43,239,173, 80,234, 33,101,233,171,140, 30, 24, 83,182, 78,230, 90,209,216,185,251,204, 61,110, 94,223,176,174,139, 5, 48,114, +224,114, 85,118, 75,117,221,234,202, 80,162, 43,120,189,207,170,145, 50,175,204,221, 96, 49, 81, 35,227,209, 64, 40, 21,130,141, + 75,119,103,254,187, 31, 6,214,186, 16,106,103,191, 95, 41,125,101,119, 57,211,155, 57,181, 67,140,104, 43, 92, 63,185,206, 43, +207,222,227,252,252,156,105,176,209,124, 45,166, 47,164, 7,206, 47, 87,219,163, 55,179,254,153,114,209,216,235, 81, 2,146,236, + 97,188,223, 45,140,195,196,251, 15,159,178,219, 85,134,105, 98, 89, 42, 79,158, 60,162,180,206,144, 12,237, 57,109, 55, 44,243, +106,161, 25, 57,124,117, 53,180, 25,213,111,183, 59,183,239,144,222,184,125,231, 38,159,124,245,227,128,176,150,149,216, 18,109, + 84, 36, 52,250,206,124, 4,195, 54,146,100, 68,107,161, 73, 52, 33, 82,239,236,171,249,189, 45, 45, 92, 25,232,116, 17,230,106, + 97,152, 90, 76,144, 49, 69, 33,110,146,173, 4, 98, 36,199, 74, 93,172,195, 60,201, 64,165, 82, 90,100, 28,187,245,144,207, 3, +161, 87,130, 90,120,115, 58, 58,161,212,153,151, 94,121,133,243, 71,103,108, 71,227,235,223,127,116, 97, 95, 66, 34, 70,102, 28, + 3,235,185,237,192, 95,249,216,203,156, 28, 95,227,244,209, 19, 72, 39,196, 80, 73,155,145,105, 58,102,185, 88,200,195,132, 14, +130,214,206,197,211, 74, 30, 38,210, 16,152,106, 35, 78, 91,230,221, 3,214, 53, 82,134, 61, 95,250,163,223, 99,183, 59,227,218, +116,100,187,205,214,173,173,160,202,141,227,235,188,246,202, 43, 92,191, 61,241, 51,191,240, 89,222,126,184,242,246, 91, 31, 18, +100,176, 67, 80, 48,126, 69,171, 29,201, 43,109,113, 14,120,233, 6,101,138,209,250,185,105,195, 32,205,216, 2, 13,122, 89, 65, +163, 93,150,162,250,103,220,190,160,213, 83,211, 18,212, 32, 43, 90,208,176, 26,111,163, 71,155,200, 37, 33, 13, 25, 74,165, 72, + 66, 82,163, 22,155,208, 5,241,247, 31,106, 89, 30,127,135,216, 13,168, 59, 65, 81,157,163,126, 96,122, 91, 85,203, 90, 64, 10, +162, 44,251,198,119,127,244, 1, 95,248,194, 79,178, 61,185, 78,210,202, 75, 47,190,196,151,191,250, 13,110,159,220,225,231,255, +149,207,242,224,209, 87, 56,127,208, 73, 40,117,221,219,207, 34,209, 96, 77,126, 8,175, 98,170,226, 20, 5,165,153, 84, 73,149, +170,133,168,150,223,168,169, 35,205,130, 97, 77, 14, 13, 18, 87, 46,119,251,172,116, 96,208,200,190, 54,178, 40,154,226,213,207, + 21, 83,183,137, 21,202,218,108,109, 23, 35, 52, 45,176, 26,238,186,246,110,193,178,161, 19,178, 88, 7,187, 27, 50,185,118, 37, +209, 41,218, 73,254,200, 13,226, 54,198,110,249, 4, 11,182,205, 36,196,184,143, 78, 36,181, 91,173,255,121,221, 16,176,161,117, + 36,155, 94,218, 70,228,201,219, 83,118,131,175,168,173,168,220,194,167,171,101, 80, 66,254,136, 30, 73, 55,177, 74, 79, 6, 98, + 49, 61,134,169,172,107, 53,197,177,198,106,207, 10, 55,174,225,147,230,238,232,229, 32,166, 60, 86, 9,132,118,168,251, 85,247, + 45,153, 99, 35, 71,203, 95, 5,241,252,121,199,201,118,234,188, 14, 92, 74, 99,239, 37,123, 14,219, 97,203,198,246,122,197, 37, +129, 78,179, 27,244, 85,101, 60,146, 77, 78,165,133,174, 25, 13, 54,149,106,221,134, 84,205,157, 5, 16, 89, 15, 90,214,110,207, +217, 68, 12,164, 16,157, 65,174,214,107,108, 62,126,240,158,122,208,230,227, 39,220,153,235,150, 26, 71, 48,210,236, 47,101, 24, +209, 78,145, 67,149,196,212,145,110,138,135, 96,200,191,238, 65,173, 32,205, 61,196, 22, 86,146, 48,248, 88,197, 30, 76, 77, 43, +245, 48, 37, 16,155, 2,196, 96, 15,134,216, 43,122,160,240,248,232,195,234,201,217,190,172,171,186, 26,208, 2, 19,210,149,165, + 44,180, 46, 76, 41, 80, 90,101,237,182,247, 72, 41, 56, 84,193,170, 52,163,218,190, 78, 98, 50,251,213, 90,104,193, 69, 52, 46, +139,104,173, 91,253, 95, 93,106, 47,145,237,144,104,106,149,156, 41,102, 79, 79, 30,144,141,254, 24,105,246,165,223,122, 99, 93, +102,186, 54,114,206, 28, 31,143,164,152, 89,246,123, 74, 49, 5,173,168,112,180, 61, 98, 24,182,108,143, 34,109,189,224,244,236, + 41, 41,142, 76,195,192,126, 94,216, 45, 59, 11, 30,250,120, 80,146,241,247,107,235, 12,209,198,244,231,187,217, 30,112, 99, 98, + 95, 86,110,132,137,205,148,145, 96, 24,218, 60,175, 44, 40,218,138,219,137, 34,121, 18,250,178, 34, 26,145, 60,144,147,157,202, +251, 82,216,215,202, 48,108,152,219,202,190, 88,216,173,117, 40, 8,236,247,208, 27,165,194,126,217, 49,239,119, 22, 66,211,230, +104, 80,123, 51,175,165, 80,215,194, 7, 79, 78, 25, 6, 59,125,158,183,133,122, 81,105,197, 44,106, 65, 59, 83,142,214, 38, 80, + 24, 69,252,205,108,159,135, 49, 11, 55,142,224, 51, 47, 14, 60,255,151, 62,205, 48,101,182,227, 72, 41,149, 63,254,118,226,171, +223,122,135,162,118, 43,159,119,179, 7, 28,133, 24,226,149,124,232,176, 63,106,221,146,244,215,182, 19,159,120,229, 19, 72, 76, +204,117,161,197,142,200,196, 96, 79,127, 52, 38,100, 80, 66,129,158,253,125,145, 77, 97, 42,173, 18,242,100,212,180,181, 94, 73, + 70, 74, 83,179,208,181, 78,111, 43, 61, 36, 66, 30,136, 34, 76, 83, 36,135,228,182,186,206, 13, 25, 88,131,237, 39,135,148,209, +162,198, 27,143,221, 72,107, 23, 51, 77, 43,155,173,112,237,250, 17,105, 28,168,161,208,119,149,122,217,145, 38, 72, 28,220, 82, +149,169, 23, 54,186, 95,180,240,236,189, 59,172,203, 76, 30, 97,115, 52,176,153, 34, 83,218, 32, 49,114,150, 26,189, 4, 36, 77, +188,241,193, 59,124,255, 47,254, 37,239, 61,188,228, 95,253, 55,127,141, 23,110,159,112,255,233, 99, 54, 57,113,255,188,114,255, +205,111,241,250,159,127,139,164,201,104, 94,193,236, 88, 65,132,220,224, 11, 63,251, 89, 94,126,245,121,126,245, 23, 63,207,245, + 27, 39,252,241,239,254, 30,125,169,200,112, 4,177, 18, 82, 96,221,173,212,166,164, 24, 73,161,179, 4, 87,125,214, 74,234,149, +150, 19,251,176,103,179,102,210,144,216,247, 10, 41, 19,168,158,194, 54, 11, 97,145, 10,210,172,119,221,103,164, 11, 34, 11, 61, + 25, 12,164, 6,131,183,196,195, 84,115, 53,218,151,118, 79, 98,247,106,171,145,106, 18,149,214,176,176, 45,209,222, 19,161, 89, + 48, 83, 18,181, 86, 98,239,144, 51,193, 27, 59, 26, 26, 42,153,128,201, 63,114,219,240,238,251, 79,121,251,141, 15,249,153, 95, +121,142,210,148,187,183, 70,222,251, 96,228,242,195, 55,248,149, 47,124,129,111,191,245,128,119,238,255, 9, 25,131,175, 84,231, + 74, 36,123, 44,218,119,145,163, 64, 27,208,171,184,145,172,145, 9,180,161, 33, 29, 66,143,172, 93,136, 93,201,217,162, 66,173, +117, 18,198,200,168, 2,161, 52,246, 84,136,209, 15,201,254, 90,132,108, 45,165,160,164, 46, 36,237,214, 60,104, 54,249, 12, 67, +242, 80, 86,165, 39, 33,117, 59, 68,175,218, 12,132,164,166,123,238,221, 58,230, 85,108,154, 90, 90,163, 20,131,170, 92,161,108, +237, 25,233,220, 52,123, 88,151, 67,253,181,118, 11, 76, 7, 75,174,171,119,205,163, 21,220,189,202,102,147,225, 38,226,121, 1, +211, 71, 87,181, 62,123, 10, 92, 29,194,162, 24,114,182,205,102, 69, 36, 10,201, 9,248, 49, 56,159, 94,149,168,246,190, 45,162, +142, 97, 63, 72, 82, 20,113,238,132,221,122,195, 21, 61,191,169,173, 47, 67,178,223, 75, 9,120,178,221,228, 91,165,217, 13,218, +112,252,141,216,131,133,231, 13,254,225, 25, 53,107, 40,129, 5,103,123,112,104, 77, 15,144,220,223,174,234, 77, 13,207,106,116, +151,221,120,239,191,122,131,236,144,141, 10, 13,107,173, 56, 52, 46, 73, 72, 38, 97,145,238, 15,112,239, 25,251, 13,221, 78, 39, +214, 61, 69, 12,242, 18,100, 32,118,189, 26,165,212, 90,125, 28,143,141, 27,176,177,182, 5,161, 13, 26,161,190, 75,183, 7,180, +191, 80,193,126,201, 7, 49, 34, 90,209, 46,238, 47,118,231,119, 48,236, 97, 47, 46,136, 73,209, 3,122, 7,227,146,189,216, 17, + 19, 12,180, 3,130, 86,172, 94,166, 21,138, 6,211,233,245,193,156,209,221,189,182,193, 60,242,149, 72, 45,102,114, 34, 22,203, + 5, 96,163,123,251,240,171,133, 35,186, 33,110, 27,141,144, 44, 4, 33, 93,136,121, 68,164,123,182, 32,144,114,186, 26,247, 27, +119,224,144,128,180, 27, 92,202,217,210,158, 94, 43, 25,183, 19, 65, 2,203,126, 54,108,237, 58,219,158, 44,140,244,181,179, 72, +229,198,245, 13,167,231,123,214, 82, 56, 57,217,178,174, 51, 23,151,123,148, 67,208,195,214, 24, 70,111,181,244,253, 56, 68,118, +203,138,106,119,163,158,141,234,147, 36, 36,139,141,138, 52,178,221,142, 86, 49,146,137, 44,246,128, 13, 65,217, 71, 76, 9, 41, +216,151,205, 97,198, 85, 27, 15, 31,159,185, 97,201, 12, 66,218,109, 10,178,219,207, 87, 13,130,174,134,125,173,158,174,109,116, + 68,237,176, 87, 74,229,242,114, 79,171,141,185, 99,107,131, 86, 89, 75,181,233,141,218,232,115,140,145,107, 83,224,232, 40,115, + 60,141,228, 8, 23,115,225,253,135, 23,132, 40,156, 92, 59,230,153,187,183,248,236,231,238,113,237,232,136,208,133,126, 13,250, +144,248,209,123,143,249,224,137,241,216,151,121, 37, 70, 83, 43,134,195, 41, 55,132, 43, 54,117, 8,129,227,141,240,242,171, 47, +113,124,235,152,185,237,109,199,218,149, 16,173, 27,223, 53,131,116, 50,202, 58, 40,173, 42, 67, 26, 96, 46, 54,158, 29,133,210, + 87,250,162, 36, 79,219,159,158,159, 83,195,200, 52, 5, 82,142,212,139,204, 38, 7,242, 16,144,176, 97,136, 66,169,123, 82, 26, +144,150, 57, 95, 42,140,208, 16, 6, 12,101,185,246, 25,109,157, 33, 29,243,240,244, 9,219,188,225,222, 11, 47,241,210, 43,175, +176,191,216,241,254,251,239,115,185, 91, 56,171,123,242,104, 43,170, 90, 43,210, 77,248, 48,164,204, 16,148, 60, 30,241,224,236, + 67,110,156, 28,147, 99,102, 36,115,121,121,193,176,189,206,245, 27, 55, 41, 97,143,180,153,227, 33,242,111,253,234,207,242,143, +127,235,255,227,135,223,252, 51, 94,249,171,127, 13, 41,143,184, 44,149,203,167,231,124,253,235,127,202,249,197,142,113,202,126, +152, 86,146, 4,150,165,242,217,215, 62,198,223,254,219,127,149,155,215,239,240,211,127,233, 39,249,227,111,191,206,215,190,249, + 93,114,204,166,115, 46, 70,236,139,193,214, 71, 75, 41,132, 16, 25,137,212,212, 8,177, 80, 27, 30,160, 11, 84, 10,178, 20, 36, + 43,162, 6,242,208,214, 88,113, 59, 89, 59, 48,252, 45, 65,175,162, 70, 52,108,145, 82, 59,227,212, 89,181, 17, 99,182,112,108, +107,254,127,233,214, 7,239,213, 56,229,106,198,189,142, 53, 43, 74,175,100,207,240, 32,129, 80,234, 85,143, 91,187, 9,168,122, +240,148, 80,176, 42, 98, 18,203, 94,156, 95,118,190,254,231,111,240,185, 95,250, 5,198,227, 35,230,101,229,103,127,246, 83,188, +253,198, 19,198,113, 34,135,201, 30,132,254,224,150,226,171, 73,177,160, 86, 12,206,202,168,133, 76,186,170, 87,245,222,233, 61, + 32,139,113,226, 27, 21,169, 70,207, 92, 75,247, 84,186,218, 77, 59, 8,210,213, 24, 29, 62, 25,109,158, 1,146,152,109,229, 68, + 96,233,133, 93,171,100, 15,136,169, 6, 98, 74,116,141, 22,226, 83, 11,125,117,167, 37,246,213,172,122, 81,146,161, 94,155,135, +242, 74, 53,107,156, 54, 15, 18, 30,180,168,182,143, 47,116,127,168,217, 51,196, 24, 16,118,144,235, 7, 98,155,155, 56, 83,114, + 67, 91,179, 86, 83,239,157,144,178, 61, 87,106,197,190,144, 12, 66,102,207, 28,155, 38,118, 7,207,224,245,226,126,245, 8,179, + 74,112, 56, 64,113, 16,130, 10, 33, 53,215,234, 30, 24, 34,166, 13,173,109, 37,165,228,171,102, 27,125, 75,179,207,164,134, 0, +213,122,248, 68,185,162,165, 70,239,155, 27, 67, 71, 88,187,117,224, 15,109, 2, 61, 24, 53,241, 94,186, 39,204, 74, 3,201,149, +208,141,211,112, 48, 8,246,110,220,130, 26, 2,117,245, 92, 80,244, 32,164,115, 30,232,129,222,162, 77,124, 61, 0,221, 67, 32, + 17, 14,198,151,232, 59,101, 91, 67,137, 58,192, 36,224,255, 52, 39,187, 97,137,107, 27, 81, 20,132, 4,177, 16,163,239, 54, 60, + 28, 96,189,250,131, 30,211,217,189,158, 2,183,241,143, 87, 67,104, 87,134,183, 32, 1,180, 82,171,213, 71, 98,192,195, 86,246, +130, 36,156,235,235,152,189,230, 55,100, 9, 30,224, 11, 88,250,184, 98, 50, 21, 44,181, 26, 49, 90,156,117,237, 3, 18, 50,205, +229,243, 65,140,246, 22, 90,167, 5, 27,193,116, 49, 76, 96, 45, 13, 17,200,201, 60,181,218, 10, 53, 24, 58, 54,146,157,246,101, +125,102,105,248,129, 37,153,250,176, 11, 26, 33,135,104,111,202, 44, 76, 10,211,100,191,152,182,174,200,112,228,183, 78,241,160, + 29, 68,201,140, 25, 90, 84,144, 72, 9, 43,177,118, 46, 46, 27, 23,151,231, 4,160,172, 51,101, 89,232,205, 70,128, 6,146, 56, +120,169,109,183, 57,109,182, 86,153, 41,157, 97, 72, 30, 72, 52, 74,154,170,249,130,163, 8,195, 96,183,173, 24,204, 45, 94,189, + 66, 88,138,237, 71,131, 40,217, 73, 69, 74, 39, 12,153,107, 17, 46,231,149,214,187,157, 50, 99,100,183,236, 41,243, 74, 41,197, +122,173,181,153, 94, 16, 12,231,170, 54,121,104,193,198,130,251,181,176, 91, 10, 77, 3,177, 41, 75, 95,108,175, 28,229,106, 63, +219, 85, 56,187,216,115,243,214, 17, 47,220,189,201,118, 26, 8, 1,166,203, 29, 79, 78,247, 92,206,133,247, 31,158, 49,127,179, +243,253,247, 30,147, 37,178, 44, 11, 50,100, 46, 47, 42,251, 98,163,211, 86, 26,173, 22, 35,198,137, 31, 60, 85,220,107,175,132, +152, 56, 30,133, 87, 94,122,142,151, 94,122,158,108,154, 35,180, 71, 82, 50, 92,235,229,126, 53,216, 69,194, 38, 60, 8, 27, 87, +207,150, 12, 90, 96,109, 98,159,137,158, 88, 91,101, 85,101,233,145,180, 53,200, 81,212,196,148, 64, 54,137,156,196, 2, 48, 61, + 81,155,133,107, 98, 80, 36,217, 94, 81,171,210,227, 64,105,139, 33,117,215,142,234,142, 71,167, 15,185,182,221,146,114, 36,111, +142,104, 33,178,238, 47,104,177,208,150,106, 7,148,100, 56,231,107, 99,164, 4,225,242,242,146,123,183,110,178,157,174,113,122, +121,206,230,198, 77,226,118, 67, 84,229,230,120,194,121,233, 92,238,247, 44,243, 5, 79, 30,207,164,124,194, 51,175,190,202,223, +252,187,207, 51, 78, 71,156, 94, 60, 33,167,196,124, 17,121,253,251,223,226,253,119,223, 50, 67,151, 66,202, 3,181, 22,150,181, +114,231,218, 9,127,231,239,252, 27, 60,243,194, 61, 94,123,238, 99,252,232,221,199,252,230,111,254, 54,215, 82,102, 31, 96, 94, + 86, 87,102, 6, 42,145,208, 23, 70, 73, 20, 85,175,232, 84, 40,150,124, 22,237, 70, 12,139,141,208, 64,122,116,166,183, 65, 61, +162, 70,198, 33,217,195,172,119, 72, 3, 33,172, 76, 49,176, 56,234, 25, 9,148,101,177, 3, 61,137,160,102,107,236, 10, 3,135, + 68,182, 16,123,163,214,224, 15, 89,219, 77,214, 90,140,214,136,133,106,161,177,182, 70, 36,145, 67,183,201,137,102, 11,240,178, + 56,216,198,190,199,100,200,124,239, 71, 31,112,254,225,135, 60,115,235, 46, 31, 60, 62,231, 99,227,134, 62,192,255,246,155,255, +132,215,223,120,199,107, 74,141,192, 96,187,211,216,208, 28,232,171, 35,194, 61,248,101, 40,236,195, 77, 83, 8,158,176, 86, 21, +219,173, 11,204,205,196, 86, 72, 71,101,180,254,123,183,149,101,105, 46,205, 1, 50,166, 81,238, 10, 73,171, 81,231, 14,163,112, + 23, 36, 73, 48, 99, 94, 90, 44,159,163,193, 70,201, 7, 76,111, 11,182, 30, 77, 77,161, 46, 38,104, 81, 11, 19,174,118,194, 55, +175,184, 90,189,236, 80,243,108, 46, 73, 9,106, 83,202, 72,178,176, 94,244,134, 12, 30,112, 68,200, 4, 22,237,118,224, 10,242, + 81,128,185,121,170,221, 5,172, 92,221,220, 33, 58, 65,207, 86,104,135, 84, 63, 87,127,110,196,171,105,106, 15, 63,237,130,253, +241, 62, 13,241, 27,118,215, 78,204,201, 46,134, 14, 27,178, 29,125, 53,138,101, 14,134, 1,143,241,202, 56, 26,156,173,110, 59, +241,118, 72,166, 89,126,204,106, 8,244,104, 35,254,160,145, 16, 44,249,110, 84,216, 6, 45, 56,152,218, 2,112,246,171, 51,126, +133, 98,147,165,222,140,185, 18, 98,247, 93,126, 50,130,159,135, 3,175, 2,118,189,144,130, 90, 7,179,119, 51, 78,137, 26,241, +205, 64, 11, 7, 75,141,221,200,164, 5, 35, 53,181,110, 86,161, 32, 62, 78, 72,158, 92,183,113,150,136,141, 60,241,211, 17,213, + 8, 79, 33,124,100, 36, 67, 13, 36, 96,141, 52,179,179,105, 87, 36,100,242, 16,252,102, 15, 67, 74, 14,217,143,150, 80, 87, 75, +166, 30,182,162,170,205, 18,204,189,163, 93,168,181, 26, 28,165, 7,179,244,196,140,180,238,135,134,136,100, 33, 5,136, 61,218, + 45, 52,170,211,131,140,240, 35, 18,172,146, 16,236,127,223,123, 5, 18, 67,238,148,165,179, 84,123, 16,104,171, 70,217,171,205, +119,112,130,106, 1, 49, 37,108, 80, 53, 44,101, 50, 84,107,168, 54,182,243,207,222, 85,199, 48, 96,187, 43,130,178,149,100,142, +238,218,124, 39,110, 15,192,218,109,218,112,237,228,132, 86,109,135, 29,195,196, 52,116,170,227, 24,113,178, 89,138, 66, 47, 51, +213,157,200,165,117,146, 7,229,134, 40, 52, 45, 60,189,188, 32,146, 72, 17,166,154, 32,250,161,168,137, 65, 25,180,208,170,157, +246, 85,188,179,218,237,182, 58, 76, 66,138, 3,219,156, 80,133, 41,192,233,249, 5,235,188, 51,235,158,133,109,201, 18, 41, 69, +217, 78,137,227,227,145, 33, 26,144, 98,209,149, 7, 79,102,206, 46, 58,107, 93, 25, 36,144,167, 76,148, 64,204,206,184,109,176, +155, 59,203, 98, 15,225, 90, 10,247, 31,158,145,115, 38, 38,147,125,172,171, 82,151,206,195,229,130, 7,143, 47,208, 31, 28,122, +157, 86,241, 24,182, 91,162, 88,167,179,121,151,180, 53,131,107,132,232,252,110,135, 58, 36, 81,142,143, 54,220,188,123, 15, 66, +100, 93,155, 33,126,155,245,131,199,203,202,118, 51, 49, 12,248,225,117, 36,212, 74,149, 78,152,205,123,189, 34, 94, 65, 51,198, +122,171,149, 46, 66, 74, 27, 98,109, 68, 15,152,230, 40,164, 41, 51,165, 72, 91, 58, 75, 95,201,219, 13,169, 64,237, 43, 61, 7, + 66,232, 72,176,132, 60,205,216,219, 83, 78,244,165,176,172, 59,238,220,185,197, 56, 29,115, 52,110,120,251,221,119,157,200,167, +136,195,111,142, 54, 91, 36, 30,209,150,153,181,236, 41,109,207,115,207,127, 30,137, 35,183,142,174,113,253,248,196,229, 28,157, + 16, 35,203,110, 79, 93,206,121,250,248, 41, 31, 60,248, 11,100, 21,138, 44, 28,111,175,243,228,236, 17, 2,156, 94, 92,242,238, +123,111,241,250,155,223, 51,217, 68, 72, 22, 48,170,230, 96, 8, 10,127,235,215,127,133,159,251,185, 95,226,249,123,183,169, 40, +191,249,191,255, 54,231,187, 29,219,163,103,200,251, 25,149, 21,141,153,190,218,225, 57,137, 85, 52, 67,239,164, 80, 44,144, 25, + 19,189, 45,110,159,138, 72, 76,212,208, 25,186,117,162, 75,183,207,123, 8,145,218,172,254, 26, 99, 48,137, 70,243, 21, 26,157, + 36,141,158,162,161, 93, 99,182,239,135,234,208, 36, 85, 10,193,157,230,126, 11, 61,180, 98,192, 45, 95,230, 4,151,152,233,189, +218,247,131, 65,174,205,180, 21,189,178, 41, 7,126, 67, 50,166, 6,141, 17,225,241,147, 75,190,243,237,239,241,153,207,253, 20, + 75,203, 60,121,116,193,171, 47,156,240,197, 40,252,232,135,111,179, 73, 27,187,225,246, 78,151, 74, 78,241,202, 3,177,132,132, +184, 69, 82,131,101, 15,160, 16,100,164,187, 89, 50,134, 78, 88, 18,107, 48,149,241, 1,105,174,181, 81,180,216, 4, 64,141,207, +208,187, 53, 75, 52, 88,195, 40, 17, 88,151,197, 30, 56,201, 46, 48, 93, 2, 34,110, 78,155,103,203, 23,137, 73,153,114, 78,244, +214,232,165,216,224, 59,226,162, 43, 31,249, 54,161,246,118,101, 45,236,181,217,136,185, 91,112,109, 12,216,235,233, 21,105,237, + 54,237,236,218,161,122, 88, 9, 37,117, 69, 7,171,200, 17, 44, 7, 97,245, 61,159,104, 4,187, 20,212,106, 42, 86,106, 37,144, +168,158,121, 32, 66, 47,106,159,239,234,172, 19, 55, 69,166,100,248, 90,227,230, 67, 17,181, 85, 10,130,136, 61, 88,137,253,176, + 12,183,223,177, 4,106,107, 68, 53,214,255, 90,237,233, 26,162,253,158, 98,140, 32,134, 67,239, 98,183,229,160,226,211,101,245, +219,127,191, 34,233, 29, 4,117, 65, 15,127, 23,191, 93,247,112,197, 30, 0, 65,181, 19,181, 91, 5, 15, 91,143,107, 52,158,139, +144, 12, 14, 20,236,168, 38, 10,107, 48, 38, 31,254,121, 72,138,171, 40,187,177,103,171, 19,184, 98,180,196,104, 88,171,119,161, + 29,107,231, 33,163,120,216, 99,168,153,109,122,181,157,136, 4, 3,103,168, 68, 82,138,136, 66, 72,197,194,113,221,110,165,189, + 55, 3,239,184,153, 39, 28,198, 49,189, 95, 9,101, 98, 16, 99,165,251, 41, 80, 87,179,210,136,116, 11,155, 5, 83,120, 74,116, +165,156, 20,219,216,244, 78,110,205, 79,215, 21,218, 74, 11, 25,165,152,148,160, 4,122, 28,140, 31, 31,220,178,213,237,118, 20, + 92, 36, 35, 98,111,164, 33, 4,106,179, 15, 86,148, 12,155,200,160,135,137, 67,247,157,136, 5, 70,114,202,148,110, 1, 12,181, + 99,153,253, 12, 46, 59, 40,172,126, 88,112, 28,110, 12, 72, 55,172,230, 50, 23,154, 86, 82, 26, 24,178,133, 67,182, 41, 51, 76, + 25, 6, 57,128,208, 9, 58, 82, 75,161, 55,168,171,209,228, 74, 45, 52, 58,165,118,127,182,135,171,201, 74,175,202, 52,142,116, +237,228,113, 36, 7, 11, 3,238,206, 47,109,183, 44,145,121,159,201,201,216, 1,196,200,133,238,201, 49, 16,253, 48, 17,147, 85, + 45,186,118,162, 24,124,133,216, 81,215, 80,174,193, 12, 65,183,175,223, 96,165, 19,122,103, 89, 77,131,153,177,196,189,134, 68, + 28,237, 65,118,146,182,156, 94, 60,162,212, 75,114,132, 33, 91,170,181,183, 64, 41,237, 96, 18,116,220,174,173, 51, 74, 81, 46, +215, 64, 88,103,118,187, 98,135, 28, 71, 47,198,136,189, 7, 60,112, 25, 60,100,169,189, 49,215, 66,173,118, 91,136, 34,158,115, +177,204, 1, 98,163,218,222,141, 76,181,219,207,124,237,235,127,102,117,154,174,164,136,221,166,163,221, 92, 62,253,201, 87,248, +252,167, 62,205, 78, 45,104,212,235, 66,206,214,123,157,207, 43, 90,171, 77,148,138, 88, 74,190, 43,244, 68,148,110, 35,225,156, + 24, 80,138, 38, 98,183,230,129,113,160, 23, 82,177, 20,118,163,160,251,128, 12,137,148, 7, 68, 26,101,223,136, 33, 33, 49,243, +248,201, 3,234,218, 24,227,200,115,207,220,227,230,241, 17,223,127,250,128,211,139, 66, 41,141,233,200, 42,111,173, 23,110, 78, +215,120,178,238,169, 42,164, 52,113,237,198,109,222,123,247,148,124,156,168,122, 73, 42,129,186, 68,150,181,128, 10,155,156, 89, + 7,248,133, 95,248, 9,110,110, 38,222,249, 96,199,233,121, 67,163,178,159, 19, 15,239, 63,230,143,190,252,135, 92,156, 93, 16, + 83,178, 3, 94, 10,212,190, 48,164,204,191,251,183,126,157, 79,126,242, 85,238,222, 58,226,230,141, 99,126,247,203,127,198,219, +111,189,201,209,241,115,236,202,130,246,213,210,185, 75,179, 67,100,116, 0, 85,155, 81, 42, 26, 70, 59,182,213, 56,197, 0, 0, + 32, 0, 73, 68, 65, 84,100,180,153, 56, 69, 90,202, 80,204,161,160,189,176,107,157,174,139, 53, 74,106, 32, 36, 71, 35, 99,156, +243, 84, 76, 0,181, 95,103,243,218,251,195, 91, 43,208,170,175, 90,108,101, 40,161, 83, 61, 77, 30,186,173,244, 8, 43,234, 50, +143,187,119,239, 49, 95, 60,177,135,164,186,196,138, 78,142,217,255, 25,246,192,164,137,213,128, 17, 91,251, 52, 15,122,210,233, + 57,243,135,127,250, 29,126,233,175,188,203,107,175,124,150, 39,167,103,212,165,241, 55,127,253,215,249,214,159,191,199, 15,127, +240, 22, 67,154, 28,159,237, 43,167,214,136, 41, 18,212,218, 52, 57, 97,117, 62,223,134,198,102,172,122,237,141,238, 46,114,245, +198,144, 52,236,245,195,106,120,130, 77, 35,138, 54, 55, 93, 38,131,195,168,178, 63,152,193, 36, 64,179,221,172, 6, 23,131,120, +208, 51,248,120, 88, 69, 89, 90,113, 28,169, 92,137, 87, 52,224, 55,123,243,132,219,105,200, 24, 5,214,169,175, 87,245,186, 53, +170,177, 23,214,217, 38,117,218, 73, 34, 86,127,236, 7,213, 72, 71, 37,219,218,209, 33, 81,218,173, 89, 35,221, 70,223,221,171, +204,146, 60,131,141,201,158,232,129,208, 92, 71, 27, 32,144,136,209,190,103, 85,141, 94,216, 14,136, 27,111, 97,101,247, 75, 88, +163, 43,250,132, 25,211,153, 98, 74,218,238, 78,170, 20, 3,165, 99,202,221,102, 2,153, 16,204, 85, 98,102, 81, 37,138, 29, 20, + 57,200,216, 14,187,245,102,174,212,208,213, 66,223,126,176, 82,167, 4, 38,213, 43,200, 77, 23, 8,205, 94,119,107, 41,218,141, +191,139, 77, 91, 8,163,233, 93,163,241,251,165, 41, 61,139,255, 30,172,161, 17, 67, 32, 94, 59,185,241, 27, 33, 8, 98, 86, 71, + 82, 18,115, 55, 39,177,192,154,186,117,167,117,106, 91,253,139, 86,232,158,150, 52,119,116,248, 72,164,113, 64,236, 57, 29,168, + 30,144,127, 33, 80,154,237,118, 66, 20, 55,236, 68, 82, 74,164, 56, 64, 23, 39,193, 69, 75, 43,138, 24, 39, 90, 12,200, 97,134, + 88,123,226,167,104, 20, 33,107,191, 89,125, 44,244,238, 9,125,187, 57, 73,140,132, 56,144,114,250,232,131,119, 80,227,165, 43, +101,141, 39, 19, 15,194,146,238,225, 24,175, 35, 8, 36, 25, 72,131, 48, 78, 70,128, 11, 98, 15,186,113,200, 12, 57, 49, 77, 91, +166,205,214,170, 88,218,201,146, 73, 41, 92,125, 17,224,117,133,224,127,254,225, 32, 96, 99, 68, 27,177,181,106,225,146,186,206, + 44,173,210,122,101,119,185,178, 47,157,121,221, 51,239, 86,202,210,153,231,197,160, 26, 34, 72, 78,228,156,217, 76,137,105, 51, + 48,108, 50,155, 97,195, 48,216,127,150,243,200,112, 52, 48,102, 11,213,109,142, 54,140,211, 64, 78, 3,180,102,235, 4,137,246, +197,224,146, 4, 9,205, 94,107,117, 77, 93,176,125, 92,105,205, 87, 35,134,169,109,221,131, 36,173, 49, 47,149,178,118,115,189, + 99,181, 47, 9, 66,202,102, 24,147, 20,153,151,194,197,126,101,183, 52,206, 78, 23,158, 60,221, 17,162, 50,229,140, 42,172,189, + 83,106,165,148,202,186, 86, 90,179,247,225,176, 73, 22, 42,172, 22,236,217,207,133,203,157,161,115, 77, 11,101,239,149, 36,246, +128, 48, 20,102,101, 93,138,161, 27,187,237,246,245,112,137,231,224, 78,183, 44, 69,247,176, 92,107,149,101, 93, 41, 75,177, 38, + 65, 55,134,126,171,246, 62, 94, 74,161,148, 75, 94,121, 97,226,241,217, 5, 15, 31,159,163,107,161,104,101,183,168, 81,241,146, +221, 42,204,117,223, 25,210, 72, 19, 11,131, 78, 41,179,221, 36,155,130, 13,145,109, 76, 72, 79, 20,154,215, 94, 13,185,156,124, +254,148,143, 50, 33, 68,202,170,244,197, 2,131, 45,193,253, 15,239, 83,215, 61,119,239, 61,203,167, 63,254, 83, 4, 85,222,126, +247, 13, 46,250, 37,195,152,217,132, 45,189, 54,198, 41,115, 52,100,206,231,153,139,178,112,247,198, 61,226,112,196,147,243,251, +220,126,246, 14,125,182,181,210,152, 70,134, 65,232, 82,104,155, 35,174,221,126,150,178,143,156,238, 50,183, 94,120,141, 40, 3, +177, 11,173, 52,190,244,165, 47,242,206,219,111, 48, 14,131, 37,253,197,170, 77, 55,142, 39,254,131,191,247,215,249,183,255,157, +191,203,201,201, 49,159,252,236,171,124,239,141, 71,252,119,255,195,255,200,107, 31,255, 20, 31, 60,188, 36,197,149, 32, 74,155, + 27,205,173, 89, 65,213,178, 31,106,123,179, 22, 2,169,155, 99,188,248,154, 47,197,100,252,254, 62, 35,170,200, 24, 16, 18,189, + 21,147, 21,133,108, 95,110,209, 76,121,237,144, 64, 46,182, 71,181,181,167,208, 66,161, 55,155, 82, 37,197, 53,161, 94,224,237, + 54,210, 21,181, 47,246,170,157,235, 55,182,236,119, 51, 23,231,167, 70, 10, 68,188, 51,238, 15,149,104,125,252,232,227,222,144, + 45,204,107,227,101,187, 81,142,211,200,195,199, 59, 78,142, 50,159,251,169,159, 96, 26, 50,203, 90,121,225,249,107,180, 2,127, +242,141,111,186,160, 37, 16,178,237,229,205, 87,174, 78,227,148,131,103,197,158, 44, 62,198,213, 80,125, 72, 27, 33, 84,162, 90, +200,179,117,219,241, 54,212,214, 24, 88,133,170, 31,246,218,190, 99,239,221, 42, 89, 65,140, 95, 30,196, 17,166,218,140, 60,215, +205,136, 22,195, 0,189,185, 16,211,234,163,162,234,146,146, 31,251,123,121, 68,205,170,141,205,166, 3, 52,191,236,116, 91, 9, + 4,171, 29, 26,146,251, 48,213,140,182,118,208,234, 94,119,223,141,247,238,110, 22,251, 41, 85,187, 77, 19,252,187,178,187, 81, + 60,137,181, 80,130,157,173, 12, 85,158,156,174, 30, 35, 93, 44,237, 46, 87, 59,252,224,218,235,195, 65, 77,124, 77,124,168,199, + 29,246,243, 54,238, 15,213,130,173, 26,241,245,144, 58, 95,222, 46, 64, 42,118, 11, 63, 28, 72,240, 0, 91,112,137,142, 98, 0, + 27,155,152,216, 45, 93,124,100,255,209,179,172,163, 26, 61,144, 46, 87, 74,103,107,206, 56,165, 46, 28, 56,239,205, 95,244, 70, + 52,154,155, 61,240,187,143,245,197,107,227,189, 18,159,187,253,204,111, 68, 63,105, 85, 21, 79,104,219,104,221, 92,180,217,133, + 41, 54,154, 21, 9,164,104,149, 41, 3,215,116,211,164,138,125,160,130, 4,174,202,105,205,198,182,173,154, 43, 60, 96, 55,109, +220,182,211, 93, 42,208,213, 45, 52, 46,219, 8, 41,255,216, 3,209, 70,210,146, 50, 49, 37, 11,230, 72, 66,194,225,129,157, 17, +137,164, 97, 36,229,129, 60, 38,114,140, 36,177, 96, 87, 76,150,237,138,158,144,143, 49, 57,170, 52,147,134,137, 28, 44,108, 19, +252,228,222,138,221,182, 75,117, 87,121,239,172,235,225,148,218, 13, 59,168, 86,237, 11,209,160, 22, 67,136, 52,109,228, 33,179, +217,100,162, 36,134, 33,177, 29, 38,114, 74, 70,171,139,193, 58,163, 8,217,223,100,104,180,218, 90,245, 53,197,161,167,216, 29, +225,232,193, 24,220,235,222,106,167, 84, 88,150,133,253, 90,152,151,197,121,206, 66,142,131,237,206, 83, 32,165, 72,206,118, 8, + 25,198,129,205,118,228,218,141, 45,155,109,102, 24, 71,198, 60,144,115, 36, 39,203, 35,152,166,212, 78,190, 81,130, 77, 27, 56, +140, 23,237, 38, 29,179, 5, 0, 45, 64,168,164, 28,157,174,214,137, 98,163,124, 28, 50, 44, 33, 58,160, 33,145, 98,186,146,238, + 4,141,236,231,133,148,236,203,182, 52,211,202, 62,115,115,195,189,219, 27,182, 83, 98, 59,154, 79, 64,226, 96,237,133,181, 49, +142, 38,118, 41,173,218,184, 60, 37, 15,168,224,156, 3,203, 11, 44,139,189, 70,211, 48, 92, 17,181, 98,140,108, 54, 27,174, 95, + 63,230,217, 59, 39, 68, 26, 23,151, 23,118, 99,195, 30,224, 34,145,113, 24,201,195, 96, 31, 52,103, 52,183,214, 93, 11, 25, 56, +189,152,121,227,157, 71,124,247,187,111,144,250,194,175,253,235, 47,179,137, 35,223,250,206,251,236,246, 59,246,187,133,203,203, +133,203,101,161, 84,181,137, 87,239,164,112,196,144, 2,199,155, 13, 61, 10,219, 65, 24,243,192,144, 51,105, 51, 16, 11,228, 49, + 51, 78, 38,106,105,173,217,200,115,112, 63,130, 2, 41,162, 77,121,255,253,119,200,227,196,203, 47,189,202, 52, 28,115,255,254, +135,204,243, 25,121,237,228,184, 97,217, 45, 72,236,164,148,121,122,177,178, 46, 11, 89, 58,159,122,237,115, 60, 93, 78,185,118, + 77,184, 57, 93,163,117,229,104,179, 37,228,129, 46,240,250,119,127,192, 63,250, 71,255, 43,251,243,251, 60,247,236, 11,156,220, +125,142, 24,149,109,158,120,116, 49,243,149, 47,253, 33,223,248,198,151, 33, 88, 7,116,147,172,134, 39,146,248,236, 79,254, 52, +159,255,185,159,225, 51,175,189,200,167, 63,255, 25, 30, 62, 85,126,227,191,249, 7,236,158, 60,225,198,245, 59,124,255, 7,223, +227,214,205, 91,172,197,252,246,146, 6, 11, 72, 81,188,119,189, 18, 83,134,218,209, 30,145, 56,184, 49,180,163,107, 35,132,217, +170, 69, 98,224,151, 90,149, 97,204, 76, 98, 15,133, 22,130, 25, 17, 75,181, 44,129,217,235,233, 88,211,162,187,108,170, 7,188, + 86,107, 15,124, 73, 70,218, 54, 8,138,117,187,155, 54,203, 93,168,141, 90, 79, 79,159, 56,156,200,146,238,129, 96, 92,251,131, + 1, 59,102, 91, 85,106, 32,165,132,228,100,240,161, 0,210, 3, 75,133,167,143,238,243,153,215,158,229,206,221, 23,120,116, 62, +243,225, 7, 15,120,245, 99, 47,242,238,251,143,121,243,237,247,201, 67, 54, 56,144,123,195,179,216, 94,183,118,159, 86,225,246, + 73,191, 43, 71, 85, 75,220, 87,191, 32,248,173, 58,133,108,227,115, 95, 79,212,102,214, 68,235, 80, 91, 93,181,170, 50, 8,196, +156, 44, 12,139, 49, 20, 98,200, 14,104,233,190,187,183,236, 77,117, 27, 27, 93, 63, 58,176,184, 88, 70,122, 39,133, 64, 9,234, +160,169, 70, 10, 7,223,121, 50, 2,105, 53, 96, 78,247,174, 55,218,174,210,229,226, 19, 47,187,236,218, 69, 76,125,133,125,184, +108, 73,240, 78,121, 56,172, 87, 61, 4,121,160,150, 58, 28,198,214,235,209,141,162,206,120,144, 67,248,206,194,110,250,227, 66, + 21, 14,198, 80, 7, 7,137,248,234, 23,151,141,245,171,144,243,193,222,214,186, 56, 99,196, 30,168, 90, 61, 68, 43,225,106,237, +152, 83, 64,179,175,164,253,191, 11,206,193,176, 56, 63, 62,178, 55,249, 10, 87,223, 98,110,117,107, 7,121,145, 67,149, 2,172, +173,217, 84, 88,108, 98, 29,197, 14, 35, 34,110,216,235,230,169,144, 32, 54, 25,209, 64,186,115,235, 24,109,149,181, 26,210,178, + 87, 11,170,173,181,208,131,208,187,197,250,163,255, 67,237,152,102, 95,132,150, 64, 55, 81,130,246, 78,202, 25, 9,214,107,108, +206, 87,111,221, 74,122,221,249,190, 7, 72, 16,221,110,220,218,236,131,167,206,137, 55,196, 94,178, 23, 68, 45, 85,172, 98, 41, +249, 3,145,142,208,108,236,175, 22, 36,232, 18,220,142,147, 9,201,247, 25,234,129, 27,183,162,201, 96, 8, 65,141, 98,163,151, + 26, 32, 70,130, 12, 76, 77, 92,112, 96, 15,114,173,141,218, 42, 7, 37,113,107,157,178,204, 70, 53, 74,129, 44,214,141,157,253, +231,203, 18,209,168,246, 69,157,124,112,149, 51,169,175,180,181, 33,105,240,176,158,218, 88, 53, 84,234,186, 90,111,221,223, 52, + 6, 37, 80,170, 6, 74, 45,132,208, 12, 75, 24,237,144, 34, 64, 72,201,130,105, 26, 44, 68,120,112,123,123, 87,114,213,106,111, + 91,181,196,122, 16, 51, 45, 5, 7,200, 72, 74,132,212,153, 75, 67,162, 65, 17,164, 31, 68, 15,126,235, 64,169,210,137, 85,232, +150,229, 48, 59, 82,115,168,207,144,144,214,145,100,154, 70,213, 68, 43,149,148, 2,210,162,217,220,176, 21,132, 12,134,129, 13, +109, 36,134,138, 74, 99,187,221,128,108,237,198,208, 12, 27,121,114,107,224,232,104, 34,107, 36, 75,231,254,227, 83,126,248,246, +142,243,179, 83,186, 42,147,102,122, 91, 61,191,225,191,115,199, 78,198, 96,127,201,121, 89, 89,215,194,241,181,235,108,143,142, +120,242,244,145,213,250,242, 96,230,165,214,217, 28,109,217,157,159, 90,235,128, 64,140,145,107,211,214,250,182,142,104, 77, 81, +104,213,132, 31, 49,167,171, 41, 19,170, 60,125, 50, 51,151,194,241,241,200,231, 63,245,113,190,247,250,135,220,188,153,121,114, + 89, 8,181, 19,115,160,247,200, 50, 47,180,139, 11, 19,178,196, 75,246, 99,102,222,239, 45,216,217, 96, 24, 19,113, 18, 84, 50, + 89, 18,153, 70, 91, 23, 36,193,120,124, 68, 42,145,194,194,118,136,172,161,162, 18, 41,187,133,182, 22,182,195,214,164, 62, 23, +143,184, 88,206,208,121,225,250,241, 9,143,247, 59,208,194, 52,108,153,107,161,176, 39, 13, 35, 83,218,160,203,204,254,236,156, +231,159,127, 1,237,145,113, 27,205, 28, 72,161, 46,149,219, 55,111,144,214,133, 27,195,204, 51,183, 54,188,245,222, 3, 54,199, +137,249,113,225,139,191,255, 59,252,225, 31,252, 83,114,138, 87, 13,138, 60, 77, 92,236,247, 60,115,231, 38, 39,121,195,242,112, +225,197,159,248, 56,223,254,206, 27,252,215,255,213,127,203, 15,190,241,103,252,218, 95,255, 27,252,224,141, 31, 17,116,239,235, + 8,243, 18,164,218, 24,164, 83,187,173,160, 84, 51,171,174, 72, 82,106,141,116,113, 25,203, 82,168,165, 18,153,208, 94, 60,213, +126, 72, 76, 79,212,193, 28,220,177, 69,251,114,245, 41,157, 51,172,237, 38,216,172, 11, 78, 24, 89,203,130,150,134, 38, 67,111, +150,186, 90,218, 90,131,145,214,154,237, 91, 9,137, 90,149,205,246,216, 90, 42,221, 70,197,126, 87,116,168, 8, 46, 32,241, 93, +123,180, 29,188, 54, 59,248,106, 54,202,219, 52, 13,188,245,254, 25,255,226,203,127,202,209,157, 23,249, 39,255,244,247,249,238, + 31,127,157,255,228,223,255,123,124,225, 47,255, 44,223,121,243, 45,118,103,123, 3,153,116,187,217,149,106, 2,150,134, 77,104, +114, 18,234,106,205,145,174, 22,136,235,171,225,179, 37, 98,123,106, 34, 61, 84, 66,109, 46,169, 18, 2, 6, 49, 10,210,201, 98, +104,214,224,220, 11, 61, 44,119, 85,253,112,189,216,119,138,189, 41,232,180, 43,132,114, 15,205, 31, 60,225,163,116,187, 26,147, +163,117,215, 43, 87, 39,120,162,166, 84, 22, 23,179, 4,211, 31, 75,197, 32, 63, 46, 86,234, 26,208,190, 16, 98,178,125, 51, 70, +213,139, 62,153,181,218,184, 81, 62,137,238, 33,209,128,228,128,150,110, 1, 50, 95, 37,106,131, 40, 6, 29,194,109,127,218,244, + 42, 16,169,142,118,165,117,107,154, 96,239,147,160, 6,125, 82,196, 14, 19, 33,217,107, 89,173, 1, 17, 66,184,154, 20, 4, 2, + 18,197,246, 13, 29, 84, 26, 17, 87,201,214,213,173,105, 38, 60, 11,221,118,232, 42,253,234,246,109, 56, 87, 67,235,232, 97,191, +168,246,103,116,177, 3,137,118, 11, 9, 30, 14, 61,182, 62,242, 90,121, 59,136,120, 44,117, 31,124, 90,110, 85, 58, 27,205,247, +110,217,174,160,145,248,194, 43, 31,255,141,148, 38,146,100,226,118, 96,179,177,189,238,118, 19,125,167,168,100,245,108, 94,211, +195,103,230,199,198, 8,209, 84,131,146,200,142,221,148, 40, 76,155, 13,155, 49, 50, 13, 98,163,193,209,176,178, 73, 32,121,141, + 45,137,144,197, 78,100, 33, 68, 11,167, 89, 93,207,186,146, 65, 93, 28, 96,196,174,224,144,252, 31,179,227, 26,129, 46, 88,144, +175,174, 43,189, 22, 90,239,118,179,109,118,184,104, 65, 61,153,104,181,143,238,163,151,214,171,227,255, 4, 82, 70, 37, 34,105, + 96,220,108, 25, 55, 71, 12,227,134,163,209,198,215,227,144,152,134,204, 56, 77,164,152,217, 76, 91,134,144,174,106, 4,218,172, +226, 84,150, 66,213,198,110,183, 99,222, 91,223,189,119,101, 89, 87,127,147, 57, 61,239,160, 23, 12,126,250, 34,144,163,173, 61, +198,108, 7,131,148,128,117,161,213,149, 86, 87,202,186, 58, 67,192,161, 24,193,254,236, 40,201,195,131,217, 71,104, 16,135, 12, +152,109,170, 87,245, 83,240, 97, 26,208, 76,167,234,167,226,232,188,250, 48,136,113,159,233,134,126, 69,124, 92,109,219,187, 94, + 61,213,143, 77, 3, 66,176,215, 36, 13,145,237, 48,146,198,200,102, 72, 54,173,136,198, 31, 24, 36, 56, 40,196,209,140,193, 14, + 87, 49,218,237, 2, 17,246, 43, 92, 92, 42,167,151, 38,208, 41,205, 79,184,209, 80,151,225, 64,187,116,189, 96,215,143, 56, 10, + 10,142,231, 92,153, 54, 19, 41, 10,231,231,231,148, 82, 44, 52,216, 11,165,216, 33,170,107, 99, 89,246,150,204,119,125, 98,206, +217, 12, 94, 41, 26, 71, 57, 70, 19,206,164,241, 42, 48, 42,193,194, 80, 4,187,217,157,237,102,214,167,167,252,228,107,183,185, +126, 99,226,253,247, 47, 40, 2,251,101,161,173,110,159,146,102,175,219,193, 97, 64,167,175,133,178,206,180, 94,185,208,198,178, + 44,212,165, 49,207, 51,231,187, 29, 23,251, 74,111, 43, 23,187, 75, 86, 79,100,247,181,146, 98, 98,183,158,241,225,123,247,217, + 30, 31,115,235,230,117, 68,132,179,203,115,180, 4,246, 33,178,212, 61, 18,221, 5, 17, 35,227,198,118,108,119,239,221,227,246, +221,123,236, 47, 87,142,175,141, 12,106, 83, 23, 81, 16,217,240,193,163, 83,174, 61,115,155, 95,254,229, 95,166,230,235,140, 39, +247, 56,127,240,144, 15,222,249,128, 47,254,193,239,243,181, 63,249, 35, 90, 41,196,108, 21,205,105, 72,172,205,110,221, 71,227, + 6,213,153,218, 2,239, 63,216,241, 15,254,251,255,137, 31,124,243,107,252,103,255,249,127,200, 59,247,103,190,250,245,175,242, +226,203,175, 48, 12, 27,171, 5,165,136,134,106,114, 13, 43,139, 91,210,124, 87,140, 86, 23, 44,180, 91,181,208, 43,196, 56,209, + 84, 41,218,220, 68,104, 77,149,210, 86,107, 98, 52,187,213, 74,176,207,112,169,213, 61, 8,216,216,190, 22, 63,148, 55,171,196, +138, 9, 88, 68,172,237,163,221,140,133, 30, 5, 54,208,145,167,170,115,180,236,201,188,187,180,203, 74,116,177,103,176, 96,157, +248,103, 80, 57,228, 99,240,157,172,209,223, 66, 52, 65,204, 82, 10,143,159, 92,114,190, 15,124,249,143,254,132,235,229,130,219, + 39, 3, 15,206,207,120,243,157,199,212,181,147,131,143,201, 69,109, 28,110,114, 79,167,198, 41,197,191, 91,212, 67,177, 77,149, + 68,240,253,172,179,233,253,150, 73, 15,222,105,110, 87,233,250,165,216,244, 65,162,121, 11,174,252, 28,222,120,178,189,190,151, +201,163, 5,223,172,168, 20,175,246,212,118,179, 7,135,179, 91,163, 64, 18,173, 25,228, 69,253,182,221, 14, 54, 74,223, 21,119, + 15,170, 30,164, 41,158,214, 51, 98, 29, 7, 43,156, 29,212, 53,216, 61,218, 8, 94, 78,183,139,198,205, 8,120,126, 42,134, 43, +225,104,240, 85, 95,243,139,159, 93,143,108,237,123, 56,134,117,111, 92, 93, 97,206,131,175, 17,187, 29, 18, 99,178, 41,109, 14, +225,144,169,247,218,118,248,104,122, 44,150, 95,104,197,198,237,162,118,225,233,222,194,138, 73,174,192,100, 66, 68, 91,160, 57, +204, 44,224, 83,162, 3,247, 61, 90,229, 77,131,175,170, 29,151, 30,154,229,209, 16,117, 56,155, 79,131,174,170,224,126, 70,194, + 14, 42, 33,122, 38, 64,140,246,168,158, 87, 75, 40, 73, 91,115, 82,173,133, 45, 90, 72,118, 27, 11,145, 52, 89,228,191, 87,131, +135,116,239,244,169, 90, 34,185,246, 70,237,149,165,122,192, 64, 43,146,109, 28,222, 83, 38,202, 64,198,246, 70,162,141,177, 29, + 0, 50,246,197, 44, 18,160,154,121,167, 25,219,195,100, 10,218, 89,107,183,174,100,182, 61, 67,148,136,102, 11, 58, 36, 95,128, + 28, 12, 74, 34,202, 64, 36,142,214,137,110, 14,132, 17,177, 36,177,193, 75,250, 1, 76, 76,244,125, 6,221, 32,130, 41, 85, 3, +175, 52,219,247,205, 33,121,213, 67, 40,190, 67,145, 52,144, 36,209, 83, 96, 84,103, 0,231,196, 32,141,218, 18,173, 86, 66, 18, +122, 93,141, 34, 55,100,123,104,183,238, 42, 81,161,174,133, 50, 95, 50, 19, 13,200,210,154, 87,184, 64,242, 72, 11, 17,161, 58, +230, 54, 16, 36,177,221, 70,214,214,141,179, 79,163,214, 25, 84, 40, 85, 72, 26, 89,103,165,230,193,214, 25,205, 79,200, 34,196, + 93,164,209, 25,220, 20, 23,115, 96,196,199, 84,146, 8,201, 70, 68, 80, 17, 77, 38,142,108, 70,175, 34, 8, 65, 19, 33, 43,172, + 92,125,248,123,235,244, 82,232, 10,235,170,150,187,136,118,176, 40,232, 85, 71,120,200, 3,155,113, 36, 68,200, 89,104,205,216, +253,117,153, 45, 85,170,129,162,133,117, 54,231,115,161, 99,240,175,236,157,213,149, 60, 38,238, 28,221, 50, 48,140,195,122,138, +118,122, 81, 55, 6, 86,214, 90,172, 7,239,163,179,218,236,139,172,180,149, 97, 24,156,192,228,208, 8,173,156,159,158, 51,215, +149, 90, 42, 18, 19,170,202,110, 93,152,198,129,160,233, 42, 44, 10, 78,213,114,237,240,218, 42,219,237,150,222,149,214, 10,247, + 31, 46,252,246,191,124,157,147, 23,110,176,174,249,234,134,101,233,229, 25, 29, 34,210, 2,210, 58,227, 48, 49,175, 6, 19,218, +140, 16, 71, 97, 95,149,113,177, 94,239,254, 96,173,138,193, 48,203,123,159,224,236, 50, 49, 86, 82,140,196, 38, 60,122,248,136, + 30, 34,215,175,221, 32, 13, 91,154,154,180, 39, 75,160,148, 83, 11,106, 46,157,216,149,179,253,125,114,156,200,219,137, 79,124, +226, 51,204, 5,174, 95,223, 26, 12, 99, 92,217,132, 35,100,200,124,231, 47, 94,231,127,254,135,255, 11,165,238,249,143,254,227, +191,207,221,187,207,240,230,183,191,195,229,126,199,131, 15,223,225,219,127,246, 21,230,101,111,185,149, 82, 24,134, 13, 26, 51, +109, 93,184,118,124, 68,105,202, 91, 31, 62,226,131,211, 63,229,247,190,244, 7,104,223,241,139, 95,248, 85,230, 53,243,181,175, +255, 11,110,223, 56,225,218,201, 93,160, 90, 27,100,113,175,117, 86,122, 18,106, 89,161,194,241, 56,178,246,149, 90,171,125,177, +138,171, 36,123,115, 14, 67,179, 16, 80, 27, 93,163,169,164,230, 25,138,222, 13, 69,141, 29,238, 91,251,232, 38, 26, 67,160,174, + 54, 50,149,209,177, 94, 53,163, 67,160,246,110, 46,241, 81,104,205,254, 21,116, 53,250, 92,133,152, 97,123,237,152,199, 79, 30, + 48, 56,134,154,222, 81,137, 38,231,104,234, 20,176,206, 50, 23, 86, 86,130, 4,246,101, 33,199,192, 52,108,137, 81,216, 76, 27, +222,250,240,156,231,191,247, 45,254,139,127,239, 95,227,238,115,183,249,222,251, 79,248, 63,126,235,159,243,230,143,222,230,227, + 47,222,229,115, 63,253, 42,127,241,131,167,156,158,239, 44, 68, 27,130,103, 2,212, 14, 64, 34, 72, 93, 80, 73,246,220, 21,203, +148,212,110,151,162,230, 94,140,160, 9,201,246,157, 99,123,121,168,117,143,134,238, 50,146,240, 81,104, 52, 24, 14, 89,253,159, +111, 29, 52, 99,138,160,209,250,252, 62, 32,214, 67,227,168, 27,213,206, 2,167,209, 62,111, 24,197, 83, 27, 22, 68,246, 48,155, +207,211,174, 70,233, 7,240,138, 65, 27, 77,217,170,192,210,171,181, 10,162,129,201, 90, 53,180,140,197,218, 32, 84,123,160, 18, +108,157, 27,101,240, 74, 53, 31,193,115,196,179, 44,174,169,197,181,201,168,113,223, 9,129, 33,186, 95, 36, 88, 91,162,249, 65, +176,118, 72,217, 97, 68,213,242,213,150,181,112,138,160,103, 45, 44,204,157, 76,122,150, 45,144,108,153, 4,161, 59,163,160,225, +211,131,222,175, 96, 59, 68,191,128,169, 87, 37, 91,191, 26,186,247,230,213,239,106,244, 79, 21,203, 46,133,116,144, 8,153,214, + 86,187, 18, 15, 98, 33, 17,243, 96,248, 1, 54, 7, 88,123,181,112,187,218,228, 56,197,132,209,147,218, 65, 74,226,106, 69,199, +248,181,110,238, 96,122,100, 72,135,206,121, 39,231,129,214, 87,214,101,182,125,135, 22,123, 33,131,217,133,116, 87,153, 67, 36, +166, 68,210,232, 53, 46,161,210, 40, 33,146,163,221,132,242, 8, 73,236,151,217, 91,101, 89,133, 46,157,105, 85,138,218, 91, 66, +186,193, 96,106,183,219, 90,116, 9,135, 25,173,108,223, 22,213,236, 86, 49,155, 79, 86, 60, 97, 89, 90,101, 72, 70,149,171, 77, +127,140,110,151,136, 57, 59, 84,167, 19,200,244,104,187, 1, 75, 38,154, 66, 16, 17, 36, 84,122,233,236,214, 83,106, 83, 46,162, + 89,109,210, 48,145,228,163, 42,149,250, 78, 36, 68, 71, 30,180, 78, 26,162,117,226,117, 96, 24, 26, 89,142,169, 10,173,154, 56, +164,251,234, 67,219,130, 58, 74,177,234,161, 98,214,136, 41, 49, 14, 35, 34, 86,173, 11, 30, 52, 17, 63,249,133,222, 25, 6,104, +165, 80, 68, 77, 10, 80, 10,161,175,104,107,204, 1, 87,242,217, 77,103, 28, 45, 96,151,242,200, 40, 1,146,239,155, 66,190,178, +205, 73, 80,164,118,250,106,137, 98,165, 17,186,216,116, 33,224,189, 82,123, 61, 91, 43, 70, 69,242, 67, 89,163, 17,206, 22,219, +107,141,137, 33,103,198,236,191,151,105,195,148,173, 86,148,202,192,118, 18, 72,202, 90, 23,202,188, 90,215,117,109,172, 68, 54, + 57,162,209,118,246,169, 87,104,137, 34,193,130, 60,189,160, 7, 27, 82,181, 67, 83, 41, 22,142, 91,107,165,247, 13, 90, 45, 15, + 33, 13,134,110,164,166,165, 54, 74,169,118,152,114,233, 77, 95, 87,114, 74,140,163,221,208, 47,119,123,154, 86,203, 56,168, 82, + 74,115,164,166, 29,134,134, 28, 57,218,108,217,110,183,124,229,107,143, 25, 54, 71,196, 20, 73, 34, 12,211,132, 12, 70,248, 10, + 4,246,125,165,119, 27,243, 73,175,180, 54,216,195,131,206,130, 9,101,232,149,165, 20,215,123, 54,138,216,222, 50,132, 66,237, + 6, 96,138, 77,185,120,188,243,123,136,176, 61,222, 80,231, 29, 37, 88,202,248, 56,111,169,107,167,247,202,233,147,135,180, 90, +184,125, 50,112,188,217,112,237,218, 45,222,248,214, 55, 88, 47,159,114,116,239, 99, 76,155, 72, 28, 71,246,203,158,156, 42, 47, +222, 25,121,252,193, 3,158,190,243, 22,247,238, 62, 67,173,157,215, 95,255, 62, 95,249,227, 47, 49,175, 59, 35, 32,250, 45,168, +248,123,245,230,241, 13,238,220,122,134,135, 15, 62,160,246,194,122, 57,179,206, 11,175,190,116,143,235,119, 95,226,183,254,159, +223, 97,190, 56,229,167,126,254, 47, 19,105, 84,111,151, 24,133, 59, 2, 3,185,175,104,136,180, 1,230,213,136,146,141,192, 24, + 19,181,153,220, 36, 73, 99, 76, 80,212, 2,147,115, 89, 73,105, 32,116,152,203, 74,140, 91,171, 28, 29, 26, 60, 7,113, 70, 56, +172,248,140, 78, 22, 98,167,214,104, 32,144, 8,172, 21, 9,149,148, 35,133,110, 30,243,110,245, 71, 66, 71,226, 64,107,202,245, + 27, 55, 25,134,247,204,216,150,140,113, 97,129,165, 72, 69, 41,101, 79, 40,182, 20, 60,218,100,142,166, 27, 12,219, 27, 92,156, + 63,102,183, 59, 37,229,137,152, 50,121, 16, 30,158,159,242,202,167, 62,201,245,123, 47,242,143,191,248, 15,121,235,237,119, 89, +230, 83,206,206, 50, 39,249,211,220,190,117,147,211,211, 11, 36, 14,254,192,245,208,154, 20, 3,185, 4, 51,246, 73,104,190,127, + 55,167,184, 95,208, 12,190,115,136,235, 7, 76, 16, 83,237,161, 39,110,183, 68,108,141,103,172, 15,171, 84,169,138,165,196,219, + 33, 7,229, 96,160, 96,120,230, 36,118, 61,140,174,138,181,155,178,162,165,218, 35, 91,205,113,161,216,231,154, 24,205, 25, 17, +236,150,220,181, 95, 41,118, 91, 56,236,152,253,144, 4, 12,142,137,181,138,176,208,197, 89, 36, 81, 8, 61, 16,180,122,190,200, + 87,129,161, 57,142,220, 98,165,173,169, 93, 80,154, 79, 59,162, 99,131,125, 58, 96, 63,170,210,162,137,203, 56, 4,255, 14,114, + 49, 76,174,210, 48, 6, 62, 26,253,126,172,168,216, 74,195,134, 14, 9,161,160,193,114, 47, 1, 99, 96,200, 16, 29,234,117,213, + 87,179,215,199, 1,107,138,161,102,163,231,165,172,217,234,127, 30,157,226, 97,205, 68, 50,145,173, 31,228,122,112,134,127,117, + 97,138,131,133,104, 80,117, 37, 4,171,120, 95, 37,238,125,196,161, 40,169, 20,165,137,221,142, 7,181, 90, 64,199, 30,168, 21, +144, 48,216,141, 78, 43,165, 21,114, 16,154,116,119,200, 70, 98, 28,237,193, 28, 5,137,142, 1,109,118, 58, 94,218,194,186,174, +172,107,114, 78,109,240,209,151,176,186, 91, 59, 73,118,101,157,125,145,135, 81,200, 1,242,198, 32, 18,170,150,102, 20,109,110, +136,243,234, 29, 74, 12,209,130,119,216,201,217,244,142,246,112, 12,217, 2, 55,162,234,230,156, 72,204, 32, 41, 24,212,192,251, +225,150, 82,172, 68,237,104,140,182,147,160,179, 16,220,127,110, 95,164, 67,234,136,102,151,221,219, 38, 75, 84,105,107, 49,168, +127,204,214,225, 84, 35, 78, 73,176,180,168,214, 98, 48, 21,233,104, 21, 66,182, 84,104,151,200, 24, 45,252,167,201,126, 97, 1, +251,121,107, 55, 70,113, 95, 26, 75,171,212,102, 59, 55,241, 81,243,188, 46,128,250, 13,179,113,186, 24, 37, 46, 37,177, 48, 18, +145, 32, 13,212, 66,134,118, 2, 94, 81, 85,246, 43,236,163,144, 66,178,118, 65,182,157,116,206,137, 32,209,242, 1,162,100, 17, +198, 41,217, 13, 18,171, 97,137, 40, 77, 3,235,186, 90,239,218,123,190,130, 18,166,104, 19,148, 98,111,114, 51,131, 21, 11,244, +133, 67,215, 18, 82, 22, 98, 10, 12,155,209, 14,137, 93,153,226, 68,220, 38,162, 6,142,183, 48, 47,213,129, 13,118,234, 93,246, + 1, 77, 48, 58, 49, 16, 54,244,181, 83, 5,116, 99, 39,242,169, 55,178, 88, 13,178, 21,123,157, 36, 89,157,169, 84, 59, 52,238, +231,217, 68, 59, 93,168,173, 80, 90,161, 84,245, 96, 95,134,104,129,196, 82, 43,227,176,181,208, 96, 90, 56,222,110, 56, 26, 34, +215,143,111,113,253,250, 9,121,216, 16,162,189,231,247,203,158,181,217,216, 53, 21,104, 37,208, 82, 38, 71,187, 65, 4,233, 76, +211,200,148,237,247,160, 29, 7,143, 8,161, 41,125, 76,180, 93,101, 35,134, 46,174, 29, 22, 10,171,192, 20,132,161,102,118,235, +142,203,121,207,181,163, 13,147, 88,197,242,244,201, 57, 15, 30, 63,228,198,201, 49,131, 14,148, 82, 24, 68,121,239,205,119,184, +115,247, 5,142,111,220,227, 11,191,248, 11,188,247,222,155, 60,124,250,136, 65, 7,214,245,156,163,126,211,171, 65,145,107,215, + 78,248, 79,255,254,127,201,230,248,136, 55,223,125,200,143,254,226,117, 62,252,224,109, 62,241,226,200, 27, 63, 56,246,224,226, +192, 7, 31, 62,102, 55, 47,108,162,175,202, 34,156, 93,156, 82,235,250,255, 51,245,102, 77,150, 93,231,153,222,179,166, 61,156, +147,115,214, 60, 0, 69, 76, 44, 12, 28, 10,224, 0, 18, 32, 4, 18, 18, 73, 81,162,220, 33, 65,164,228,110,187,237,112,203, 86, +132, 35,252, 27,116,103, 95,116, 71,216,173,107,119, 72,106,169, 29,150, 40,117, 91, 82,107,104,113, 4, 8,176, 69, 2, 36, 5, + 98, 44, 20,128, 26, 80,168, 41, 51, 43,167,115,206,222,123, 77,190,248,214,201,226, 5,131, 17, 12,146, 85,200, 60,103,239,181, +190,239,125,159,167, 16, 28,101, 18,240,233, 79,126,130,159,188,245, 6,155, 55,175,112,246,225,143,162, 92, 67, 8, 81,110, 68, + 97, 38, 99,101, 99,200,105, 74,239,229, 32, 62,148,228,176, 83, 74, 14, 56, 33,161, 26, 11,193, 8,253,208,213, 84, 42, 51,120, +217, 33,203,139, 35, 99,147, 34,134, 94,146,237, 41,202,237, 48, 43, 76, 40,224, 18, 6, 57,184,149, 70,168,166, 92,191, 85, 32, +101,143,197, 10,107,163, 15,104, 91,201,222, 30, 69, 54, 86, 52,159, 49,224, 70, 21,163,197, 37,246,182,110,161,172,145,177,111, + 89,127, 69, 50, 49,120,106,231,104, 27,121,121, 7, 31, 96,232, 24, 47,174,147,194,148,189,157,125,252,208,161,173,227,237,203, +187,252,225,127,248, 91, 78,158, 61,195,115, 47,252,132,173,141, 45,156,213,220,184,221,241,206,165, 27, 44, 44, 31,193, 85,154, +140, 36,245,115,136,146,239,209,101, 52, 30, 51,232, 65,166, 90,101, 76, 61, 31, 61,171, 82,210,182, 90,158, 29, 57,121, 33,207, + 41,209,187,166,210,199,182, 74,198,194, 68,161, 40,102, 43,232,235, 52,103,111,204,215, 89,101,186,104,115,150, 10, 85,249,204, + 73,102, 78,152, 27, 58,151, 23, 16,136, 77,179, 28, 38, 84, 20,247,134,190,211,196, 21,188,152,146,172, 79, 32,224, 52, 2,238, + 73, 89, 4, 45, 90,160, 93, 30, 73,243,163, 10, 69,143,112,224, 26,145,127, 98, 85, 80,172,134,228, 59,225, 37, 96,100,231,108, +101, 71,173, 82,198, 72,160, 72,160, 95,197,122,173, 35,229,121,194,129,233, 19,149,101,173,226,229,217, 54, 15,248,102,162,236, +226, 85,121,167,193,193, 65, 5, 35,214,210, 74, 9,226, 53,251, 44,237,233,121,130, 94, 33, 13, 32, 74,144, 45, 75,150, 74, 27, + 93,100,230,154, 33,203,103, 95,147,202,164, 5, 17, 60, 41, 85,188, 8, 89,106,124, 41,149, 49,123,201,179,105, 35,211,129, 36, +125,250,164,132,152,170, 16,105, 15,200,148,218,206, 98,194,101,139,211,138, 62, 9,141, 74,176,179,178,171,210,185, 39,151,142, +175,195, 16,203,130,211,216,140, 78, 6,135,193,186,146,148, 87,169,220,228,196, 42,230,178,140, 12, 66, 2,223, 69,124, 14, 4, + 15,222,203, 73,198,104,139,169, 42,193,233,105,133, 31, 76,129,206, 40,140,115,212,165,254, 34,198, 52, 73, 91,107, 19,161,178, + 16, 75,253, 65, 73,184,194, 88,129,183, 4,239,138,132, 70, 78,165, 85,170, 9, 40, 66,204,212, 70,146,170,209, 10, 49, 40,135, + 80,240,122,153,161, 72, 34,170, 74, 70,217,118,214, 19, 74,128, 33, 6,232, 84,249, 16,231, 2,156,176, 53, 86, 41,140, 74, 36, + 37,192,253, 20, 66, 1,254, 43, 44, 21,198,229,131,132, 42, 66, 54, 44,192,150,204, 48,247,247, 90, 71,107,231,235, 38, 85,250, +241,194, 18,183, 77,164, 14,189,236,165,124, 46, 83, 9,133,181, 37, 57,169, 20, 41, 11,111, 62, 38, 17,214,232, 92,128, 54,186, +162, 42, 99,203,160, 29,163,197, 17,163,113,131, 10,210,193, 54, 57,225, 99, 70, 69,177,187,129,103,214, 79, 8, 81,234, 32, 3, + 48,157,150,209,146,173, 48, 42,209, 54, 21,170, 46, 52, 62,196, 42,150,131,112, 2,138, 88, 15, 42, 73,210,166, 20, 5, 57, 75, + 2, 29,165, 71, 58,239, 14,251, 76, 55,244, 76,165,133, 75,229, 28, 90,105,156,211, 84,149,194,213, 13,174, 18, 83,148, 73,153, +214,198, 3,146,159, 83,153,104, 44, 97, 8,164, 65, 51,228,249, 77, 56, 17,145, 92, 64, 93, 37,114, 0,109,101,135, 24, 82, 66, +103,195,200,247,164, 36,189,236,156,115, 89,211,248,162, 23,150,135,101, 99,150,241, 37,112, 20,162,103,177, 26, 83, 85, 53, 85, +109,137, 9,118,103, 51, 84,223, 51,114, 22, 74,242, 55, 67, 1,251, 40,178, 49,216, 28, 72,161, 0,111,140,198, 79, 39, 56,101, +168,235, 10,173, 13,227,166,161, 50, 14, 87, 67,212,137,145, 19, 98, 79, 21,149,144,205, 36,217,135, 82, 10,107, 28,187,187, 59, + 68, 50,163,209,136,182, 54,108, 93,251,128, 43,239, 95,102,117,109, 65, 36, 42,126,134,211, 21,201, 26, 78,157, 62,131,182,150, +221,205, 27,188,117,233, 38, 59,183,174, 19,125, 67,178,137, 81,213,178,191, 51, 99,103,127,155,172,106,250, 97, 96,230, 59,210, +254, 14, 55,175,109,241,234,207,126,198,219, 23, 94,227,127,253,159,127,139, 71, 30,220,226,149,243,151, 88, 95, 61,204,210,226, + 42, 23, 46,190, 75,136,208,180, 11, 4,239,241,179, 41, 40,169, 49, 37, 63,240,149, 95,250,101,246,252,136,119,222,190,192,153, + 51,247,112,228,240, 73,186, 56,224, 92, 3,253, 64,101,148,132, 79,135,136,170, 13, 89, 71,166,222,147, 83,166,209, 21, 26, 67, + 80, 50,126, 87, 67,148,135,173,133,174,235, 75,234,218,144,140, 40,121, 83,180, 16, 34, 73, 15,100, 79,209, 12,203,141, 48,147, +176, 9,250, 24, 24,140,224, 97,133,193,175,136, 67,143,169, 32,103, 67, 63, 4,156, 86, 5,124,149, 74,133, 78,110,119,177,132, +188,234,164, 89, 93, 93,101,127,123, 75,110,176, 37,123, 18,178,140,174,157,214, 56,235, 14,166,154,125, 14,204,118,183,105,204, + 62,218, 74, 94,100,152, 69, 24,228,182,249,237, 23, 94,101,250,220,203,236,109,109, 21, 14,129,140,111,187,157, 61,150,215,214, +137, 94,126, 70, 90,207, 15,128, 94, 38,136,229,165,166,178,240,225,125,136,104,171, 17, 46, 27,101,143,156,136, 73, 21,120,149, +228,149,162,146,195, 14, 37,147,148,146,176,213,117, 5,217,107, 8,145,160, 37,104, 76, 40, 4, 54,100,228,166,140, 97, 40,180, + 74, 19, 5, 13, 45, 50, 36, 89,119,198, 40,249,135,156, 15, 18,182,114,153,211,186,220,126,239,132,189, 84,206,104, 11, 33,148, +138,155, 22,229, 51, 74,161, 92,217, 25,151,218, 94, 42,183, 82,202,247, 74, 21, 94,123, 34, 30,224, 81, 29,243,177,183,100, 3, + 82,121, 15,228, 36,217, 38,101, 53,248, 50,129, 45, 47,119,156,157,151,101, 74,157,215,146, 99,209, 99, 23, 33,203,252,165,175, +203,242, 64, 57, 45,220,127,149,136,165,190, 22, 83, 18,164,110,169,241,233,194,163,157,135, 46,165, 62, 23, 15, 98,221,202, 88, +212, 28, 24,166, 11,163, 68,131, 15, 94, 2,222, 89,214, 31, 89,139, 55,133, 40, 1, 56,157, 36, 48,158,146, 63,104, 28, 8,157, + 85,198,249,115, 96, 18,165,180,168,231, 40, 90,192,206,102,145, 92,205, 37,238,243, 84,160,149,211, 83,214,228,212,147, 18, 68, + 93,164, 42,194, 82,148, 38,234, 17, 71, 0, 0, 32, 0, 73, 68, 65, 84,222,105, 10, 56,109,105,138,153, 39, 41,153,247, 99,164, +144,175, 82,148,148,105, 20,155,140, 43,227,161, 92, 66, 30, 41, 75,161, 63,196,140, 15,133,116,104,196,108, 19, 58,208,206, 82, + 85, 50, 30, 18, 68,162,252,239,135,174,103,230, 75, 21,201, 24, 17, 2, 16,233, 82, 36,107, 67, 85, 21,248, 68, 82,210,103,204, + 26,173, 51,170,106,104,172, 17,235, 87,234,241,101,204,174, 11, 64, 69,231,136, 33,177, 52, 90,164, 90,144, 19,217,144, 61,201, + 7, 98,148, 83, 91, 84,153, 28,228,165, 26, 98, 34, 24, 71,229,156, 88,210, 84,102,200,170,104, 53, 69,106, 18,173,124,241, 98, +206,100,163,168,157,195, 25, 77,157, 61, 54,107, 6,239,165, 90, 84, 96, 43, 42, 41,170,186,150, 21, 67,242, 76,186, 76, 82, 14, +167, 34,117,213, 98, 17,242, 88,176,134, 48,235,165,215,157,198, 64, 36,204, 2, 73,103, 66, 10,248,217,192, 20,121,177,145,193, +247,145,201,254, 62,104, 25,169,143, 70, 82,171,170,106,203,130, 86, 56, 99, 56,172, 5, 77, 88, 89, 67, 55, 27, 8, 36,186,105, +199,108, 38,249,137,236, 51,193,207,196, 52,164, 65, 5,105, 28,204,199,217,198, 89, 32, 8,218, 19, 39,187,167,152,208, 86,163, +162,194,212,146,110,143,115, 57, 80,202,114,176, 83, 82, 77,201,222, 51,244,242,247,173,113,146, 38,245, 10,219,212, 18,156,244, + 14,227, 12,217, 70,124, 81, 61,154, 40,112,144,218, 72,183,123,150, 18,218,100,108,173,209, 57,211,135,132, 77, 50, 61,176, 77, + 77, 74,134,169,151,196,106,165, 45, 49, 88,114,233, 62,135,228,113,174, 46, 85,171,128, 70, 38, 22, 51,223,211,167, 64,239, 3, +170,239,112,198,209, 25,241, 92,155,162,236,236,180,150,181, 70,237, 48, 73, 82,214, 1, 33, 89,169, 32,245,160,212, 75,224,116, +179,235, 48, 86,254,124, 93,105, 42,107, 4,142,169, 43,178, 9, 50,180,139,146,148, 77,202,211, 79,247,228, 64, 90, 85,232,186, +226,202,251,151,185,118,253, 58,199, 79, 63, 70,211, 44,176,123,123,143,202,120, 76,237, 48,227, 5, 90,179,128,182,134,183, 94, +251, 25, 41, 6, 22, 23, 22,120,224,161, 15,179,184,188, 66, 99, 50,123,211, 61,246,124,194,172,142,152,236,237,113,249,157, 15, +120,229,149, 31,243,214, 27, 63, 99,152, 13, 92,120,239,125, 62,242,216, 71,121,241,229, 55, 8,195, 22,207, 60,245, 17,158,250, +212,135,249,119,127,250, 45,218,186,102, 58,204, 27, 50, 3, 74,101,238,185,251, 52, 33, 91, 94,124,225,187, 28, 59,116,152,187, +239,121, 64,124, 9,198,146,213, 64,204, 30, 93, 41, 42, 47, 55,149, 62, 72,112,201,101,217,139,245, 97, 86,106,156,141,172, 30, +178,151,106,149,105, 8,106,134,141,229, 69, 26,122, 1, 43, 5, 1,217,248, 33,201,243,170,236, 87, 35,153,108, 68,191, 44,173, + 16,241,106,231, 36, 64, 30,173,101, 69,150,138,169, 81,114, 24, 65,160, 34, 74,198,174, 41, 10, 93,204, 40, 69,242,145,118,180, +128,107,218, 50,129,147,113,114,140, 17,171, 13,174,178,165,238, 84,158, 31, 74,234,110,125, 24, 32, 12, 98,214,117, 2, 34,234, +102,251,236, 13,189,160,102, 11,125, 76,151,253,252,214,100,198,194,100, 31,172,166,113, 53, 67, 47,129, 88,103, 44,129, 3, 52, + 8, 57,107, 84,249,179, 84,128,172,101, 90,165,138, 60, 43, 35,181, 51,225,141,103, 84,214,178,187, 46,116, 76, 95,198,248,185, +224,154,201, 25,147,140,172, 18,181,102, 72, 65,212,202, 90,145,163, 48,241,149, 22,151,132, 46,194,174,148, 50,131, 14, 7,149, +172,148,138,172, 42, 73,200,111, 30,212,149, 91,107,121,105,106,197, 48, 8,179, 93,101, 69,240,146,153, 80, 5,137,106,140, 92, +235, 83,200, 5,227, 45,183,107, 14, 68, 48, 97, 94,186, 66,155,249, 36, 83,203,193,165,136,200, 72,114,187,206, 7,196, 78,196, + 88,151,131, 48, 75, 10,206, 54, 43,141,214,197, 41,167,231,212, 66, 69,246,197, 43, 80,116,217,206,200,164,200,163,165,169,161, +178,144, 77,209, 37,240,108,202, 42,180,176, 90, 40,218,238,210, 46, 80, 73,194,108,150, 68,151, 18,149,147,164,127,204,241, 14, +162,156, 44,136,215,232, 81,161,116,225,115, 89, 71, 43, 57, 88,104, 85, 8,168,101,117, 45, 12,123,141,213, 6,147, 35, 62,114, +135, 92,167,228,240, 99,125,223,163,114, 44, 32,156, 40, 55, 48, 93,201,126,220, 8,194, 81, 41, 57,137, 68, 82, 49,239, 20,170, +154,118,120,147,233, 20, 34, 49,201, 10, 93, 60,193,209,104,185, 13,163, 36,140,161,148,236,237,109,141,113, 70, 94,250, 5,184, +175, 24, 24, 6,185, 57, 65, 38,100, 33,225,232, 74,118,193, 10, 35,100,161, 40,117, 20,227, 52,181,129, 48,100,188, 15,162, 61, + 12,130,200, 11, 4, 72,150,136,224, 15, 13, 1,149, 29, 89, 69,166,179,142, 61,235,168, 91,141, 65,164, 47, 46,103, 73, 60,107, + 57,249,170,172,152, 13, 1,111,107,156,203, 40, 42,218, 70,118,169, 81,201, 38,196, 26,176,214,144,166, 61,183,247,118, 64, 25, +156,210, 12,169,194, 25, 75,101, 53,169,239,152, 70,193, 33,206,166, 72,119, 57, 6,250,126,134,199, 48,100, 9,145,229, 24, 8, +123, 19, 66, 86, 24,107, 48, 70,246,124,139,109, 77,213, 84, 56,171, 14,254,126, 58, 57,178,201,164,228,208,206, 98, 22,199,228, +152,177,206,226, 44, 7,118, 36,171, 52, 67, 55,197,251,129, 62, 36,246, 59, 79, 55,243,101,244,169,240, 67,199,246,230, 30, 49, +120,105, 7,164,132,182,182, 96, 88,101,239,229,140, 19,189,171, 53,168, 88,224, 63,165,179,174,180,212, 64,106, 37,201,246, 46, +200, 7, 62, 13,101,167,103,133,251,188,183, 43, 4, 44,107, 29, 10,131, 30, 12,149, 21, 44,112,214, 10,227,180, 4, 36, 83, 66, + 59, 67, 78, 96,173,184,176,251,217,128,214,208,251,140, 11,226,187,175,219, 90,254,251,131,132,121,116,101,168,202,216,139, 82, +151,169,131, 28,212,230,225,185,218, 54, 50, 34, 76,153,156, 60, 58, 5,198,166,150, 17,156, 81, 40,151, 24,188,156,132,137,208, +117, 3,179,105,143,247, 34,195,152,139,105, 80, 37,148,153, 18, 51,100, 31,107,116,241, 32,151, 22,134,177, 61,182,115, 12, 86, + 86, 33,202, 73, 26,185,210, 22,141, 56,166,157, 53, 36, 21,169, 76, 81,201, 70,216,153,193,108, 95, 86, 3, 67, 24,232,166, 83, +134,224, 25,215, 13,139,109,205,246,116, 66,109, 23,216,219,159,176,188,190,206,120,188,200, 93,199, 45, 97,128,237,110, 87, 60, + 4,170, 34,231, 26,147, 18,219,211, 45, 6, 15, 33,121,114, 14,140,155,154,241,234, 58,110,121,141, 35,199, 79,112,216, 39,174, +223,188,142, 73, 29,111, 95,127,133, 31,189,252, 67,222,122,227, 39,132, 24, 56,121,236, 52, 57,181,140, 71,135,168, 43, 67,223, +237,241,242,171, 23,120,248,236,125, 44, 47, 54, 44,182,153,163,203, 75,224, 3,221, 16,232,178, 97,117,101,157,127,252,193,143, +168,109,230,222,143,125,148, 33,104, 82,246,100, 15,202,120,129,117,100, 77,202, 3,170, 77,152,153, 28,242,117,209, 84,106,171, +136,157,199,106, 75,118,146, 8, 78,125,128, 90,223, 49, 66, 26,228, 57, 82, 58,193,115,127, 4,133, 35,145,148,112, 45, 84,202, +101, 90, 85, 52,151,193,139, 73, 78,219, 66, 16,211,228, 28,228,176, 20, 13, 38, 43,178, 81,133, 17,144, 15, 62, 71, 90, 27,169, +105,229,204,120,188,200,222,206,150, 28, 60, 99,144, 16,171,149, 21,202, 92,187,153,116, 66,103, 93, 46,125,138, 20, 6, 98,138, + 56, 39,207,210, 46,244,248,190, 63, 72,112, 11, 44, 75,118,183, 27,187, 19,150,119, 59,106,140,152, 4,179,244,171,125, 12, 40, + 39,163,213, 92, 52,161,181, 50,248,249, 68, 66, 33,150,200,130, 97,197,231,131, 86, 76, 72, 17,165,101, 26, 71, 1,201,200, 20, +209, 73, 86, 39,201,152, 56, 70,153, 50,200, 74, 38, 74,214,200, 64, 82, 81,194,113, 65,110,209,185,200,199,115,154,251,222,231, +144, 42,185,165,235,164,203,116, 42,150,186, 45, 63,167, 49, 53,100, 60, 54,149, 26,174,214,197,161, 62, 55,230, 69, 97,102, 88, + 57, 52,196,178, 51, 55,133, 18, 25, 75,248, 87, 75, 20, 92, 86, 4, 41,161,181,147,188,143, 49, 66,247, 83,194,135, 32, 75,104, +151, 60, 39,229,204,155, 9, 90,170,213, 57,201,237,183,212,240, 76,116,133,133, 96, 14,110,217, 49, 69, 97, 24, 32, 18, 22, 98, + 62,104, 79,145, 51, 22, 33,109,162, 51, 41,150,122, 97, 73,215, 43, 10,213, 83,101,161,108,234, 50, 37, 17, 50, 70,185,152,201, + 74, 36,104,185, 93, 23,235,107, 89, 49, 73,190,193, 18,101, 69,233, 52, 41,202,133, 43,246, 30,147,100, 82,148,202,219, 51,229, + 80,234,152,178,144, 80,167,238,249,112, 54, 90, 78, 80,226,184, 77, 7,200,185, 92,250,122, 74,105, 41,214,151, 19, 32,197,206, + 38,136,198, 59, 21, 15,173, 12,218, 89,225,198,103,197,250,250, 58, 31,125,244,163, 60,244,192, 89,142, 28, 62, 84, 66, 87, 20, + 67, 80,102, 50,157,114,233,226, 21, 94,127,253,103,188,245,206,121,116,148, 93,204, 16, 11,242, 83,137,140, 67,200,197,130,157, +149,138,148, 35,167,142, 97, 54, 72, 53, 66, 25, 98, 12,101, 20,147,231, 87,126,140, 21, 25,137,213,242, 80, 79, 7,169,120, 97, +175,203,254, 89, 17,181,193,150, 9,130,176,194, 7,148,169,168,140,128,100, 76, 86, 24,155, 24,114,194,152, 26, 83, 25,170,218, +146,125,192, 26, 73,161,103,157, 8, 24,156,177,180,149, 33,244, 61, 3, 18, 0,145, 52,106, 58, 56,121,186,148,233,147,244,224, +173, 49,164,126,160,239,123, 33,178,145, 25,124,162, 15, 9, 99, 52,181,171,203,111, 58, 10,248, 6,133,171, 29, 99,215,148,118, +128,162, 29, 9, 91, 61, 19,169,170, 22,165, 51, 67, 63,224,208,104, 35, 34,139,105, 63, 16,122,143, 31, 60,218, 58,122, 63,197, +119,145,206, 7,102,179, 25,147,253,125,209, 42,102, 43,137, 80,171,203,110, 76,203,184, 41, 38,140,213,165,198, 17,240, 65, 81, + 85,182, 36, 90, 51,181,181, 56,163,101,231,229, 12,181,214, 36, 95,220,194,218, 20,130, 82, 65, 8,147, 11,204, 72, 10, 7,206, +218,114, 29, 17,153, 66,109,229,159,119, 8,178,206,177,133, 34,152,172, 34,118, 2,148, 73, 70,246,122, 37, 54, 88,152,236, 50, +209,169, 52,130, 20,206,114, 83, 10, 49, 8, 86,179,232,114, 99, 49,180,149,245, 23,120, 45,147,162, 66,236,154, 77,103,116, 19, +143,143,153,193,123, 98,105, 84,196, 32,137,226,172,101,119,167,149, 34, 27,169,103,234, 36,233,219,108, 68,197,106,140,162,209, + 26,109, 13,206, 84, 18, 14,210,138,202, 57,154,186, 33,196,158,217,172,103,103,127,198,100, 50,195,144,168,202, 21,195, 20,192, +201,225,229,241, 1,125, 42,250,196, 80, 84,188, 90, 41,108,211,112,232,240, 9,148,111,233, 98,192, 15,189, 96, 38, 81, 12, 97, +202,224, 21, 62,244,204,166,123,132,105,143, 87, 50, 73,168,154, 49, 77, 61, 34,171, 76,173, 45,157,223,230,234,213,107,104,173, +233,246,119,120,248,227,143,177,176,176, 66,220,189, 69, 55,219, 98, 50,237, 24, 66, 64,145,104,156, 84, 94,109, 85,113, 98,109, +140,211,138,189,125,185,197, 93,186,181,201,209, 67,135,136,213,152, 65,141,104,236,136, 16, 61,202, 89, 65, 27,167, 40,160, 12, +227,201,185, 38, 40, 80,193,203,109, 62, 75, 24,201, 84, 18,190,212, 5,243,156,229,217, 79,236, 61, 73,151,151,110, 8, 68, 45, + 1, 40, 91, 18,218, 33, 4,162, 10, 56,167,165,171,156, 33,101, 77,204, 65,218, 28,242, 67, 20, 29,174,149, 81,242,188,194,104, +100,172,136, 85,154, 16,134, 82,195, 50, 37,116, 20,176, 90,113,123,111,194,181,247,223, 41,191, 23,249,110,160,140, 40,171, 53, + 88,227, 14,118,186, 26, 25,161,135,144, 80, 57, 50, 90,104,153,204,122,182, 54,183, 74,160, 86, 62,191,149,115,160, 52, 85, 61, +194,217,192,177, 99, 71,169,236, 10, 62, 37, 66, 30, 14, 30,252,115,215, 10,115,169, 73,169, 94,205, 79, 19,166, 36,193, 67,148, +239, 66,138, 82,221, 21,135, 3, 69, 48, 34,104,100,165, 50,217,184, 34, 54,146,207,115,244,169,104,115,101,255,174,178,176,199, + 67, 44,224, 35,209, 51, 21, 52,172, 76,104, 85, 78,229,239, 36,135, 94,241,182, 43,230,229,240,172,228,103,175, 74,221,139, 40, +149, 65,135,172, 61, 83, 97,158,228,226, 56, 80, 37, 50, 96,230,117,179, 44, 50,169, 68, 98,174,146,154,175, 39,141,150, 44, 79, + 98,110,191, 44,225,179,108, 11,190, 90, 66,127, 42, 7, 57, 12,228,140, 53,142,156,230,141, 34,133, 41,211, 12, 95,198,251,146, +155, 18,219,165,209, 5,108,149,181,100,110,178,164,241,253, 32, 8, 96, 37,243,121,169, 5,102, 11, 58,150,138,224, 29,168,135, +153, 35, 75,165, 1, 92,158,234,101, 13, 81, 66,241, 62,201, 74, 40, 5,233,207,199, 82,169,212, 90,214,120, 42,103, 42,147, 10, + 92,205,130, 21,183,135, 31, 4,227,155,202,164, 67,154,136, 34, 88, 55,218, 18, 82, 70,157,188,235,129,172,202, 62, 92, 30,184, + 82, 87, 72,209, 31,148,238,181,154, 83,126,228,131, 75, 9, 56, 25, 93, 48,121, 90, 42,113, 41, 68, 76, 45,251,224,143,127,236, +227,124,249, 75,191,200,161, 67,135,121,253,141,243, 92,186,124,137,141, 91, 55,217,221,157, 82, 85, 21,135,143, 30,226,204,233, +211, 60,244,208,131,180, 77,205,143,126,252, 18,207, 63,255, 34,123,187,251,114, 19,214,170,240,201, 35, 67, 63,224,189, 40, 19, + 5,207,104, 48, 6,252,180, 35,168,140,210, 66, 82,211,161, 36, 58,181,220,168,141, 81, 40,211,128,145, 52,178,206, 65,170, 26, +165,223,167, 11,112,102, 8,101,210, 16,197,126, 35, 82,178, 40,112, 26,101, 80, 73, 30, 6,186, 16,130, 20, 86,198, 67, 38, 83, + 25, 49,184,161, 83, 57,169, 90,218,166,130, 20,232,252, 64, 42,190, 93, 97,245, 88, 49, 63, 41, 65,205,186, 81, 77, 21,133,127, +172,221,220, 42, 23,153, 13, 1,147, 29,117, 45,159,134, 33, 39, 20, 3, 49, 43,186,169, 39, 27,249, 38,132, 32,187,118,171, 10, + 39,222, 21, 76, 97,202, 4, 20, 78,215, 7,245, 14,107, 53,214, 36,134,137,208,182, 34,153, 62, 38, 92,150,147,113,232,123,118, + 39, 61,211,153,168, 47,109,211,144,162,167,155,204, 8, 49,201, 3, 50,202, 67, 88, 35,253, 78, 31,188,104, 40,173,208,143,180, +134, 33, 8,155,223, 22, 32,142, 66,128, 34, 86, 43, 76, 18, 10,151,177,229,103,140, 84,213, 84, 86,132,129, 98, 23,211, 84,149, +147,244,106,169,170,152,242, 1, 54,186,149, 73, 66, 78, 12,190,199, 24, 35, 99,167, 36, 95,240, 65, 71,156, 21, 97,133,182,138, +186,106,193,102, 44,208, 58, 71, 46,220,130,206,223, 1, 27, 73, 71,182,220,144, 74, 30, 34,165,128,137, 48, 16,136, 62, 18,134, +129,105,231,241, 83, 47,161, 25,114,169,166, 72,130, 53,204,111, 4,148,250, 98,121, 40, 10,111, 62,203,193, 74,101,153,230,100, + 69, 55,155,146,135,158,170,178,184,202,208,214,142,165,165, 17, 75,227,154,145, 19,170,223,168,182,124,232,244, 73, 94,121,239, + 22,227,202, 72, 16,174, 18,233,199,254, 48, 33, 37,203, 82, 51,130,148,209,166, 97,175,243, 92,219,218,197, 71, 47, 43,173,126, +198,180,155, 48, 12,129, 97, 24,132, 37,173, 10,133, 12,161,242,229,172,104,234,138, 67, 71,214, 89, 94, 24, 99,117,162,169,107, +198,173,102, 58,141,212, 77, 77,223,117,244, 67, 79,229, 12, 93, 31, 88, 28,213, 50, 61,114,150,165,229, 6, 19, 51,157, 79,132, + 33,176,223, 71, 90,171, 88,104, 90,250,106,137,168, 23,240, 64, 55,120,178, 87, 24,203,129,144, 72, 35, 21, 69,163,156,224,126, +149, 70,231, 72,152, 91, 4, 17,132,105, 74, 74,116,155,128, 79,153,232,131, 4, 60,139,211,115,136, 2,109,202, 58, 80,169,242, + 50,143, 81,254,140, 18,238,138,177,112,200,131,172,228, 84,249, 46,162,147,216,248, 10, 56, 4, 21,201,126, 78,160, 19,232, 74, +109, 97,115,107,143, 43,239,191, 71, 91, 85,160,165, 50, 84, 54,199,133,185, 96,133, 52, 39, 87, 58,124, 20,180,118,219,140,232, +188,231,246,246, 22,209,135,131, 3,176, 49, 90,160, 72, 10,140,169, 73, 49,112,248,240, 42, 75,171, 71, 81,200,120, 63,165,132, +113,146, 7, 24,202,196, 64, 37,129, 70,101, 93,216,234,166,132,247, 68, 66, 46,122,224, 84,224, 96, 6,114, 18,165,172,182, 98, +168,204,243,155,181, 96,245,200,161, 28,121,138,241, 50,147, 80,214, 22,217, 87, 16, 5,119, 44, 90,219, 52,223,111,103, 14, 98, +220,229,223, 66,246,196, 36,107, 78,149, 98,161,172,201, 63,131, 51,134,140,200,119,180, 41,191,183,249,174,188,220,228,173, 17, +113,146,211, 2,255, 81,102,126,187, 46, 41,115, 69, 49,202, 21,186, 94, 81,129,103, 85,100,237, 86, 36, 45, 34,248, 74,194,225, + 64,250,237,218,164,242, 62, 83, 5,196, 35,221,246, 84,246,230,243,231, 50, 81,126,102, 33,153, 66,102, 51,165, 94, 29, 73, 74, + 17,186, 68,206, 3, 90, 9, 94,155, 57, 37, 87,240,129,114, 72, 41,173, 2, 61,151,120,205,139,109, 86,201, 51, 53, 9,139, 32, +102,201, 62, 97, 51,209, 75, 93,206, 40,153, 80,162, 82, 33,212, 41, 26, 43, 23, 88, 77, 81,107,207,233,135, 8, 32,141, 98, 54, + 85,165,245,164, 83,194, 39,241,203, 75, 9,223,232,162, 18, 45,225, 8,165, 15, 82,137, 20, 82,153,153,135,161,226,124,230, 89, + 70, 67, 81, 18,177,214,201, 56,235,241,207,126,154, 95,249,213, 95, 97,115,115,147, 63,255,139,191, 32,122, 56,121,234, 56,107, +203,203, 92,185,122,141, 55,222,124,147,119,223, 57,207,139, 25, 14, 29, 94,229,115,159,253, 12, 79,124,230, 73,214, 86,143,240, +141,191,248,255,216,223,217,198, 88,176,166,132, 73,172,197,202, 16, 94,106, 62, 67, 95,146,220,131,124,136,245, 64,202,154,202, + 84, 24,103, 49,202,224,180,212,241, 72, 51, 82, 7, 89, 89,172,158,187,219, 11, 72,167,132,153, 20,138,232,229, 38,236,140,189, +131,116,213, 8,160, 6, 73,139,146, 10, 34, 81,107,218,170,198,167,129, 62,123,108,146, 73,135, 16,220, 50, 81,121, 65, 31, 26, +112,214,200, 8, 76, 91,154, 74,161,130,103,210, 5, 9,207,117,157,236,164, 34, 5,156, 34,230, 49, 87, 59, 82,147,233,186,112, +128,237,117,198,202,237,160,146, 17,188, 49, 14,211,119, 66,112,211,224,149,199, 69, 67, 8,224,115,162,178,114,219, 51, 70,110, +213, 74,183,120, 99,160, 50, 44, 54,224,103, 51,226, 60,249,237,160,173,199, 44, 46,180,248,126,160, 31, 98, 57, 52, 88,186,198, +225,131,199,135, 72,223,121,200,138, 33, 12, 36,148,116,193,231, 35,176, 44,107, 26,135,104, 31,149,146,154, 93, 78, 50, 66,236, +162,220,250,181,202, 40, 91, 38, 28,133,216,104,172,193,186,132,117,181,124,201,172,194, 79, 7,145,202,168,140, 79, 2,126, 80, + 54, 98, 93, 57,169,199,132, 45,211, 1,231, 28, 57,103, 90, 93,161,237, 29,239,192,108, 38,193, 28,149, 34, 83,229, 49, 90, 30, +144, 49,105, 90, 43,216,218,172,101,236, 88,238, 26,232,108, 32,104,162, 17,129, 71,165, 28,102, 92, 51,238, 21,106, 61, 19,189, +103,240,129, 62,118,194,188,239, 99, 9, 17,229,242,178,146, 53,133, 81, 98, 76,182, 72,120, 72,231, 72,240,112,247,241,150,183, + 47,111,163,107,203,225,245, 21,106, 39, 7,190,195,171, 43,220,115,247, 49, 78,174, 45,176,208,182,184,102,129,151,127,250, 6, + 23, 46, 94, 99,177,109, 24,141, 26,249,140, 40,208,118,129,233,206, 14,181, 50, 44,141, 26, 86, 23, 42, 78, 31, 25, 97,252, 77, +222,184,240, 62, 33,128,118,230,192, 43,237,172, 41,196, 69, 65, 2,163, 85,193,106,106,142,172,173,202,195, 44,244,140,151, 87, +176,214,224,127, 78, 59,186, 48,110,164, 14, 56, 4,201,101,168,192,125,247,172,176,113,123,194,168, 90, 98, 92, 85,188,252,179, + 75, 44, 46,215,228,168,240, 68,246,125,132,176, 67, 59, 18,162,159,169, 44, 62,105,166,161,147, 73, 96, 50,101, 18, 54, 20,185, + 83, 42, 72,102,249, 94,154,172, 65,107, 98,232, 25, 84, 38,249,132,201, 18, 10,205, 81, 17, 98,135, 83,134,202, 90,124,236, 37, +223,145, 21,125,169,177,165, 20,202, 78, 85, 40,109, 66, 12,205,104,157, 49,182, 46,253,230,132, 73,154,172,163,220, 80,131,212, + 57,197,205,208,151, 73,142, 33, 68,197,164,155,145,130, 39,219,106,222, 90, 58,168, 47,153,194,153, 8,201,227,172,147,236, 77, +142, 44,180, 99,250,108,217,218,221, 32, 12,125,161,127,113,160, 34, 37, 69, 76,237,228,230,167,146, 76, 49, 75,218, 92,106,182, + 78,216,226, 70, 97,147,198, 15, 67, 65, 34, 91, 44,137,161, 68,173,229,210,144,101, 76, 31, 44,170,188, 96,148, 86,248,156,177, + 42,151,233, 65, 46, 16, 40, 89, 79,164, 88,186,252, 6,162, 47, 92,123, 20,106,144,169,162,209, 5,196,163,132, 28,153,148, 28, + 88,137,165,163, 93,214,167,145, 84, 14, 12,146,178,215, 7, 13,115,193, 78, 11,184, 38,150,116,182,172, 9, 84,177,165,165, 98, + 53,155,203,175, 40, 92,145, 88, 82,243,166,164,238, 77,193,243, 38,188,188,111, 8,133, 23, 96, 73, 41, 98, 98, 40, 42,218, 18, + 88,211,229,246,122,231,105, 47,142,241,178, 66,240, 73, 86, 97,104,205,224, 51,141,146,208, 94, 78,136, 88, 43,139, 75, 89,229, +178,167,142,233, 96, 53, 93,208,163,197,162, 46, 41,122, 29, 53,186,214,210, 90, 72,114,179, 79, 74,203,106, 41,102, 84,144,198, +148, 50,148,204,129,164,220,109, 9,241,166, 36,147,224, 92,246, 22, 57, 27,105,131, 28,216, 83,133,149,146,180,252,204,138, 48, +179, 76, 11,203, 36, 36, 75, 58, 63, 43, 48, 11, 75, 43,191,151, 83, 20,180, 94,150,147,155,184, 97, 57,248,129,100,197,193,252, + 94, 86, 22, 69, 87, 88, 94,252, 90,205,201, 63,154, 71, 31,125,148, 95,255,245,127,198,219,239,188,205,159,254,233, 55,248,240, +125,247,243,204, 51, 79,115,239,125,247,114,250,228, 41, 30,126,232, 44,143,158,251, 24,227,209,152,235,215,111,178,189,181,197, +123, 23,222,225,230,198, 6,159,124,244, 28,199,143,202,205,190,235, 3,174, 88,180, 66,233,203,235,100, 14, 24,189,243,148,106, + 22, 58,137,132, 26, 98,225,181,199,132,159,159, 68,179,220,188, 82, 12,114,179, 45, 95,156, 3,173,105,206,196, 16,136,126, 14, +168, 81,104, 99, 49,117, 35, 53,175, 44, 15,166,202, 57,234, 74,106, 14,198, 25,177, 27, 37,168,173, 43, 61, 73,192, 24,176, 22, +173,107, 9, 59, 25,139,209,149,252, 45,149,198,154, 26,172, 17,126,190, 22,127,185,116,252, 35, 42,101,169,255, 37, 69, 93, 91, +134, 97, 38,148,161,212, 17, 82, 47, 29,251, 16, 36,148, 99, 12,149, 22,147, 87, 93, 89, 28, 2,126,112, 73,166, 15,209,168,146, + 47,240,164,144,152,120, 79, 55, 36,134,190, 39, 36, 67, 72, 26,159,197,193,155,148,197,105, 67,221,180,152,106,204,210,202, 33, + 70,227, 49,245,184, 97,101,237, 16,227,145,101,105,117,204,241, 67,171, 28, 95, 93,228,196,145,117,214,215,151, 89,108, 43, 86, + 86, 71,172, 46,181,162, 48,212, 10,109, 29, 75,109,131,179, 26,103, 28,174,109,104, 70, 53,181,171,229,239,105, 13, 57,120,148, +150,186, 95,240, 18, 70, 11,243,105,129,143,178,247,202, 10, 83,183,152,166, 18,205,235, 98,203,184,169,104, 90,199,210, 72,108, +115,109,101,209, 41, 22, 24, 70, 38,198,129, 48, 4,122, 95,234, 52,115,191, 60,185,124, 49, 51, 93,239,165, 46,151, 50, 41, 27, +134, 40, 55,128,232, 33, 69, 69,215, 69, 6, 47, 55,173,148, 33, 68,232,123, 17, 72,100,101,208, 86,164, 67, 85, 93, 81,143, 90, +198,227, 49,139,227,154,133, 81,197, 66, 85, 51, 26, 53, 88,107, 74, 74, 90, 29,176,173, 18, 20, 18, 94,230,238, 83, 71,216,184, +189, 67, 70,177,178,188,128,173, 29, 22, 69,219,200,255, 95,213, 52, 12,192,222,254,192,203,175, 95,224,198,230,109, 98,206,116, + 67,199,108, 50,101,119,119, 66, 63, 4, 78,173,183, 44,181, 21,171,203, 35, 48,137, 58,121,158,253,103, 79,114,108,161,229,253, + 43, 87,153,206,194,193,193, 84,169, 59, 42,227,249,120,127,238, 50,104,154, 10,133, 98,119, 50,197,135, 64,101, 32, 13, 1, 83, + 60, 12,174,110, 25,213, 22,165, 52,171,227, 26, 93, 89,110, 79, 19,179,153, 98, 99,107,143,143,127,228, 44, 23, 46,127,192,198, +230,109,148, 85, 12,222,176,187, 59,195,152,204,153, 19,107,220,184,117,155,181,133, 17,173, 22, 56, 80, 95, 50, 48,170,146, 49, +119,138, 66,134, 83, 81, 73, 31, 59, 38,140,118,132, 48,208,199, 65,210,230, 49, 65, 33,154, 89, 7,163, 74,163,157,194, 85, 6, +173, 34,161,247,178,166, 11,129, 16,101,151, 29,131, 4,230,196, 57,165, 15,164, 27, 25,249,140,205, 57, 15,177, 76,239,180, 50, +228, 44,105,221,164,196,252,101,140, 1,101,184,181,181,193,116,111, 87,198,183, 70,166, 47,174,244,144, 83, 33,208,201, 86, 82, +122,225,198,138,153,112,107,247, 54,195,116,239,128,136,152,231,205, 25, 35, 55,210,156,139,191, 92, 69,150,150,214,202,127,166, + 14,188, 11, 82,111, 66,110,145, 63,183,167, 37, 75,117, 88,194,133, 37, 37, 62,175, 86, 41, 65, 0,231, 12, 26,135,113,133,155, +159,230, 91,136,242,226, 40,161, 63,144, 81,111,201,211, 30, 88, 11, 77, 33, 79,230, 82,227, 19,152,203, 29,191,135, 66,224, 59, +114, 65,138, 16,231,100,208,132, 47,189, 49,101,138,247,157, 32,170, 80,165,202,129,104,206,132,147,201,162, 0,172,132, 37, 47, + 53, 26, 93,222, 60,130, 2, 86, 7,125,177,124,112,153, 60,192,168,166,132,202,194, 95,151,247,182, 57, 32,142,170,172, 80,201, +148,149,133, 47,124,244, 2,147, 65,163,147, 16, 51,147,146, 12, 67, 60, 16,190, 68, 34, 2,235, 81,101,250,150, 74, 82, 47,151, +213, 46,133,106,169,138,219, 62,151,199,191, 81,166,116,131, 36, 4, 72,177,158,166, 40, 47,123,165, 75,184,182, 48, 1,114,201, + 13,164, 92,248,238, 73,160, 96, 81, 2, 97, 2,109, 2, 1,210,168, 68, 30,130, 60, 87,116, 1,240,100,176, 37,116, 23,230,217, +129,241,226,194,239,145,162,160, 2, 83,193,251,165, 64,140,254, 64,112, 64, 20, 74, 81, 76, 30,162, 23,106, 91,144,219,166,214, +153,224, 61, 49,101,142, 30, 61,204,111,125,253, 89,182,182,182,248,163, 63,248, 15,220,218,216, 98,214,247,244,222,163,178,162, + 27, 6,246,167, 83, 20,176,182,190,134, 70,177,185,117,155,166,105,217,217,217, 99, 58,157,242,232,185,115,164,228,121,239,226, +213, 98, 82,155,255, 50,106,217,191, 25, 25,105, 12, 65,164,245,198, 57, 22,199, 11,140, 70, 13,149, 86,248,190, 47,185, 0, 67, +211, 44,210, 54,181,156, 58,189,103, 54,244,248,168, 14,126, 33,115,174,119, 44, 39, 48,231,172,220, 90,162,236,239,134,206, 51, +164, 92,194, 21,162,147, 37,139,100, 64, 27, 69,211,180,140, 23, 91,249,128,197,140, 54,242, 33,148,106, 66,100,232,197, 18, 22, + 11, 9, 67, 69,129,246,184,186, 18,162,153,151, 81,119, 54,154,186, 54, 84, 70,132, 48,182, 50,152,100, 73,198, 50, 94, 94, 16, +118,115, 24,202,190,106, 94, 95,137,136, 69, 69, 30, 42,210,217,151, 79,150, 66,146,153,206, 56,108,214,130, 56,240,129, 20,122, +250,193,227,103, 61, 42,123, 73,204,247, 3,179,161,151, 19,100,136, 76,186, 14,159, 6,124,223,227,125,160,243, 61, 33, 43,250, + 62, 51,132, 68, 80,146, 45, 8, 70,225,218, 5, 22, 23,199,180,117, 75,211,150, 17,115, 93, 97,180,193, 71,208,141,147, 1,188, + 54, 24, 91,161,181,165,109, 90, 92, 59,166,109, 90,150, 22, 23,169,235,154,202,136, 47,188,178, 78, 30,220, 42, 75,245, 76,152, +150,178,251,139,242,229,239,135, 72, 54, 14,235, 90,154,166, 97,180, 48,194,141, 44,117,221,210,214,142,218, 8, 82,210,100,138, + 81, 78,152,220,253, 32, 94, 1,109, 52, 49, 23,134, 8, 98,188,154,247,101, 93, 86,130, 40, 46,246, 39, 65,142, 6, 98,144,207, + 73,142, 17, 31, 12, 67,242,196,160, 36,173,158, 69,181,106,170,154,166, 25, 83, 53,142,229, 81,203,104, 84,211,182, 35,154,170, +146,234,147,209,184,214,240,246,133,247,217,222,217,165,174, 29, 75,227, 17,163,186, 98, 8,137,219,187, 51,182,119,247,120,251, +221, 75,124,112,229, 58,141,137,188,121,233, 58, 41, 6,234, 74, 58,200,146,154, 72,184,198,112,246,236,221,172,212, 45, 89,105, +172,242,124,234,147, 31,230,233,223,254,117, 62,114,255,105, 78,173, 85, 92,189,116,149,173,221, 41,214,136, 34, 55,151,102, 75, + 76, 25, 93, 57, 82,130,181,213, 37, 14,175, 47,179,189,179, 79, 12,129,126, 54,165,110, 44,109,221,176,188, 56, 66, 27, 77, 61, +178,172, 47, 45,178,184,188, 70,213,214, 76,102, 19,124,159,113,214,178,189,189,203, 75,175, 93,161,247, 3,147,201,148, 48, 4, +102, 67,207,108, 54, 97,117,113,153,207, 60,254, 24,221,208,113,107,107,143,147, 39, 86, 56,125,236, 8,154,196,126,223, 73, 40, + 40, 36,116,146,234, 98, 46, 53, 72,180, 34, 32, 15,184,156, 34, 38, 40,113, 49,100, 79, 38,210,182,142,202,214,133, 53, 94,196, + 59, 65, 38, 9,170, 4,109, 7,239,201, 49,224,163, 84,145, 66, 8, 7, 82, 17, 93, 0, 40, 42, 11,220, 67,105, 77, 72,153,253, +174, 99,107,103,151,219, 91,219,108,111,111,179,177,113,139,221,157, 93,246,103,251,236,237,238, 16,135,161,220, 26, 13, 42,137, + 75,251, 14, 33, 12, 12, 66, 86,140, 57,209,245,129,221,221, 45,102,221,190, 4, 75, 85,233,215,151,216,149, 4,228, 18,141, 51, +172,142, 45, 39, 15,173,176,184,180, 34, 47,217, 44,211,200, 48, 79,170, 23, 41,137, 82,114, 24,144,247, 88,148,219,157, 46, 30, +239, 80, 66, 97,141, 8,163, 68,123, 42,223,199, 92, 60,234,170, 8, 99,180,201,197, 79, 46,231, 3,159,228, 22,153,181,220, 34, +229,138,172, 10,133,217,200,229,205, 26,161,195,202, 89,167, 28, 6, 82,177, 54,102, 14,232, 39, 37,204,167,203,116, 68, 91,203, +124,209,172,180, 60,187,230,194, 47, 89,217,106,156,214, 68,163,127,142, 34,103,138,153, 44,138,132,171, 76,186,230, 23, 72,201, +204,229,178, 11,207,168, 18,182,148, 49,178,158, 15,247, 75, 16, 79,254,188, 57, 2, 87,149,176, 47, 74, 96, 74,178,225,187,195, +245,215,165, 6,157,147, 60,239, 83, 10,165, 46, 89,242, 50,115,179,103,188,163, 17,151, 63, 77, 38,214,194, 63,146, 73, 1,166, +232,204,179, 70,151,245,111, 40, 60,123, 85,216, 41, 81,221,233,175, 23,205,144, 76, 44,202, 75,159, 34, 36,138,130,102, 16, 15, +125, 81,184,170, 34,194, 49, 89, 11,155,160,100, 12, 82, 46,226,217,131,209, 68,241,164,167,178,195,202, 37,172, 38,249,140, 40, +189, 10,109,112, 7, 2,120, 57,165, 73, 5, 39,240,248, 99,143,178,180, 48,230,143,255,253, 31,177,113,235, 26, 89, 41, 46,156, +127,131,119,206,159,199, 57,199,250,145,195,220,125,230, 46,214, 87, 86, 9, 49,178,182,186,198,147, 79, 62,193,251, 87, 63,224, +236,217, 7, 88, 93, 89, 97, 99,107,139, 19,167, 78, 51, 94,248, 41, 27, 27,155, 40, 39,164, 31,225,244,106, 81, 62, 70, 88, 92, + 90,230,248,177, 19, 28, 59,126,148, 35,135,143, 48,110, 91,134,190,227,242,229,139,236,239,239,115,242,212, 41,214, 86,143, 96, +172, 98,119,119,151,119,223,125,151,243,111,190,201,224, 59, 66,180,104,163, 9, 62,224, 42,203,195,247,223,207,241, 19,199, 88, + 90, 94, 33,248,192,173, 91, 27,188,251,238, 5,110,108,108,162,181,102, 80,114, 83,214, 70,209,182, 45,167, 78,156,226,232,137, + 99, 28, 63,114,148,241,194,136,156, 18, 91,155,183,120,235,252,121, 54,182,110, 51,110,101, 68,230, 76,192,186,138,224, 35,203, +107,235, 60,112,223, 3, 28, 62,114, 24, 83, 89,246,118,119,121,255,202, 21,222,126,247, 2,209, 75,247, 17, 45,225, 52,149, 18, +103,206,156,225,248,201,147, 44, 46, 45,225,135,129, 91,215,175,243,238,197,119,216,157, 78,169,181,165,178, 48,219,159, 48, 11, + 50,106,143, 25,116,109,177,100,234,218,138,229, 39,107,102, 38,178, 96, 22,208, 33, 49,116,158,140,166,113,142, 88,198,206,174, +181,204,162, 39, 87, 14, 61, 36,200, 61, 41, 57, 81,108, 38, 79, 91,181, 12, 65, 30,168,169,114,168,228,133,243,222, 67,238, 60, + 67,142, 24, 87,209,154,113,201, 31,100, 58, 99,176, 78, 48,146, 62, 14, 96, 44,179,201, 62,221,224, 49, 86, 75,106, 85, 65,213, +212, 84,202,208,123, 57, 84, 10,215, 67,242, 17,217, 39,170,202, 80, 57, 33,191, 25,157,139, 56, 71, 2, 77, 93,138,194, 99,239, +164, 86, 73,225,134,215,218,129, 21, 0, 82,107, 28,182, 29,177,210,214, 76,251, 41, 57,212,116, 65,110,139, 41, 8,230, 55, 6, + 67, 82,114, 66, 55,149,124,158,147, 81,168,104,201,126,192, 26, 75, 8,137,126,232,229, 6,110,122,156,202,101, 84, 40,201,110, +165,172, 16, 13, 77,164, 81,150, 74,107,140,106,233,139,180,200,234, 76,223,121,246,187,142,174,235, 25,143, 28,187,147, 25, 49, + 37,182,118,167,108,110,237,176,216, 58,198,213, 18, 57,100,158,252,236,189, 92,187,182,135, 77,138,251,143,175, 99, 43, 77,240, +153,157,253, 9,125,212,196,110,224,141,215, 46,114,246,244,113,140,129,193,123,118,102, 10,170, 49,237, 3,103,249,226, 93,199, +120,236,211, 31,227,247,254,143,127,199,119, 94,122, 15,165,157, 60, 4,147,140, 98, 27, 91,163, 42, 67, 68,179,179,215,227,195, + 64,219,212,164,160,184,181,181, 75, 61,106,105,157,163,110, 27,236,168, 38,165,140,159, 37,154, 81,195,241,181, 53,110,238, 77, + 73, 81,177,188,182,140,219,155,145,179,103, 63, 4,250, 44, 29,244, 97, 54, 99,121,105,204,108,111,224,147, 31, 57,199,123, 31, +108,240,194, 75, 63,229,137,115, 15,241,185,143, 63, 64,110, 70,252,213,223,255,128,237,217, 4, 91, 91,114, 23, 74,138,152,242, + 66,145,158,186, 82, 26,159, 35,217, 70, 98,148,149, 1, 81,209,231,128,193, 21,234, 90,198, 57,131, 13,133, 24,233, 37,116, 23, + 99, 73, 97, 71,121, 56, 83, 91, 84, 80,116, 33, 96,156, 28, 22,187, 73, 98,123,123,147,161,159,210, 77,246, 73,193,203,132, 86, +151,181,162,171,137, 3, 84,128,109, 27,185,224,200,208, 85, 12,131, 86,220, 15, 26,205, 16, 51, 62, 13, 36, 63, 16,252, 64,140, +161, 0,154, 10,185,185, 48, 38,156,209,212, 86,242, 5, 11,141,226,158, 19,135,248,240,189,119, 97, 70, 11, 76,102,137,208,239, + 11, 9,114,150,120,247,230, 46,187, 94, 2,179,206,148,135,250, 16, 36,243,225,132, 84,153, 99,193,178, 24, 75,152, 37,172,147, +181, 95, 10, 94,228, 86, 90, 92,228,130,220,149,221,172, 48, 29, 74, 98, 62, 67,204, 6, 21,179,120, 22, 48,196, 44,223,197, 20, +229,123, 17, 82, 44, 10, 81,153, 44,196,162, 71, 85,185,164,115,162, 48,198, 19,194, 47, 55, 86, 88, 36,186,184, 45,116,158,239, +191, 13, 73, 27,140,137, 88,171,201, 67,241, 33,207,211,245,169, 36,185,117, 65, 53,151,234,154,200, 50, 10,184,169,240, 57,152, +215,230,146, 8, 83,180, 54,119,214, 34, 82, 71, 32, 41, 89,101,164, 20,208,229,162,161, 84, 16,126, 70,206,114,168, 51, 6, 10, +181,109, 46,235, 9, 73,114,234, 86,187, 82,151,158,235,226, 11,156,135,121,223,188,188,124,203, 1, 71,103,153,202,233,156,133, +124,106,141,144, 82, 67, 18,163,167, 17,160, 89, 20,128,188,172,184,203,159,155,181,194,198, 34,211,153,239,235, 65,200,115, 70, + 17, 10,131,206, 22,192,153, 74,134,164, 32, 34,235,205,236,229,221, 13, 26,171,149,147, 17,101,150,211, 74,204,210,157,211,115, +147, 21,243, 29,220,252, 60,113, 39, 39,129,130,144, 85,225,248, 38, 62,249,169, 79,240,250,235,175,113,229,242,123, 88,155,133, +214,133, 66,233,200, 93,119,223,205, 39, 62,241, 41, 62,116,230, 12,171,171,171,194,173,173, 68,250,254, 7,127,252, 39,188,244, +163, 31,242,181,103,159,101,125,125,157,195,235,235,252,250,127,243, 21,190,253,237,239,114,254,173,243,229, 38, 45,128,142,156, + 37,117,253,139,191,246, 21, 62,254,145,143,210,180,117, 65,160,202, 9,240,220,163,143, 18,163, 48,179,153,167,245, 51,156,123, +244, 49,158,123,254,121,190,243,205,191,103, 8,241,128,158,116,215,233, 51,252,119,255,227,191,164,114,245, 1, 21, 9, 50, 23, +223,125,151,191,254,235,255,204,123,239, 93, 38,149, 47,186,179,134,207, 60,254,105, 62,253,201, 79,177,190,190, 62,255, 77, 31, +140,149,238,185,239,126,254,238,155,223,230,246,141,107,120, 35,196,182,201,116,224,200,225,195,124,233,151,191,194, 93,167, 79, +203, 7, 71,203,127,255, 99,231,206,241,220,247,191,195, 75,255,245,167,120, 35, 63, 99,167,107, 62,242,216, 57, 30,255,228,103, + 25,213,141,236, 99,149,140,233,223,123,239, 2,223,121,254,121,246,119,118,137, 64,213, 2,211, 40,200, 74, 66,233,236, 91, 25, + 43,169,114,218,207,137, 33, 56, 22,170,138,197, 67, 99,124,242,116, 67,164, 54, 6,167, 27,186, 32,180,173,232, 7,140,177,212, +180, 96,165,114,150,113,224,101, 39,155,140, 42,192,137,138,136,161, 93, 90,198, 12,248, 0, 0, 32, 0, 73, 68, 65, 84, 26, 99, +180,116, 56,109,156,159,160, 69,201, 57, 66, 56,248,173,150,212,105,200,158,222,247,164, 73, 36,231,129,157,189, 93,246,186,129, +228, 59,250, 33, 18,181, 18, 5,229, 48,224,227, 68, 2, 49,218, 49, 13, 3,157, 1,223,251,226, 78, 55, 52,182, 38,155,242,224, +165, 35,197,136,113, 53,227,118, 76,206,145,125,100, 31,170,251,204, 52,121, 24, 60,126, 24, 17, 21, 84, 78,179, 56,110, 88, 41, +217, 16, 89, 3, 56,217,139,170, 76, 7,168,148,152, 78,134,114,234, 29, 17,148, 39, 15, 73,168, 91, 74,129,145, 93,172, 15, 3, +179,217, 64,210, 25,167,107,146,201, 84, 73, 9,119, 89, 87,180, 78, 97, 19,152,202, 98,173,204, 4,186, 91,219,244,253, 64, 93, +181,196, 52, 97,243,246, 62,221,208,147, 99,100,241,208, 58, 43,171,135,240, 33,114,117,207,243,214,197, 15,200, 41,114,236,248, + 58, 11,173,161,159,246,156, 92, 89,230,234,237, 25, 27,219,183,240,211, 29, 86,199, 71, 57,186, 54,226,232,209,163,108, 93,251, +128,189,235,183, 88, 60,118, 6, 26,203,250,163, 79,113,234,174,239,160,126,116, 1,137, 14,202,119,116,105,105,137,163, 39,238, + 99,119,186,195,198,181,139, 4, 87,201,238,114, 8, 84,181, 35,231,200,181, 43,183,104, 85,205,201,122, 5,141,197, 39, 79, 85, +203, 33,224,246, 36,114,229,250, 13,134,153,192, 91,150, 87,198, 28, 93, 21,196,233,252,137,151,148,162,109, 27, 54, 55, 54, 49, +205, 50,203,135,143,115,227,214,247,248,243,191,251,175,156, 62,121,156,175,124,241, 41,126,237,151, 31,231,175,254,246,187,220, +218,153,202,231, 43,134,210, 32, 72, 36, 99,240, 19, 65,144,102, 44, 49,250, 50,166,150,155,176, 38, 99,113,132, 44, 1,205,152, + 37,236,166,117,194, 84,142,228,141,176, 18,178, 18,139,149,113,228, 98,240, 82, 6,226, 16,112,206,177,189,189,197,173,171,151, + 24,141, 42,172,210,180,227, 70,214, 99, 2,154, 70,107,131, 51,148,125,120, 34,132,200,116, 54,147,204,193, 1, 25, 93,232,133, +222,123, 98, 26,228,198, 89,110, 85, 90, 41, 42, 43, 87, 68, 65, 90,151,219,169, 51, 44, 47,181,160, 13,135,214, 70,220,117,114, +149,151,222,217, 68, 43,203,104,180,196,218, 66,195,189,199,199, 60,153, 19, 63,125,237, 42, 63, 57,127,157, 73, 40,185,130, 36, + 28,131,148,202,136, 91, 25,156, 43,211,198, 44, 13,146, 56,239, 63,163, 14,130,134,166,248,211,251,161,216,188,144,145,175,116, +224, 11,137,110, 16,168,141,154,103,136,148, 34,135,178, 79, 86,166,208, 28, 35,169,120, 40, 84,241,143, 39, 37,236,119,103, 85, + 9,181,221, 89, 31,228, 84, 58,212,214, 9,224,134, 36, 76,123, 31,133,246,167,212, 1, 48, 43,229,132, 50,249,206,125, 91, 94, + 62, 28, 63,126,140,135, 31,121,132,111,127,243,191,200,182, 62,235, 3,209,204, 99,159,252, 4, 58,195,203, 47,255,168,116,217, +197,206, 25, 85,148,119,154, 18,184,141,232, 74,229,192, 40,213,200, 34,108,201, 82, 55,182,149, 16,222,142, 28, 61,198, 3, 31, +126,144,231,191,243,109,146, 10, 5,127, 43,217, 42,157, 75, 56,173,180, 30,148, 50, 34, 28,251, 57,188, 56, 74, 0,103,201,203, +173, 62,166, 40, 43,146,162,174,149,232,128, 33,196, 50,117, 85,153,172,197, 90, 26,148,172, 85,178,132, 68, 36,229, 83, 66,144, +105, 94,209, 46, 93,252,121,181, 78, 21,169,140, 50,114,168,209, 57, 96, 22,151, 86,126, 79, 23, 34,147, 36, 7, 11, 23,216,200, +109,118,158,246,198, 20,144,126,161, 19,105,123,199, 96,149,139,145,231,215,190,250, 85,190,253,221,239,114,233,242, 21, 25, 1, +103, 57, 85, 61,248,240, 35,252,139,127,241,207,249,240, 3,247,179,180,184,136,117, 78, 66, 86, 70, 48,133,206, 58,158,127,238, + 57, 94,123,237,117, 70,227, 49, 43,203,203,156, 56,113,130,135, 30,124,144,253,201,148,107,215,175,201,106, 64,201, 15,175,174, + 43,126,229,151,191,204,234,202, 10, 10,184,117,235, 38, 23, 47, 94,162,174, 43, 65,167,162,216,159,236,115,225,237, 11,204,166, + 51, 22, 22,198, 84,206,114,236,232, 81, 46,188,243, 54,183,111,111, 22,152, 3, 28, 63,126,148, 71, 30,126,152,247,175, 94,227, +198,141, 91,242,226,104, 91, 86, 86,215, 88, 89, 89,225,252, 91,239,136,213, 75,101, 22,198,139,124,254,233,207,115,226,196, 9, +148,130,141,205, 77,174, 92,185,140, 86,134,182,109, 88, 89, 89,101,161, 29,241,214,249,243,236,207, 38,116,251, 29, 73,193,231, +159,250, 5,206,158,125,144, 12,108,108,220,226,242,165,247, 89, 91, 91,197, 89,203,250,242, 26,111,190,245, 6,211,217,148, 70, +193, 3, 15,220,199, 23,158,254, 37,234,170,162,235, 59, 46, 94,122,143,156, 51, 77,221,176,188,182,198,242,226,152, 55, 94,127, + 85,234,163, 57,210, 69,185, 69,215,198, 34,219,145,129, 72,164,239, 3,251,131,152,221,134,222, 51,243,162, 38,213,218,208,165, +194,117,175, 26,201, 8, 36, 37, 47,246, 12,209, 88,106,237, 80,198, 72, 37, 45,165,130,219,148, 10, 74,246, 66, 16,139, 49,210, +245, 29, 97,240, 2,140,168, 20,237,162,220, 82, 43,227,168,170,154,152,161,173, 27, 84,206, 52,245, 2,163,213, 21,150, 86, 22, + 24, 47, 46, 50,110, 42, 70,139, 35,150,154,150,197,197, 69,172,209,180,163,134, 81, 91,163,181,220,244,157, 73, 96, 13,227,182, + 41, 99,117, 79, 68,210,232,164,140,201, 2, 99,232,125, 79, 55,219,101, 50,157,209,123, 9, 99,249,156, 48, 86, 73, 42,123, 58, +101,178,191,199,100,218,177,215, 5, 38,157,103,103,210, 49,243, 50,133,242, 40,204,168, 46,208, 34,193,105,214,181, 97, 97,161, + 98, 84, 59,198, 11, 21,171,139, 99,198,139, 45,117,221, 80,143, 90, 22,155,154,118,161,166,182, 21, 85,150, 32,143, 26, 50,221, +116, 70,215,117,236,118, 83,118,247,166,226, 88,159, 78, 25,186,129, 99, 43, 21,215,111,220, 98, 99,107, 91, 38, 11, 33, 98,148, +226,232,225,195, 44,175,174,210,117, 29, 91, 59, 91, 92,184,112, 25, 29, 50,235, 43, 11,197, 13,144,233,122, 1,132,108,238,108, + 16, 73,156,185,235, 4,247,222,125,148, 15,159, 57,194,147,191,253, 63,113,232,216, 2,147,173,171, 44,159, 60, 5, 56,174,252, +211,203, 92,121,227,117, 94,121,227, 50, 62, 41, 66,150, 12,201,120,229, 48,213,104,145, 20, 35,161,155,226, 12,212,141, 21,142, +120, 74, 44,140,199,140,154,138,155,155,219,100,235, 24, 57, 71,227, 26,124,206, 92,190,124,149,237,173, 91,248,190, 39,133, 65, +180,160,193,211, 44,140,168,109, 77,215,117, 82, 71, 50,134,213,213,117,246,247,167,172,158, 94,103, 54,153,112,243,250, 13, 76, + 74,220,218,220,229,251, 63,250, 9,247,127,232, 56, 79, 62,241, 25, 46, 93,120,135,105,223, 11,234, 19,105,174,132, 97, 64,107, +193,148,134, 36, 43, 44,163,193, 33,191, 83,227,100,175,109,149, 36,172,125,136, 4,239, 15, 82,236, 98,131,147,135,167, 51,146, + 25,177, 86,170,146, 74,137,100, 3,101,216,188,121, 29, 63,204,176,214, 73,216, 82, 21, 7,134, 42, 43,153,152,100, 45, 73,129, +170,100, 9, 45,185,170, 2,101,232,135,142,217,108, 70, 63,244,164,232, 15,226,224,115, 61,166,115, 22,235, 12,149,149,132,188, + 86, 70,216, 20,104,134, 32,213,221,253,174,199, 84,142,215, 46,221,228,181,215, 47,112,253,250, 22, 23,175,220,228,221,155, 59, + 28, 59,190,194,231, 30,191,159, 15, 63,112,152,237, 91,183,185,122,115, 27,109,164, 6,171,238,224,211,133,183, 62, 23,133,100, + 97, 39,160,229,230,168,203,243,124,136,114,200,207, 72, 3, 36, 69,177,173,205,235,170, 50,250, 79,119,228, 35,165,158, 37,234, + 81,125, 96, 70,148,234, 26,152, 36, 32, 46, 93,254, 60,109, 4,226, 98,178, 34,132,132,179, 86,244,203,243,219,112, 44, 21, 60, +173,177, 74, 75, 54,168,146,137,136,160,183,193,206,241,176,133,238,168,181, 2, 13, 71, 15, 31,229,193, 71, 30,225,159, 94,249, +167,185,166, 12,107, 44, 57,101,238,185,247, 94,172,181, 92,125,255,125,121,111,233, 44,226,149, 34,145,209,229,194,167,116, 62, +112, 39,168,194,170, 55, 72,149,204,148,137,121,206,138,181,245, 35, 60,244,240, 89, 94,125,245, 85,193, 93,167, 84, 88, 21, 98, +104,204, 5,214, 83,128,246,101,213,167, 81,149, 48, 64, 52,194, 64, 17, 50,190,188,120,231,184,216,164,228,179, 97,210,157,144, +176,100,247,228, 0, 24,146,100,171, 14,138,245,200,122, 72, 23,235,220,252, 23,174,180, 24, 51, 83,150,181, 75,154,107, 93, 11, +127,223, 44, 45, 47,255,158,162,252, 82, 85,249, 77,170, 2, 17,201,243,186,157, 36,226,117,169,153,229, 66,205, 73, 37, 41, 33, +213, 65,205, 83, 79,125,142,231,190,247, 2, 59,123, 59, 7,167,211,147, 39,143,241,245,223,250, 58, 71,142, 28, 97,158,214, 81, + 90,253, 92, 46, 17,142, 29, 61,202,245,235,215,121,243,173,243,188,249,198,155,128, 98,188, 48, 38,196,196,217,179,247,115,123, +107,139,155,183, 54,228, 47,173,197,232,115,238,227, 31,101,101,117,149, 16, 34,127,251,119,127,203,183,190,249, 61, 50,138,251, +238,187, 23,173, 20,239, 93,188,196,159,125,227, 27,188,242,234, 27,220,117,215, 41, 86, 87, 87,176,214,113,243,214, 45, 46, 95, +250, 64,190,160, 40,134,233,140, 55,223,124,131,231,191,255, 2, 63,122,233, 37,250,161,227,254,123,239, 21, 84,173,173,120,231, +226, 69,182,183,119, 72, 81,234, 63, 15, 60,112, 63,135, 15, 29, 34,165,204,183,191,245,109,254,238,239,255,158, 27,215,111,114, +223,125,247, 96,173,195, 40,205,107,111,156,103,227,246,109, 82,204, 44, 46,173,242,185,167,158,100, 52, 26, 17, 66,224, 47,255, +243,223,240,147,159,188,202,217,135, 31,164,174, 27, 82,202,188,245,214, 59,236,110,239,163,141,229,220,163,143,113,252,196, 41, + 50,112,254,237, 55,249,246,183,254,129,173,173,109,238,189,239, 62,156,115,172, 44,173,242,218, 79,255, 9, 99, 18, 77, 91,211, + 86, 53,117, 85,225,170,154,166,118,212, 78, 9,130,212, 41, 90, 87,209, 44, 54,180, 54, 51,170, 43, 57,221, 38,143, 77,137,170, + 54,132, 48,160,116,192,182,142, 58,149, 79,152, 41,222,116,157,208,202,210, 52, 34,205, 25,217,134,197,102, 76,219, 90,217,131, +187,150,241, 66,205,120,228,104,156, 43,167,249,154,202,180,101,119, 89,145,117, 36,230,128,177,141,132, 18,125,199, 16,133, 54, + 87, 45,142,105,171, 5, 22, 23,151, 89, 88,108, 88, 61,188,198,202,226,152,163, 43,107, 44, 47, 45, 80, 87, 53,139,163, 5, 52, + 2,193,208,202, 98,141, 67, 59,199,168,109,105, 91,233,196,219,170, 98,220, 86,184,218,225,180,145,132,125, 1, 20,197, 32, 39, + 95,107, 44,166,146, 13,157,239, 6,186,201, 62,125, 55,195,119,158,219,187,123,236,236,236,179,125,123,151,205,219,219,108,109, +239, 49,120, 79,232, 51,189, 31,200, 88,178,114,152, 74,118,163, 90,103, 22, 70, 21,163,229,154,229,209,136,229,133, 49,213, 98, +195,209, 35,139,140,234,150,165,133,138,229,197,134,218, 88, 42, 35, 35, 74, 82,164,109, 42, 30,249,208, 25,222,185,116,149, 62, +244, 7, 22,193,227, 71,215, 89, 94, 93,161,247, 19,240, 30, 87, 57, 42,167,169, 44, 60,250,208, 9, 72, 3, 59,219, 19,118, 39, + 61,179, 24,139,255, 26,198,227,195,236,109,239,241,177, 79, 62,202,201,143,252, 26,227, 67,103,136,187,151, 24, 29, 57,204, 79, +254,246,191,240,214,171, 63,227,173, 43, 59,236, 77, 3, 67,188, 19,214,153,205,122, 70,166,163,110, 50,195,208, 11, 35, 95,160, + 19,140, 22, 86,113,182, 98, 24,122,140,181, 36, 31, 57,121,242, 40,251,222,179,113,243, 6,155, 91,155, 34, 76,177, 6,107, 36, +248,216,245,129,233,100,198,241, 19,107, 52,104, 54,111,239,179,188,186,192, 16, 2,179, 89,143,109, 91,174,223,220,226,246,230, + 53, 14, 45, 57, 30,186,255, 20,107,149, 69, 15, 59,156,251,212,199,168,150,143,241,195,127,252,199,178,159,246, 34,208,136,178, +110,209, 38, 10, 41, 44,101, 76, 22, 37,235, 48, 4,114, 20, 12,175,247,129,236, 7, 98, 26,200, 57, 98,203,174, 53, 71, 49,127, +105,163,239, 0,148,180, 60, 69,117, 1, 40, 5,159,216,218,220, 32,250, 65,122,255,198, 16,163,136,129,162, 36, 39,209, 36,154, +186, 18, 70, 66, 78,162, 25,205, 25,109,106,170,166,149,172, 79,150,131, 69,144, 84, 84,185,189,202, 96,209, 25, 93,218, 43,148, + 78,186,147,137, 67,153, 34,134,156,152, 77, 2,211,221, 41,123,123, 19,182,119, 39,120,223,179, 55,153,112,227,230, 6,175,190, +246, 46,149,201, 60,249,153,143,240,139,191,240, 81,142,172,213,188,249,238, 13,102,179, 32, 14, 5,109,100,135,139,144,202, 12, + 37, 60, 85,178,231,214,138,212, 40, 6, 33,239,197,178, 11, 87, 73,106,150,100,177,166, 45, 47,175,240,208, 67, 15,115,252,228, +113,158,249,252,231, 57,124,232, 48, 31, 92,187,202,151,190,248, 37, 62,245,233,199, 25, 6,207,141,107,215, 48, 70,115,252,232, +113,158,126,250,105, 62,253,217,207,242,224,217,179,108,108,108,176,183,179,199,189,247,220,203,202,202, 42,103, 31,121,132,103, +158,121,134,211,119,221,197,149,203,151,201, 41, 49,106,199,124,229,171,191,194, 19, 79, 60,193,194,226, 50, 71,142, 28, 97,218, +117,244, 93,199,250,234, 97,126,241, 23,127,137, 79, 62,254, 56,227,165, 69,110,221,188, 65,240, 17, 74,216, 23,165, 89, 63,116, +152,211,167, 78,177,180,176,204,211, 79, 63,205,177,163, 71,184,122,237, 42, 49,123, 78,223,117, 6,148,226,202,229, 43,140,219, + 17,143, 63,254, 4, 79, 61,253, 11,220,125,250,110,110,109,220,162,235, 58, 86, 86,151,121,232,225,143,178,178,178,194, 23,191, +248,101,238,127,224,126,110,239,108,179,189,187,139,210,153,135, 30,126,144,167,158,122,138, 7,207, 62,136, 34,179,178,178,204, +171,175,190, 66, 86,240,137, 71, 63,193,231,191,240, 5, 30,120,224, 1,186,190,103,235,246, 22, 43,171, 43,220,123,207,125,124, +250,211,159,226,227,231, 62,198,141, 15,174, 51,157, 13,210,115, 87, 10,175, 19,231,206,157,227,153,103,158,225,254,251,239,167, +235, 58,110,239,220,102,117,121,133,123, 63,244, 33, 62,245,248,227, 60,252,209, 71,248,224,131, 15, 88, 89, 90,225, 75, 95,254, + 50,231, 30,123,148, 24, 61,103,207,158,229,253,203, 87, 11,250,119,206,206,144, 9,162,178,170, 84,252,242, 65, 46, 68,149,204, +134, 41,117,213, 16, 51, 54, 99, 64,221,137,235,231,185,192, 93,186, 33, 82, 87, 40,220,217, 36,101,215, 3,112, 71, 89,182, 31, +252,107, 24, 6,186, 97,192,168,138,172, 51,117,227,248,204,103,159,224,196,241,227, 63, 55,218, 62,152,220,223,233, 58, 42, 88, + 89, 93, 69,107, 77,223, 11, 89, 11, 50,127,241,231,255,145,133,241,136, 50,179,128,108,229,164, 87,108,185,148,157, 90,215, 5, +246,246,119,249,224,234,251, 2,161,177,178, 19, 30,252,192,238,214, 22,183,183, 54,201,103,206,160, 20,226,118,142,169,156,244, + 21,147,233,148,163,238, 8, 79, 63,253, 57,214, 86,215, 88, 89, 94, 62,128,240, 40, 4,125,216, 13, 83,116,118, 69,225, 90,228, + 4, 5,152,224,123,207,214,214, 6,221,172, 99, 97,188, 40,181, 25, 34,169,235, 73,104, 26,103, 10, 70, 86,188,217,239,190,253, + 30, 49, 36,134,174,199,143, 60,147, 89,199,238,100,198,230,246, 54,237,104, 12,217, 49, 12, 3, 25,120,235,252,123,188,123,241, + 26, 91,187, 3,159,250,204, 54,135,214,215,137, 33,114,117, 99, 71, 66, 21,213, 32, 61, 85,165,193,106, 81,171, 26, 71,229, 74, +138, 86, 9, 17, 74,219, 49,182, 25,177, 98, 21, 53,153, 48, 68, 82,233,221,103,157,113,109, 45,166, 55, 27, 49,100, 98, 82,244, + 29,162, 86,213,154,168,123,252, 44, 10,220, 1, 77,109, 42,162,210, 5,120,147,208, 41, 97,131, 43, 56, 94,133,170, 4,192, 97, +146,161, 50, 25, 83, 89,130,213,204,102, 30, 87,218, 21, 58, 12,116, 94,240,176,212,154, 42, 59, 26, 91, 81,181,142,177, 89, 99, +221,101,154,228,240,211, 61,246,167,251,236,238,236,177,223, 79, 24,178, 69,107, 67,200, 30,232,208,104, 70,163,150,217,172, 39, + 55, 74,234, 39, 42, 75,101,164, 42,186, 68, 4, 78,100,170, 10,167, 2,185,105,165,210,132, 17,104,137,174,136, 81, 56,249,125, + 31,217,153,238,179,171, 38, 2, 22,113,181,132,186,170, 76, 83,143,104,149,194,182, 14, 87, 87, 88,103,169,180,165,106, 29,125, +212,168, 70,201, 33,200, 39,218,145,112,231,125,236,104,155,138,144, 35, 91, 67,150,238, 49,178,103, 60,180,186, 74,211, 86,228, + 48, 99,232,122,134, 33,177,186,180,140, 83,129,157,157, 93,110,236,122, 14, 31,185,139, 35,135, 50,215,110,110,243,254,230, 38, +169,244,221,187,201, 54, 31,108,237,240, 15,207,189,192,199,191,252,219,152,234, 40,235, 15,156,227,226, 15,191,207,183,255,234, + 63,241,242,155,215,185,178,217, 99,154,117, 76,165,209, 81,225,108, 18, 93,109,138,172,214,154, 91,131,104,124, 99,204,180,149, +101,127,214,209,119,129,198, 6,150, 22, 23,216,157,238,113,233,250, 45, 66,223, 99,109,164,109,107,210, 48,208,199, 76, 99, 12, +174, 86, 52,203,171, 76,247,122, 54, 54, 59,180,174,209, 90, 49,182, 13,202,123,246,211,192,197, 11, 31,176, 55,217, 99,182,179, +197,116, 71, 51,139,150,223,248,226, 23,104,234,158, 11,175,252,144, 99, 39,239,103,117,113,196,222,116,134, 6,130,182, 56,133, +212, 74,157, 58, 24,127, 90,237, 80,102, 96, 8,129,193, 71, 28,125,121,249, 27, 98,242,248, 88,204, 93, 73,128, 49, 81,149, 67, +171,145, 23, 57,201, 16,226, 64, 70, 51,155,205,184,250,254,101,250, 97,114, 32, 41,145,246, 76,162,174, 44, 75,163, 5,124,134, +161,239, 5,242,161, 53, 42, 40,185,173,147,136,195, 84, 24, 13, 40, 92, 37, 19,204, 52,155,202,131, 56,231,131,110,245,124,149, + 23, 98, 62, 96,151, 26, 99, 72, 40, 58, 31, 32, 12,140, 70, 53, 71, 15,143,120,100,109,141,231, 94,126,155,201,172, 3, 37,120, +225,201,100,198,159,253,245, 75, 92,188,120,131,103,190,240, 9,126,227, 75, 95,226,254,211,247,242,175,255,239,255,200,173,219, + 29,141, 51, 12, 49,146,148,198,149,108, 84,200, 82,115, 74, 94, 26, 64, 81,122,189,100, 12, 78, 89, 57,156, 40, 67, 76,210,137, +214,201,178,118,232, 16,159,127,230,243,188,248,194, 11,188,248,226, 11,124,229, 87,126,149, 51,247,124,136, 31,191,244, 99, 46, + 92,120,135,175,126,245,215,248,224,253,247,233,186, 25,255,253,255,240, 47,121,254,185,231,249,217,171, 63,227,212,241,147,252, +246,127,251,207,249, 55,255,230, 95,115,226,212, 73, 62,249,169, 79,243,195,151,126,200,243,223,251, 30, 95,252,242,151,249,210, +151,190,200, 95,254,167,191,228,107, 95,255, 58,219, 59,183,121,225,185,239,115,238, 19,143,241,200, 35,143,240,135,127,240,135, +244, 93,199,239,252,238,239,242,194,247,159,231,103,175,191,206, 39, 30,123,140,103,191,246,117,254,253, 31,253,145, 92, 86, 11, +154, 54,164,192, 61,247,222, 67,223,205,248,193, 11, 47,240,224, 35,143,240,236,111,254, 38,127,242, 39,127, 84,194,128,242, 26, +249,210,175,252, 42, 74,193,139,223,255, 62,199,142,159,224, 95,253, 47,191,203,191,253,183,255, 39,203,107,107, 60,243,204, 23, +248,241,143, 95,230, 7, 47,190,192,131, 15, 62,196,111, 60,251, 44,191,255,251,191,207,253, 31,186,135,175,252,242, 87,249,187, +191,249, 27,218,113,195, 47, 60,253, 5,174, 95,187, 70,214,150, 39, 30,255, 52,103,207,158,229,123,223,127, 1,149,224, 55,159, +253, 77,254,244,255,253,127, 80, 74,243,181,175,127,141,111,253,195,183,184,185,113,147,205,157,109, 89,231, 58,139, 15,153,207, + 62,241, 4, 15,159,125,144,239,191,248, 2,117, 93,243,236,111, 60,203, 55,190,241,103,164, 12,191,249,181,175,243,205,239,124, +139,217, 7, 51, 38,211, 9,255,234,119,126,135, 31,188,248, 3, 54, 55,183,120,242,201,207,113,252,196, 9,158,127,225, 69,121, + 45,134,242, 89, 18,181,155,196,244, 50, 18,146,116,160,188, 44,128,180, 42,157,247,161, 96,102,133,240, 86, 75,160, 34,249,162, +244,147,126,122, 44,123, 0, 40,168, 88,163, 15,160, 14, 2, 1, 40,138, 82, 93,106, 50, 89,198, 52, 73,203,184,224,200,225, 35, +156,123,244,220, 29, 78, 65, 89,202,231,210,215,156,159,108, 81,200,237, 0,136, 74, 49, 26,183, 34, 82,152,236,241,230,249, 55, + 75, 64, 73, 9,123, 56, 6,178,181, 7, 96, 96, 85,122,184, 41, 6, 97,214,151, 63, 77,105,141,115, 21,149,173,176,206, 29,168, + 52, 85, 10,100, 6,121,233,105,205, 51, 95,122,134,207, 63,245, 11, 84, 85,197,165,139,151,216,218,186,205,233,211,167,208,218, +149, 94,101, 42,105,119,233, 32,230, 50, 14,148,127, 6,139, 15, 6, 87,143, 75,221, 68, 94,176,182,174,168,219, 86,118, 89,138, +131, 42, 3, 74,106, 77,115, 20,107,209,178,136,190, 52,201, 13, 68, 68, 1, 98,234, 73, 62,224,251,158,190,159, 72,195, 32, 4, +250, 97, 96,111,103,155,172,164,183, 98,172, 17,217,142,173,217,179, 34,221,153, 51,128,229, 33, 35, 45, 1, 91,239,163,180,161, +177, 22,159, 2, 42,205, 57, 0,208, 52, 51,185, 81, 86, 6, 21, 13,117,169,242, 77,251, 40, 56, 69,157,240, 67, 64, 41, 75, 85, + 27, 22, 26, 69, 50,137, 24,132,107,157, 76, 64, 59,135, 69,112,181,189,151, 17, 93,180,208,186, 26, 93, 87, 76,189,167,113,178, +106,209,217,200,195,167, 86, 84, 24,233,221,151,163,158, 82,145, 16,133,247,239,156,130,122,204,120,212,176,122,248, 24,181, 26, +216,219,159, 48, 75,137,105,223,139, 33,175, 31,216,153, 14,212, 86, 51, 4,161, 61, 25, 35, 39, 90, 93,183, 50, 22, 47, 93, 80, + 31,130,220, 86,138, 65, 42,230, 32,184,199, 44, 35,184,136,193, 56, 49,152,169,156,208, 22,148, 46, 13,134, 33,179,191, 63, 48, + 53, 14,179, 39,176,162, 62,120,180,179, 52,166, 66, 27, 73, 64,187, 90,126, 38, 86, 27, 70,163, 49, 33,201, 46,119,186, 55,225, +246,222, 77,102,222, 75,141,203, 56,112, 6, 31, 20,166, 24,129,117,134,253,233, 4, 63, 12,204,186,204,214,214,148,189,157,203, +172, 44,142,248,248, 67, 39,152,254,108,155,119,223,219,226,232,177, 35,244, 65, 32, 44,231,127,250, 10, 63,252,251, 63,230, 51, + 95,253,223,192,173,241,227,239,191,196,115, 63, 56, 79,175, 42,252,224,217,155, 94,167,235, 67,105, 96,136,229,238,214,230, 62, +231, 30,248, 16,211,219,123,236,238,205, 24,114,148, 61,222,176, 79, 99,165,101, 32,135,102,205,133,183,223,230,240,250, 10, 74, +107,169,111, 26, 73,163, 55,203,203,220,117,239, 71,120,247,226, 21,250,201, 69, 54,110,190,143,143,153,181,229, 5,188,247,180, +173,168, 95, 39,211,125,182,183,110, 49,155,116, 56, 11, 27, 23,206,115,254,220,199,121,242,137, 39,184,253,250,139,156, 30,117, +220,115,230, 56,223,125,241, 21, 92, 37, 14,121,149, 21,202, 7, 49,175,233, 92,238, 17,129, 58,151,230, 66,206,168, 90,190,235, + 54,102,114,182,100, 21, 15,112,190, 89,105, 8,162,255, 53, 5, 8,163, 82,194,228,132,198,177, 51,155, 66,234, 75,130,184, 16, +251, 82,192, 89, 35,141, 12, 91,161,163,103, 24, 96, 54, 29,176,149,129, 4,253,224, 89,104,107,214, 86, 86,216,220,155,208,245, + 51,178,113,132,148, 57,180, 60, 38, 87, 99,118,111,111, 82,215, 53,211, 94,120, 6,115, 34,103, 78,137, 20, 2,222, 42,188,239, +197, 58,151, 51,125, 52, 92,221,152,114,252,216, 81, 78,158, 58,204, 91,239,188, 47, 45,135, 98,105, 91,168, 35, 75, 85,228,198, + 91,175,243,205, 56,227,217,175,125,157, 84, 25,254,247,255,235, 27,236,237,246, 24,167,255,127,166,222, 52,216,178,235, 60,207, +123,190,181,214,222,251,156,123,251, 78,221,104, 52, 26, 35, 1,130, 19, 32,138, 4, 64, 82, 17, 73, 81,164, 56, 72, 10, 45, 74, +178,108,201, 42,197,150,172,216, 41, 37,229,196,170, 56,131, 83,138,203,145, 83,149,164,146, 42, 87,156, 74, 92, 21,199, 81, 36, + 69,214, 96, 81, 49, 53,154,179,197, 73,148, 8,128, 32, 49, 17, 32,129,198,220,243,157,239, 57,103,239,189,134, 47, 63,190,117, + 78,235, 23,170, 64,176,251,222,115,246, 94,235, 27,222,247,121, 17, 95, 35,179,213,138,100, 23,172,115, 39,218,196, 67,189,237, +253, 77, 9,111, 76, 14, 19,155,155, 2,187,148, 76, 63, 95,240,229, 47,127, 25,213,194,195, 15,127,141,181,233, 26, 95,123,248, + 17, 68, 51, 15, 62,248, 16,155,219,155,156,188,118,204,239,255,155, 79,240,248,227, 79,160, 10,123,215,246,248,224, 15,126,216, + 92, 55,120,158,123,238, 57,190,242,133, 47, 26,123,224,211,159,226,251,223,247,126,206,220,116,154,157,211, 59,252,250,175,255, + 26, 94,225,249, 11, 23,184,245,214, 91, 1,229,190,183,126, 23, 79, 60,241, 56, 95,249,234,151,209, 12, 23,158,253, 54,191,248, + 95,252, 3, 78,111,159,102,239,112,175,142, 60,236,242,216,219, 63,224, 19, 31,255, 56, 73,149,231, 46, 60,207,127,250,159,253, +125,182, 79,109, 87, 85,190, 99,103,231, 52,183,221,118, 43,255,219, 63,251, 95, 17,224,194,243,223, 97,123,103,155,251,223,114, + 31,135,135,251, 44, 22, 11,190,244,249,207, 83, 92,224,197, 23, 95,228,151,254,209, 63,194,139,231,205,247,223,207, 23,190,240, +121,190,245,237,167,201,201, 92, 76,247,221,119, 31, 57, 37, 30,120,251,131,252,230,191,250, 13, 91, 69,229,194,100, 58,225,190, +251,223,202,211, 79, 63,205,165,139, 23,249,202,151,191,132, 11,246,174, 24,197, 48,131, 56, 30,122,224, 65,126,243, 55,254, 95, +174, 31, 92,131,228,113,234,185,239,254,251,121,234,201, 39,185,120,241, 34, 95,254,210, 87, 64, 51, 15, 61,248, 16, 79, 61,245, + 20, 95,250,210, 23, 81,133,139, 23, 95,225,239,255,226, 47, 26,177,213,122,235,250,251,155,118,130, 98,218, 7,105, 28, 37, 89, + 74, 40, 75, 30,203, 0, 75, 29,127,208,146,137, 85,172, 96, 10, 64,111,212,164,186, 47,200,117,167, 98,192,132, 82,237, 8,144, +147, 33,254,168,151, 75,142, 35,109,215, 48,157,182,104,236, 81,231,185,231,245,175,227,212,169,117,170,147,178,238,164,100, 57, +164,170, 74, 69,152,205, 23, 92,189,114, 29, 9, 83, 26, 41,108,109,110, 25, 54, 85,108, 68,105,250,140,154, 38,180,196, 6, 46, +113, 70,152, 49,223, 59, 87, 19,114,204,118, 97,200, 68,139, 99, 21,220,106, 77, 81,234, 63, 53,101,206,158,187,153,119,127,207, +247,208,181, 45,179,197,156,223,253, 55,159,224,228,232,152, 55,223,247,102,227,149,139,224,212,155,104,170, 84, 27,153,234,106, +119, 86,242,200, 24,231,228,146,150,142,254, 10,132, 48, 80,134,235, 28,139,113,164,143, 3,155, 34,180, 77,224,182,243, 55,241, +210,203,175,145, 83,172,107, 12,106,218,143, 85,207,243,249,204,252,172, 34,108,110,109,129, 56, 54, 55,182,152,174, 77, 76,140, +134,169, 39, 87, 54,153, 88, 72,149, 53, 47, 67, 38, 5,111,138, 88,245, 72,163, 52, 8,139,146,152, 42,148, 28,153,155, 80,147, +105,219, 50,148, 25,130, 99, 54,247, 70,113, 59,194, 58,247, 96,227,200,226,177,253, 79, 35,196,197, 72,112, 29, 99, 76,204,230, +115,124,177,189,183,184, 64, 74, 61, 90,253,251,173, 52, 72, 73, 56, 23,144, 86, 25,128, 60,159,145,163,128,180,204,226, 96, 23, +169,120, 82, 73, 38,244,201, 19, 6,159, 8,190, 16,180, 48,142, 61,125,239, 24,214, 39,164,133,229, 97, 75,227, 40,210, 48, 61, +181,197, 68, 11, 55,109,121,124,235, 88,159,116,204,102, 11,250,225,136,249,241,192,225,124,134, 43, 16,211,192, 60, 1, 57, 18, + 51, 76,186,134, 92, 2,174,245,196, 88,200,163,173,147, 20,191,114,120,204, 98,162, 41,158, 70, 45, 40, 34,229,108,142, 65,239, +153, 52, 19, 74, 19,153,167, 17, 47, 30,146, 80,226, 72,236, 23,196,165,128,211, 53,168,135, 20, 19, 93,215,113,112, 50, 35, 13, + 54,150, 91,151,200,238,238, 62,154, 11, 15,222,127, 7,175, 94, 57, 38,247,115,174,238, 31, 27, 11, 62,180,196,148,107,208,136, +114,122,171,227,149,203,215,185,231,246, 51,188,233,222, 29, 62,246,227, 31,225,179, 95,253, 22,170, 48,164,194, 56,159, 51,117, + 74,154,174,241,201,223,255, 12, 15,125,240,163,140,243, 93,254,221, 87,191,201, 81,182,124,237,181,233,212,132,110,249,132,212, +219,251,148,178,146, 74, 79,241, 19,110, 58,119, 51,131, 94,195, 13,137,152,146,141,213, 91, 33, 70, 75, 71,115,206, 83,134,129, +126, 88,208,122, 19,164, 22,133, 51,103, 78,179,118,250,118,158,122,242, 41, 78,246, 46, 49, 13,193, 4, 98, 46,115,254, 84,192, + 77, 3, 87, 14,102,108, 1,187, 71, 3,187,251,251,180, 14,134,177,112,106, 99,157,135,191,246, 23,236, 31,244,124,239, 59,223, +206,133,151, 95,225,153, 87,175, 17, 53,227,138,171,197,135,163,196,190,226, 69, 45,221, 74,193,220, 15,134,225, 38,132,186,106, + 41, 53,187,161, 13,168, 54, 56,108,226, 50,233,108,244,141, 40,190, 8,185,115,132, 98,103,194,152,122,214,167,235,136, 12,244, +101, 94,225, 41, 98,250, 15,129,249,176,176, 96,170,106,101,114, 4,155,254, 84,235, 83, 82,165,105, 45,238, 54,142,137,156, 70, + 38,235,183,112,253,100,160,228, 68,206,222,132,100,213, 62,183,236,224,231,195, 72, 72,201,220, 87,197, 98,136,219,201,132,253, +147,145,175,126,243,121,138,192,198,116, 66, 28, 35,139,177, 71, 69, 57, 56, 25, 57, 92, 12,252,196,207,252, 36, 67,241, 92,184, +248, 24, 15,222,247, 22,238,126,195,157, 60,242,200,179,172, 99, 83,136,172, 6,209, 81,148, 50, 70,115, 84,145,200, 56,124,242, + 72,181,247,225,151,140,112, 40, 53, 88, 69, 75, 97,111,127, 31, 77,181,227, 18,199, 98,222,155, 27, 64,165, 90,216,148,217, 98, +206,230,246, 54,127,251,231,127,150,215,223,251, 6,246,247,247,172,137, 42, 22, 49,188,191,183, 91,201,115,181, 40, 20, 56,189, +189,195,254,254,158,101, 67, 84,129,219,254,222, 30, 14, 88, 95,155,114,112,184, 79, 74,245, 59,246,142,189,189,125,118,118,118, +184,190,127,221,166,195,106, 94,246,253,253,253, 21,245, 78, 11, 28, 30, 28,176,115,211,233, 37,124,129,173,157, 29, 78,159,222, +225,191,251,229,127,178, 98, 50,168,194,231, 62,251,105, 14, 14,224,240,240,208,162,181,151, 89,242, 98,105,115,155,219, 91, 60, +249,228, 83,245,215, 22, 14,246,247, 87,179,228,173,157,109,254,227,191,247,247,234,221, 97, 75,141, 11, 23, 94,192, 57,232, 23, + 11,187, 80,107, 49, 46, 42,104,177,198,109,123,123,139,171,215,119,107,220,108,230, 96,239, 42,247,221,255, 38, 0, 22,139,222, +138, 45, 17,214, 38,211,250, 25, 26,205,117,255,240,160, 78,175,171, 78,173,162,129, 69, 13, 64,102,214,110,203,102,151, 98, 1, +106, 2,164,100, 33, 42, 78,140,114, 25,172,147, 44, 43, 31,171,171,108, 97,169,220, 93,241, 21, 69,103,131,222,213,101,146, 43, +143,215, 55, 75, 59, 2, 76, 39, 29,231,207,223,194,115,207, 93, 96, 18, 26,238,184,227,246, 21, 74, 80,111, 0,112,107, 55, 74, +181, 58, 8,223,248,230,227,188,248,226, 75,148,146, 89, 95,159,112,231, 29,119,114,237,218, 46,135,123,135,136,179, 81,178, 69, +102,130,175, 23,116,169, 18,124,131, 12,228, 26,129,169, 21,223,103,128, 6,205,149,100, 84, 31, 74, 86,138, 79, 99,133,119, 93, + 71,215, 78, 64,132, 54,180,188,239,189,239,166, 13, 45,147,182, 93,233, 6,134,126,176, 23, 69, 35, 69,219,106, 97, 88,254,205, +102,115,147, 26,197,104,151,122, 38,143, 35,195,176, 64, 70,184, 30,175,113,225,194, 11,220,124,246,102,124,211,242,253, 31,248, + 1,190,243,204,179, 76, 38,147,213,207, 21,176,252,230,158,196, 43,175,188,200, 3,111,127, 27,226, 28,111,126,203, 27, 57, 62, + 57,226,117,119,221,197,218,100, 13, 69,185,124,245,178, 21, 59,197,142,152, 88,168, 98, 24, 75,145,138,201,128, 5,129, 12, 17, +162, 51, 5,232,108, 54, 95,229,175,151,152, 25, 92,193, 23,227, 36,107, 84,198,216,161, 69,240, 94, 73, 62,144, 37,210, 56,243, +206,151, 28, 40,234,232, 99,161,173, 93,116,193, 49,230,140, 11, 5, 70,165, 72,198, 47, 50,210, 22,146,102, 74,233,105,131,103, +108,243, 82,158, 65, 91,249,210,234, 50,195,112, 66,142, 48,115, 74, 84, 11, 43,112,226, 9, 26,235,200,201,163,243, 57,206, 6, +246,140,110, 32, 52,150, 52,229, 27,207,164,181,140,224,125,233,193,123, 54,167,167, 57,211, 5, 54,157,137,172, 38,206, 83,162, +144,211, 17, 39, 7, 11, 22,140,164,146,153,207, 51,139, 18,201, 19,195,230,246, 99, 98, 99, 99,194,108, 62, 50,241,158, 73, 59, +197,209, 26,224, 65, 50, 50, 22,102,125, 66,241,228, 86,153,166,204,252,164, 71,139, 37,219,133,154,157,172, 21,228,161, 41,209, +122,155, 28, 9, 9,135,103,236, 7,240, 3, 39,139, 57, 41, 38,246,199,142,211, 59,107,136, 43, 92,187,118,149,211,103,111,101, +107,218,112,114,120,196,124, 62,103,214, 71, 78, 78, 50,109, 3, 15,221,127, 23,239,126,255, 59,120,248,241, 87,120,229,165, 75, +184,233, 58,123,187, 39, 56,137, 52,211,134, 44, 29, 79, 63,251, 18,159,250,248, 39,184,245,220, 6,143, 63,241, 60, 81, 27, 38, +147, 53,206,108,111,242,234,222, 49,195, 56,212,247,207,222,135, 84,224,248,164, 39,208, 49, 38,165,237,188,225,131, 21,242, 34, +147, 20,114, 92,224,167, 22,116,113,120,176,224,244, 78, 67,210, 58, 13, 11,235,188,250,226,139,204,246, 46,130,115, 36,129,233, + 90,199,209, 73,102,109, 13,142,162, 50, 31, 10,221, 52, 67, 25, 89,204, 23, 72,215,226, 61, 52,190, 97, 56, 60,224,243,159,250, +255,120,230, 91,223,225,254,183,190,158, 23, 47,188, 12,177,208, 87, 2, 94, 46,166,209,241, 24,244,163, 4, 83,254, 22,212,254, + 71, 47,148,161, 22,210,106, 69,191,177,206, 21, 95, 49,163,131,179,134, 32, 52, 38, 80,115,206,194, 55,146, 22, 82, 30, 43, 55, +189, 30,160, 73,153, 76, 26, 16,161,239, 45, 0,102, 32,174, 32, 31,139,190,199,187,128,115, 98,184,220,190, 71, 40,116,109,203, + 48, 30, 83, 74,102,247,112,198,108, 62,163, 81, 88,159,182,184,209, 19,135,113, 21,214, 33,197,206, 35,138, 1,170,186,224,217, +218,220,164,109,215,137,195,156,221,253, 35,110, 94,119,156,187,249, 44,179, 94,185,126,120,192,222,193, 9, 57, 23, 30,125,242, + 53,126,255,143, 31,229,223,255,177, 31, 70,153,115,117,247, 34, 49,205, 9,222, 38, 47,146, 18, 46, 88,116,182,171, 23,139, 5, + 53, 25,231,222, 68, 79,118, 49,132,154, 94,169,146,241,206,254, 93, 74,169,230,126,231,218, 56,104,197,122, 85,184, 87,221,237, +190,227,157,239,228,187,222,122, 63,159,255,204,167,248,215,191,245, 27,168,115,252,210,127,251,203,134, 71,174,177,159,133, 92, +119,189,118,214, 31, 47,230, 76, 39, 19, 91, 13, 8, 56, 28,211,233,212, 68,119,138,189,111, 90,106,246,136, 99,251,244, 14,243, +197,188,226,111,117,101,111,155, 78, 38,166,183, 47, 86,168,117,147, 9,243,217,192,210,248,213, 47,230, 92,186,120,153,127,249, + 47,254, 79, 82,205, 47, 57,125,102,155,253,107,251,220,115,239,189, 43,226,227,106,146, 93,193,236,253,188,103, 50,157, 88,241, +142,208, 77, 38, 54,133,117,142,190,239,249, 63,254,249,255,206,241,225,140,148, 34, 27, 27,107, 32,194,173,231,206,215, 65,113, + 77,253, 19,123,182, 52, 89, 2, 95,191,232,153,118, 83,250,197, 12, 16,182,207,156,102,177, 88,212,233,180, 82, 72,160, 30, 42, +116,202,176,229,133,105,219,173,156, 19, 22, 9,172,213, 15,159,168, 29,150,233,209, 42,180, 38,167, 82, 17,179, 86,144,160,222, +242,212,181,233,108,236,141,237,167, 92,229,185,107,181, 14, 52,206, 60,144,212, 47, 92,212, 30, 18,215, 52, 85,198,111,200, 82, +245,133,163,227, 99,222,254,214,239,230,235,143, 61, 70,142,118, 0,172, 88, 0,220,216,169,203, 13,108, 48, 79, 63,253, 45, 62, +247,217,207, 49,244, 11, 0,238,184,253, 94,206,159, 63,207, 99,143,125,157,197,124,142,107,172, 10, 85, 17,154,106,147, 16, 47, +108,158, 58,133,170,208, 52, 45, 93,215, 85,181,169, 65, 93, 16, 88, 91, 91,195,183, 70,247, 89, 91,219, 88, 77, 5,214,166,107, + 86,153, 3, 87,175, 92,231,169,167,159,228,161, 7, 31,164,105, 26,190,231, 93,239,188,177, 18, 80,229,217,103,159,229,210,229, +215, 86, 84, 50,239, 29,211,233,250,114, 80, 76, 55,105, 45, 90, 80,149, 73,215,161, 57,211, 52, 85,193,153,199,138,169, 21,190, +248,133, 63,229,236,153, 29,238,126,253,189,188,238,206,215,113,247,157,119, 91, 88, 69,125,120, 36,212, 62, 63, 41,223,124,226, +113,238,186,235, 78, 30,120,224, 65,110,190,233, 44, 31,253,161, 31,102, 89,190,236, 94,191,206,231, 63,247,185, 21, 87, 36, 85, + 42,185, 0, 0, 32, 0, 73, 68, 65, 84, 56,103, 83,155,106, 42, 20,103, 7, 92,168,214,165,168,201,226,249, 90, 33,212,128,139, + 88,140, 3, 45,163, 67,163,101,121,139,183, 23, 74,147, 85,242,226, 3,195, 88,234, 32,103, 32,201,136, 74,139,138,141, 18,135, + 21,176, 71,241, 94,104,106,151,147,139,199,251,150,121, 30,235,132, 67, 72, 73,209,184,168,160, 14,101,196, 81,198,108, 9,109, + 94, 44,236, 64,139, 65, 97,178,128, 75,228,138,226,197,103,130,122,188,100,178, 75, 44,134, 64, 19,172,115, 26,143, 35, 39, 50, + 82, 68,105, 53,160, 90,216,239,214, 16,175,120, 39,132,110,194, 70, 59,165, 11, 5,165, 69,167, 19, 38,226, 16,159,105,221, 17, + 93, 59, 50, 12, 35, 39, 39, 71,228, 49,115,180,159, 25,213,114,214,231,169,224, 92, 98,218, 56,114,104,105,214, 2,161,174,160, + 38, 77,131,134,134, 70, 96, 24,212,226, 42,199,194, 24, 19,217, 69, 74, 30,193,121,166, 77,135,150,196, 16, 35, 41, 13, 12,195, +192, 66,199,154,101, 32,188,242,194, 43,188,238, 14,227,124,199,210,112,215, 29,111,198,135,194,198,153,145,245,105,224,242,197, +139, 60,255,157,111,115,102,251, 38,110, 62,115,134,173, 83,103,249,157, 47,253, 62,187,179,158,105, 76,140, 53, 40, 99, 62, 52, +204, 19,180,120,126,243, 87, 63,206,250,198,148, 69, 9, 70,191, 42, 1, 92,199,108,118,141,188,228,160,171, 88, 20,111,202, 92, + 59, 60,100,226, 61,179,197, 72,108, 45,155,154, 98,226, 46, 98, 33, 2,218,143, 43,109,202,201,236,152,174,221,198,187, 9, 47, + 95,120, 30,193,236, 61,113, 76, 40,176, 62,157,208,239,101,190,125,113,143,243,119,220,201,214, 90, 7,149,142,184,179, 53,178, +119,176,199,100, 98,239,230,113, 63,208,118, 83, 94,120,254, 49, 46,188,248,109,114, 28, 56,123,102,199,108, 99,165,208,143, 38, + 46, 84,204, 27, 61,206, 45,129,141, 38, 17, 8, 53, 2, 20,150, 91, 56,139, 44,182,255, 36, 75,134,177,142,149,115,180, 60,245, + 96, 93,187,247, 66, 63, 36,134,249,136,147, 42,110,115,182,110, 92, 91, 55,113, 95,138, 70, 63, 27, 83, 68,181, 88, 98, 89,201, + 21,170, 20, 88, 12, 25,215,220, 80,182,123, 31, 32, 23,242,120,130,230,209, 64, 82,237, 4,113,202,113, 76,117,167, 93,105,101, + 40, 57, 91,172,231,100, 58, 33, 23, 56, 62, 57, 50,148,111,211, 82,180, 16,211, 2,245, 27,108,108,156,161, 31, 18,251,251,187, + 36,214,249,213,223,251, 42, 95,254,250,243,252,212, 15,189,139,205,187,119,120,249,210, 30, 67, 31,201,109, 85,143, 71, 91,131, +150,162, 4, 41,181, 40,213,154,122,153,172,171,202,133, 88, 59, 88,106,178,161,174, 56,238, 90,227,170,235,116, 83,171, 54,168, + 78, 88,181, 40,211,201,132,189,235,187, 92,248,206,183,217,186,233, 12, 31,248,192,135, 77, 60, 90, 69,109,203,115,211,126, 95, +179,220, 93,185,244, 26,221,100,194, 3, 15,189,131, 71, 31,249, 58, 15,189,243, 33,206,223,118, 43,197, 9, 79, 60,241, 36,191, +240, 11,191,192,139, 47, 94,224,194,243,207,241,125,223,247, 94, 4,184,120,241,181,202,135,175,154,111, 39,156,191,245, 86, 30, +120,240,237,124,253,145, 71,120,239,247,189, 15, 69,120,229,213, 87,120,221,221,119,225,189,227,242,165,139,116,147,142,239,125, +207,187,249,202, 87,190,204,206,233,109,254,131,191,245,115,252,241, 31,252,145, 85, 15,214,146,214,181,228, 82, 68, 47, 60,251, +236, 51,188,231, 61,239,230,202,213, 43,140,139, 5,223,251,158,247, 48,246, 61, 72,225, 91, 79, 63,205, 7,222,255, 3,124,234, +147,159,165,107, 3, 31,253,232,143,112,233,242, 21, 46,189,246,234,138,135,103,184,219, 92, 31, 67,155, 34, 60,245,244,183,248, +240, 71, 62,196,103, 63,247,105, 38,109,199,131, 15, 62,196,163,143, 61, 86,237,226, 54, 89, 86,129, 39,191,245, 52,255,209,223, +253,187, 60,241,244, 19, 92,190,116,145, 15,125,248, 35,149,250,103, 22, 65,155,244, 84, 18, 31, 25, 79,176,117,158, 22, 52,171, +133, 18, 81, 44,166, 68,160,120,143, 58, 71,112, 98,203,117,173, 99, 89,205,213,129, 88, 76, 93, 89,106,120,189,136,199,137,137, + 48,124,107,248, 68,239, 44,252,192,212,239,153,111,124,227, 27,124,224,251,223,207,125,111,186,159,111, 60,254, 56, 15,127,237, + 81,110,185,229, 28,183,156, 59, 87, 31, 36, 89,141,169,143,103, 39,124,227,177,111,242,133, 47,126,145,189,131, 3,156,111,105, + 59,207, 15,252,192,251, 57, 56, 56,228,137,167,158, 33,180,193, 44, 85,110, 82,247,101,105,165, 98,125,230,153,111,115,243,222, + 1,185,100,174, 95,223,197,169,178,183,187,203, 83, 79, 61, 73,211,182, 92,187,118,165, 30, 56,153,239, 60,255, 29, 82, 21, 66, + 93,189,118, 13, 23, 2,154, 97, 76,202, 31,253,201, 39,217,219, 61,228,182,219,110, 99,109,173, 35,101,136,105,228,213, 87, 94, +227,171,127,254, 53,250,209,114,152, 29, 66,142,133, 11, 23, 46,216, 40, 62, 39,174, 92,190, 82, 71, 85, 51,158,122,250, 41,182, +183,182, 56,153,157,208,207,143,241,212,128,144, 2, 87, 46, 95,226,183,127,231,183,248,238,239,122, 27, 55,157, 61,203,198,230, + 38,247,190,225,141,180, 77,107,150,156,168,228,226,209,146, 57, 56,232,249,195, 63,249, 12,151,175,238,113,247, 93,119, 50,153, + 76, 40,165,112,125,247, 58,143, 61,242, 40, 47,190,252,146, 81,209, 74, 21,132, 21,115, 44,148, 8,193,219, 88, 27,103, 73, 71, +185,250, 37,221, 50, 42, 80,149,210, 71,227, 16,120, 43,149,131,111, 72, 49, 35,100,130, 55,240, 80, 78, 74, 23, 26, 74, 13, 30, + 42,244,132, 98, 92,230,162, 16, 75,169, 80, 9,207, 80,172, 43, 16, 45,228,208,153, 6, 65,116, 85, 92, 45, 55, 52,190,142, 8, +157,122,164, 21, 36,218,248,107, 25,115,153,180, 16,196, 17, 38, 30, 25, 12, 23, 58, 82, 17,142,201, 82,210, 92, 12,102, 51,169, +233, 76,173,179,191, 35,247,137,156,102,102,137, 41, 45,101,152,115,181,233, 9,174, 69,226,136,107, 10,158,214,146,244,138,167, +235,214,153,156,218,226,230,155,206,226, 53,115,180,152,147,115,100,118, 50,103,136, 35,125,138, 68,109, 9,100, 74,130,182,107, + 77,135,160,224, 75, 96,107, 99,147,241,148,209, 23,211, 80, 42, 75,220, 56,239,243, 56,210,199, 76, 28, 70, 75,126, 18,251, 94, + 36,183, 76,214, 3, 18, 61, 46, 24,107,122, 57, 93, 58,238,231, 28, 31,238, 18, 83, 97, 58, 93,227,228,224,152,118,218,177,177, + 57,225,212, 70, 96,125,210,114,253,210,101,206,157, 59,203,155,239, 62,207,241,188,231,100, 62,227,240,224,152,235,215,119, 89, +235, 90, 14,143, 14,233, 95,182,113,171, 77,162, 58,134,177, 48,237, 90, 14, 79,230,150, 48, 86,108,127,170,197, 52, 44,210,182, +148,162, 44, 22, 3,211, 54, 48,196, 76,209, 96,135,186, 56,211, 61,120,181,231, 52,142,104,152,112,125,247,128,137, 47, 36,245, +104, 74,148, 26,128, 19, 99,164,168,242,226,165, 99,166, 27,137,227,147, 5,107,109, 98,136,133,141,245,117,218, 70, 56,153, 29, + 18,112,196,156,137,125,100,218,174, 49, 12, 61,107,235, 27,156,218, 58,101, 48, 14, 50,139,126, 36,231,194,164,245,164,100,150, +181,156, 11, 82, 18,153, 76,204,142, 76, 54, 11, 39,150,127,157, 8,171,117,157,171,132,178,226, 76,232, 89,212, 16,180,154, 61, +227,162, 39,167, 8,193,145,114,166, 20,165,105,150,184,102,161,235,166,136,239,208,161, 39,165,145,156,122, 20,216,108, 3,125, + 52, 11,154,171, 88,106, 87,247, 2,147,174, 1,223,208, 71,203, 25, 80, 85,124,227,140,171, 81,173,102, 94,164, 6, 98,153,160, +200,148,205,217,236,151, 69,241, 56, 94, 61,158,115, 60, 36,182,182, 44, 4,234,129, 55,222,198,241,201, 6, 47, 94,222, 39,162, + 60,252,228, 75,244, 39, 7,188,237,161, 55, 51, 63,152,161,197,208,207,134, 46, 5,145,130,198, 66, 12, 38, 14,109,156, 53, 64, +185, 88,200, 80,112,158,236,148,148, 13, 78,163, 75,108,108, 69,145,230,234,199, 86,189,145,145, 94,170,250, 58,229,204,159,127, +229,207,249,153,191,245, 55,249,229,255,225,127, 98, 24, 6,190,241,200,215, 89, 44, 22,108,109,239,172,210,199, 88,170,178,197, +172, 86,168,240,187,191,253,219,124,244, 99, 63,202,143,124,236, 99, 60,247,220,115, 92,124,237, 34,154, 11,123,187,123,252,225, + 39, 62,193, 71,255,202,143,176,115,122,135, 23,158,191,192,239,253,238,239, 34, 78,120,221, 61,247,240,125,239,125, 31,191,246, +107,191,142, 20,229,226,107,175,113,223, 91,238,231, 99, 63,242, 49,158,127,225, 2,127,252,135,127, 88, 87, 27,134,136, 45, 42, +124,252,119,127,135, 15,126,232,195,124,240, 67, 31,166,239,123,190,242,103,127,198,133, 11,207,113,207,189,111,184, 17,207,172, +206, 82,212,234, 52,250, 91,207, 62,205,246,214, 38, 63,255,243, 63, 15, 10,207, 60,253, 12,219,167,183, 17, 45,124,254,243,159, +225, 3, 31,252, 16,255,240,191,249, 47, 65,225,177, 71, 31,225,209,135, 31,230,214, 91,207, 87, 53, 84,237, 82, 11,252,227, 95, +254,199,252,147, 95,254,239, 81, 41,124,246, 51,159,225, 35, 31,250, 32,255,245,127,245, 15, 89, 44,122,190,242,229, 47,241,200, +195, 95,227,158,215,223, 3, 42,213,227, 14,251,215,175,243,153, 79,127,154,159,250,235, 63,197,233,157, 29,190,244,165, 47,175, +216, 48, 69,132,162,182, 26,172,128,118,242,114,191,238,107, 84,150, 24, 97, 14, 95,179, 13,234, 32, 75,238,184,235, 77,234,234, +222,199,215,228, 44,139,223,171,163,248,186, 75, 50,142,185, 3, 47,182, 47,173,121,212,154, 13,220,129,100, 78,159,222,228, 63, +252,217,159,197,225,248,149, 95,249, 21,174, 92,189,198,109,183,221,198, 91,222,252, 38,206,157,191,149,233,116,194,108,126,194, +149,203, 87,120,254,197,151,120,229,197, 87, 25,135,222, 88,203, 18,248,193,143,124,128,143,254,240, 15,241,111, 63,249,105, 62, +251,217, 63,181, 42, 68, 11,162, 1,117, 38,166,210,154,175,179,182,190, 78, 8,230, 43,141, 99,102,140, 54,238,157, 78,215, 16, +111, 97, 16,179,249, 12,205,194,100,109, 74, 55,233,172,211,236, 7,134,161,167, 20,135,247, 53, 92, 65, 60,167, 78,173,153, 74, + 57, 42,195, 56, 48,159,207,205,115,219,184, 21,201,168,196, 68, 55,153,208, 77, 38, 80, 10,139,177,103,236, 35,136,209,182, 90, +223, 80, 92, 97,113, 60,179,232, 69,111, 95,253,250,250, 6,222, 11,195,252, 4,212,241,206,119,189,131, 31,251,171,127, 13, 39, +176,191,187,203,255,253, 47,255, 47,174, 92,189, 94, 87, 27,134,155, 36, 11,235,155,155, 52,221, 4,124, 97,152,207, 73,139,158, +236,148, 46,152, 47,149,224,106,193,149,209,100, 2, 39,156,141,177,141,113,109, 99,114, 85, 59, 36,100,153,113, 28, 26, 19, 15, + 57,235,180,137,133,210, 86, 55,100, 78,181,219,240,228,108,194, 72,245, 74, 43, 70,154, 42,165,224, 52, 24,178, 87, 50, 37,103, +180, 9,184, 2, 37, 26,186,214, 7, 99,169, 91, 30, 57, 52,117,204,153,171,247,212,139,183, 40, 92, 2,173,168,237,253,154,218, + 17,213,135, 58,169,249, 91, 67, 48,226,155, 20, 79,240, 38,116, 28,139,210, 76, 27, 90,113,198,110,207, 9,159,132,166,235,200, + 53,103, 58,170,101,174,163, 25,113,208,117, 30, 15,196,228,209, 50,210,132,150,102, 18, 40, 98,120,201,141,105, 75, 25,141,253, +157,198, 19,134,148, 72,227, 64, 63,140, 20, 21,198, 20, 13, 37, 28, 90,139, 23, 22,193,105, 70,125,160,113,130, 11, 45,211,181, +150,161, 95, 48,159, 69, 82,137, 38,136, 90,140, 36,171, 81, 88,140,115, 58,239, 57, 58,182, 61,250,124,182,160,184, 9,107, 27, +155,204,246, 15, 8, 77, 99,135,113,200,232,216,115,255, 27,111,229,239,252,141,247,115,239, 91,222,204, 47,252, 39,255, 35,169, +221,230,174,215,223,197, 56, 87,156, 36, 36, 14,124,235,194,119, 56, 53,233, 76,193, 61, 20,102,139, 61,230, 67, 98, 99,243, 12, + 27, 93, 71,123,250, 22,158,124,252, 97,130, 15, 12,195,104,144, 17,133,123,238,186,141,105,215,112,233,234, 62, 57,143, 76,186, +182, 66,153,172,227,240,206,145,179, 16, 2,132,208,177,232,123, 99,147,231,194,230,169, 73, 21,158, 10,169, 24,110, 56,248,192, +149,253, 19, 54,218,192,250,214,105,246, 15,118, 57,187,181,206,180,107,112, 93,131,111,214,152,182,129,131,189, 3,174,236,159, +160, 49,210,181, 13,206, 57, 22,197, 51, 89, 95,195, 59,161,107,221,138, 59,239, 48,125, 1,174, 70, 1,151, 66,227, 44,145,107, + 40,209,232,103, 49, 83, 52,130, 19,250,185,197,234,150, 58,186, 45,128,100,103,143, 65,221,167, 31, 45,122,142,247,236, 93, 27, +115, 34,167,196,122,215,176,182,190,193,144, 18,109,232, 72, 69, 76, 29,142,146,134, 5, 57,103,126,252, 61,247,224,215, 55,249, +212, 95,188,140, 15,222,130, 59,202, 64,204, 75,110,184,176,127,120,128, 47,202,217,155,118,144,166,225,248,232,152, 20,237,157, + 65, 12,195,122,170,107,152, 76, 39, 12,169, 88,126,183,178,234,150, 75, 30,153, 78, 38, 76, 27,135,111,133,155, 78,159,230,129, +215,223,198, 11, 23,119,121,228,153, 87, 16, 10,211, 46,240,166,219,111,230,122,159,185,126, 48, 86,127,114,189, 64,139, 34,161, +114,222,235,106,211, 57,243,220,139,247,132, 90, 88, 56,151,113,101,153, 21,190, 12,103, 49,154, 27, 53, 27, 67,116, 41, 32,212, + 21,102, 21, 45,198,243, 18, 71, 91,207,236, 84, 65,242,174, 42,254,197,213,120,216,234, 75,119,210,242,174,127,239, 29, 60,252, +231,127,110,172,120,239,248,207,127,241, 31,240,171,191,246,255,112,184,191,111, 65, 80,206,161,234, 13, 22, 83,189,241,150,228, +106, 9,107, 86,152, 45,245, 92,182,146,233, 16,198, 82,234,111,111,221,252, 50,101, 52,103,165,243,230,223,215,108,153,190,134, +150,133,156,148,198, 47, 33,106, 86, 92, 21, 45,214,192,150,170,254,242, 5, 95, 39,228, 41, 91, 34,222,234,119, 87,106,228,105, +101,188, 47,253,228,141, 24,153,110, 25,223,166, 88,236,100, 41,100, 76,164,232, 87, 73,121, 30, 87, 96,107,123,107, 85,204,168, + 42, 91,167,119,248,219, 63,247,115,252,211,127,250,191, 24,160,166, 18, 32,125, 21, 89, 59,103, 73,169,170,142,224,108,133,226, +138,233,160,196, 55,132, 2, 99, 86, 66, 66,104,138, 85,157,169,216,238,220,188,232,186, 26,211,136,179, 3,119,185, 28, 47,121, + 4, 50,102,188,178,140,109, 81,184, 52, 36, 62,241, 7,127,204,223,252,153,159,230, 39,127,250,167,249,205,223,250, 56, 47,191, +122,145,151, 94,185, 76, 55,237,104,186, 41, 57, 46, 88,204, 79,106,160,138, 85, 24,107,107, 19,222,253,189,239,225,135, 63,242, + 97,190,254,216, 55,248,194, 23,191, 82, 61,212,246,243,148, 18,107,108,225, 82, 40, 39,204,142, 23,212,200,250,186, 27,115,244, + 41, 50,140, 39,246,161,214,188, 96, 7,244, 39, 61,139,249, 96, 52, 32, 99,243,152, 96,196, 91, 39,109, 59,231,129,147,147, 5, +165, 88, 74, 81,240, 14, 39,211, 21, 46, 23, 10,174,241,140, 41, 17,143,143, 65, 60, 34,134,138, 44,154, 73, 99, 52,134,181,130, + 15, 77, 85,214, 22,114,129,115, 55,223,202, 95,253,137, 31,101,119,119,151,113, 28,185,231,238,187,106,200,134,240,196,211,223, +226,218,225, 49,197, 89, 88,132,166, 37, 3,184,208,159,236,115,124, 98,133, 71,206, 22,243,168, 69,137,161, 16, 90, 79, 80,129, + 28,205, 83,238, 61, 42, 9, 39,193,130, 76, 74,186,193,131, 47, 74, 33, 26,192, 64, 0, 34,100, 37,168, 51, 75,153, 55, 80, 5, + 37,219,192, 77,133, 69, 63, 16,130, 5,127,148, 84,152,107,196,105, 21, 80, 58,103,225, 56,206, 60,206,193,184,148, 20, 9, 72, +140,166, 62, 86,136,131, 21,139,206,187, 85, 71,224, 67, 75,168, 47, 98,212,145,178, 76,174, 26, 77,160, 89, 16,178,100, 75, 55, +171, 65, 13, 89, 33,229,132,244,153,206, 55, 56, 39,164, 65, 45,195, 90, 45,119, 96, 44,118, 0,123,113,140,106,187,168, 38, 24, +105,171,145,134,146,196,162,112, 25,153,132,150,152, 19,241,100,206,152, 60, 93, 16,202,162,101,140,198,230, 15, 62, 16, 66,195, +164, 89, 99,107, 91,104, 84,172, 88,235, 19,139,185, 37,227,229,146,140,196,165,153,162,158,182, 8,243,156,112, 10,107,211, 41, + 77,183,133,115,137,120, 50, 35, 59, 79, 46,142,210, 47,200, 2,231, 78,111,115,237,240,132,174,157, 67,132,197,226, 8,141, 61, + 65, 18,219,219,235,164, 18,184,124,208,211,118, 66,183,189,206, 65,191,224,206,155, 60, 79,188,116,192,119, 46,116,108, 78,166, + 76,215,166,192, 26,243, 62,210, 5,136, 49, 51,235,149, 66,195, 48, 14, 76, 99,207, 94, 26,185,244,242, 43, 4,177,221,155, 44, + 71,240,117,191, 62,166,154, 88,165, 16, 83,177, 2,174, 20,156, 23,198,108, 36,238,148, 10,109,104, 57,127,246, 12,199, 7,187, +204, 82,228,213,107,115,251,206,151,218,152, 26, 82,161, 41,178,121,243, 77, 28,143, 22, 38, 51, 27, 35,163, 42, 12, 25, 45, 61, + 55,221,124,158, 59,111,127, 29, 87,119, 31, 35,161,164, 98,123,233,116, 60,227, 56,101, 66,235,217, 59,200, 56,124,245,169,123, + 67,192, 6, 79, 19, 2,210,128, 23, 71, 83,139, 85, 17,135, 11, 74, 19,214,104,187,142,245,117, 75,214,202,197, 89, 3,160, 70, + 2,196, 89,124,113, 30, 97, 24,123,118,179, 5, 9,149,122,198, 89,183,111,161, 66,243,126, 48,204,103,195, 42,187, 60,231,196, +235,239,188,137,201,173,119,242,201, 71, 46,129,247,248, 96,214, 69, 45,145, 28, 35, 81,107,242,163,195,192, 53, 67,178,221,104, + 29,243,218, 90,187,176, 62,157,176,190,117,154,221,163, 35, 22,199,115,218,174,179,144,169, 18,107,198, 67, 33,198, 68, 89, 40, +151,119, 95,230,252,186,231,157,111,189,135,103, 95,187,206,222,238, 33,222, 5, 94,187,182,207,250,230, 22,235,155,107,164,222, +222,203, 33, 47,207, 72, 35,192, 81, 5,184, 70,149, 84, 74,172, 57, 22,197, 82,225,132, 96,204, 15, 12,214,227,196,190,207, 80, + 71,233,198,156,151,234,118,168,129, 47,234,200, 88,134,130,221,110,118,209,185, 96,232, 88, 81,211, 62,136,145,116,235, 88, 56, +115,223,125,247,115,247,221,247,112,241,181,215,120,253, 27,222,192,238,238, 46,187,215,174,211,184, 80,201,115, 22,150,146, 85, + 44,248,200,153,211,201,132,153, 22,211,235,234,209, 85,170,202, 60,137, 53, 63,174, 10, 75,151, 43, 4, 99, 0,212,130, 70, 61, +120, 69,115,180,194,196, 55,248, 80, 41,111,106,159,149, 56, 71,176,228,148, 85, 60,175,199, 66,177,140, 29, 99, 35,240, 66,182, +200,223,140,221,119, 82,144,108, 93,114,165,242,212, 20, 60, 75,149,211,213, 42, 34,219,133, 95, 60, 37,165,250, 44,100, 10,158, +126, 24,248,201,159,252, 41, 30,125,248,107, 44,134,158,135, 30,122, 39,143, 62,252,112,253,217,236,207, 49,203, 26, 20, 21,180, +152,117,153, 84, 40,234, 32,217,133,174,149, 54,151,197, 33,178,132,207,104, 54, 36, 99,137,228,100,209,153,182,211,178,252,242, + 34,190, 2,247, 11,170, 9,209, 84,147,177, 20,145, 84, 35,242,172,139,186,118,233, 10,187,123,123, 60,244,192, 3,188,243,161, +183, 51, 95,204, 57,222, 63, 96,118,124, 68, 63, 44, 72,113,176,220, 89,160,109, 91,238,186,227, 14,126,244, 71,255, 10,223,255, +190,247,242,212, 83, 79,241,123,191,247,123, 28, 31, 29,225, 36,215,177,238, 95,194, 17, 82, 42, 89,206, 50,218,114,182, 46,108, + 25,228, 96, 79,130,137,218,188,154,242,176, 84,138, 82,169,151, 21, 36, 75,131,210, 12, 57,145,114, 36,141,145, 82, 34, 37,217, +200,180, 20, 27, 65,167, 20,137,201, 96, 20,185, 36, 82,178,112,132,226, 20, 73, 86,237,149, 85, 96, 65,245, 72,103, 19,227,149, +229,150, 69,133,205,205, 13, 30,120,224,109,220,121,199,157,156, 63,127,158,182,109, 57, 57, 62,230,241, 39,159,226,211,159,249, +119,204, 78,102,150,238,163,166, 46, 86,177,253,159,115,134,154,245,206,194, 27,166, 19, 79,167,202,108,232, 25,146, 18,199,116, + 67,124, 24,130, 81,195, 44,128,142,148,139, 85,153, 18,200,178, 44,101,108, 71, 21,151, 64,150, 6,114, 49,236,160,237,212,133, + 6,139,143, 76, 44, 81,135,246, 50,249,234,133,181,147,192,212,170, 75, 3,131,203, 24, 73,138, 66,146,140, 95,238,213, 68,240, +174,224, 67, 13, 99,240,206, 58,251, 12,177,152, 78,162,104,253,188,138,161,105,113,169,218,152, 28,100,235, 50,236,128, 87, 38, +193,225,157,210,122,139,186,164, 20,124, 3,105,176, 75, 68,181, 64, 40,184,224, 44,158, 80, 66, 13,225, 80, 98, 78, 12,125, 61, + 12, 20,146,102,226, 80, 83,203,196, 49,142,153, 49,103, 98,137, 12, 37, 18,135,204,162, 6, 17,205,213,145,100, 2, 77, 67,211, +173,209,180,129,166,105,209,100,137, 74,227,220, 50,199,211,220, 58,225, 20, 19,195,208, 51,164,132,211, 6,215, 4,186,181, 41, +107,237,132,245, 83, 83, 54, 78,109,112,211,198, 41,110, 62,179,205,153,115, 55,113,238,244, 14, 59, 27, 83, 38, 19,143, 15,129, +221,253, 3,130,203,124,232,157,111,226,141,119,191,129,249,209, 1, 63,254,177,247, 50, 92,187,204,159, 61,246, 28, 71,139,158, +121, 63,112,178, 56,230,120,255, 10,235,235, 83, 74, 81,174, 94,191, 78, 26,122,212, 57, 58,239,153,141,137,197,162,167, 13,134, + 38,237, 99,170, 60,111,199,250,218,148,113, 76,156,204, 23, 43,222, 67,170,125, 79,240,142, 24, 45,213, 48,180, 29,235, 91,167, +217,218,220,194,251,150,105,211,114,180, 24, 8,161,225,142,243,183, 24,207, 90, 43,224,196, 65,219, 77, 57, 56,216, 55, 98, 22, +118,169,228,152,105,188, 99,182,152,115,199,237,175,195, 55,142,215, 46, 95,198,187,150,224,132, 88, 18,165, 40,247,222,121, 27, +155,107,167,104,189, 29,214, 99,202,164,164,228,152, 57,158, 45, 24,230, 35,139, 69,228,120,214, 51,155, 47,152,207,122,102,125, +166,143,153,249, 98,228,120, 54, 50, 68,203, 35,207, 89, 9,211, 0,222,211,248,134,181,181,142,201,250,148,126,140, 92,185,118, +221, 46, 78,107, 62, 45,213, 49, 70,198, 56,146, 83,186, 33, 6, 78,133,148, 35,109,104,240,211, 53,154, 2,151, 95,189,204,201, + 98, 32,165,140,212, 51, 97,140,177, 90,208,178,113,218,155, 96,246,201, 58,222,103,133, 18, 17, 3, 84, 53,129,156, 51, 41, 39, + 54,183,118, 8,237, 58,173, 55,200,209, 56, 46,208,170, 95,138,185,208, 72,225,221,111,187,131,231,175,143,188,244,202,101, 84, + 11,135,179,200,124, 88,176,185,185, 65,211, 76,141,203,209,180, 21,176,228,113, 62, 16, 92, 13, 83,169,204,118,170,112, 13, 45, +148,164,164,146, 13,220,147,108,162,212,247, 61,195, 56, 50,140, 35, 41, 69, 82,142,140,217,194,168,170,180,217, 98,184,193, 58, + 78, 49,162,168,175, 9,112,130, 84,240,141, 93,112, 43,157,131,111,248,246,183,191,141, 15,129, 16, 60,151, 46, 95,225,223,254, +209, 31, 16,156, 35, 99,185,235, 78,188, 37,211, 84,184,153,229,187,151,165, 12,106,185,189, 54,209,152,106, 77, 25,180,142,151, + 98,207,157, 53,163, 21, 48, 36, 14, 13,102,127, 20,181,133,115,193,253,165, 41,130, 21,182, 37, 44, 87,135,213,107, 45,238, 70, +192,151,150, 85, 3, 73, 73,213,230,173,171,212, 82, 8, 32, 25,239, 27,123,107,178,233,167,138,228,106, 95,118,166, 57,195,168, +123,214,198, 27,220,196,176,181, 66, 26, 71,158,122,234, 73,118,206,152,138,255,209, 71, 31,225, 27,143,125,211,156, 65,106, 26, +166, 32,212,226, 99, 73, 1, 46,245,162,247, 72,205, 71, 8,178,156,215,152, 34, 57,172, 62, 48,181, 15,198, 90,125,181,110, 79, +147,237,132,178,146,171,101, 76,213,146,186, 92, 77,164, 81,231,208,108, 73, 52,134,151, 21,190,254,248, 55, 89, 44, 22,124,228, + 7, 63,204,223,248,201,191,198,213,247, 95,229,185,239, 60,199,107,151, 46, 49, 95, 44, 12,143,122,250, 12,175,123,221, 93,220, +123,239, 61,244,195,192,167, 63,253,105,190,240,197, 47, 50, 91,204, 42,252, 5, 99,237,122,251,162, 52,143,198,249,118,161,246, +231,246,226,185, 92,234,120, 45, 65,118,203,160, 75,146, 55,202, 78,112,118,169,121, 49,255,183,136,167,241,150, 62,151,213, 68, + 50,118,145, 75,229, 35, 23, 27,213,177, 12,181,177, 75, 65,130, 67,164,173,169,117,133,168, 32,218,224, 72, 68,117,148,232, 80, +146, 61, 96,201, 0,253,174,190, 84,175, 93,124,145,223,250,205,127,197, 45,231,110,161,233, 58, 74, 74,134,182,125,233,101,226, + 48,226, 40, 38,252,241,142, 16,108, 50, 96, 17,128,106, 32, 1, 85, 27, 37, 97,217,231,167,212,252,194, 75,218, 16, 4, 24,172, +194,239,139,218,136, 56, 56,130,115,184, 92,127,239, 70,144,182, 65, 83, 66,138, 71, 66,203, 48,244,182,147,169,130, 62, 31, 60, + 52, 19, 66,202,224,109,247,218, 5, 79, 22, 40, 73,201,222, 87,138,149, 85,175,173,216, 52, 32, 73, 65,178, 99,226, 76,228, 33, +177,128,175,137,127,217, 20,201,206, 57, 98, 1,201, 22,107, 88, 4, 27,159,103,139,194, 20, 47,150, 88,172,138, 43,217,214, 42, + 57,163, 65, 56,165, 13,222,155,112, 10,177, 12,231, 16, 38, 20,236, 2,157,182, 13,125, 46,104,141,140, 28,139, 9, 16, 83,142, +168, 11,120,241,140, 57,162,161,208,228,209, 30,127,245,136,120,139,232, 45,163,101, 70, 39,235,148,154, 38, 27,178, 17,161, 31, + 7, 92,219,144,199,253,218,213, 4, 51, 21,138,195,139,210,117,107, 76,252, 26, 74,164, 65, 25,171, 5, 97,200, 35,154, 28,201, +247,184, 49, 80,230, 61,235,211, 6,137, 45, 40, 76, 39, 83,124,231,105, 82, 33,172,175,177,179,179, 97, 57, 52,197,113,251,173, +215,144, 28, 9, 27,231,120,244,185,215,120,251, 27,206, 18,110,186,151,123,222,250, 38, 62,120,112,192, 35,223,218,101, 60,137, +204,139,141, 5,103,243, 97, 5,108,242,141, 69,253,206, 98, 98, 72,182, 83,183,180, 57,243, 62, 47, 83,180,114, 44, 12,217,252, +235, 27,235, 19, 74,202, 12,201, 10,228,190,207,117, 74, 38, 12, 25,246, 15, 14,145,177,183,119,240, 47,229, 73,159,191,227, 54, +214,143, 35, 71,179, 30, 87, 50,154, 70,174, 29,236,219,187, 85,156, 69,134,170,208, 4, 43, 26,218,181, 53,174,238,238,178,181, +125, 43,139,241,105,134,225,144,147,166,173,209,178, 35, 39,125,207,249, 91,110,102, 51, 77,201, 57,115,114,220, 83, 52, 87,140, +169, 39,165,196, 24, 19, 99, 74, 80, 50, 67,138,228, 69, 98,177,160,146,231,140, 99,222, 56,193, 59,187, 68,138, 23, 58,111,118, + 82,215, 52,148,148,184,253,166, 77,250, 49,162, 57,179,232, 19,147,214,115,254,236, 54,195,152,185,184,123,204, 56,142,156,221, + 62,197,144, 11,141,131,233,218, 58, 47,188,118,196, 15, 62,120, 43,247,255,220,123,249,231,255,250, 97, 94,189,116, 64,104, 3, +185,228, 90,148,234, 42,186, 52, 38,115,227,196,104, 65, 40,203, 20, 48,169,211,131,156,237,119, 16,148, 16, 90,134, 33,213, 84, + 81, 95, 71,200, 70,255,163,192,238,225,156,188, 24,184,247,174,115, 60,243,237, 87,217,153, 58,102,139,136,142, 17, 71, 65,130, + 71,146,226, 92,139,115,137,182,113,164,148,200, 58,226, 75, 13, 46, 41,197, 98,168, 83, 34,250,196, 72,196,101, 67, 48, 47, 29, + 5,133, 66,142,145,164,150, 17,174, 88,183,187,108,168, 28, 14, 95, 65, 62, 62, 44,215,111, 53,243,161,118,198,224,240,106, 74, +110,149,202, 94, 37,179, 56,153,241,240,215,190,102,194,117,236, 25,211,124, 99,194,107,105,140,203,252, 8,136,162,248,202, 75, +137, 53,171, 51, 87,138,154, 83, 87, 83,231,196, 92, 63,222,213,113,184, 84,174,109,205,149,205, 66, 40,150,101, 18,176,207, 53, + 21,187,183,156,138,157,239, 25,154,170, 71, 64, 26,156,119, 53,131,192, 33, 53, 69, 77,202,141,221,185, 22,203, 14,240,217,184, + 6, 34,142,156, 77,108,233, 66, 32, 21, 3,182, 21,117, 55, 26,224,250,179,149, 98,211, 7,239, 92, 77,186,203,168, 10,187,123, +123,124,249, 75, 95,172,207, 8,171,207,212, 83,117, 81, 22, 45,103,133,143,104,101,222, 11, 69,150, 89,244,165,226,112, 45,114, + 55,102, 37,200, 50, 40, 71,151,245, 88,205,130,150,202,207,213, 82,189,159, 38, 36,177,250, 59,160, 75,148,108, 42,164,101,182, +175,111, 42,159, 29,158,121,230, 89, 94,121,245, 50,111,125,219, 91,249,174,251,222,196, 91,191,251,109,188,235,123,222, 85, 71, +128, 6, 67,216,221,223,227, 75,127,246, 23,124,243, 27,223,228,229,151, 95, 54, 65,137,111,237,187,201, 70,185, 43,213, 31,111, +113,194, 30,209,132,214, 17,141,212, 49,141,101,221, 86,112,255, 82,212,166,177, 70, 46, 56,163,102,105, 94,229,223, 22,108,244, +110,242,116,243,100, 87,108,143,253,142,206, 70, 58,182,139,182,184, 69,213,130, 74, 29,169,137,117,174, 86, 65,153, 77, 76, 28, +104, 50,182,176,175, 80, 7, 21, 71,168,158,254,239, 92,120,149, 23, 94,120,181,202, 43,172,255,205,174,198, 7,171, 67, 66, 67, +206,150,192,211, 96,221,139,115,134,119, 20, 41,182,191, 77,118,209, 56,239,144,198,173,114,120,131, 24, 73,171,235, 60, 37,154, +202, 61,147,136,125, 38,121, 43,190,130, 4,208,249,106,164, 9,182, 11,109,170,167,159,166, 88,213,173, 25,117,198, 39,182,135, +200, 42,223, 92,148,113,136, 4,169, 34, 73, 41,168,247,120,133, 44, 5, 87,149,213,102, 3,242,118,145,139,133, 22,168, 4, 19, + 45,134, 2, 93, 64, 7,179,246,164,154, 55,143,100, 59, 72,100, 41,192,179,226,138,250,242,143,174, 64, 18, 22,121,196, 74,172, + 76, 97,249,130, 26, 65, 48,143,121,101,133, 50, 4, 92, 93,179,208,163,193,175,246,140,206,129,208, 0,189, 65,137, 84,241,109, +107,224, 36,132,160, 14,151,148,210, 58,202, 88, 40,193, 98, 15,115, 54, 86, 66, 76,163,117, 37, 62,161,193, 51,246, 51,116, 20, +154, 78,232, 19,136,179, 46,169,145,137,177,181,131,117,153,228,129, 97, 1, 37,137,145,237,162, 39, 28, 11,146,205,146,162, 37, +210, 77, 59,166,147, 83,156,190,229, 13,248, 73,226,165,221, 5,254, 96,228,197,139,135,148, 79, 62, 69,233, 7,154,211,119,243, +208, 59,238,164,164,196, 98, 49,210, 15, 35,135, 71,115, 78,230, 51, 54,215, 54, 45,137,202,219, 14, 50,199,194,152,178,237, 69, + 75,198,239,116, 12,243, 57,139, 49,114, 60,159,145, 74, 97, 28, 19,235,231,207,160,146,153, 95,185,102,137,141, 2,227,152,105, + 26, 79, 30, 22,116,174,144,181, 97,210,118,156,140,209, 38, 24,105, 36,116,167,209,217, 62,253,241, 53, 3,214, 56, 49,171,161, + 78,140,106,166,217,220, 25,216,225,220,105, 97,152,159,176,190,182,193,153,157,211, 28,238, 95,163,196, 30, 39, 66,163,153,197, +201, 9, 99, 60, 3, 18,104,155,192,230,150,103,172,156,255,206, 7, 70,181,162, 36, 21, 69,114,102,136, 35, 89,197,172, 99, 49, +210,167,108,185, 7,177, 48, 14, 61,139,222,214,134, 7,117, 18,225,131,163,233, 60,147,233, 6,211, 46,211, 56,152, 12,137,245, +245,142,115,183,157,231,120, 62,114,249,248, 5, 38,204,184,243,238,187, 57,158, 39,142, 15,118, 17,231, 56,153,245, 92,158,195, + 27,238,191,155,243,183,189,192,229,235,135, 28,204,102,102, 83, 91,145,228,140, 0,182, 44,158, 82,201, 43,109,146, 33,218, 5, +215,216, 89,146,114, 50,222,119, 50,141,143, 43,134, 0,182, 84, 66, 97, 24, 35,136,114, 56,139, 92,221, 61,226,141,119,220,201, +230,230,105,214,166,129,228,231,140,243, 99,200,133,182, 13, 36,201, 56,201, 20,169, 73,100, 21,140,229,155, 96,107,136,172, 68, + 95, 40,157, 18, 82,102,210, 22,178, 70, 98,170, 32,173,146,145, 49,217,245, 80,187,203, 92, 50,213, 79,101,128, 44, 50, 37,217, +148,103, 28,204, 18,236,124, 91,133,176,149, 19, 18, 92,181,120, 86, 31,184,247, 86, 0,215,212,187,214, 45, 61,239,141, 89, 96, +197, 35,132,202, 66,169, 93,104,213,221,148, 98,200,213,160, 30,135,146, 70,179,194,226,155,106,196, 42, 72, 19,240,165, 54, 18, +181,131, 85,231, 41, 37, 35,185, 50,223, 67, 61,203,171,216, 27, 7, 69,146,137,208, 74,229,249,123, 27,241,151, 82,109,125,197, +104,163, 86,146, 44,173,146,102,213, 43,163,105, 40,150,145,171,246,179,214,110, 90,106, 71,111,177,117,214,140,138, 1,181,156, +152, 80, 85,197, 10, 59,167,174, 14, 26, 76,148, 90, 84,170,104,216,192, 99, 53,152,174,126,250, 74,170, 56,103, 39,161, 94,135, + 10, 37, 82, 28,100, 95,239,167,108,211, 98,185,245,174,215,107,168,217,173,127,249, 82,151, 21, 60,190,254,211,215,170, 69,106, +165, 83, 47, 27,117, 38,152,113,185,218,226,124,168,224,251, 90, 73, 52,178,242, 0, 90,138,206, 96,179, 1, 87,167, 65, 42,118, +144,135,250, 0,170, 84, 58, 91, 50, 37, 41,138,211,108,185,227,174,146,190, 42,218,209,156,247,106, 62, 65, 49,194, 78, 17,173, +106,193,229,229,233, 33,184,154,154, 84,247,248, 56, 92,227,241, 44, 61,212, 38,206,146,154, 84, 87,220, 18,161,111,227, 51,253, + 75, 52, 92, 42,124, 95,234,223, 89, 10, 20,103,151, 55, 90, 11, 15, 92, 21,121, 8,222, 99,227,126, 17,139,231,196, 40,109, 5, +173, 66,186,106, 37,245,117,100,163,197,252,167,185,218, 36, 92,221,247, 20, 37,166,140,115, 1, 23,150,190,104, 5, 23,144,162, + 4, 20,223,154,218, 86,139, 89, 55,116, 41,102, 84,136, 99, 49,106,157, 52,248, 54, 88, 92,168, 20,186,214,219, 30,203,190, 61, +156, 91, 30, 68, 85,239,225, 42, 23, 59, 69,203, 53, 54,211, 45,193,133,154, 77,110, 55,158, 21, 51, 75,129, 94, 64,154, 96, 93, +195, 56,146, 83, 77, 92,114, 88, 39, 25, 51, 41, 21,168,249,233,190,138,179,198,148,232,124, 75, 8,181,170,174, 62,220,101, 52, +161,195,198,150,104, 49, 56, 16,169,218, 6, 77, 60, 21, 53,217,136,222,123,198,146,235,115, 42,148, 6, 72,118,201,225,165,250, +150, 75, 21,236,153,141, 79, 48, 1, 31,106,223,143, 5, 22,213,124,226, 38,224, 39, 13,141, 90,209, 18, 87,207,101, 13,165, 78, +245, 3, 35,145,179,226, 93,107,171, 10,169, 66,159, 96,218,135, 89, 78, 16,149, 56,206, 73,163, 29,134,237,250,132, 73, 55,197, + 51,214, 14, 88,112,110,202,164, 85,114,116,248,137,157, 32,101, 24,232,186,134,136,217,150, 38,109, 11,173, 82,134, 68, 39,142, +249, 98, 65, 26, 35, 49,101,142, 23, 11,226, 16,201, 89,233,135, 5,243,177,175,217,211,230, 64,136,243, 25,169, 12, 12, 99, 98, + 28, 18,210,118,148,146, 24,102, 11,130,179, 80, 20, 85,104, 28,180,141,199,183, 13,235,211, 41,109,104, 56, 58,153,113,105,239, + 0,135,240,192, 59,223,195,252,104,193,254,222,101, 66,211,130, 86,251,212, 56,167, 9,129,217, 48, 44,183,139,136,192,198,218, + 41, 78,173,111,112,230,220, 77,236, 31, 70, 14,247,143,232, 26,161,159,237,177,232, 71,214,182,118, 56,123,122,135,180,236,140, + 92,221,141, 22, 97,226, 21,239, 2, 81,133,198,217,228, 33,149, 72,232, 26,200, 70,110, 28,134,136,199,147,114,178, 17,114,178, +223, 47,198,145, 82, 18,125,157, 94,140, 67, 50, 65,221, 95,210, 13,121,103,200,213,249,201, 49,235,157,103,231,236, 45,196,152, +112, 57, 86,177, 89,161,233, 90,214,183, 55,144,172,188,118,121,151,253,107,215, 76,132, 25, 44,179,205,190,251, 58,209, 20, 42, + 35,227, 6,211,163,113,194,250,198, 58, 93,219,209, 15,102,153, 19,215,144, 82,162,241,216,103, 47, 74,202, 6,186,138, 41,147, + 83,225, 39,222,247,122, 62,240,161,239,229,127,254,245,175,113,249,226, 30,157, 79,136,142,220,124,211,205,132,233, 41,156,135, + 92, 19,219, 98,206,214,169,213,164,180, 82,207, 14,154,137,129,113, 74, 38,212,240,158, 62,102,188,154,110, 34,141, 67,117,183, +152,197,212,156, 1,182,123,214, 82,203,232,156, 43, 85, 94,204, 33, 85,125,228, 46, 4,211, 2, 57, 91,179, 73, 13, 4, 19,197, +206, 89, 23, 16, 85,154,198, 89,180,178,232,242,180,193,230,214,216,221, 82,247,232,120,143,215,186, 50,117,178,194,140,248, 80, +239,144,122, 38,160,149,108,234,128, 92, 79,253,128, 77, 86,181,173, 5, 66,169,157,178, 61, 75,193,155,204, 63,215, 49, 63,217, +220, 95,174, 89,130,109, 12,229,139,207,164, 44,140,125,101,157,144,170, 56,116,137, 83,183,251, 98,105,239, 41, 26, 9, 98,100, + 63,173, 46, 33, 89,222,167, 44,143,118,107,244, 86, 86,112,183,252,222,170, 27,162,148,202,137,177,255, 87, 46, 85,202,232,100, +101,135,243, 78, 48,130,131,233, 16, 68,164,230,214, 91, 67,148,163, 18,212,249, 58,150,230,198, 72, 91,106, 10, 80, 77,116, 81, +167,182,148,175, 91,134, 82,189,202,165, 72,229,196, 91,166, 45,197,188,161,150,139, 91,119, 31,169,142, 28,138,128,199,172, 78, +171,196,122,243,120,139, 22, 52, 37,226,210, 65, 88, 61,122, 90, 76,148,224,196,225, 29, 53, 73,200,173,188,182, 57, 11, 18,236, + 66, 75, 37,147,212,196, 5,190,118,176, 32,241, 14,215, 0, 0, 20,218, 73, 68, 65, 84,170,102, 91, 72,163,210, 4, 95,133, 20, +118, 72,250, 10,111,201, 85, 8,129, 19,156, 47,164, 49, 87, 44,174,145,228, 68,177,174,175,122,237, 85,157, 9, 52,176,139, 76, +107,167,173,248,234,215,180,177, 11,181, 42,213,100, 95,156, 15, 30,245, 6,135,113, 8,161, 13,213,254, 34,184,166, 37,136,121, + 68,139,220,120,113,212,149,149, 87,183,100, 65,165,161, 46,178,172,115, 47, 66,227, 90,146, 12,140,165,224, 71, 95,185,211,213, +188,235, 28, 89, 28, 65, 10,237,164,224,104,201, 37, 51,142, 35,226, 19,163, 58,198, 88,240,222, 91,150,178,100, 98, 86, 28,246, +114,250,198,190,239,152, 0, 13,149, 84,151,104,171,101, 72,139,144, 83,182, 93, 24, 66,138,153,166,149,122, 88, 22,124, 18,146, +250,154,107,156,109,191,156,204,238,179,156,254,100, 50,190,109,173, 11,160,144, 72,164, 44,171,140,223,166,117,164, 40, 53,250, +180, 88, 39, 29, 60, 18,132, 60,212,151, 42,216,157,218, 73,139, 15,118,160, 65,187, 66,175,122,231,208, 46, 83,178, 85,255,144, + 44,153,216, 11, 78, 58, 59,100,178,229,178,143,234,136, 57,209,144, 81, 95,208,228,209, 52,214,200, 92,143, 27, 29,190, 49, 33, + 86,206,133, 0,148, 46, 88,170, 93, 82, 92, 87,133, 66, 41,131,247,166,194, 12,182, 90,240,185, 33, 74,162, 9, 45,154, 34,222, +123,114, 82,198, 52, 48,105, 91,196,101,130, 19,202, 56, 16, 51,100, 39,140,243, 26, 73, 89, 50,115,205,134,149,205,137,147,124, + 2,141,189,204, 27,107, 45, 41, 9,139,152,153, 78, 58,110, 93,155,210,199,200, 52, 76,160, 17,250,197, 17,215,119, 71,250, 52, +152,206,226,212,142,137,141,134, 72,210,196,152, 19,113, 54, 99, 46,158,197, 98,198, 48, 24, 98,181, 93, 91,227,230,115,183,115, +112,184, 15, 89,137, 26,233,115,166, 20,232,218,134, 50, 63, 97,126,114, 76, 44, 35,121, 76,230,154, 41,133,105, 19,240, 65,232, +146, 67, 74,166, 79,133, 16, 60,195, 48, 48,157, 78,137,243, 57, 27,107,107,204, 22, 83,252,244, 20,253,193,117, 78,250, 57,131, +102,206,159,221, 97, 18,106, 52,101, 42,117,173, 2,189, 42, 90,162,113, 20, 80, 82,170, 19,179,122,226, 59,231, 80,231, 73, 5, +218, 73, 71,147,215, 76, 9,189, 97,205, 65, 83,109, 64, 57,103,163, 48,166,145, 62,141, 44,134, 66, 31, 45,109, 48, 70,152,208, + 49,198,204,213, 75, 23, 1, 8,161, 49,231,136,115,104, 63,114,112,112,204,100,210, 17,164,112,122,103,157,146, 51,167,166, 19, +230,163,114,120,116, 72,206,229, 70,183,236,106, 36,180, 80,207, 75,165,159,155, 99, 38,139,224,125, 75,137, 61, 94,148,132,161, +182,189,247,248,188, 84, 57,103,156, 40,143, 62,183,199,173,119, 94,226, 3,111,217,230, 79,246,175,176,123,216,179,179, 57,193, +183,141,133,224, 20,143, 72,131,232,136, 83, 35,179,133,224, 24,115, 66,147,160, 65,113,165,135, 88,181, 2, 1,138,120, 66,168, +215,131, 40,205,100, 98, 90,169,170, 5, 16, 45,164,202, 3,208,146,108,236,171,182, 99,207, 37,211,148,101,180,104,237,176,221, +178,145, 74,230, 74, 72,182, 46,213,104,211, 84,231, 60,131,247,136,243,184,198,156, 84,109,229,225, 75, 48, 86,135,137,132, 13, +122,102,205, 82, 37,212,228,100,147,204, 98,103,212, 18, 97,236, 48, 53,187, 57,126, 12, 91, 46,165, 16,154, 64, 82,243,111, 75, + 49,166,138,136,161,174, 71,117,248, 2,197, 27,168, 39, 87, 45,150,195,206,216, 54,216, 5,171,209,190, 47,231,129,100,211,166, + 82,177,164,190,170,223,139,164, 21, 70,221, 9, 53, 22,216, 44,125, 86,184, 88,118, 61, 85,120,238,185, 49,189,241, 53,230, 60, +217, 56,192, 86, 41, 42,104,109,100,140,164,104,154,162,198,172, 8, 21,180, 6, 69,204,129, 36, 62,212, 96,181, 42, 88, 14,166, +216, 15,140,182, 39,147,154,219,237,151,163,118,150,221,250, 13, 24, 11,222, 33,206,118, 56,185,254,165,169,142, 73,197,137,141, + 54,165, 80,138, 91,229,245,106,162,178,189,125,253, 96, 44,204,194, 42,100,227,165, 11,201,210,236,188,171,212,165,140, 86,225, +147,137, 12,156,237, 89,168,149,236, 56, 2, 38,220, 42,152, 24,194,173,194,101,170,192,219,217,216, 29, 41,120, 53,234, 90, 42, +224,130, 93,146,146, 87,155,249, 42,104, 83, 52, 91, 16,196,234,119,174,213,149,212,208,190, 37,167, 33, 47, 35, 10, 75,169,161, + 18, 86,108,100, 92, 13, 10,169,147, 12, 23,106,177, 96,163, 93,173, 81,155,182, 19,113, 52, 82,137, 89,154, 80,103,157,127,240, +214,121,151, 80, 39, 29, 90,193,184,173, 77, 72,164, 20,171, 52,179, 7,151,137,154,204,251, 45,166, 54,117, 94,170,162,211, 17, +213, 44, 25, 62, 56,188, 56,178, 4,124, 72,172, 5, 75, 79, 11, 57, 87,186,159,169,197, 29, 82,137, 92, 85, 69, 89, 28, 42,137, + 98, 99, 24, 20,165, 9, 16, 90, 33,101,131, 75, 4,103, 15,113, 66,160,238,210, 74, 81,114, 31,173, 67, 17, 87, 33, 80,222, 86, + 17,154,160, 56, 74, 20,156, 87,219,105, 97,207, 85, 8,185,162,126, 5, 52,145, 84,144, 12,193, 9,169,216,224, 93,189,181,246, +185,140,203,122,182, 82,166, 4,200, 70,167,243,172, 80,157,193,217,222, 51,151, 82,213,179, 74,201,208,250, 14,215, 20, 84, 35, +154,237,192, 80, 6, 50, 82, 87, 52, 86,108, 74, 80,164, 20,210,201, 64,108,172, 35,241,189,137,235, 18,153, 17, 59,124,130, 19, + 91,101, 8, 12,149, 15, 32,174, 62, 7,125,193,235, 82,203,106,227, 54,157,180, 53, 47,217,148,180, 57,101, 74,227, 25,227, 2, + 34,182,163,246, 86,164,206,147,121,228,139, 43,117, 82,210,217, 94, 51, 37, 74, 54,100,165, 43, 86,224, 30,159, 44,104,138, 35, + 4, 97, 22,204,154,227,101,139,230, 84, 15, 57,144,138,167,164, 1,141, 16, 93, 66, 93, 98,130,194,218, 6, 59, 56,250,249, 17, +243,217, 49, 49,143, 12, 99,228,234,238, 53, 90,103,246,156,101,241, 45,128, 15,129,131,227, 19,139,149, 77, 17,239,132,214, 57, +214, 26, 79,104,108,239,217,116,158, 56, 42, 62,219,206, 89,196,178, 11, 22,253,192,233,141,211,184,114,204,236,228,184,118,182, +142,237,181,134, 51, 59, 19,198,193,186,185,226,133,109, 87, 8, 69, 25,164, 49, 43,162, 90,186, 89, 78,150,196, 22,139, 89, 82, +155,154,105,144, 99, 33, 82, 44,231, 94, 60,206,181,164,104, 35,121, 23, 60,234, 45,197,208,249,204,154,179, 73, 79, 78,150,133, +222,224, 24,116, 36,245, 61,177, 31, 76,104,216, 47, 88, 44, 70,134, 33,146,115,102, 44, 54,154,110, 66, 75,104,167, 21, 66, 19, +216,156, 40,211,206,213, 96, 24,179,202,197,148, 41,185,112,211,214, 58, 27, 91,155, 38,198, 28, 7,114, 44,244, 57,211,231,129, +152, 18,234,171,234, 27,101, 77, 28,190,109,136,189, 21,146,147,182, 97,127, 46,252,217,195, 23,248,165,191,243, 30,222,247,238, +187,249,103,255,226, 79,121,101,247,152,201, 36,160,174, 37,141, 22, 30, 80,162,173, 2, 27,241, 20,245,102, 37,245, 90, 85,226, + 80, 58,129,209,242, 61,172,241,177,243, 71,156, 66, 22, 27, 56,133,134, 16, 2, 13,129, 84,215,152, 90,179, 34,164,158, 21, 41, +231, 26, 73, 91, 89, 11,197,166,138, 49,219,229,239,150, 81,113,197,138,123, 19, 98,214,118, 80, 19, 37,143,100,129, 40,174,142, +176,221,202,126,103,147,222,132,215, 96,196, 82,176,148, 61, 49, 81, 93,201,102,111,148, 32,117, 36,109, 83, 22, 19,197, 89,195, +153,170,205,218, 73, 38,105,192,167, 92, 1,102,101,165,122,103, 57, 53, 13,118,239,217, 57, 14,131, 42,196,100,147,219, 96, 8, + 92,231,151, 77,162, 77,210, 74, 37, 29,221, 16,221,107, 69,125,187,122, 83, 20, 84,109,218, 96,218, 4,197,235, 82, 60,103,218, +143, 92,245,105,230,216,180,201,216, 82,223, 32,170, 6,224, 18, 59,215,199, 74, 95, 21,196,166,210, 90, 12, 23, 87,106,209, 18, +108, 69,234,235, 42, 58,168,115, 43, 78,175,253,189,193, 46,142, 37,128,160,142,196,109,143, 80,208, 98,227, 57,138,189, 56, 22, +104, 86,187, 93,150,225, 47, 55, 18,223,108,199,238,173,219,207,185, 6,187,152,210, 89,150, 57,176,206,118, 57, 82, 74,197,227, + 53,248,106,109, 2,235,210,195,114,140,231,189,125,105,174, 1,239,104,196,118,169, 13, 14, 41,150, 73,171,181,114,211,165,226, +187,142,249,197, 87,105,248,242,139,173, 1,243,170, 3,174,216,101,109,202,115, 27, 11,175,226, 20,139,174, 60,251,213,201,129, + 52,245,178,119,185,142,130, 50, 74,180, 15,222,155, 38, 65, 42, 99, 89,235,192,189,134, 60, 91,192, 10, 53, 98,216, 43,141,107, +112, 65,107,183,234, 73,106, 66, 45,219, 75, 47,173,106,246,194,153, 72,211, 4, 60, 90,108,221, 80, 92, 64,146,174, 46, 85,177, +254, 23,241, 66, 88, 74, 31, 86,168,222,101,161, 96, 21,179,132, 66,147, 29,177,220, 32,193,213,111,145,152, 76,241, 90,212, 94, + 98,231, 2, 67, 46,196,190,106,233,157,167,109,140, 63,223,134, 58,102, 19,101,158, 99,205, 9,142, 20, 53, 60,108, 78, 54,250, + 45, 1,178, 88, 53, 47,201, 84,233,173, 56,130,179,233,136, 3, 82, 99,197,128,170, 35,101, 64,172,232, 19,231,236, 80, 80,143, + 87, 71,104,160, 79,222,112,214,212,195, 73, 51,181,196, 51, 62,187, 75,104, 91,253,202, 57, 35,193,227, 52,153, 37,179,215,250, +121, 26,206,115, 57, 85,113, 54,207,195, 5, 27, 9,118,117, 39, 95,162,109,202, 18, 66, 95, 82,133,217, 22, 68, 38,181,131,177, +117,143,185, 36, 44,128, 65,124,180, 92,250,122,128, 52, 98,128, 15,169,163,124,231, 3, 49, 25,108, 37, 21,177,159, 81, 32, 69, +203,151, 75, 14, 75,249, 43,138, 47, 25, 72,168, 38,242,208, 51, 38, 27, 13,138,179,130,217,103, 37, 21, 27, 45,186,193, 83,242, +220,118,173, 62,152, 8,177, 20, 28, 35, 37, 37,138, 6,186, 16,112, 14, 22,197,138, 70,145,192,186, 59,195,198,198, 22,125, 74, +104, 73,204,143, 79,200,121, 96, 49, 38,154,198, 44,113, 33,120,154,166, 97,119,111,159,146, 35,107, 19,207,180, 11, 56, 23,152, + 54,134, 15,238, 99,180,206,211, 53,244,140,148,108,130,165,147,217,156,166, 13,156, 46,145, 46,100,118,175,237,161, 57,146, 83, +100,251,220, 89,242,116,131,227,217, 49, 82, 10,147, 83, 29,167, 78,173,161,163,167, 35, 49,245, 29,147,105,192,183,230, 60, 48, +113, 78, 65,218, 27, 19,190, 54,192, 34,141,228,226, 9,210,144,211, 64, 44,153,152, 70, 14,143, 70,102, 39, 61, 89, 6, 83, 31, +139, 88,167,164, 14, 45, 29,237,116, 74,167,137,245, 86, 9, 59, 21,104, 83,122,114,206,184,177, 48,166,129,163,249,156, 49,142, +164, 81, 25,198,194, 34, 42,195, 48, 34,206,130,101,156,111,152,116,245,204,114, 66, 19,132,157,205,117,214, 54,183,141,213,144, +147,173,130, 74,230,181,235,251,188,122,241,114,205, 66, 55,209, 85,159, 19,231,207,238,208, 53, 13,254,100,206,250,198, 26,184, +142, 75,215,103, 92,218, 61,225, 99, 63,246,195, 76,166,103,249,213,223,250, 12,126,109, 27,130, 97,136, 83, 52, 38,125, 63,212, +192, 44, 95,136,163, 81, 29, 93, 41,118,102,131,141,106,197,200,103,193,153, 31,223,139,173, 11,125,181,136,165,229,184, 91,108, + 28,236, 93,107, 93,179,128,102, 71,231,212, 44,199,226,173,123,198, 4,213,169,138,198,180,234, 57,146, 38, 52, 89,215,169,229, +198,170,211, 50,202, 21,239,205,103,190, 28,235,199, 58,163,196,153,239, 93,106,144, 86,211, 52,248, 58,177,117,174,174,171,181, +216, 90, 75,151,219,109, 59, 95, 69, 28, 41, 69, 60, 66,235, 61,189, 83, 19, 86,146,113, 14,123, 14,107, 48,153,138,224, 83, 5, + 25,137,253,254, 36,147, 90,107,168,171,225,148,140, 91, 47,206,254,101,245,236, 21,234, 36,184,152,232, 78,156, 71,178,153,213, + 20,200,110,233, 16,178,105, 67, 34,155,194, 31, 76, 20,156, 11,161,166,129,170,203, 21,119,108,200,113,245, 5,141, 84,151,145, + 53, 52,174, 10,216,109, 53, 90,181, 75,181,121, 21, 49,209, 97,201, 74, 44, 66,112,222,219,151,206,242,206, 17, 59,144,196,164, +136,141,171, 96, 2,164, 86,100, 74,241,213, 61, 86, 71, 48,203, 93,115,169, 99,124, 17,103, 59, 98, 48,181, 56,106,225,240, 62, + 84, 68,171, 17,162, 76, 25, 10, 46,203,202,211,237,138, 61, 88,136,172, 38, 6, 78,188,137,176, 82,164, 36,235,222,139,100,139, + 66, 21,197,249,182, 94,210,163, 65,245,157, 9,234,156,247,148,100,129, 46,234, 66,197,214, 22, 84,171,253,161,140,171, 15, 74, + 5,188,214,191,119, 73,238,169,251, 17,113,174, 90,206,212, 10, 25,139, 37,178,162,197,217,129,175,130,137,252,178,214,220, 98, +181,214, 25,251,115,156, 15, 22, 85, 95, 59,254,152, 11,174, 30,192, 89,160, 75,178, 74, 14,203,154, 8,141,162, 99,162, 56, 83, + 56, 23,103,179, 14,201, 2,161,179, 18, 86, 70,252,210,168,214, 77,237,191, 43, 6, 67,132, 10, 71, 17, 99,147, 91, 88,200,136, +250,174, 38,234,217, 37,228,162,146, 27,236,146,213,106,231,145,108,104,215,108, 99, 39, 45, 22,185, 26, 28, 44,162, 34, 4, 26, + 47,149,210,103,133, 93, 87,195, 22,114,174,221, 48,174,114,246,141,100, 21,196,108, 70, 41,103,196, 57,218,224, 45,238,180,113, +248, 42,114,201, 20, 82,117,121,122, 49,113, 74, 94,238,177,188,160,161,144,146, 64, 95, 40, 19, 79,118,130,247,169,170, 78, 13, +164,227,196,236,108, 77,129, 62, 23,154, 44,166, 90, 87,207, 88, 76, 84,168,222,226, 70,157,218, 37,232,156,224, 75,160, 31, 19, +184,140,248, 14,209, 6, 29, 51, 89, 50,243, 26,214, 48,169, 95,244, 64, 66,188, 71,179, 89,233, 82, 28, 43,183,188, 37,248, 2, +154,241, 98,130, 46, 84,151,225,137, 22, 38, 82,113,204, 82,215, 56,185,134,249, 40, 2,121,180,233, 78,201,132, 73,160,100,208, + 92,192, 5,130, 55, 76,177,211, 14,193,124,201,217,165,154,232,149,136, 37, 18,199, 66, 86, 99, 68,219,123, 87,104, 90,155,164, +180,106,164,200, 28, 99,157, 90,100, 22, 37, 17,124,174, 26, 12,111,154,139,152,106,202,157,233, 53,214,167,155,140,100, 72,166, +121,216,222, 57,197,154, 70,242,152, 88,156,156,172,222,167,152, 96,218, 65,170, 19,211, 18, 51, 49,143,108,174, 79,201, 76, 57, +153,205,107, 17,108,237,215, 56,140,248,110,194,209,252, 21, 58,151,241,206,115,120,148, 89, 60,119, 17,209, 76, 27, 2, 71,253, +130,227,131, 14,130,195, 75,166, 33, 32,141,199,139,195,133, 22, 21, 97,125,179, 65,143, 76, 33, 15,129, 38, 52, 8, 13,126, 18, +200,162, 16, 90,156, 10, 27,205,148,172, 61,161,157,226,137, 38,190, 74, 74, 31,163, 41,135,221,210, 82, 90, 61,238,146, 76,172, + 25, 54,112,161,176, 54, 41,180, 34,132,110,100,109,205,132,167, 7,253,192,222,254, 17, 99, 63,162, 37, 17, 75,102, 28,109,247, +154, 82,102, 28, 51,197,195, 65,127, 76,184, 62,199, 53,129,105,219,178,189, 97,163,243,145,166,198,185, 42,222, 43, 94,140, 27, +191,125,243,237, 28,204, 18,177, 92, 67, 37,160, 41,211,199,196,167,191,250, 52,119,190,245, 33,238,125,224, 1,254,122, 9,124, +226, 83, 79, 33, 26, 57,115,182, 53, 97, 89,201,140,243,194, 32,145,152, 51,101,176,243, 56,151, 76, 42,144, 98,164,100, 71,198, + 87,125, 14,140,217,147,179, 48,105,237,188, 78,117,215,219, 56, 76,215,226, 12, 2, 84, 74,229, 24,212, 65,154,111,166, 6, 84, +201, 74,240, 22, 93,236, 75,107,235, 72, 64,187,140,138, 90, 92,183, 26,178, 54, 39,227, 6,148,100,142,129, 36, 74,201, 54,161, + 80,205, 72,177, 28, 15, 91, 85,216,236, 92,213, 49, 46,236,210,247,193, 86,156, 46,217, 10,215, 55, 2,165,193, 73,194,183, 54, +213,243,171,148, 15,123,215, 68,151, 22, 50, 3, 6, 57, 64, 74, 38,136, 77, 7, 20,197, 21,143,115,230, 14,177,181,137, 61,196, + 6,228, 89,250,192,235,185, 46,230,148, 50,113,191, 86,139,122,205,195,168,235,100,239, 60, 78, 13, 72, 43,150, 79,100, 66,242, +154, 75, 82, 42,126, 47,166,186, 79,207, 22,241, 45, 78, 8, 89,136,165, 78, 15,140,194, 98, 66,218, 26,160, 33, 85, 57,239,196, +217,228,118,185,230,175,211,229,214, 9,114,238,246, 55,104,235,116,165,212,179, 29,144, 86,168,124,133,151, 84, 10,142, 23,219, +111,228, 85, 74, 89,174,119,191,175, 54, 33, 27,125,218, 31, 83, 42, 76,224, 70,231,110,210,124, 27,203,216, 46,195,155, 32, 75, +179,153,235,169, 10, 64,155, 35,152,117,209, 9, 90, 71,240,138, 89,209,124, 17, 8,222, 14,122,172,251,137,209,168, 82,246,225, +218, 65,105, 30,119,169,254, 71, 95,139,143,234,232,211,202,224, 93,238,112,212,118, 88,158,170,160, 22,187, 40,114,205,132, 19, +105,240, 90,139,154,229,128, 94,108,164, 98,202,247, 37, 88,160,170,251, 5,235, 62, 75,169, 75, 95, 91, 39,248,101,141,229,188, + 61, 52,206,255,255, 77,157, 75,139, 37, 69, 16,133, 79, 68,100,214,189,211,190, 6,231,225,204,232,128, 8, 34,184, 18,183,238, +252,213,254, 1,119,110,213,133, 8,186, 17,193,141,142, 76,223,170,138,204, 8, 23, 39,170,218, 85, 67,211,208,175,170,204,120, +156,243, 29, 10,166,160, 24,226, 53, 94, 21, 38, 20, 73, 98, 14,175,157, 84, 71,111, 2,175,127,174,246,165,252,138,173,148,249, +220, 17, 29,213,247,169, 78,146,194, 14, 6, 5,100, 83, 38,105, 88, 9,184, 68, 41, 80, 75, 35, 1, 7,172, 65, 66,216, 37,198, +118, 78, 23,178,188,145, 49,202,174, 82,104, 88,105,165, 32, 69,199,242,168, 67,179, 35,125, 32, 45, 17, 42, 72, 95, 57,109, 17, +218,243,182,122,150,186, 4, 55, 36,141, 68, 59, 40,199, 87, 57,248, 51,183, 54,234, 91, 43,181,142, 98, 64, 36, 54,103, 72,202, + 16,238,160,150, 43, 93, 26,126,207,203, 98,233,236, 36,229,216,109,178,109, 97, 21, 95, 79, 46,145,152, 15,200, 98, 53, 57,115, + 14,124, 4,102, 52, 64,137, 7,102, 65,211, 8,223,176,134,244, 32,121,203, 26, 36, 43, 20, 99, 80,254,216,170, 27,154, 57,177, + 40,213,190, 3, 2,100, 67,196, 64,107, 70,142,128, 4,154, 49,101, 44,102, 98, 42, 99, 68,187, 5, 38, 40, 42,186,154,192, 35, +152,197, 93,194,192, 24, 65, 4,170,112, 38, 52, 51, 96, 40,154,151, 37,196,147,190,233, 57,128, 14, 10,196, 60, 79, 34,149, 4, +139,117, 15,118, 37,164,193, 49, 50,118,228,113,152,213,187, 32,129, 17, 43, 26, 26,139,128,224,251, 12,229,247, 9,163,240,210, + 55,199,182,222, 48, 99,167,214, 98,225,225, 57,198,196, 85, 3,210, 30,225,182, 15,228,220,185,178,177,134, 23, 47,158,226,238, +238, 49,166, 7,110,111,254,196,239,127,252,133,155, 3, 47,158,127,132, 71,239,189, 3, 76,197,229,218,145,166,144, 80, 44,166, +208, 46, 88,132,129, 62,189, 84,214,210, 13,125,161,200,113, 1, 69,141,104, 64, 95,174,184,235,244,105,239,201, 78, 85, 67,177, + 23,175, 32,125, 69,107,236,250,210,121,102,141, 57,207,206,175, 13,224, 30, 0,116,192, 60,225, 30,240,216,145, 38,167,182, 72, + 77,177, 99,208,159,126,227,185, 36, 25,240,233,136, 16, 12, 15,108,251,141, 35,247, 49,176,110, 43, 54,103,104, 78,235,132,170, +220,223,110,216,239,111, 96,201,108,104, 6, 60,254,224,125, 92,222,125,138,125,191,135, 97,240,153, 58,210,234, 0, 60,121,249, + 2, 95,126,241, 26,159,125,250, 10, 63,253,252, 27,222,252,253, 15,150, 75,103,170,226,164,173, 43,149, 30,248,136, 64, 95, 26, +238,218, 35,160, 37,214,109,197, 92,189, 4,135, 59,223, 53,101,179, 54,157, 92,122,215, 6,247, 1, 76,131, 87, 81, 46,214, 49, +247,114,163,244, 36,179, 36,146,145, 55, 66, 33, 93,231, 6, 25, 30, 44, 8, 99,140, 18, 45,179, 25,202,242,200,107,146,111,130, + 3,104, 22,156, 94,248, 44, 97,116, 4, 11,131, 18,101, 19,106, 83,196,184, 26,211,103,204, 83,175, 64,191,248, 65,158,235, 21, +112,194,102,139,206, 37,173, 0, 50,186, 11,154,150,230, 38,153,209, 17,189, 82,252,146,202,243, 17, 15, 65, 42, 25,138,136, 9, + 45, 40,137,227, 32,144, 22, 42,191,108,175,162,198,162, 82,178,142,220,226,229, 43,155,165,204,242,150,151,123,152, 22,248, 26, +233, 11, 67,106,172,160, 69, 25, 65,187,175, 82,220,141, 6,152, 20, 1,180, 36,224,113, 82, 71, 42,122, 91,128,156, 92,127,165, + 0,242,252,245,103,217, 15,212, 30,180,186,204,146,106, 41, 21,229,140, 48, 52,138,204,216, 62,148, 23,139, 63,136,150,111, 48, +165, 2, 35,106,212,130,164,245, 65,114,224, 48,124, 20,194,134, 31, 75, 68, 32,101, 91, 35, 30,190, 50,144, 85,207,172,117,126, +221,177,219,160,226, 93, 0,132,105,197,208, 81,201, 42,162,116, 97, 24, 71,238,166, 28, 65, 31,126, 75, 42, 39,216,165, 74,240, + 79,147,149,156,131,170,122,154, 54, 70, 78,202, 1,224,121,200,244,157, 17, 36,157, 85, 42, 78,166,210,210,102,117, 83,228,172, + 24, 79,150, 10,140,205, 27,188,116,149, 42,109,148,173, 65,117,129, 40, 9, 68,170,244,182,241,240,101,241, 65,155, 28,125,166, + 99, 38,154,118,168, 82, 16,168, 10,160, 53,216, 89,229, 38,250,113,241,218,133,157, 97, 58,125,225,194,106, 53,208,208,154, 34, +125,175, 64, 70,197,144, 9,193, 66, 15,111,173, 36, 18, 29,211, 55,168, 68,177,180,219,131, 24,228,172, 20, 5, 37,241,168,169, + 5, 47, 75, 51,131,161,115, 12, 39, 2,109, 87,104, 4, 34,189, 38, 65,220, 97, 91, 85,153,138,168,152, 92,242, 13, 22, 89, 32, +145,216,146, 43, 25, 65,226,178, 24,124,196,233,141,190, 52,190,176, 35, 2, 22,137,222, 13, 35, 20, 57,248, 91,181, 14,126,110, + 70,173,126, 88, 56,101, 38, 53, 24, 57, 41,104,116,190, 8,158,252,123,170, 52,104, 35,169,110, 34, 49,149,207,242,184,119,116, +105,240,218,133, 55, 17,116, 3,246, 16,180, 34,235, 29,129, 33,237, 16, 9, 5, 57,250,172,191, 72, 78, 51,101, 58,215, 28, 19, +150, 64,191,112,188, 56,182,193,181, 73, 5, 78,112, 4, 42, 20,125,166, 66, 26, 57,250, 45, 73,181,226,122,108, 47,251, 17,159, + 25,170, 99,121, 96, 70, 18, 92,132,166,152,251,198, 78, 41,152,225,189,198, 10,137,138,107,172,125,107,179, 14,157, 66, 30,120, + 30, 43, 48,250,172,103,240,125, 60,231, 82,166, 76, 1, 27, 1, 91, 20, 97,128,140,192,186, 13, 24, 38,145,186, 49, 32, 50, 17, +131,100, 51, 31, 94, 72,105,224,237,253,142,102, 13,159,188,122,205, 93,110,118,124,251,205, 87,248,245,151, 31,241,221,247, 63, +224,195,103, 31,227,114,119, 69, 14,170,166, 69, 5, 54, 19,166, 29, 48, 66,113, 76, 27,236,194,194,185, 47, 68,159,154, 24, 46, + 11, 17,182, 98,156,234,221, 93, 47,212,128,216, 21, 88, 58,252,237,134,136,149, 16,146, 69,208, 50,176, 72, 98, 15, 67, 88,194, + 60,177,152,226,182, 79,226,178,141,221,105, 43,245,122,143, 6, 55, 94,202,195, 57, 65,139,160, 16, 48,110,117,248,254,239, 98, + 72,153, 24,251,138, 8, 96, 12, 96, 93,223, 98,250,196,190, 77,184,111,248,119,223, 24,219,234,142,183,235, 13,155, 15, 54, 21, +203, 21, 51, 8, 29,233,151,142,222, 13, 10,171, 9, 90, 98,236,142,125, 50, 64,234,235,207, 95,226,201,211,103, 12, 21,154,206, +204,251,203, 5,161, 19,195, 3,178, 57, 90, 87, 76, 91, 48, 66, 17,219, 14,228, 32, 67,220, 12,195, 3, 41,137, 46,197,198, 7, + 65, 99,185, 57,167, 77,197, 83,245, 32,142, 84, 58, 67,181,124,212,121, 39,134, 61,192, 20, 64, 34,213,224,147,194,186, 0,233, +117, 82,209,161, 82,241, 48, 86,205,222, 60, 8,165,117,246, 11,120,121, 19, 75, 59,153,107, 49,179,168,160,147,133, 56, 33, 21, +149,246, 29,213,107,242,121,214, 0,208,137,133,205,164, 83,202, 14,135,185,234,185,186,109,198,119, 88, 68, 79, 49,114, 36, 96, + 89,120,107, 86,229,216,133,151,242,220,198,131,147, 73,170,161, 19, 54, 5, 40,235,154,158, 1,101,165,164,175,112, 45,137, 35, +222,249, 48,106,101, 53,181, 21, 13, 94, 93,182,130,139,243, 84,174,142,219, 65,116, 85, 78,141,180, 26, 66, 20, 13, 50,148,239, + 2,202,153,149, 73,180,114, 72, 32,162,225, 63,143, 52,168,208, 66, 34,213,237, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; From 802998b97133b77ffc110b33ff82f708d1259340 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 26 Apr 2012 17:51:41 +0000 Subject: [PATCH 117/158] And for sure we're in release stage now! --- source/blender/blenkernel/BKE_blender.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 507200802f4..5afe27f7be3 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -51,7 +51,7 @@ extern "C" { /* can be left blank, otherwise a,b,c... etc with no quotes */ #define BLENDER_VERSION_CHAR /* alpha/beta/rc/release, docs use this */ -#define BLENDER_VERSION_CYCLE rc +#define BLENDER_VERSION_CYCLE release extern char versionstr[]; /* from blender.c */ From b801c6098a346c49eb3b83003aff41a63644b38a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 17:56:21 +0000 Subject: [PATCH 118/158] remove pthread include for windows, after this was added I couldn't build anymore with mingw, gave and error with ./source/icons/winblender.rc --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cc3636239dc..74f951fafa0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1154,9 +1154,6 @@ elseif(WIN32) endif() - # used in many places so include globally, like OpenGL - blender_include_dirs("${PTHREADS_INCLUDE_DIRS}") - elseif(APPLE) if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5") From 458600d6927775c1949b3d7b43f8d9e9e6f0a930 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 18:07:15 +0000 Subject: [PATCH 119/158] don't have spaces in idnames, confuses py types: http://www.blender.org/documentation/blender_python_api_2_62_4/bpy.types.Whole%20Character.html --- release/scripts/startup/keyingsets_builtins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/startup/keyingsets_builtins.py b/release/scripts/startup/keyingsets_builtins.py index 3527ece2bd3..b7693880f9c 100644 --- a/release/scripts/startup/keyingsets_builtins.py +++ b/release/scripts/startup/keyingsets_builtins.py @@ -45,7 +45,7 @@ ANIM_KS_ROTATION_ID = "Rotation" ANIM_KS_SCALING_ID = "Scaling" ANIM_KS_LOC_ROT_SCALE_ID = "LocRotScale" ANIM_KS_AVAILABLE_ID = "Available" -ANIM_KS_WHOLE_CHARACTER_ID = "Whole Character" +ANIM_KS_WHOLE_CHARACTER_ID = "WholeCharacter" # Location From 6e2cff8c9fa53bb3adf9fb4f8d7502c744288c81 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 26 Apr 2012 18:18:09 +0000 Subject: [PATCH 120/158] rename WholeCharacter in C too, add pthreads include back for msvc which needs it. --- CMakeLists.txt | 3 +++ source/blender/editors/armature/poselib.c | 2 +- source/blender/editors/include/ED_keyframing.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74f951fafa0..7e9e50fa8ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1001,6 +1001,9 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") + # used in many places so include globally, like OpenGL + blender_include_dirs("${PTHREADS_INCLUDE_DIRS}") + elseif(CMAKE_COMPILER_IS_GNUCC) # keep GCC specific stuff here set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi") diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 381423182f9..2799d7994bc 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -472,7 +472,7 @@ static int poselib_add_exec (bContext *C, wmOperator *op) BLI_uniquename(&act->markers, marker, "Pose", '.', offsetof(TimeMarker, name), sizeof(marker->name)); /* use Keying Set to determine what to store for the pose */ - // FIXME: in the past, the Keying Set respected selections (LocRotScale), but the current one doesn't (Whole Character) + // FIXME: in the past, the Keying Set respected selections (LocRotScale), but the current one doesn't (WholeCharacter) // so perhaps we need either a new Keying Set, or just to add overrides here... ANIM_apply_keyingset(C, NULL, act, ks, MODIFYKEY_MODE_INSERT, (float)frame); diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index a70be6dfb54..afb14191797 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -323,7 +323,7 @@ int ED_autokeyframe_pchan(struct bContext *C, struct Scene *scene, struct Object #define ANIM_KS_SCALING_ID "Scaling" #define ANIM_KS_LOC_ROT_SCALE_ID "LocRotScale" #define ANIM_KS_AVAILABLE_ID "Available" -#define ANIM_KS_WHOLE_CHARACTER_ID "Whole Character" +#define ANIM_KS_WHOLE_CHARACTER_ID "WholeCharacter" #ifdef __cplusplus } From 2700064c0a8073e7f4d37364e768540d5819322a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Apr 2012 02:29:37 +0000 Subject: [PATCH 121/158] cleanup msvc build flags, many were included more than once. also make use of C_WARNINGS, CXX_WARNINGS as other platforms do. --- CMakeLists.txt | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e9e50fa8ed..d216e617548 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -802,33 +802,35 @@ elseif(WIN32) endif() if(MSVC) - if(CMAKE_CL_64) - set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) - else() - set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) - endif() + set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB) - set(CMAKE_CXX_FLAGS "/nologo /J /W1 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013" CACHE STRING "MSVC MT C++ flags " FORCE) - set(CMAKE_C_FLAGS "/nologo /J /W1 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013 /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE) + set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE) + set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE) if(CMAKE_CL_64) - set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE) else() - set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE) endif() - set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE) - set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE) - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE) if(CMAKE_CL_64) - set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE) else() - set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE) endif() - set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE) - set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE) - set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE) + set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE) + + # most msvc warnings are C & C++ + set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013") + set(C_WARNINGS "${_WARNINGS}") + set(CXX_WARNINGS "${_WARNINGS}") + unset(_WARNINGS) if(WITH_INTERNATIONAL) set(GETTEXT ${LIBDIR}/gettext) From bb4942c9203602550968b27fa0ad29a911ae1ff1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Apr 2012 03:01:27 +0000 Subject: [PATCH 122/158] code cleanup: quiet msvc warnings --- CMakeLists.txt | 2 +- source/blender/avi/intern/avi.c | 10 +++++----- source/blender/blenkernel/intern/pointcache.c | 2 +- source/blender/blenlib/intern/fileops.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d216e617548..6a9ca35cd05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -827,7 +827,7 @@ elseif(WIN32) set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE) # most msvc warnings are C & C++ - set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013") + set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013") set(C_WARNINGS "${_WARNINGS}") set(CXX_WARNINGS "${_WARNINGS}") unset(_WARNINGS) diff --git a/source/blender/avi/intern/avi.c b/source/blender/avi/intern/avi.c index 59ce879520e..2011ced96d9 100644 --- a/source/blender/avi/intern/avi.c +++ b/source/blender/avi/intern/avi.c @@ -1002,7 +1002,7 @@ AviError AVI_write_frame (AviMovie *movie, int frame_num, ...) movie->entries[frame_num * (movie->header->Streams+1) + stream + 1].ChunkId = chunk.fcc; movie->entries[frame_num * (movie->header->Streams+1) + stream + 1].Flags = AVIIF_KEYFRAME; - movie->entries[frame_num * (movie->header->Streams+1) + stream + 1].Offset = ftell(movie->fp)-12L-movie->movi_offset; + movie->entries[frame_num * (movie->header->Streams+1) + stream + 1].Offset = (int)(ftell(movie->fp) - 12L - movie->movi_offset); movie->entries[frame_num * (movie->header->Streams+1) + stream + 1].Size = chunk.size; /* Write the chunk */ @@ -1024,8 +1024,8 @@ AviError AVI_write_frame (AviMovie *movie, int frame_num, ...) movie->entries[frame_num * (movie->header->Streams+1)].ChunkId = FCC("rec "); movie->entries[frame_num * (movie->header->Streams+1)].Flags = AVIIF_LIST; - movie->entries[frame_num * (movie->header->Streams+1)].Offset = rec_off-8L-movie->movi_offset; - movie->entries[frame_num * (movie->header->Streams+1)].Size = ftell(movie->fp)-(rec_off+4L); + movie->entries[frame_num * (movie->header->Streams+1)].Offset = (int)(rec_off - 8L - movie->movi_offset); + movie->entries[frame_num * (movie->header->Streams+1)].Size = (int)(ftell(movie->fp) - (rec_off + 4L)); /* Update the record size */ fseek (movie->fp, rec_off, SEEK_SET); @@ -1044,7 +1044,7 @@ AviError AVI_close_compress (AviMovie *movie) int temp, movi_size, i; fseek (movie->fp, 0L, SEEK_END); - movi_size = ftell (movie->fp); + movi_size = (int)ftell(movie->fp); PUT_FCC ("idx1", movie->fp); PUT_FCCN ((movie->index_entries*(movie->header->Streams+1)*16), movie->fp); @@ -1052,7 +1052,7 @@ AviError AVI_close_compress (AviMovie *movie) for (temp=0; temp < movie->index_entries*(movie->header->Streams+1); temp++) awrite (movie, &movie->entries[temp], 1, sizeof(AviIndexEntry), movie->fp, AVI_INDEXE); - temp = ftell (movie->fp); + temp = (int)ftell(movie->fp); fseek (movie->fp, AVI_RIFF_SOFF, SEEK_SET); diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index dbcef9ad4c8..2812592c69a 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -2313,7 +2313,7 @@ void BKE_ptcache_id_time(PTCacheID *pid, Scene *scene, float cfra, int *startfra if (timescale) { time= BKE_curframe(scene); - nexttime= BKE_frame_to_ctime(scene, CFRA+1); + nexttime = BKE_frame_to_ctime(scene, CFRA + 1.0f); *timescale= MAX2(nexttime - time, 0.0f); } diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 4b5ea44e97c..8990f0f79d3 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -230,7 +230,7 @@ void *BLI_gzopen(const char *filename, const char *mode) GetShortPathNameW(filename_16,short_name_16, 256); for (i = 0; i < 256; i++) { - short_name[i] = short_name_16[i]; + short_name[i] = (char)short_name_16[i]; } gzfile = gzopen(short_name,mode); From 4469ab985761abaacc99eb3d3c6b16a0aee927b1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Apr 2012 07:26:28 +0000 Subject: [PATCH 123/158] code cleanup: - move lasso functions into BLI (were in 3D view but UV editor needs access) - remove unused UV functions (ones that assumed 3-4 sized UVs only) --- source/blender/blenlib/BLI_lasso.h | 41 +++++ source/blender/blenlib/CMakeLists.txt | 6 +- source/blender/blenlib/intern/lasso.c | 129 ++++++++++++++++ source/blender/blenlib/intern/listbase.c | 7 +- source/blender/editors/include/ED_view3d.h | 2 - source/blender/editors/mesh/meshtools.c | 2 +- .../blender/editors/physics/particle_edit.c | 12 +- .../editors/space_view3d/view3d_select.c | 142 ++++-------------- source/blender/editors/uvedit/uvedit_draw.c | 14 +- source/blender/editors/uvedit/uvedit_intern.h | 11 +- source/blender/editors/uvedit/uvedit_ops.c | 29 +--- 11 files changed, 231 insertions(+), 164 deletions(-) create mode 100644 source/blender/blenlib/BLI_lasso.h create mode 100644 source/blender/blenlib/intern/lasso.c diff --git a/source/blender/blenlib/BLI_lasso.h b/source/blender/blenlib/BLI_lasso.h new file mode 100644 index 00000000000..2360173c3b8 --- /dev/null +++ b/source/blender/blenlib/BLI_lasso.h @@ -0,0 +1,41 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef __BLI_LASSO_H__ +#define __BLI_LASSO_H__ + +/** \file BLI_lasso.h + * \ingroup bli + */ + +struct rcti; + +void BLI_lasso_boundbox(struct rcti *rect, int mcords[][2], short moves); +int BLI_lasso_is_point_inside(int mcords[][2], short moves, int sx, int sy, const int error_value); +int BLI_lasso_is_edge_inside(int mcords[][2], short moves, int x0, int y0, int x1, int y1, const int error_value); + +#endif diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index c06a1240729..61fe3b560e2 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -61,6 +61,7 @@ set(SRC intern/graph.c intern/gsqueue.c intern/jitter.c + intern/lasso.c intern/listbase.c intern/math_base.c intern/math_base_inline.c @@ -90,10 +91,9 @@ set(SRC intern/voxel.c intern/winstuff.c + BLI_args.h BLI_array.h BLI_bitmap.h - BLI_smallhash.h - BLI_args.h BLI_blenlib.h BLI_boxpack2d.h BLI_bpath.h @@ -114,6 +114,7 @@ set(SRC BLI_jitter.h BLI_kdopbvh.h BLI_kdtree.h + BLI_lasso.h BLI_linklist.h BLI_listbase.h BLI_math.h @@ -133,6 +134,7 @@ set(SRC BLI_rand.h BLI_rect.h BLI_scanfill.h + BLI_smallhash.h BLI_string.h BLI_string_cursor_utf8.h BLI_string_utf8.h diff --git a/source/blender/blenlib/intern/lasso.c b/source/blender/blenlib/intern/lasso.c new file mode 100644 index 00000000000..29b967fcd37 --- /dev/null +++ b/source/blender/blenlib/intern/lasso.c @@ -0,0 +1,129 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + +/** \file blender/blenlib/intern/lasso.c + * \ingroup bli + */ + +#include "DNA_vec_types.h" + +#include "BLI_math.h" +#include "BLI_rect.h" + +#include "BLI_lasso.h" /* own include */ + +void BLI_lasso_boundbox(rcti *rect, int mcords[][2], short moves) +{ + short a; + + rect->xmin = rect->xmax = mcords[0][0]; + rect->ymin = rect->ymax = mcords[0][1]; + + for (a = 1; a < moves; a++) { + if (mcords[a][0] < rect->xmin) rect->xmin = mcords[a][0]; + else if (mcords[a][0] > rect->xmax) rect->xmax = mcords[a][0]; + if (mcords[a][1] < rect->ymin) rect->ymin = mcords[a][1]; + else if (mcords[a][1] > rect->ymax) rect->ymax = mcords[a][1]; + } +} + + +int BLI_lasso_is_point_inside(int mcords[][2], short moves, + const int sx, const int sy, + const int error_value) +{ + /* we do the angle rule, define that all added angles should be about zero or (2 * PI) */ + float angletot = 0.0, dot, ang, cross, fp1[2], fp2[2]; + int a; + int *p1, *p2; + + if (sx == error_value) { + return 0; + } + + p1 = mcords[moves - 1]; + p2 = mcords[0]; + + /* first vector */ + fp1[0] = (float)(p1[0] - sx); + fp1[1] = (float)(p1[1] - sy); + normalize_v2(fp1); + + for (a = 0; a < moves; a++) { + /* second vector */ + fp2[0] = (float)(p2[0] - sx); + fp2[1] = (float)(p2[1] - sy); + normalize_v2(fp2); + + /* dot and angle and cross */ + dot = fp1[0] * fp2[0] + fp1[1] * fp2[1]; + ang = fabs(saacos(dot)); + + cross = (float)((p1[1] - p2[1]) * (p1[0] - sx) + (p2[0] - p1[0]) * (p1[1] - sy)); + + if (cross < 0.0f) angletot -= ang; + else angletot += ang; + + /* circulate */ + fp1[0] = fp2[0]; fp1[1] = fp2[1]; + p1 = p2; + p2 = mcords[a + 1]; + } + + if (fabs(angletot) > 4.0) return 1; + return 0; +} + +/* edge version for lasso select. we assume boundbox check was done */ +int BLI_lasso_is_edge_inside(int mcords[][2], short moves, + int x0, int y0, int x1, int y1, + const int error_value) +{ + int v1[2], v2[2]; + int a; + + if (x0 == error_value || x1 == error_value) { + return 0; + } + + v1[0] = x0, v1[1] = y0; + v2[0] = x1, v2[1] = y1; + + /* check points in lasso */ + if (BLI_lasso_is_point_inside(mcords, moves, v1[0], v1[1], error_value)) return 1; + if (BLI_lasso_is_point_inside(mcords, moves, v2[0], v2[1], error_value)) return 1; + + /* no points in lasso, so we have to intersect with lasso edge */ + + if (isect_line_line_v2_int(mcords[0], mcords[moves - 1], v1, v2) > 0) return 1; + for (a = 0; a < moves - 1; a++) { + if (isect_line_line_v2_int(mcords[a], mcords[a + 1], v1, v2) > 0) return 1; + } + + return 0; +} diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c index fecaa507b5c..b2b18286cfb 100644 --- a/source/blender/blenlib/intern/listbase.c +++ b/source/blender/blenlib/intern/listbase.c @@ -1,9 +1,4 @@ -/* util.c - * - * various string, file, list operations. - * - * - * +/* * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index f886c01039e..4b614085f8e 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -269,8 +269,6 @@ void view3d_get_transformation(const struct ARegion *ar, struct RegionView3D *rv /* XXX should move to BLI_math */ int edge_inside_circle(short centx, short centy, short rad, short x1, short y1, short x2, short y2); -int lasso_inside(int mcords[][2], short moves, int sx, int sy); -int lasso_inside_edge(int mcords[][2], short moves, int x0, int y0, int x1, int y1); /* get 3d region from context, also if mouse is in header or toolbar */ struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C); diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 7c02f26dbdc..96fb2afbac4 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -1016,7 +1016,7 @@ static float *editmesh_get_mirror_uv(BMEditMesh *em, int axis, float *uv, float BMFace *efa; BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { - poly_uv_center(em, efa, cent); + uv_poly_center(em, efa, cent); if ( (fabs(cent[0] - cent_vec[0]) < 0.001) && (fabs(cent[1] - cent_vec[1]) < 0.001) ) { BMIter liter; diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 5f22165176b..591015a7479 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -45,7 +45,9 @@ #include "DNA_space_types.h" #include "BLI_math.h" -#include "BLI_blenlib.h" +#include "BLI_lasso.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_dynstr.h" #include "BLI_kdtree.h" #include "BLI_rand.h" @@ -1633,7 +1635,9 @@ int PE_lasso_select(bContext *C, int mcords[][2], short moves, short extend, sho copy_v3_v3(co, key->co); mul_m4_v3(mat, co); project_int(ar, co, vertco); - if ((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1]) && key_test_depth(&data, co)) { + if (BLI_lasso_is_point_inside(mcords,moves,vertco[0],vertco[1], IS_CLIPPED) && + key_test_depth(&data, co)) + { if (select && !(key->flag & PEK_SELECT)) { key->flag |= PEK_SELECT; point->flag |= PEP_EDIT_RECALC; @@ -1651,7 +1655,9 @@ int PE_lasso_select(bContext *C, int mcords[][2], short moves, short extend, sho copy_v3_v3(co, key->co); mul_m4_v3(mat, co); project_int(ar, co,vertco); - if ((vertco[0] != IS_CLIPPED) && lasso_inside(mcords,moves,vertco[0],vertco[1]) && key_test_depth(&data, co)) { + if (BLI_lasso_is_point_inside(mcords,moves,vertco[0],vertco[1], IS_CLIPPED) && + key_test_depth(&data, co)) + { if (select && !(key->flag & PEK_SELECT)) { key->flag |= PEK_SELECT; point->flag |= PEP_EDIT_RECALC; diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index ac9c32816dd..09cc6b9c7a5 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -48,9 +48,12 @@ #include "MEM_guardedalloc.h" #include "BLI_math.h" -#include "BLI_blenlib.h" +#include "BLI_lasso.h" +#include "BLI_rect.h" #include "BLI_rand.h" #include "BLI_linklist.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_utildefines.h" /* vertex box select */ @@ -319,79 +322,6 @@ static int edge_inside_rect(rcti *rect, short x1, short y1, short x2, short y2) #define MOVES_GESTURE 50 #define MOVES_LASSO 500 -int lasso_inside(int mcords[][2], short moves, int sx, int sy) -{ - /* we do the angle rule, define that all added angles should be about zero or 2*PI */ - float angletot = 0.0, len, dot, ang, cross, fp1[2], fp2[2]; - int a; - int *p1, *p2; - - if (sx == IS_CLIPPED) - return 0; - - p1 = mcords[moves - 1]; - p2 = mcords[0]; - - /* first vector */ - fp1[0] = (float)(p1[0] - sx); - fp1[1] = (float)(p1[1] - sy); - len = sqrt(fp1[0] * fp1[0] + fp1[1] * fp1[1]); - fp1[0] /= len; - fp1[1] /= len; - - for (a = 0; a < moves; a++) { - /* second vector */ - fp2[0] = (float)(p2[0] - sx); - fp2[1] = (float)(p2[1] - sy); - len = sqrt(fp2[0] * fp2[0] + fp2[1] * fp2[1]); - fp2[0] /= len; - fp2[1] /= len; - - /* dot and angle and cross */ - dot = fp1[0] * fp2[0] + fp1[1] * fp2[1]; - ang = fabs(saacos(dot)); - - cross = (float)((p1[1] - p2[1]) * (p1[0] - sx) + (p2[0] - p1[0]) * (p1[1] - sy)); - - if (cross < 0.0f) angletot -= ang; - else angletot += ang; - - /* circulate */ - fp1[0] = fp2[0]; fp1[1] = fp2[1]; - p1 = p2; - p2 = mcords[a + 1]; - } - - if (fabs(angletot) > 4.0) return 1; - return 0; -} - -/* edge version for lasso select. we assume boundbox check was done */ -int lasso_inside_edge(int mcords[][2], short moves, int x0, int y0, int x1, int y1) -{ - int v1[2], v2[2]; - int a; - - if (x0 == IS_CLIPPED || x1 == IS_CLIPPED) - return 0; - - v1[0] = x0, v1[1] = y0; - v2[0] = x1, v2[1] = y1; - - /* check points in lasso */ - if (lasso_inside(mcords, moves, v1[0], v1[1])) return 1; - if (lasso_inside(mcords, moves, v2[0], v2[1])) return 1; - - /* no points in lasso, so we have to intersect with lasso edge */ - - if (isect_line_line_v2_int(mcords[0], mcords[moves - 1], v1, v2) > 0) return 1; - for (a = 0; a < moves - 1; a++) { - if (isect_line_line_v2_int(mcords[a], mcords[a + 1], v1, v2) > 0) return 1; - } - - return 0; -} - /* warning; lasso select with backbuffer-check draws in backbuf with persp(PERSP_WIN) * and returns with persp(PERSP_VIEW). After lasso select backbuf is not OK @@ -412,7 +342,7 @@ static void do_lasso_select_pose(ViewContext *vc, Object *ob, int mcords[][2], s mul_v3_m4v3(vec, ob->obmat, pchan->pose_tail); project_int(vc->ar, vec, sco2); - if (lasso_inside_edge(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1])) { + if (BLI_lasso_is_edge_inside(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1], IS_CLIPPED)) { if (select) pchan->bone->flag |= BONE_SELECTED; else pchan->bone->flag &= ~BONE_SELECTED; } @@ -441,7 +371,7 @@ static void do_lasso_select_objects(ViewContext *vc, int mcords[][2], short move for (base = vc->scene->base.first; base; base = base->next) { if (BASE_SELECTABLE(vc->v3d, base)) { /* use this to avoid un-needed lasso lookups */ project_short(vc->ar, base->object->obmat[3], &base->sx); - if (lasso_inside(mcords, moves, base->sx, base->sy)) { + if (BLI_lasso_is_point_inside(mcords, moves, base->sx, base->sy, IS_CLIPPED)) { if (select) ED_base_object_select(base, BA_SELECT); else ED_base_object_select(base, BA_DESELECT); @@ -454,26 +384,13 @@ static void do_lasso_select_objects(ViewContext *vc, int mcords[][2], short move } } -static void lasso_select_boundbox(rcti *rect, int mcords[][2], short moves) -{ - short a; - - rect->xmin = rect->xmax = mcords[0][0]; - rect->ymin = rect->ymax = mcords[0][1]; - - for (a = 1; a < moves; a++) { - if (mcords[a][0] < rect->xmin) rect->xmin = mcords[a][0]; - else if (mcords[a][0] > rect->xmax) rect->xmax = mcords[a][0]; - if (mcords[a][1] < rect->ymin) rect->ymin = mcords[a][1]; - else if (mcords[a][1] > rect->ymax) rect->ymax = mcords[a][1]; - } -} - static void do_lasso_select_mesh__doSelectVert(void *userData, BMVert *eve, int x, int y, int UNUSED(index)) { LassoSelectUserData *data = userData; - if (BLI_in_rcti(data->rect, x, y) && lasso_inside(data->mcords, data->moves, x, y)) { + if (BLI_in_rcti(data->rect, x, y) && + BLI_lasso_is_point_inside(data->mcords, data->moves, x, y, IS_CLIPPED)) + { BM_vert_select_set(data->vc->em->bm, eve, data->select); } } @@ -484,14 +401,15 @@ static void do_lasso_select_mesh__doSelectEdge(void *userData, BMEdge *eed, int if (EDBM_backbuf_check(bm_solidoffs + index)) { if (data->pass == 0) { if (edge_fully_inside_rect(data->rect, x0, y0, x1, y1) && - lasso_inside(data->mcords, data->moves, x0, y0) && - lasso_inside(data->mcords, data->moves, x1, y1)) { + BLI_lasso_is_point_inside(data->mcords, data->moves, x0, y0, IS_CLIPPED) && + BLI_lasso_is_point_inside(data->mcords, data->moves, x1, y1, IS_CLIPPED)) + { BM_edge_select_set(data->vc->em->bm, eed, data->select); data->done = 1; } } else { - if (lasso_inside_edge(data->mcords, data->moves, x0, y0, x1, y1)) { + if (BLI_lasso_is_edge_inside(data->mcords, data->moves, x0, y0, x1, y1, IS_CLIPPED)) { BM_edge_select_set(data->vc->em->bm, eed, data->select); } } @@ -501,7 +419,9 @@ static void do_lasso_select_mesh__doSelectFace(void *userData, BMFace *efa, int { LassoSelectUserData *data = userData; - if (BLI_in_rcti(data->rect, x, y) && lasso_inside(data->mcords, data->moves, x, y)) { + if (BLI_in_rcti(data->rect, x, y) && + BLI_lasso_is_point_inside(data->mcords, data->moves, x, y, IS_CLIPPED)) + { BM_face_select_set(data->vc->em->bm, efa, data->select); } } @@ -513,7 +433,7 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves, rcti rect; int bbsel; - lasso_select_boundbox(&rect, mcords, moves); + BLI_lasso_boundbox(&rect, mcords, moves); /* set editmesh */ vc->em = BMEdit_FromObject(vc->obedit); @@ -577,7 +497,7 @@ static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select) int screenUV[2], nverts, i, ok = 1; rcti rect; - lasso_select_boundbox(&rect, mcords, moves); + BLI_lasso_boundbox(&rect, mcords, moves); if (draw_uvs_face_check()) { /* Face Center Sel */ float cent[2]; @@ -589,7 +509,7 @@ static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select) if ((select) != (simaFaceSel_Check(efa, tf))) { uv_center(tf->uv, cent, (void *)efa->v4); uvco_to_areaco_noclip(cent, screenUV); - if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && lasso_inside(mcords, moves, screenUV[0], screenUV[1])) { + if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) { efa->tmp.l = ok = 1; } } @@ -607,7 +527,7 @@ static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select) for (i = 0; i < nverts; i++) { if ((select) != (simaUVSel_Check(efa, tf, i))) { uvco_to_areaco_noclip(tf->uv[i], screenUV); - if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && lasso_inside(mcords, moves, screenUV[0], screenUV[1])) { + if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) { if (select) { simaUVSel_Set(efa, tf, i); } @@ -633,7 +553,7 @@ static void do_lasso_select_curve__doSelect(void *userData, Nurb *UNUSED(nu), BP Object *obedit = data->vc->obedit; Curve *cu = (Curve *)obedit->data; - if (lasso_inside(data->mcords, data->moves, x, y)) { + if (BLI_lasso_is_point_inside(data->mcords, data->moves, x, y, IS_CLIPPED)) { if (bp) { bp->f1 = data->select ? (bp->f1 | SELECT) : (bp->f1 & ~SELECT); if (bp == cu->lastsel && !(bp->f1 & 1)) cu->lastsel = NULL; @@ -681,7 +601,7 @@ static void do_lasso_select_lattice__doSelect(void *userData, BPoint *bp, int x, { LassoSelectUserData *data = userData; - if (lasso_inside(data->mcords, data->moves, x, y)) { + if (BLI_lasso_is_point_inside(data->mcords, data->moves, x, y, IS_CLIPPED)) { bp->f1 = data->select ? (bp->f1 | SELECT) : (bp->f1 & ~SELECT); } } @@ -722,20 +642,22 @@ static void do_lasso_select_armature(ViewContext *vc, int mcords[][2], short mov project_short(vc->ar, vec, sco2); didpoint = 0; - if (lasso_inside(mcords, moves, sco1[0], sco1[1])) { + if (BLI_lasso_is_point_inside(mcords, moves, sco1[0], sco1[1], IS_CLIPPED)) { if (select) ebone->flag |= BONE_ROOTSEL; else ebone->flag &= ~BONE_ROOTSEL; didpoint = 1; change = TRUE; } - if (lasso_inside(mcords, moves, sco2[0], sco2[1])) { + if (BLI_lasso_is_point_inside(mcords, moves, sco2[0], sco2[1], IS_CLIPPED)) { if (select) ebone->flag |= BONE_TIPSEL; else ebone->flag &= ~BONE_TIPSEL; didpoint = 1; change = TRUE; } /* if one of points selected, we skip the bone itself */ - if (didpoint == 0 && lasso_inside_edge(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1])) { + if (didpoint == 0 && + BLI_lasso_is_edge_inside(mcords, moves, sco1[0], sco1[1], sco2[0], sco2[1], IS_CLIPPED)) + { if (select) ebone->flag |= BONE_TIPSEL | BONE_ROOTSEL | BONE_SELECTED; else ebone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); change = TRUE; @@ -771,7 +693,7 @@ static void do_lasso_select_meta(ViewContext *vc, int mcords[][2], short moves, mul_v3_m4v3(vec, vc->obedit->obmat, &ml->x); project_short(vc->ar, vec, sco); - if (lasso_inside(mcords, moves, sco[0], sco[1])) { + if (BLI_lasso_is_point_inside(mcords, moves, sco[0], sco[1], IS_CLIPPED)) { if (select) ml->flag |= SELECT; else ml->flag &= ~SELECT; } @@ -850,7 +772,7 @@ static void do_lasso_select_paintvert(ViewContext *vc, int mcords[][2], short mo paintvert_deselect_all_visible(ob, SEL_DESELECT, FALSE); /* flush selection at the end */ bm_vertoffs = me->totvert + 1; /* max index array */ - lasso_select_boundbox(&rect, mcords, moves); + BLI_lasso_boundbox(&rect, mcords, moves); EDBM_backbuf_border_mask_init(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax); edbm_backbuf_check_and_select_verts_obmode(me, select); @@ -873,7 +795,7 @@ static void do_lasso_select_paintface(ViewContext *vc, int mcords[][2], short mo bm_vertoffs = me->totpoly + 1; /* max index array */ - lasso_select_boundbox(&rect, mcords, moves); + BLI_lasso_boundbox(&rect, mcords, moves); EDBM_backbuf_border_mask_init(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax); edbm_backbuf_check_and_select_tfaces(me, select); @@ -893,7 +815,7 @@ static void do_lasso_select_node(int mcords[][2], short moves, short select) short node_cent[2]; float node_centf[2]; - lasso_select_boundbox(&rect, mcords, moves); + BLI_lasso_boundbox(&rect, mcords, moves); /* store selection in temp test flag */ for (node = snode->edittree->nodes.first; node; node = node->next) { @@ -902,7 +824,7 @@ static void do_lasso_select_node(int mcords[][2], short moves, short select) node_centf[1] = (node->totr.ymin + node->totr.ymax) / 2; ipoco_to_areaco_noclip(G.v2d, node_centf, node_cent); - if (BLI_in_rcti(&rect, node_cent[0], node_cent[1]) && lasso_inside(mcords, moves, node_cent[0], node_cent[1])) { + if (BLI_in_rcti(&rect, node_cent[0], node_cent[1]) && BLI_lasso_is_point_inside(mcords, moves, node_cent[0], node_cent[1])) { if (select) { node->flag |= SELECT; } diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c index e772ff5a87a..987f6b250cb 100644 --- a/source/blender/editors/uvedit/uvedit_draw.c +++ b/source/blender/editors/uvedit/uvedit_draw.c @@ -198,11 +198,11 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe i++; } - poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, efa->len); + uv_poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, efa->len); totarea += BM_face_calc_area(efa); //totuvarea += tf_area(tf, efa->v4!=0); - totuvarea += poly_uv_area(tf_uv, efa->len); + totuvarea += uv_poly_area(tf_uv, efa->len); if (uvedit_face_visible_test(scene, ima, efa, tf)) { BM_elem_flag_enable(efa, BM_ELEM_TAG); @@ -248,10 +248,10 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe i++; } - poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, efa->len); + uv_poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, efa->len); //uvarea = tf_area(tf, efa->v4!=0) / totuvarea; - uvarea = poly_uv_area(tf_uv, efa->len) / totuvarea; + uvarea = uv_poly_area(tf_uv, efa->len) / totuvarea; if (area < FLT_EPSILON || uvarea < FLT_EPSILON) areadiff = 1.0f; @@ -315,7 +315,7 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe copy_v2_v2(tf_uvorig[i], luv->uv); } - poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, nverts); + uv_poly_copy_aspect(tf_uvorig, tf_uv, aspx, aspy, nverts); j = nverts - 1; BM_ITER_ELEM_INDEX (l, &liter, efa, BM_LOOPS_OF_FACE, i) { @@ -742,7 +742,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) continue; if (!uvedit_face_select_test(scene, em, efa)) { - poly_uv_center(em, efa, cent); + uv_poly_center(em, efa, cent); bglVertex2fv(cent); } } @@ -757,7 +757,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) continue; if (uvedit_face_select_test(scene, em, efa)) { - poly_uv_center(em, efa, cent); + uv_poly_center(em, efa, cent); bglVertex2fv(cent); } } diff --git a/source/blender/editors/uvedit/uvedit_intern.h b/source/blender/editors/uvedit/uvedit_intern.h index fdcb5db1911..04d20b3ba09 100644 --- a/source/blender/editors/uvedit/uvedit_intern.h +++ b/source/blender/editors/uvedit/uvedit_intern.h @@ -54,14 +54,9 @@ struct BMVert; int uvedit_face_visible_nolocal(struct Scene *scene, struct BMFace *efa); /* geometric utilities */ - -void uv_center(float uv[][2], float cent[2], int quad); -float uv_area(float uv[][2], int quad); -void uv_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy); - -float poly_uv_area(float uv[][2], int len); -void poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len); -void poly_uv_center(struct BMEditMesh *em, struct BMFace *f, float cent[2]); +float uv_poly_area(float uv[][2], int len); +void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len); +void uv_poly_center(struct BMEditMesh *em, struct BMFace *f, float cent[2]); /* find nearest */ diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 1c62ce3a684..832bf6f57e9 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -522,7 +522,7 @@ void uvedit_live_unwrap_update(SpaceImage *sima, Scene *scene, Object *obedit) } /*********************** geometric utilities ***********************/ -void poly_uv_center(BMEditMesh *em, BMFace *f, float cent[2]) +void uv_poly_center(BMEditMesh *em, BMFace *f, float cent[2]) { BMLoop *l; MLoopUV *luv; @@ -538,28 +538,7 @@ void poly_uv_center(BMEditMesh *em, BMFace *f, float cent[2]) mul_v2_fl(cent, 1.0f / (float)f->len); } - -void uv_center(float uv[][2], float cent[2], int quad) -{ - if (quad) { - cent[0] = (uv[0][0] + uv[1][0] + uv[2][0] + uv[3][0]) / 4.0f; - cent[1] = (uv[0][1] + uv[1][1] + uv[2][1] + uv[3][1]) / 4.0f; - } - else { - cent[0] = (uv[0][0] + uv[1][0] + uv[2][0]) / 3.0f; - cent[1] = (uv[0][1] + uv[1][1] + uv[2][1]) / 3.0f; - } -} - -float uv_area(float uv[][2], int quad) -{ - if (quad) - return area_tri_v2(uv[0], uv[1], uv[2]) + area_tri_v2(uv[0], uv[2], uv[3]); - else - return area_tri_v2(uv[0], uv[1], uv[2]); -} - -float poly_uv_area(float uv[][2], int len) +float uv_poly_area(float uv[][2], int len) { //BMESH_TODO: make this not suck //maybe use scanfill? I dunno. @@ -572,7 +551,7 @@ float poly_uv_area(float uv[][2], int len) return 1.0; } -void poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len) +void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len) { int i; for (i = 0; i < len; i++) { @@ -2469,7 +2448,7 @@ static int border_select_exec(bContext *C, wmOperator *op) tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); if (uvedit_face_visible_test(scene, ima, efa, tf)) { - poly_uv_center(em, efa, cent); + uv_poly_center(em, efa, cent); if (BLI_in_rctf(&rectf, cent[0], cent[1])) { BM_elem_flag_enable(efa, BM_ELEM_TAG); change = 1; From da1e128d77e4e2932668a06f92ca675b4d899c20 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Apr 2012 10:00:21 +0000 Subject: [PATCH 124/158] fix for modal timer template, wasnt updated for changes to themes. --- release/scripts/templates/operator_modal_timer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/templates/operator_modal_timer.py b/release/scripts/templates/operator_modal_timer.py index ec47390da81..ebbf6395df5 100644 --- a/release/scripts/templates/operator_modal_timer.py +++ b/release/scripts/templates/operator_modal_timer.py @@ -14,7 +14,7 @@ class ModalTimerOperator(bpy.types.Operator): if event.type == 'TIMER': # change theme color, silly! - color = context.user_preferences.themes[0].view_3d.back + color = context.user_preferences.themes[0].view_3d.space.back color.s = 1.0 color.h += 0.01 From 5d6f746c87db0709107a2b416e112fceb46af359 Mon Sep 17 00:00:00 2001 From: Jens Ole Wund Date: Fri, 27 Apr 2012 11:49:09 +0000 Subject: [PATCH 125/158] Patch by Jose Geraldo Brito Tracker 31061 It cures the stiff quad option and does not seem to harm. Nowever the stiff quads behave strange in a ngom mesh. I can imagine that other parts in the sofybody module may be broken by the ngon structure. Well ngons and softbodies are not relly friends: negon wants less edges softbodies would work better if more structural edges were possible --- source/blender/blenkernel/intern/softbody.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 01930cc28da..e3a309fc945 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -78,6 +78,7 @@ variables on the UI for now #include "BKE_DerivedMesh.h" #include "BKE_pointcache.h" #include "BKE_deform.h" +#include "BKE_mesh.h" //XXX #include "BIF_editdeform.h" //XXX #include "BIF_graphics.h" #include "PIL_time.h" @@ -3267,6 +3268,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) BodyPoint *bp; BodySpring *bs; int a, totedge; + BKE_mesh_tessface_ensure(me); if (ob->softflag & OB_SB_EDGES) totedge= me->totedge; else totedge= 0; From dbe68289f4c7c4b7064bb05f27457f76d54e2db8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 27 Apr 2012 12:44:32 +0000 Subject: [PATCH 126/158] fix for select flushing in UV-sync-selection mode (regression from 2.62), both border select and circle select failed in edge and vertex mode (though de-selecting worked ok). --- source/blender/editors/uvedit/uvedit_ops.c | 60 +++++++++++++--------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 832bf6f57e9..cdcc1a7e698 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -2261,6 +2261,25 @@ static void UV_OT_unlink_selected(wmOperatorType *ot) ot->poll = ED_operator_uvedit; } +static void uv_select_sync_flush(ToolSettings *ts, BMEditMesh *em, const short select) +{ + /* bmesh API handles flushing but not on de-select */ + if (ts->uv_flag & UV_SYNC_SELECTION) { + if (ts->selectmode != SCE_SELECT_FACE) { + if (select == FALSE) { + EDBM_deselect_flush(em); + } + else { + EDBM_select_flush(em); + } + } + + if (select == FALSE) { + BM_select_history_validate(em->bm); + } + } +} + /* ******************** border select operator **************** */ /* This function sets the selection on tagged faces, need because settings the @@ -2491,20 +2510,7 @@ static int border_select_exec(bContext *C, wmOperator *op) } if (change) { - /* bmesh API habdles flushing but not on de-select */ - if (ts->uv_flag & UV_SYNC_SELECTION) { - if (ts->selectmode != SCE_SELECT_FACE) { - if (select == FALSE) { - EDBM_deselect_flush(em); - } - } - } - - if (ts->uv_flag & UV_SYNC_SELECTION) { - if (select == FALSE) { - BM_select_history_validate(em->bm); - } - } + uv_select_sync_flush(ts, em, select); WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); @@ -2539,13 +2545,12 @@ static void UV_OT_select_border(wmOperatorType *ot) /* ******************** circle select operator **************** */ -static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), Scene *scene, int select, - float *offset, float *ell, BMLoop *l, MLoopUV *luv) +static int select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), Scene *scene, int select, + float *offset, float *ell, BMLoop *l, MLoopUV *luv) { /* normalized ellipse: ell[0] = scaleX, ell[1] = scaleY */ float x, y, r2, *uv; - - + uv = luv->uv; x = (uv[0] - offset[0]) * ell[0]; @@ -2554,7 +2559,11 @@ static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), S r2 = x * x + y * y; if (r2 < 1.0f) { if (select) uvedit_uv_select_enable(em, scene, l, FALSE); - else uvedit_uv_select_disable(em, scene, l); + else uvedit_uv_select_disable(em, scene, l); + return TRUE; + } + else { + return FALSE; } } @@ -2572,6 +2581,7 @@ static int circle_select_exec(bContext *C, wmOperator *op) int x, y, radius, width, height, select; float zoomx, zoomy, offset[2], ellipse[2]; int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + int change = FALSE; /* get operator properties */ select = (gesture_mode == GESTURE_MODAL_SELECT); @@ -2593,15 +2603,15 @@ static int circle_select_exec(bContext *C, wmOperator *op) BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - select_uv_inside_ellipse(em, sima, scene, select, offset, ellipse, l, luv); + change |= select_uv_inside_ellipse(em, sima, scene, select, offset, ellipse, l, luv); } } -#if 0 //I think the BM_elem_select_set api stuff handles all this as necessary? - if (select) EM_select_flush(em); - else EM_deselect_flush(em); -#endif - WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + if (change) { + uv_select_sync_flush(scene->toolsettings, em, select); + + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + } return OPERATOR_FINISHED; } From a299855e34ce4321b2e508646965403f56d6ddc5 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Fri, 27 Apr 2012 13:18:55 +0000 Subject: [PATCH 127/158] Changes to get mingw buildslaves going. --- build_files/buildbot/master.cfg | 2 ++ build_files/buildbot/slave_compile.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index 23751f7dcd4..066c133d335 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -117,6 +117,8 @@ add_builder(c, 'salad_linux_x86_64_scons', '', generic_builder, 'soc-2011-salad' add_builder(c, 'win32_scons', 'windows', generic_builder) add_builder(c, 'salad_win32_scons', 'windows', generic_builder, 'soc-2011-salad') add_builder(c, 'win64_scons', 'win64', generic_builder) +add_builder(c, 'mingw_win64_scons', 'mingw64', generic_builder) +add_builder(c, 'mingw_win32_scons', 'mingw32', generic_builder) #add_builder(c, 'freebsd_i386_cmake', '', generic_builder) #add_builder(c, 'freebsd_x86_64_cmake', '', generic_builder) diff --git a/build_files/buildbot/slave_compile.py b/build_files/buildbot/slave_compile.py index 209253296be..eafdf0868cd 100644 --- a/build_files/buildbot/slave_compile.py +++ b/build_files/buildbot/slave_compile.py @@ -117,6 +117,8 @@ else: scons_options.append('BF_BITNESS=' + bitness) scons_options.append('WITH_BF_CYCLES_CUDA_BINARIES=True') scons_options.append('BF_CYCLES_CUDA_NVCC=nvcc.exe') + if builder.find('mingw') != -1: + scons_options.append('BF_TOOLSET=mingw') retcode = subprocess.call(['python', 'scons/scons.py'] + scons_options) sys.exit(retcode) From dc313ff00d8e5c8681fb6d923b3da0d0b7ffbdac Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 01:59:21 +0000 Subject: [PATCH 128/158] add back lasso tool in the UV editor (Ctrl+LMB / Ctrl+Shift+LMB) --- source/blender/editors/mesh/editmesh_tools.c | 1 + .../blender/editors/space_image/image_ops.c | 7 +- source/blender/editors/uvedit/uvedit_ops.c | 158 ++++++++++++++++-- 3 files changed, 150 insertions(+), 16 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index f3737925850..e88b34b5812 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -4280,3 +4280,4 @@ void MESH_OT_inset(wmOperatorType *ot) RNA_def_boolean(ot->srna, "use_outset", FALSE, "Outset", "Outset rather than inset"); RNA_def_boolean(ot->srna, "use_select_inset", TRUE, "Select Outer", "Select the new inset faces"); } + diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 2c688990a8f..d9f3ffafb14 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -190,13 +190,14 @@ int space_image_main_area_poll(bContext *C) return 0; } -/* For IMAGE_OT_curves_point_set to avoid sampling when in uv smooth mode */ +/* For IMAGE_OT_curves_point_set to avoid sampling when in uv smooth mode or editmode */ int space_image_main_area_not_uv_brush_poll(bContext *C) { SpaceImage *sima = CTX_wm_space_image(C); + Scene *scene = CTX_data_scene(C); + ToolSettings *toolsettings = scene->toolsettings; - ToolSettings *toolsettings = CTX_data_scene(C)->toolsettings; - if (sima && !toolsettings->uvsculpt) + if (sima && !toolsettings->uvsculpt && !scene->obedit) return 1; return 0; diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index cdcc1a7e698..4a115465932 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -47,6 +47,7 @@ #include "DNA_scene_types.h" #include "BLI_math.h" +#include "BLI_lasso.h" #include "BLI_blenlib.h" #include "BLI_array.h" #include "BLI_utildefines.h" @@ -1699,7 +1700,7 @@ static int mouse_select(bContext *C, float co[2], int extend, int loop) { SpaceImage *sima = CTX_wm_space_image(C); Scene *scene = CTX_data_scene(C); - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = scene->toolsettings; Object *obedit = CTX_data_edit_object(C); Image *ima = CTX_data_edit_image(C); BMEditMesh *em = BMEdit_FromObject(obedit); @@ -2101,7 +2102,7 @@ static int select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, i { SpaceImage *sima = CTX_wm_space_image(C); Scene *scene = CTX_data_scene(C); - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = scene->toolsettings; Object *obedit = CTX_data_edit_object(C); Image *ima = CTX_data_edit_image(C); BMEditMesh *em = BMEdit_FromObject(obedit); @@ -2203,7 +2204,7 @@ static void UV_OT_select_linked_pick(wmOperatorType *ot) static int unlink_selection_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = scene->toolsettings; Object *obedit = CTX_data_edit_object(C); Image *ima = CTX_data_edit_image(C); BMEditMesh *em = BMEdit_FromObject(obedit); @@ -2289,7 +2290,7 @@ static void uv_select_sync_flush(ToolSettings *ts, BMEditMesh *em, const short s * * De-selects faces that have been tagged on efa->tmp.l. */ -static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, short select) +static void uv_faces_do_sticky(SpaceImage *sima, Scene *scene, Object *obedit, short select) { /* Selecting UV Faces with some modes requires us to change * the selection in other faces (depending on the sticky mode). @@ -2297,7 +2298,7 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje * This only needs to be done when the Mesh is not used for * selection (so for sticky modes, vertex or location based). */ - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = scene->toolsettings; BMEditMesh *em = BMEdit_FromObject(obedit); BMFace *efa; BMLoop *l; @@ -2418,7 +2419,7 @@ static int border_select_exec(bContext *C, wmOperator *op) { SpaceImage *sima = CTX_wm_space_image(C); Scene *scene = CTX_data_scene(C); - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = scene->toolsettings; Object *obedit = CTX_data_edit_object(C); Image *ima = CTX_data_edit_image(C); ARegion *ar = CTX_wm_region(C); @@ -2477,7 +2478,7 @@ static int border_select_exec(bContext *C, wmOperator *op) /* (de)selects all tagged faces and deals with sticky modes */ if (change) - uv_faces_do_sticky(C, sima, scene, obedit, select); + uv_faces_do_sticky(sima, scene, obedit, select); } else { /* other selection modes */ @@ -2512,7 +2513,9 @@ static int border_select_exec(bContext *C, wmOperator *op) if (change) { uv_select_sync_flush(ts, em, select); - WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + if (ts->uv_flag & UV_SYNC_SELECTION) { + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + } return OPERATOR_FINISHED; } @@ -2571,6 +2574,7 @@ static int circle_select_exec(bContext *C, wmOperator *op) { SpaceImage *sima = CTX_wm_space_image(C); Scene *scene = CTX_data_scene(C); + ToolSettings *ts = scene->toolsettings; Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); ARegion *ar = CTX_wm_region(C); @@ -2608,9 +2612,11 @@ static int circle_select_exec(bContext *C, wmOperator *op) } if (change) { - uv_select_sync_flush(scene->toolsettings, em, select); + uv_select_sync_flush(ts, em, select); - WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + if (ts->uv_flag & UV_SYNC_SELECTION) { + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + } } return OPERATOR_FINISHED; @@ -2640,6 +2646,126 @@ static void UV_OT_circle_select(wmOperatorType *ot) RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); } + +/* ******************** lasso select operator **************** */ + +static void do_lasso_select_mesh_uv(bContext *C, int mcords[][2], short moves, short select) +{ + Image *ima = CTX_data_edit_image(C); + ARegion *ar = CTX_wm_region(C); + Object *obedit = CTX_data_edit_object(C); + Scene *scene = CTX_data_scene(C); + ToolSettings *ts = scene->toolsettings; + BMEditMesh *em = BMEdit_FromObject(obedit); + + BMIter iter, liter; + + BMFace *efa; + BMLoop *l; + MTexPoly *tf; + int screen_uv[2], change = TRUE; + rcti rect; + + BLI_lasso_boundbox(&rect, mcords, moves); + + if (ts->uv_selectmode == UV_SELECT_FACE) { /* Face Center Sel */ + change = FALSE; + BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { + /* assume not touched */ + if ((select) != (uvedit_face_select_test(scene, em, efa))) { + float cent[2]; + uv_poly_center(em, efa, cent); + UI_view2d_view_to_region(&ar->v2d, cent[0], cent[1], &screen_uv[0], &screen_uv[1]); + if (BLI_in_rcti(&rect, screen_uv[0], screen_uv[1]) && + BLI_lasso_is_point_inside(mcords, moves, screen_uv[0], screen_uv[1], V2D_IS_CLIPPED)) + { + uvedit_face_select_enable(scene, em, efa, FALSE); + change = TRUE; + } + } + } + } + else { /* Vert Sel */ + BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { + tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); + if (uvedit_face_visible_test(scene, ima, efa, tf)) { + BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { + if ((select) != (uvedit_uv_select_test(em, scene, l))) { + MLoopUV *luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); + UI_view2d_view_to_region(&ar->v2d, luv->uv[0], luv->uv[1], &screen_uv[0], &screen_uv[1]); + if (BLI_in_rcti(&rect, screen_uv[0], screen_uv[1]) && + BLI_lasso_is_point_inside(mcords, moves, screen_uv[0], screen_uv[1], V2D_IS_CLIPPED)) + { + if (select) { + uvedit_uv_select_enable(em, scene, l, FALSE); + } + else { + uvedit_uv_select_disable(em, scene, l); + } + } + } + } + } + } + } + if (change) { + uv_select_sync_flush(scene->toolsettings, em, select); + + if (ts->uv_flag & UV_SYNC_SELECTION) { + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); + } + } +} + +static int uv_lasso_select_exec(bContext *C, wmOperator *op) +{ + int i = 0; + int mcords[1024][2]; + + RNA_BEGIN (op->ptr, itemptr, "path") { + float loc[2]; + + RNA_float_get_array(&itemptr, "loc", loc); + mcords[i][0] = (int)loc[0]; + mcords[i][1] = (int)loc[1]; + i++; + if (i >= 1024) break; + } + RNA_END; + + if (i > 1) { + short select; + + select = !RNA_boolean_get(op->ptr, "deselect"); + do_lasso_select_mesh_uv(C, mcords, i, select); + + return OPERATOR_FINISHED; + } + return OPERATOR_PASS_THROUGH; +} + +void UV_OT_select_lasso(wmOperatorType *ot) +{ + ot->name = "Lasso Select UV"; + ot->description = "Select UVs using lasso selection"; + ot->idname = "UV_OT_select_lasso"; + + ot->invoke = WM_gesture_lasso_invoke; + ot->modal = WM_gesture_lasso_modal; + ot->exec = uv_lasso_select_exec; + ot->poll = ED_operator_image_active; + ot->cancel = WM_gesture_lasso_cancel; + + /* flags */ + ot->flag = OPTYPE_UNDO; + + RNA_def_collection_runtime(ot->srna, "path", &RNA_OperatorMousePath, "Path", ""); + RNA_def_boolean(ot->srna, "deselect", 0, "Deselect", "Deselect rather than select items"); + RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection instead of deselecting everything first"); +} + + + /* ******************** snap cursor operator **************** */ static void snap_uv_to_pixel(float *uvco, float w, float h) @@ -3007,9 +3133,9 @@ static int bm_face_is_all_uv_sel(BMesh *bm, BMFace *f, int bool_test) static int hide_exec(bContext *C, wmOperator *op) { SpaceImage *sima = CTX_wm_space_image(C); - ToolSettings *ts = CTX_data_tool_settings(C); Object *obedit = CTX_data_edit_object(C); Scene *scene = CTX_data_scene(C); + ToolSettings *ts = scene->toolsettings; BMEditMesh *em = BMEdit_FromObject(obedit); BMFace *efa; BMLoop *l; @@ -3122,9 +3248,9 @@ static void UV_OT_hide(wmOperatorType *ot) static int reveal_exec(bContext *C, wmOperator *UNUSED(op)) { SpaceImage *sima = CTX_wm_space_image(C); - ToolSettings *ts = CTX_data_tool_settings(C); Object *obedit = CTX_data_edit_object(C); - /*Scene *scene = CTX_data_scene(C);*/ /*UNUSED*/ + Scene *scene = CTX_data_scene(C); + ToolSettings *ts = scene->toolsettings; BMEditMesh *em = BMEdit_FromObject(obedit); BMFace *efa; BMLoop *l; @@ -3550,6 +3676,7 @@ void ED_operatortypes_uvedit(void) WM_operatortype_append(UV_OT_unlink_selected); WM_operatortype_append(UV_OT_select_pinned); WM_operatortype_append(UV_OT_select_border); + WM_operatortype_append(UV_OT_select_lasso); WM_operatortype_append(UV_OT_circle_select); WM_operatortype_append(UV_OT_snap_cursor); @@ -3610,6 +3737,11 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "UV_OT_circle_select", CKEY, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "UV_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); + RNA_boolean_set(kmi->ptr, "deselect", FALSE); + kmi = WM_keymap_add_item(keymap, "UV_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT, 0); + RNA_boolean_set(kmi->ptr, "deselect", TRUE); + /* selection manipulation */ RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0)->ptr, "extend", FALSE); RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0)->ptr, "extend", FALSE); From 09dc600839904a198ab4ba3fad62ce58c2d3aa07 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 28 Apr 2012 06:28:07 +0000 Subject: [PATCH 129/158] Same mingw fix as for compile --- build_files/buildbot/slave_pack.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index cb02e619c1d..73c633d0c29 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -81,6 +81,8 @@ if builder.find('scons') != -1: scons_options.append('BF_BITNESS=' + bitness) scons_options.append('WITH_BF_CYCLES_CUDA_BINARIES=True') scons_options.append('BF_CYCLES_CUDA_NVCC=nvcc.exe') + if builder.find('mingw') != -1: + scons_options.append('BF_TOOLSET=mingw') retcode = subprocess.call(['python', 'scons/scons.py'] + scons_options) sys.exit(retcode) From b340f930ec5639f24e7e2d47fab221fb752b61dd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 06:31:57 +0000 Subject: [PATCH 130/158] style cleanup: changes to brace placement / newlines - for/while/if/switch --- intern/container/CTR_Map.h | 2 +- intern/ghost/GHOST_Rect.h | 4 +- intern/guardedalloc/intern/mallocn.c | 80 +- intern/mikktspace/mikktspace.c | 406 ++++----- intern/utfconv/utf_winfunc.c | 12 +- release/plugins/sequence/blur.c | 50 +- release/plugins/texture/clouds2.c | 4 +- release/plugins/texture/tiles.c | 22 +- source/blender/avi/intern/avi.c | 2 + source/blender/avi/intern/codecs.c | 8 +- source/blender/blenkernel/intern/CCGSubSurf.c | 2 + .../blender/blenkernel/intern/DerivedMesh.c | 11 +- source/blender/blenkernel/intern/anim.c | 6 +- source/blender/blenkernel/intern/anim_sys.c | 16 +- source/blender/blenkernel/intern/armature.c | 2 +- source/blender/blenkernel/intern/boids.c | 6 +- source/blender/blenkernel/intern/brush.c | 2 +- source/blender/blenkernel/intern/bvhutils.c | 6 +- source/blender/blenkernel/intern/cloth.c | 176 ++-- source/blender/blenkernel/intern/collision.c | 221 ++--- source/blender/blenkernel/intern/colortools.c | 11 +- source/blender/blenkernel/intern/constraint.c | 21 +- source/blender/blenkernel/intern/context.c | 2 +- source/blender/blenkernel/intern/curve.c | 4 +- source/blender/blenkernel/intern/customdata.c | 7 +- source/blender/blenkernel/intern/deform.c | 4 +- source/blender/blenkernel/intern/depsgraph.c | 4 +- source/blender/blenkernel/intern/displist.c | 2 +- .../blender/blenkernel/intern/dynamicpaint.c | 186 ++-- source/blender/blenkernel/intern/effect.c | 11 +- source/blender/blenkernel/intern/fcurve.c | 3 +- source/blender/blenkernel/intern/fmodifier.c | 3 +- source/blender/blenkernel/intern/font.c | 28 +- source/blender/blenkernel/intern/idprop.c | 3 +- source/blender/blenkernel/intern/image.c | 23 +- source/blender/blenkernel/intern/image_gen.c | 12 +- source/blender/blenkernel/intern/implicit.c | 221 ++--- source/blender/blenkernel/intern/library.c | 15 +- source/blender/blenkernel/intern/material.c | 6 +- source/blender/blenkernel/intern/mball.c | 9 +- source/blender/blenkernel/intern/mesh.c | 37 +- source/blender/blenkernel/intern/movieclip.c | 2 +- source/blender/blenkernel/intern/multires.c | 2 +- .../blenkernel/intern/navmesh_conversion.c | 117 +-- source/blender/blenkernel/intern/nla.c | 4 +- source/blender/blenkernel/intern/object.c | 14 +- source/blender/blenkernel/intern/ocean.c | 149 ++-- source/blender/blenkernel/intern/packedFile.c | 2 +- source/blender/blenkernel/intern/paint.c | 2 +- source/blender/blenkernel/intern/particle.c | 10 +- .../blenkernel/intern/particle_system.c | 40 +- source/blender/blenkernel/intern/pointcache.c | 60 +- source/blender/blenkernel/intern/property.c | 10 +- source/blender/blenkernel/intern/report.c | 2 +- source/blender/blenkernel/intern/sca.c | 10 +- source/blender/blenkernel/intern/seqeffects.c | 2 +- source/blender/blenkernel/intern/sequencer.c | 4 + source/blender/blenkernel/intern/shrinkwrap.c | 67 +- source/blender/blenkernel/intern/sketch.c | 129 +-- source/blender/blenkernel/intern/softbody.c | 41 +- source/blender/blenkernel/intern/sound.c | 104 +-- .../blender/blenkernel/intern/subsurf_ccg.c | 2 + source/blender/blenkernel/intern/text.c | 93 +- source/blender/blenkernel/intern/texture.c | 6 +- .../blender/blenkernel/intern/writeffmpeg.c | 30 +- source/blender/blenlib/intern/BLI_kdopbvh.c | 283 +++--- source/blender/blenlib/intern/DLRB_tree.c | 6 +- source/blender/blenlib/intern/bpath.c | 2 +- source/blender/blenlib/intern/dynlib.c | 2 + source/blender/blenlib/intern/freetypefont.c | 19 +- source/blender/blenlib/intern/graph.c | 399 +++------ source/blender/blenlib/intern/listbase.c | 3 +- source/blender/blenlib/intern/path_util.c | 2 +- source/blender/blenlib/intern/pbvh.c | 10 +- source/blender/blenlib/intern/string.c | 2 +- source/blender/blenlib/intern/string_utf8.c | 2 +- .../blender/blenloader/intern/readblenentry.c | 3 +- source/blender/blenloader/intern/readfile.c | 178 ++-- source/blender/blenloader/intern/writefile.c | 24 +- source/blender/bmesh/intern/bmesh_walkers.c | 3 +- .../blender/bmesh/intern/bmesh_walkers_impl.c | 2 +- source/blender/collada/AnimationExporter.cpp | 110 +-- source/blender/collada/AnimationImporter.cpp | 46 +- source/blender/collada/ArmatureExporter.cpp | 38 +- source/blender/collada/ArmatureImporter.cpp | 3 +- source/blender/collada/CameraExporter.cpp | 11 +- source/blender/collada/DocumentExporter.cpp | 2 +- source/blender/collada/DocumentImporter.cpp | 19 +- source/blender/collada/EffectExporter.cpp | 5 +- source/blender/collada/ErrorHandler.cpp | 22 +- source/blender/collada/GeometryExporter.cpp | 6 +- source/blender/collada/GeometryExporter.h | 9 +- source/blender/collada/ImageExporter.cpp | 5 +- source/blender/collada/LightExporter.cpp | 7 +- source/blender/collada/MaterialExporter.cpp | 5 +- source/blender/collada/MaterialExporter.h | 2 +- source/blender/collada/MeshImporter.cpp | 8 +- source/blender/collada/SceneExporter.cpp | 11 +- source/blender/collada/TransformReader.cpp | 2 +- source/blender/collada/TransformWriter.cpp | 9 +- source/blender/collada/collada_internal.cpp | 39 +- .../blender/editors/animation/anim_filter.c | 3 +- .../blender/editors/animation/anim_markers.c | 2 +- .../blender/editors/armature/editarmature.c | 5 +- .../editors/armature/editarmature_generate.c | 48 +- .../editors/armature/editarmature_retarget.c | 834 ++++++------------ .../editors/armature/editarmature_sketch.c | 738 ++++++---------- source/blender/editors/armature/poselib.c | 8 +- source/blender/editors/armature/reeb.c | 793 ++++++----------- source/blender/editors/curve/editcurve.c | 2 +- source/blender/editors/curve/editfont.c | 27 +- .../editors/interface/interface_handlers.c | 6 +- .../editors/interface/interface_widgets.c | 3 +- source/blender/editors/interface/resources.c | 3 +- source/blender/editors/mesh/editmesh_tools.c | 5 +- source/blender/editors/mesh/meshtools.c | 5 +- source/blender/editors/object/object_add.c | 4 +- source/blender/editors/object/object_bake.c | 2 +- source/blender/editors/object/object_edit.c | 18 +- source/blender/editors/object/object_hook.c | 2 +- .../blender/editors/object/object_relations.c | 6 +- .../blender/editors/object/object_shapekey.c | 2 +- source/blender/editors/object/object_vgroup.c | 15 +- .../editors/physics/dynamicpaint_ops.c | 3 +- .../blender/editors/physics/particle_edit.c | 12 +- .../blender/editors/physics/physics_fluid.c | 3 +- source/blender/editors/screen/area.c | 18 +- source/blender/editors/screen/glutil.c | 18 +- source/blender/editors/screen/screen_edit.c | 4 +- source/blender/editors/screen/screen_ops.c | 12 +- .../editors/sculpt_paint/paint_cursor.c | 4 + source/blender/editors/sculpt_paint/sculpt.c | 9 +- .../editors/sculpt_paint/sculpt_undo.c | 2 + source/blender/editors/sound/sound_ops.c | 6 +- .../editors/space_action/space_action.c | 14 +- .../editors/space_buttons/buttons_context.c | 2 +- .../editors/space_buttons/buttons_header.c | 4 +- .../editors/space_buttons/space_buttons.c | 12 +- .../editors/space_clip/clip_graph_ops.c | 2 +- source/blender/editors/space_clip/clip_ops.c | 4 +- .../blender/editors/space_clip/space_clip.c | 16 +- .../blender/editors/space_clip/tracking_ops.c | 2 +- source/blender/editors/space_file/file_draw.c | 8 +- source/blender/editors/space_file/file_ops.c | 3 +- source/blender/editors/space_file/filelist.c | 4 +- source/blender/editors/space_file/filesel.c | 3 +- source/blender/editors/space_file/fsmenu.c | 19 +- .../blender/editors/space_file/space_file.c | 8 +- .../editors/space_graph/graph_buttons.c | 2 +- .../blender/editors/space_graph/space_graph.c | 10 +- .../blender/editors/space_image/space_image.c | 2 + .../editors/space_logic/logic_buttons.c | 3 +- .../editors/space_logic/logic_window.c | 72 +- .../blender/editors/space_logic/space_logic.c | 4 +- .../blender/editors/space_nla/nla_buttons.c | 2 +- source/blender/editors/space_nla/space_nla.c | 20 +- source/blender/editors/space_node/drawnode.c | 37 +- source/blender/editors/space_node/node_edit.c | 4 +- .../editors/space_node/node_templates.c | 13 +- .../blender/editors/space_node/space_node.c | 6 +- .../editors/space_outliner/outliner_draw.c | 16 +- .../editors/space_outliner/outliner_select.c | 4 +- .../editors/space_outliner/outliner_tools.c | 2 +- .../editors/space_outliner/space_outliner.c | 16 +- .../editors/space_sequencer/sequencer_draw.c | 12 +- source/blender/editors/space_text/text_draw.c | 3 +- .../blender/editors/space_time/space_time.c | 8 +- .../editors/space_userpref/space_userpref.c | 2 +- .../editors/space_view3d/view3d_edit.c | 9 +- source/blender/editors/transform/transform.c | 169 ++-- .../editors/transform/transform_constraints.c | 9 +- .../editors/transform/transform_conversions.c | 68 +- .../editors/transform/transform_generics.c | 109 +-- .../editors/transform/transform_input.c | 6 +- .../editors/transform/transform_manipulator.c | 12 +- .../blender/editors/transform/transform_ops.c | 53 +- .../transform/transform_orientations.c | 14 +- .../editors/transform/transform_snap.c | 240 ++--- source/blender/editors/util/numinput.c | 3 +- source/blender/gpu/intern/gpu_buffers.c | 6 +- source/blender/gpu/intern/gpu_codegen.c | 8 +- source/blender/gpu/intern/gpu_draw.c | 6 +- source/blender/gpu/intern/gpu_extensions.c | 18 +- source/blender/gpu/intern/gpu_material.c | 17 +- .../blender/ikplugin/intern/itasc_plugin.cpp | 34 +- source/blender/imbuf/intern/anim_movie.c | 2 +- .../blender/imbuf/intern/dds/ColorBlock.cpp | 24 +- .../imbuf/intern/dds/DirectDrawSurface.cpp | 8 +- source/blender/imbuf/intern/dds/PixelFormat.h | 16 +- source/blender/imbuf/intern/jpeg.c | 6 +- .../imbuf/intern/openexr/openexr_api.cpp | 47 +- source/blender/imbuf/intern/png.c | 2 +- source/blender/imbuf/intern/radiance_hdr.c | 7 +- source/blender/imbuf/intern/targa.c | 4 +- source/blender/imbuf/intern/thumbs.c | 4 +- source/blender/imbuf/intern/util.c | 7 +- source/blender/makesdna/intern/dna_genfile.c | 4 +- source/blender/makesdna/intern/makesdna.c | 3 +- source/blender/makesrna/intern/makesrna.c | 4 +- source/blender/makesrna/intern/rna_access.c | 3 +- source/blender/makesrna/intern/rna_fcurve.c | 6 +- source/blender/makesrna/intern/rna_main.c | 3 +- source/blender/makesrna/intern/rna_wm.c | 12 +- source/blender/modifiers/intern/MOD_boolean.c | 2 +- source/blender/modifiers/intern/MOD_cast.c | 14 +- .../blender/modifiers/intern/MOD_collision.c | 18 +- .../blender/modifiers/intern/MOD_displace.c | 2 +- source/blender/modifiers/intern/MOD_explode.c | 4 +- .../modifiers/intern/MOD_fluidsim_util.c | 42 +- source/blender/modifiers/intern/MOD_mask.c | 15 +- source/blender/modifiers/intern/MOD_remesh.c | 6 +- source/blender/modifiers/intern/MOD_screw.c | 2 +- .../modifiers/intern/MOD_simpledeform.c | 9 +- source/blender/modifiers/intern/MOD_util.c | 2 +- source/blender/modifiers/intern/MOD_warp.c | 2 +- source/blender/modifiers/intern/MOD_wave.c | 4 +- .../modifiers/intern/MOD_weightvg_util.c | 6 +- .../nodes/composite/node_composite_util.c | 13 +- .../nodes/node_composite_channelMatte.c | 8 +- .../nodes/node_composite_colorSpill.c | 12 +- .../composite/nodes/node_composite_filter.c | 2 +- .../composite/nodes/node_composite_image.c | 7 +- .../composite/nodes/node_composite_levels.c | 8 +- .../composite/nodes/node_composite_math.c | 3 +- .../composite/nodes/node_composite_rotate.c | 2 +- .../nodes/node_composite_sepcombYCCA.c | 12 +- .../nodes/node_composite_transform.c | 2 +- .../blender/nodes/shader/node_shader_util.c | 6 +- .../nodes/shader/nodes/node_shader_math.c | 2 +- .../nodes/texture/nodes/node_texture_math.c | 2 +- .../nodes/texture/nodes/node_texture_output.c | 14 +- .../quicktime/apple/quicktime_import.c | 40 +- source/blender/render/intern/raytrace/bvh.h | 121 +-- .../render/intern/raytrace/rayobject.cpp | 78 +- .../intern/raytrace/rayobject_blibvh.cpp | 3 +- .../render/intern/raytrace/rayobject_hint.h | 2 +- .../intern/raytrace/rayobject_instance.cpp | 18 +- .../intern/raytrace/rayobject_octree.cpp | 72 +- .../render/intern/raytrace/rayobject_qbvh.cpp | 3 +- .../intern/raytrace/rayobject_rtbuild.cpp | 53 +- .../intern/raytrace/rayobject_svbvh.cpp | 12 +- .../render/intern/raytrace/rayobject_vbvh.cpp | 12 +- .../render/intern/raytrace/reorganize.h | 188 ++-- source/blender/render/intern/raytrace/svbvh.h | 89 +- source/blender/render/intern/raytrace/vbvh.h | 35 +- .../render/intern/source/convertblender.c | 13 +- .../blender/render/intern/source/initrender.c | 4 +- .../render/intern/source/pointdensity.c | 2 +- .../blender/render/intern/source/rayshade.c | 102 +-- .../render/intern/source/render_texture.c | 10 +- .../blender/render/intern/source/rendercore.c | 4 +- .../render/intern/source/renderdatabase.c | 6 +- .../render/intern/source/shadeoutput.c | 7 +- source/blender/render/intern/source/sunsky.c | 6 +- .../render/intern/source/volume_precache.c | 33 +- .../blender/render/intern/source/volumetric.c | 3 +- .../blender/render/intern/source/voxeldata.c | 17 +- source/blender/render/intern/source/zbuf.c | 4 +- .../blender/windowmanager/intern/wm_keymap.c | 2 + .../windowmanager/intern/wm_operators.c | 7 +- 260 files changed, 3501 insertions(+), 5421 deletions(-) diff --git a/intern/container/CTR_Map.h b/intern/container/CTR_Map.h index 8b6d84337c2..9557821d642 100644 --- a/intern/container/CTR_Map.h +++ b/intern/container/CTR_Map.h @@ -63,7 +63,7 @@ public: for (int i = 0; i < m_num_buckets; ++i) { m_buckets[i] = 0; - for(Entry *entry = map.m_buckets[i]; entry; entry=entry->m_next) + for (Entry *entry = map.m_buckets[i]; entry; entry=entry->m_next) insert(entry->m_key, entry->m_value); } } diff --git a/intern/ghost/GHOST_Rect.h b/intern/ghost/GHOST_Rect.h index bcbcaded364..30d9d16b701 100644 --- a/intern/ghost/GHOST_Rect.h +++ b/intern/ghost/GHOST_Rect.h @@ -241,8 +241,10 @@ inline void GHOST_Rect::wrapPoint(GHOST_TInt32 &x, GHOST_TInt32 &y, GHOST_TInt32 GHOST_TInt32 h= getHeight(); /* highly unlikely but avoid eternal loop */ - if(w-ofs*2 <= 0 || h-ofs*2 <= 0) + if (w-ofs*2 <= 0 || h-ofs*2 <= 0) { return; + } + while(x-ofs < m_l) x+= w-(ofs*2); while(y-ofs < m_t) y+= h-(ofs*2); while(x+ofs > m_r) x-= w-(ofs*2); diff --git a/intern/guardedalloc/intern/mallocn.c b/intern/guardedalloc/intern/mallocn.c index 2a6a0df0ff4..bb3a1c66ddc 100644 --- a/intern/guardedalloc/intern/mallocn.c +++ b/intern/guardedalloc/intern/mallocn.c @@ -243,7 +243,7 @@ void *MEM_dupallocN(void *vmemh) MemHead *memh= vmemh; memh--; - if(memh->mmap) + if (memh->mmap) newp= MEM_mapallocN(memh->len, "dupli_mapalloc"); else newp= MEM_mallocN(memh->len, "dupli_alloc"); @@ -265,8 +265,8 @@ void *MEM_reallocN(void *vmemh, size_t len) memh--; newp= MEM_mallocN(len, memh->name); - if(newp) { - if(len < memh->len) + if (newp) { + if (len < memh->len) memcpy(newp, vmemh, len); else memcpy(newp, vmemh, memh->len); @@ -311,14 +311,14 @@ void *MEM_mallocN(size_t len, const char *str) memh= (MemHead *)malloc(len+sizeof(MemHead)+sizeof(MemTail)); - if(memh) { + if (memh) { make_memhead_header(memh, len, str); mem_unlock_thread(); - if(malloc_debug_memset && len) + if (malloc_debug_memset && len) memset(memh+1, 255, len); #ifdef DEBUG_MEMCOUNTER - if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) + if (_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) memcount_raise(__func__); memh->_count= _mallocn_count++; #endif @@ -339,11 +339,11 @@ void *MEM_callocN(size_t len, const char *str) memh= (MemHead *)calloc(len+sizeof(MemHead)+sizeof(MemTail),1); - if(memh) { + if (memh) { make_memhead_header(memh, len, str); mem_unlock_thread(); #ifdef DEBUG_MEMCOUNTER - if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) + if (_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) memcount_raise(__func__); memh->_count= _mallocn_count++; #endif @@ -366,14 +366,14 @@ void *MEM_mapallocN(size_t len, const char *str) memh= mmap(NULL, len+sizeof(MemHead)+sizeof(MemTail), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0); - if(memh!=(MemHead *)-1) { + if (memh!=(MemHead *)-1) { make_memhead_header(memh, len, str); memh->mmap= 1; mmap_in_use += len; peak_mem = mmap_in_use > peak_mem ? mmap_in_use : peak_mem; mem_unlock_thread(); #ifdef DEBUG_MEMCOUNTER - if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) + if (_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL) memcount_raise(__func__); memh->_count= _mallocn_count++; #endif @@ -406,9 +406,9 @@ static int compare_len(const void *p1, const void *p2) const MemPrintBlock *pb1= (const MemPrintBlock*)p1; const MemPrintBlock *pb2= (const MemPrintBlock*)p2; - if(pb1->len < pb2->len) + if (pb1->len < pb2->len) return 1; - else if(pb1->len == pb2->len) + else if (pb1->len == pb2->len) return 0; else return -1; @@ -431,7 +431,7 @@ void MEM_printmemlist_stats(void) membl = membase->first; if (membl) membl = MEMNEXT(membl); - while(membl) { + while (membl) { pb->name= membl->name; pb->len= membl->len; pb->items= 1; @@ -439,18 +439,18 @@ void MEM_printmemlist_stats(void) totpb++; pb++; - if(membl->next) + if (membl->next) membl= MEMNEXT(membl->next); else break; } /* sort by name and add together blocks with the same name */ qsort(printblock, totpb, sizeof(MemPrintBlock), compare_name); - for(a=0, b=0; aitems, (double)pb->len/(double)(1024*1024), (double)pb->len/1024.0/(double)pb->items, pb->name); free(printblock); @@ -491,7 +491,7 @@ static void MEM_printmemlist_internal( int pydict ) print_error("# membase_debug.py\n"); print_error("membase = [\\\n"); } - while(membl) { + while (membl) { if (pydict) { fprintf(stderr, "{'len':" SIZET_FORMAT ", 'name':'''%s''', 'pointer':'%p'},\\\n", SIZET_ARG(membl->len), membl->name, (void *)(membl+1)); } else { @@ -501,7 +501,7 @@ static void MEM_printmemlist_internal( int pydict ) print_error("%s len: " SIZET_FORMAT " %p\n", membl->name, SIZET_ARG(membl->len), membl+1); #endif } - if(membl->next) + if (membl->next) membl= MEMNEXT(membl->next); else break; } @@ -536,9 +536,9 @@ void MEM_callbackmemlist(void (*func)(void*)) { membl = membase->first; if (membl) membl = MEMNEXT(membl); - while(membl) { + while (membl) { func(membl+1); - if(membl->next) + if (membl->next) membl= MEMNEXT(membl->next); else break; } @@ -554,13 +554,13 @@ short MEM_testN(void *vmemh) { membl = membase->first; if (membl) membl = MEMNEXT(membl); - while(membl) { + while (membl) { if (vmemh == membl+1) { mem_unlock_thread(); return 1; } - if(membl->next) + if (membl->next) membl= MEMNEXT(membl->next); else break; } @@ -585,13 +585,13 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */ MemHead *memh= vmemh; const char *name; - if (memh == NULL){ + if (memh == NULL) { MemorY_ErroR("free","attempt to free NULL pointer"); /* print_error(err_stream, "%d\n", (memh+4000)->tag1); */ return(-1); } - if(sizeof(intptr_t)==8) { + if (sizeof(intptr_t)==8) { if (((intptr_t) memh) & 0x7) { MemorY_ErroR("free","attempt to free illegal pointer"); return(-1); @@ -605,7 +605,7 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */ } memh--; - if(memh->tag1 == MEMFREE && memh->tag2 == MEMFREE) { + if (memh->tag1 == MEMFREE && memh->tag2 == MEMFREE) { MemorY_ErroR(memh->name,"double free"); return(-1); } @@ -613,7 +613,7 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */ mem_lock_thread(); if ((memh->tag1 == MEMTAG1) && (memh->tag2 == MEMTAG2) && ((memh->len & 0x3) == 0)) { memt = (MemTail *)(((char *) memh) + sizeof(MemHead) + memh->len); - if (memt->tag3 == MEMTAG3){ + if (memt->tag3 == MEMTAG3) { memh->tag1 = MEMFREE; memh->tag2 = MEMFREE; @@ -628,7 +628,7 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */ error = 2; MemorY_ErroR(memh->name,"end corrupt"); name = check_memlist(memh); - if (name != NULL){ + if (name != NULL) { if (name != memh->name) MemorY_ErroR(name,"is also corrupt"); } } else{ @@ -694,13 +694,13 @@ static void rem_memblock(MemHead *memh) totblock--; mem_in_use -= memh->len; - if(memh->mmap) { + if (memh->mmap) { mmap_in_use -= memh->len; if (munmap(memh, memh->len + sizeof(MemHead) + sizeof(MemTail))) printf("Couldn't unmap memory %s\n", memh->name); } else { - if(malloc_debug_memset && memh->len) + if (malloc_debug_memset && memh->len) memset(memh+1, 255, memh->len); free(memh); } @@ -723,7 +723,7 @@ static const char *check_memlist(MemHead *memh) forw = membase->first; if (forw) forw = MEMNEXT(forw); forwok = NULL; - while(forw){ + while (forw) { if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break; forwok = forw; if (forw->next) forw = MEMNEXT(forw->next); @@ -733,7 +733,7 @@ static const char *check_memlist(MemHead *memh) back = (MemHead *) membase->last; if (back) back = MEMNEXT(back); backok = NULL; - while(back){ + while (back) { if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break; backok = back; if (back->prev) back = MEMNEXT(back->prev); @@ -742,13 +742,13 @@ static const char *check_memlist(MemHead *memh) if (forw != back) return ("MORE THAN 1 MEMORYBLOCK CORRUPT"); - if (forw == NULL && back == NULL){ + if (forw == NULL && back == NULL) { /* geen foute headers gevonden dan maar op zoek naar memblock*/ forw = membase->first; if (forw) forw = MEMNEXT(forw); forwok = NULL; - while(forw){ + while (forw) { if (forw == memh) break; if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break; forwok = forw; @@ -760,7 +760,7 @@ static const char *check_memlist(MemHead *memh) back = (MemHead *) membase->last; if (back) back = MEMNEXT(back); backok = NULL; - while(back){ + while (back) { if (back == memh) break; if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break; backok = back; @@ -772,10 +772,10 @@ static const char *check_memlist(MemHead *memh) if (forwok) name = forwok->nextname; else name = "No name found"; - if (forw == memh){ + if (forw == memh) { /* voor alle zekerheid wordt dit block maar uit de lijst gehaald */ - if (forwok){ - if (backok){ + if (forwok) { + if (backok) { forwok->next = (MemHead *)&backok->next; backok->prev = (MemHead *)&forwok->next; forwok->nextname = backok->name; @@ -785,7 +785,7 @@ static const char *check_memlist(MemHead *memh) /* membase->last = (struct Link *) &forwok->next; */ } } else{ - if (backok){ + if (backok) { backok->prev = NULL; membase->first = &backok->next; } else{ diff --git a/intern/mikktspace/mikktspace.c b/intern/mikktspace/mikktspace.c index 2036e601bcb..24c77c439a7 100644 --- a/intern/mikktspace/mikktspace.c +++ b/intern/mikktspace/mikktspace.c @@ -193,7 +193,7 @@ static STSpace AvgTSpace(const STSpace * pTS0, const STSpace * pTS1) // this if is important. Due to floating point precision // averaging when ts0==ts1 will cause a slight difference // which results in tangent space splits later on - if(pTS0->fMagS==pTS1->fMagS && pTS0->fMagT==pTS1->fMagT && + if (pTS0->fMagS==pTS1->fMagS && pTS0->fMagT==pTS1->fMagT && veq(pTS0->vOs,pTS1->vOs) && veq(pTS0->vOt, pTS1->vOt)) { ts_res.fMagS = pTS0->fMagS; @@ -207,8 +207,8 @@ static STSpace AvgTSpace(const STSpace * pTS0, const STSpace * pTS1) ts_res.fMagT = 0.5f*(pTS0->fMagT+pTS1->fMagT); ts_res.vOs = vadd(pTS0->vOs,pTS1->vOs); ts_res.vOt = vadd(pTS0->vOt,pTS1->vOt); - if( VNotZero(ts_res.vOs) ) ts_res.vOs = Normalize(ts_res.vOs); - if( VNotZero(ts_res.vOt) ) ts_res.vOt = Normalize(ts_res.vOt); + if ( VNotZero(ts_res.vOs) ) ts_res.vOs = Normalize(ts_res.vOs); + if ( VNotZero(ts_res.vOt) ) ts_res.vOt = Normalize(ts_res.vOt); } return ts_res; @@ -246,7 +246,7 @@ tbool genTangSpace(const SMikkTSpaceContext * pContext, const float fAngularThre const float fThresCos = (float) cos((fAngularThreshold*(float)M_PI)/180.0f); // verify all call-backs have been set - if( pContext->m_pInterface->m_getNumFaces==NULL || + if ( pContext->m_pInterface->m_getNumFaces==NULL || pContext->m_pInterface->m_getNumVerticesOfFace==NULL || pContext->m_pInterface->m_getPosition==NULL || pContext->m_pInterface->m_getNormal==NULL || @@ -254,21 +254,21 @@ tbool genTangSpace(const SMikkTSpaceContext * pContext, const float fAngularThre return TFALSE; // count triangles on supported faces - for(f=0; fm_pInterface->m_getNumVerticesOfFace(pContext, f); - if(verts==3) ++iNrTrianglesIn; + if (verts==3) ++iNrTrianglesIn; else if(verts==4) iNrTrianglesIn += 2; } - if(iNrTrianglesIn<=0) return TFALSE; + if (iNrTrianglesIn<=0) return TFALSE; // allocate memory for an index list piTriListIn = (int *) malloc(sizeof(int)*3*iNrTrianglesIn); pTriInfos = (STriInfo *) malloc(sizeof(STriInfo)*iNrTrianglesIn); - if(piTriListIn==NULL || pTriInfos==NULL) + if (piTriListIn==NULL || pTriInfos==NULL) { - if(piTriListIn!=NULL) free(piTriListIn); - if(pTriInfos!=NULL) free(pTriInfos); + if (piTriListIn!=NULL) free(piTriListIn); + if (pTriInfos!=NULL) free(pTriInfos); return TFALSE; } @@ -283,7 +283,7 @@ tbool genTangSpace(const SMikkTSpaceContext * pContext, const float fAngularThre // Mark all degenerate triangles iTotTris = iNrTrianglesIn; iDegenTriangles = 0; - for(t=0; tm_pInterface->m_getNumVerticesOfFace(pContext, f); - if(verts!=3 && verts!=4) continue; + if (verts!=3 && verts!=4) continue; // I've decided to let degenerate triangles and group-with-anythings @@ -390,28 +390,28 @@ tbool genTangSpace(const SMikkTSpaceContext * pContext, const float fAngularThre // (this is already the case for good triangles but not for // degenerate ones and those with bGroupWithAnything==true) bool bOrient = psTspace[index].bOrient; - if(psTspace[index].iCounter == 0) // tspace was not derived from a group + if (psTspace[index].iCounter == 0) // tspace was not derived from a group { // look for a space created in GenerateTSpaces() by iCounter>0 bool bNotFound = true; int i=1; - while(i 0) bNotFound=false; + if (psTspace[index+i].iCounter > 0) bNotFound=false; else ++i; } - if(!bNotFound) bOrient = psTspace[index+i].bOrient; + if (!bNotFound) bOrient = psTspace[index+i].bOrient; }*/ // set data - for(i=0; ivOs.x, pTSpace->vOs.y, pTSpace->vOs.z}; float bitang[] = {pTSpace->vOt.x, pTSpace->vOt.y, pTSpace->vOt.z}; - if(pContext->m_pInterface->m_setTSpace!=NULL) + if (pContext->m_pInterface->m_setTSpace!=NULL) pContext->m_pInterface->m_setTSpace(pContext, tang, bitang, pTSpace->fMagS, pTSpace->fMagT, pTSpace->bOrient, f, i); - if(pContext->m_pInterface->m_setTSpaceBasic!=NULL) + if (pContext->m_pInterface->m_setTSpaceBasic!=NULL) pContext->m_pInterface->m_setTSpaceBasic(pContext, tang, pTSpace->bOrient==TTRUE ? 1.0f : (-1.0f), f, i); ++index; @@ -464,23 +464,23 @@ static void GenerateSharedVerticesIndexList(int piTriList_in_and_out[], const SM int iMaxCount=0; SVec3 vMin = GetPosition(pContext, 0), vMax = vMin, vDim; float fMin, fMax; - for(i=1; i<(iNrTrianglesIn*3); i++) + for (i=1; i<(iNrTrianglesIn*3); i++) { const int index = piTriList_in_and_out[i]; const SVec3 vP = GetPosition(pContext, index); - if(vMin.x > vP.x) vMin.x = vP.x; + if (vMin.x > vP.x) vMin.x = vP.x; else if(vMax.x < vP.x) vMax.x = vP.x; - if(vMin.y > vP.y) vMin.y = vP.y; + if (vMin.y > vP.y) vMin.y = vP.y; else if(vMax.y < vP.y) vMax.y = vP.y; - if(vMin.z > vP.z) vMin.z = vP.z; + if (vMin.z > vP.z) vMin.z = vP.z; else if(vMax.z < vP.z) vMax.z = vP.z; } vDim = vsub(vMax,vMin); iChannel = 0; fMin = vMin.x; fMax=vMax.x; - if(vDim.y>vDim.x && vDim.y>vDim.z) + if (vDim.y>vDim.x && vDim.y>vDim.z) { iChannel=1; fMin = vMin.y, fMax=vMax.y; @@ -497,12 +497,12 @@ static void GenerateSharedVerticesIndexList(int piTriList_in_and_out[], const SM piHashOffsets = (int *) malloc(sizeof(int)*g_iCells); piHashCount2 = (int *) malloc(sizeof(int)*g_iCells); - if(piHashTable==NULL || piHashCount==NULL || piHashOffsets==NULL || piHashCount2==NULL) + if (piHashTable==NULL || piHashCount==NULL || piHashOffsets==NULL || piHashCount2==NULL) { - if(piHashTable!=NULL) free(piHashTable); - if(piHashCount!=NULL) free(piHashCount); - if(piHashOffsets!=NULL) free(piHashOffsets); - if(piHashCount2!=NULL) free(piHashCount2); + if (piHashTable!=NULL) free(piHashTable); + if (piHashCount!=NULL) free(piHashCount); + if (piHashOffsets!=NULL) free(piHashOffsets); + if (piHashCount2!=NULL) free(piHashCount2); GenerateSharedVerticesIndexListSlow(piTriList_in_and_out, pContext, iNrTrianglesIn); return; } @@ -510,7 +510,7 @@ static void GenerateSharedVerticesIndexList(int piTriList_in_and_out[], const SM memset(piHashCount2, 0, sizeof(int)*g_iCells); // count amount of elements in each cell unit - for(i=0; i<(iNrTrianglesIn*3); i++) + for (i=0; i<(iNrTrianglesIn*3); i++) { const int index = piTriList_in_and_out[i]; const SVec3 vP = GetPosition(pContext, index); @@ -521,11 +521,11 @@ static void GenerateSharedVerticesIndexList(int piTriList_in_and_out[], const SM // evaluate start index of each cell. piHashOffsets[0]=0; - for(k=1; kpTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c]; + for (l=(iL_in+1); l<=iR_in; l++) + for (c=0; c<3; c++) + if (fvMin[c]>pTmpVert[l].vert[c]) fvMin[c]=pTmpVert[l].vert[c]; else if(fvMax[c]dx && dy>dz) channel=1; + if (dy>dx && dy>dz) channel=1; else if(dz>dx) channel=2; fSep = 0.5f*(fvMax[channel]+fvMin[channel]); // terminate recursion when the separation/average value // is no longer strictly between fMin and fMax values. - if(fSep>=fvMax[channel] || fSep<=fvMin[channel]) + if (fSep>=fvMax[channel] || fSep<=fvMin[channel]) { // complete the weld - for(l=iL_in; l<=iR_in; l++) + for (l=iL_in; l<=iR_in; l++) { int i = pTmpVert[l].index; const int index = piTriList_in_and_out[i]; @@ -617,7 +617,7 @@ static void MergeVertsFast(int piTriList_in_and_out[], STmpVert pTmpVert[], cons tbool bNotFound = TTRUE; int l2=iL_in, i2rec=-1; - while(l20); // at least 2 entries // separate (by fSep) all points between iL_in and iR_in in pTmpVert[] - while(iL < iR) + while (iL < iR) { tbool bReadyLeftSwap = TFALSE, bReadyRightSwap = TFALSE; - while((!bReadyLeftSwap) && iL=iL_in && iL<=iR_in); bReadyLeftSwap = !(pTmpVert[iL].vert[channel]=iL_in && iR<=iR_in); bReadyRightSwap = pTmpVert[iR].vert[channel]m_pInterface->m_getNumFaces(pContext); f++) + for (f=0; fm_pInterface->m_getNumFaces(pContext); f++) { const int verts = pContext->m_pInterface->m_getNumVerticesOfFace(pContext, f); - if(verts!=3 && verts!=4) continue; + if (verts!=3 && verts!=4) continue; pTriInfos[iDstTriIndex].iOrgFaceNumber = f; pTriInfos[iDstTriIndex].iTSpacesOffs = iTSpacesOffs; - if(verts==3) + if (verts==3) { unsigned char * pVerts = pTriInfos[iDstTriIndex].vert_num; pVerts[0]=0; pVerts[1]=1; pVerts[2]=2; @@ -810,7 +810,7 @@ static int GenerateInitialVerticesIndexList(STriInfo pTriInfos[], int piTriList_ const float distSQ_02 = LengthSquared(vsub(T2,T0)); const float distSQ_13 = LengthSquared(vsub(T3,T1)); tbool bQuadDiagIs_02; - if(distSQ_020 ? ORIENT_PRESERVING : 0); - if( NotZero(fSignedAreaSTx2) ) + if ( NotZero(fSignedAreaSTx2) ) { const float fAbsArea = fabsf(fSignedAreaSTx2); const float fLenOs = Length(vOs); const float fLenOt = Length(vOt); const float fS = (pTriInfos[f].iFlag&ORIENT_PRESERVING)==0 ? (-1.0f) : 1.0f; - if( NotZero(fLenOs) ) pTriInfos[f].vOs = vscale(fS/fLenOs, vOs); - if( NotZero(fLenOt) ) pTriInfos[f].vOt = vscale(fS/fLenOt, vOt); + if ( NotZero(fLenOs) ) pTriInfos[f].vOs = vscale(fS/fLenOs, vOs); + if ( NotZero(fLenOt) ) pTriInfos[f].vOt = vscale(fS/fLenOt, vOt); // evaluate magnitudes prior to normalization of vOs and vOt pTriInfos[f].fMagS = fLenOs / fAbsArea; pTriInfos[f].fMagT = fLenOt / fAbsArea; // if this is a good triangle - if( NotZero(pTriInfos[f].fMagS) && NotZero(pTriInfos[f].fMagT)) + if ( NotZero(pTriInfos[f].fMagS) && NotZero(pTriInfos[f].fMagT)) pTriInfos[f].iFlag &= (~GROUP_WITH_ANY); } } // force otherwise healthy quads to a fixed orientation - while(t<(iNrTrianglesIn-1)) + while (t<(iNrTrianglesIn-1)) { const int iFO_a = pTriInfos[t].iOrgFaceNumber; const int iFO_b = pTriInfos[t+1].iOrgFaceNumber; - if(iFO_a==iFO_b) // this is a quad + if (iFO_a==iFO_b) // this is a quad { const tbool bIsDeg_a = (pTriInfos[t].iFlag&MARK_DEGENERATE)!=0 ? TTRUE : TFALSE; const tbool bIsDeg_b = (pTriInfos[t+1].iFlag&MARK_DEGENERATE)!=0 ? TTRUE : TFALSE; // bad triangles should already have been removed by // DegenPrologue(), but just in case check bIsDeg_a and bIsDeg_a are false - if((bIsDeg_a||bIsDeg_b)==TFALSE) + if ((bIsDeg_a||bIsDeg_b)==TFALSE) { const tbool bOrientA = (pTriInfos[t].iFlag&ORIENT_PRESERVING)!=0 ? TTRUE : TFALSE; const tbool bOrientB = (pTriInfos[t+1].iFlag&ORIENT_PRESERVING)!=0 ? TTRUE : TFALSE; // if this happens the quad has extremely bad mapping!! - if(bOrientA!=bOrientB) + if (bOrientA!=bOrientB) { //printf("found quad with bad mapping\n"); tbool bChooseOrientFirstTri = TFALSE; - if((pTriInfos[t+1].iFlag&GROUP_WITH_ANY)!=0) bChooseOrientFirstTri = TTRUE; + if ((pTriInfos[t+1].iFlag&GROUP_WITH_ANY)!=0) bChooseOrientFirstTri = TTRUE; else if( CalcTexArea(pContext, &piTriListIn[t*3+0]) >= CalcTexArea(pContext, &piTriListIn[(t+1)*3+0]) ) bChooseOrientFirstTri = TTRUE; @@ -1048,7 +1048,7 @@ static void InitTriInfo(STriInfo pTriInfos[], const int piTriListIn[], const SMi // match up edge pairs { SEdge * pEdges = (SEdge *) malloc(sizeof(SEdge)*iNrTrianglesIn*3); - if(pEdges==NULL) + if (pEdges==NULL) BuildNeighborsSlow(pTriInfos, piTriListIn, iNrTrianglesIn); else { @@ -1070,12 +1070,12 @@ static int Build4RuleGroups(STriInfo pTriInfos[], SGroup pGroups[], int piGroupT const int iNrMaxGroups = iNrTrianglesIn*3; int iNrActiveGroups = 0; int iOffset = 0, f=0, i=0; - for(f=0; f0?(i-1):2]; - if(neigh_indexL>=0) // neighbor + if (neigh_indexL>=0) // neighbor { const tbool bAnswer = AssignRecur(piTriListIn, pTriInfos, neigh_indexL, @@ -1102,7 +1102,7 @@ static int Build4RuleGroups(STriInfo pTriInfos[], SGroup pGroups[], int piGroupT const tbool bDiff = bOrPre!=bOrPre2 ? TTRUE : TFALSE; assert(bAnswer || bDiff); } - if(neigh_indexR>=0) // neighbor + if (neigh_indexR>=0) // neighbor { const tbool bAnswer = AssignRecur(piTriListIn, pTriInfos, neigh_indexR, @@ -1141,20 +1141,20 @@ static tbool AssignRecur(const int piTriListIn[], STriInfo psTriInfos[], const int iVertRep = pGroup->iVertexRepresentitive; const int * pVerts = &piTriListIn[3*iMyTriIndex+0]; int i=-1; - if(pVerts[0]==iVertRep) i=0; + if (pVerts[0]==iVertRep) i=0; else if(pVerts[1]==iVertRep) i=1; else if(pVerts[2]==iVertRep) i=2; assert(i>=0 && i<3); // early out - if(pMyTriInfo->AssignedGroup[i] == pGroup) return TTRUE; + if (pMyTriInfo->AssignedGroup[i] == pGroup) return TTRUE; else if(pMyTriInfo->AssignedGroup[i]!=NULL) return TFALSE; - if((pMyTriInfo->iFlag&GROUP_WITH_ANY)!=0) + if ((pMyTriInfo->iFlag&GROUP_WITH_ANY)!=0) { // first to group with a group-with-anything triangle // determines it's orientation. // This is the only existing order dependency in the code!! - if( pMyTriInfo->AssignedGroup[0] == NULL && + if ( pMyTriInfo->AssignedGroup[0] == NULL && pMyTriInfo->AssignedGroup[1] == NULL && pMyTriInfo->AssignedGroup[2] == NULL ) { @@ -1164,7 +1164,7 @@ static tbool AssignRecur(const int piTriListIn[], STriInfo psTriInfos[], } { const tbool bOrient = (pMyTriInfo->iFlag&ORIENT_PRESERVING)!=0 ? TTRUE : TFALSE; - if(bOrient != pGroup->bOrientPreservering) return TFALSE; + if (bOrient != pGroup->bOrientPreservering) return TFALSE; } AddTriToGroup(pGroup, iMyTriIndex); @@ -1173,9 +1173,9 @@ static tbool AssignRecur(const int piTriListIn[], STriInfo psTriInfos[], { const int neigh_indexL = pMyTriInfo->FaceNeighbors[i]; const int neigh_indexR = pMyTriInfo->FaceNeighbors[i>0?(i-1):2]; - if(neigh_indexL>=0) + if (neigh_indexL>=0) AssignRecur(piTriListIn, psTriInfos, neigh_indexL, pGroup); - if(neigh_indexR>=0) + if (neigh_indexR>=0) AssignRecur(piTriListIn, psTriInfos, neigh_indexR, pGroup); } @@ -1199,39 +1199,39 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con SSubGroup * pUniSubGroups = NULL; int * pTmpMembers = NULL; int iMaxNrFaces=0, iUniqueTspaces=0, g=0, i=0; - for(g=0; giNrFaces; i++) // triangles + for (i=0; iiNrFaces; i++) // triangles { const int f = pGroup->pFaceIndices[i]; // triangle number int index=-1, iVertIndex=-1, iOF_1=-1, iMembers=0, j=0, l=0; SSubGroup tmp_group; tbool bFound; SVec3 n, vOs, vOt; - if(pTriInfos[f].AssignedGroup[0]==pGroup) index=0; + if (pTriInfos[f].AssignedGroup[0]==pGroup) index=0; else if(pTriInfos[f].AssignedGroup[1]==pGroup) index=1; else if(pTriInfos[f].AssignedGroup[2]==pGroup) index=2; assert(index>=0 && index<3); @@ -1245,14 +1245,14 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con // project vOs = vsub(pTriInfos[f].vOs, vscale(vdot(n,pTriInfos[f].vOs), n)); vOt = vsub(pTriInfos[f].vOt, vscale(vdot(n,pTriInfos[f].vOt), n)); - if( VNotZero(vOs) ) vOs = Normalize(vOs); - if( VNotZero(vOt) ) vOt = Normalize(vOt); + if ( VNotZero(vOs) ) vOs = Normalize(vOs); + if ( VNotZero(vOt) ) vOt = Normalize(vOt); // original face number iOF_1 = pTriInfos[f].iOrgFaceNumber; iMembers = 0; - for(j=0; jiNrFaces; j++) + for (j=0; jiNrFaces; j++) { const int t = pGroup->pFaceIndices[j]; // triangle number const int iOF_2 = pTriInfos[t].iOrgFaceNumber; @@ -1260,8 +1260,8 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con // project SVec3 vOs2 = vsub(pTriInfos[t].vOs, vscale(vdot(n,pTriInfos[t].vOs), n)); SVec3 vOt2 = vsub(pTriInfos[t].vOt, vscale(vdot(n,pTriInfos[t].vOt), n)); - if( VNotZero(vOs2) ) vOs2 = Normalize(vOs2); - if( VNotZero(vOt2) ) vOt2 = Normalize(vOt2); + if ( VNotZero(vOs2) ) vOs2 = Normalize(vOs2); + if ( VNotZero(vOt2) ) vOt2 = Normalize(vOt2); { const tbool bAny = ( (pTriInfos[f].iFlag | pTriInfos[t].iFlag) & GROUP_WITH_ANY )!=0 ? TTRUE : TFALSE; @@ -1272,7 +1272,7 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con const float fCosT = vdot(vOt,vOt2); assert(f!=t || bSameOrgFace); // sanity check - if(bAny || bSameOrgFace || (fCosS>fThresCos && fCosT>fThresCos)) + if (bAny || bSameOrgFace || (fCosS>fThresCos && fCosT>fThresCos)) pTmpMembers[iMembers++] = t; } } @@ -1280,7 +1280,7 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con // sort pTmpMembers tmp_group.iNrFaces = iMembers; tmp_group.pTriMembers = pTmpMembers; - if(iMembers>1) + if (iMembers>1) { unsigned int uSeed = INTERNAL_RND_SORT_SEED; // could replace with a random seed? QuickSort(pTmpMembers, 0, iMembers-1, uSeed); @@ -1289,10 +1289,10 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con // look for an existing match bFound = TFALSE; l=0; - while(liCounter<2); assert(((pTriInfos[f].iFlag&ORIENT_PRESERVING)!=0) == pGroup->bOrientPreservering); - if(pTS_out->iCounter==1) + if (pTS_out->iCounter==1) { *pTS_out = AvgTSpace(pTS_out, &pSubGroupTspace[l]); pTS_out->iCounter = 2; // update counter @@ -1347,7 +1347,7 @@ static tbool GenerateTSpaces(STSpace psTspace[], const STriInfo pTriInfos[], con } // clean up and offset iUniqueTspaces - for(s=0; s=0 && i<3); @@ -1390,8 +1390,8 @@ static STSpace EvalTspace(int face_indices[], const int iFaces, const int piTriL n = GetNormal(pContext, index); vOs = vsub(pTriInfos[f].vOs, vscale(vdot(n,pTriInfos[f].vOs), n)); vOt = vsub(pTriInfos[f].vOt, vscale(vdot(n,pTriInfos[f].vOt), n)); - if( VNotZero(vOs) ) vOs = Normalize(vOs); - if( VNotZero(vOt) ) vOt = Normalize(vOt); + if ( VNotZero(vOs) ) vOs = Normalize(vOs); + if ( VNotZero(vOt) ) vOt = Normalize(vOt); i2 = piTriListIn[3*f + (i<2?(i+1):0)]; i1 = piTriListIn[3*f + i]; @@ -1423,9 +1423,9 @@ static STSpace EvalTspace(int face_indices[], const int iFaces, const int piTriL } // normalize - if( VNotZero(res.vOs) ) res.vOs = Normalize(res.vOs); - if( VNotZero(res.vOt) ) res.vOt = Normalize(res.vOt); - if(fAngleSum>0) + if ( VNotZero(res.vOs) ) res.vOs = Normalize(res.vOs); + if ( VNotZero(res.vOt) ) res.vOt = Normalize(res.vOt); + if (fAngleSum>0) { res.fMagS /= fAngleSum; res.fMagT /= fAngleSum; @@ -1438,11 +1438,11 @@ static tbool CompareSubGroups(const SSubGroup * pg1, const SSubGroup * pg2) { tbool bStillSame=TTRUE; int i=0; - if(pg1->iNrFaces!=pg2->iNrFaces) return TFALSE; - while(iiNrFaces && bStillSame) + if (pg1->iNrFaces!=pg2->iNrFaces) return TFALSE; + while (iiNrFaces && bStillSame) { bStillSame = pg1->pTriMembers[i]==pg2->pTriMembers[i] ? TTRUE : TFALSE; - if(bStillSame) ++i; + if (bStillSame) ++i; } return bStillSame; } @@ -1467,12 +1467,12 @@ static void QuickSort(int* pSortBuffer, int iLeft, int iRight, unsigned int uSee do { - while(pSortBuffer[iL] < iMid) + while (pSortBuffer[iL] < iMid) ++iL; - while(pSortBuffer[iR] > iMid) + while (pSortBuffer[iR] > iMid) --iR; - if(iL <= iR) + if (iL <= iR) { iTmp = pSortBuffer[iL]; pSortBuffer[iL] = pSortBuffer[iR]; @@ -1480,11 +1480,11 @@ static void QuickSort(int* pSortBuffer, int iLeft, int iRight, unsigned int uSee ++iL; --iR; } } - while(iL <= iR); + while (iL <= iR); - if(iLeft < iR) + if (iLeft < iR) QuickSort(pSortBuffer, iLeft, iR, uSeed); - if(iL < iRight) + if (iL < iRight) QuickSort(pSortBuffer, iL, iRight, uSeed); } @@ -1499,8 +1499,8 @@ static void BuildNeighborsFast(STriInfo pTriInfos[], SEdge * pEdges, const int p // build array of edges unsigned int uSeed = INTERNAL_RND_SORT_SEED; // could replace with a random seed? int iEntries=0, iCurStartIndex=-1, f=0, i=0; - for(f=0; f pSortBuffer[iRight].array[channel]) + if (pSortBuffer[iLeft].array[channel] > pSortBuffer[iRight].array[channel]) { sTmp = pSortBuffer[iLeft]; pSortBuffer[iLeft] = pSortBuffer[iRight]; @@ -1673,12 +1673,12 @@ static void QuickSortEdges(SEdge * pSortBuffer, int iLeft, int iRight, const int do { - while(pSortBuffer[iL].array[channel] < iMid) + while (pSortBuffer[iL].array[channel] < iMid) ++iL; - while(pSortBuffer[iR].array[channel] > iMid) + while (pSortBuffer[iR].array[channel] > iMid) --iR; - if(iL <= iR) + if (iL <= iR) { sTmp = pSortBuffer[iL]; pSortBuffer[iL] = pSortBuffer[iR]; @@ -1686,11 +1686,11 @@ static void QuickSortEdges(SEdge * pSortBuffer, int iLeft, int iRight, const int ++iL; --iR; } } - while(iL <= iR); + while (iL <= iR); - if(iLeft < iR) + if (iLeft < iR) QuickSortEdges(pSortBuffer, iLeft, iR, channel, uSeed); - if(iL < iRight) + if (iL < iRight) QuickSortEdges(pSortBuffer, iL, iRight, channel, uSeed); } @@ -1700,10 +1700,10 @@ static void GetEdge(int * i0_out, int * i1_out, int * edgenum_out, const int ind *edgenum_out = -1; // test if first index is on the edge - if(indices[0]==i0_in || indices[0]==i1_in) + if (indices[0]==i0_in || indices[0]==i1_in) { // test if second index is on the edge - if(indices[1]==i0_in || indices[1]==i1_in) + if (indices[1]==i0_in || indices[1]==i1_in) { edgenum_out[0]=0; // first edge i0_out[0]=indices[0]; @@ -1736,15 +1736,15 @@ static void DegenPrologue(STriInfo pTriInfos[], int piTriList_out[], const int i // locate quads with only one good triangle int t=0; - while(t<(iTotTris-1)) + while (t<(iTotTris-1)) { const int iFO_a = pTriInfos[t].iOrgFaceNumber; const int iFO_b = pTriInfos[t+1].iOrgFaceNumber; - if(iFO_a==iFO_b) // this is a quad + if (iFO_a==iFO_b) // this is a quad { const tbool bIsDeg_a = (pTriInfos[t].iFlag&MARK_DEGENERATE)!=0 ? TTRUE : TFALSE; const tbool bIsDeg_b = (pTriInfos[t+1].iFlag&MARK_DEGENERATE)!=0 ? TTRUE : TFALSE; - if((bIsDeg_a^bIsDeg_b)!=0) + if ((bIsDeg_a^bIsDeg_b)!=0) { pTriInfos[t].iFlag |= QUAD_ONE_DEGEN_TRI; pTriInfos[t+1].iFlag |= QUAD_ONE_DEGEN_TRI; @@ -1760,12 +1760,12 @@ static void DegenPrologue(STriInfo pTriInfos[], int piTriList_out[], const int i iNextGoodTriangleSearchIndex = 1; t=0; bStillFindingGoodOnes = TTRUE; - while(t (t+1)); // swap triangle t0 and t1 - if(!bJustADegenerate) + if (!bJustADegenerate) { int i=0; - for(i=0; i<3; i++) + for (i=0; i<3; i++) { const int index = piTriList_out[t0*3+i]; piTriList_out[t0*3+i] = piTriList_out[t1*3+i]; @@ -1805,7 +1805,7 @@ static void DegenPrologue(STriInfo pTriInfos[], int piTriList_out[], const int i bStillFindingGoodOnes = TFALSE; // this is not supposed to happen } - if(bStillFindingGoodOnes) ++t; + if (bStillFindingGoodOnes) ++t; } assert(bStillFindingGoodOnes); // code will still work. @@ -1817,28 +1817,28 @@ static void DegenEpilogue(STSpace psTspace[], STriInfo pTriInfos[], int piTriLis int t=0, i=0; // deal with degenerate triangles // punishment for degenerate triangles is O(N^2) - for(t=iNrTrianglesIn; tx/4; /* This doesn't seem to work... paprmh */ - if(cast->gamma != 1.0) gamwarp(tbuf, cast->gamma); + if (cast->gamma != 1.0) gamwarp(tbuf, cast->gamma); /* reduce */ - for(i=0; ix<4 || tbuf->y<4) break; + if (tbuf->x<4 || tbuf->y<4) break; } /* enlarge */ - for(i=0; ix > x4) { + if (tbuf->x > x4) { scaleImBuf(tbuf, ibuf->x, ibuf->y); break; } } /* this doesn't seem to work...paprmh*/ - if(cast->gamma != 1.0) gamwarp(tbuf, 1.0 / cast->gamma); + if (cast->gamma != 1.0) gamwarp(tbuf, 1.0 / cast->gamma); - if(ibuf->rect)memcpy(ibuf->rect, tbuf->rect, 4*ibuf->x*ibuf->y); + if (ibuf->rect)memcpy(ibuf->rect, tbuf->rect, 4*ibuf->x*ibuf->y); - if(ibuf->rect_float) + if (ibuf->rect_float) memcpy(ibuf->rect_float, tbuf->rect_float, 4*ibuf->x*ibuf->y*sizeof(float)); freeImBuf(tbuf); @@ -161,13 +161,13 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast) /* which buffers ? */ - if(fac>7.0) fac= 7.0; - if(fac<=1.0) return; + if (fac>7.0) fac= 7.0; + if (fac<=1.0) return; pfac= 2.0; pbuf= dupImBuf(mbuf); n= 1; - while(pfac < fac) { + while (pfac < fac) { blurbuf(pbuf, n, cast); blurbuf(pbuf, n, cast); @@ -185,10 +185,10 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast) fac= (fac-pfac)/(ifac-pfac); n= mbuf->x*mbuf->y; - if(cast->show) fac=cast->show-1; + if (cast->show) fac=cast->show-1; - if(mbuf->rect_float){ - if(fac>=1) { + if (mbuf->rect_float){ + if (fac>=1) { memcpy(mbuf->rect_float, ibuf->rect_float, 4*n*sizeof(float)); } else if(fac<=0) { @@ -200,7 +200,7 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast) irectf= (float *)ibuf->rect_float; prectf= (float *)pbuf->rect_float; mrectf= (float *)mbuf->rect_float; - while(n--) { + while (n--) { mrectf[0]= irectf[0]*fac+ prectf[0]*infac; mrectf[1]= irectf[1]*fac+ prectf[1]*infac; mrectf[2]= irectf[2]*fac+ prectf[2]*infac; @@ -213,10 +213,10 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast) } else if(mbuf->rect){ b1= (int)fac*255.0; - if(b1>255) b1= 255; + if (b1>255) b1= 255; b2= 255-b1; - if(b1==255) { + if (b1==255) { memcpy(mbuf->rect, ibuf->rect, 4*n); } else if(b1==0) { @@ -226,7 +226,7 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast) irect= (char *)ibuf->rect; prect= (char *)pbuf->rect; mrect= (char *)mbuf->rect; - while(n--) { + while (n--) { mrect[0]= (irect[0]*b1+ prect[0]*b2)>>8; mrect[1]= (irect[1]*b1+ prect[1]*b2)>>8; mrect[2]= (irect[2]*b1+ prect[2]*b2)>>8; @@ -247,7 +247,7 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf * { float bfacf0, bfacf1; - if(cast->use_ipo==0) { + if (cast->use_ipo==0) { bfacf0= bfacf1= cast->blur+1.0; } else { @@ -255,8 +255,8 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf * bfacf1 = (facf1 * 6.0) + 1.0; } - if(out->rect) memcpy(out->rect, ibuf1->rect, 4*out->x*out->y); - if(out->rect_float) memcpy(out->rect_float, ibuf1->rect_float, 4*out->x*out->y*sizeof(float)); + if (out->rect) memcpy(out->rect, ibuf1->rect, 4*out->x*out->y); + if (out->rect_float) memcpy(out->rect_float, ibuf1->rect_float, 4*out->x*out->y*sizeof(float)); /****************I can't get this field code to work... works ok without...paprmh****************/ @@ -269,13 +269,13 @@ void plugin_seq_doit(Cast *cast, float facf0, float facf1, int x, int y, ImBuf * doblur(out, bfacf0, cast); /*fieldA*/ -/* if(out->rect)out->rect += out->x * out->y; - if(out->rect_float)out->rect_float += out->x * out->y; +/* if (out->rect)out->rect += out->x * out->y; + if (out->rect_float)out->rect_float += out->x * out->y; doblur(out, bfacf1, cast);*/ /*fieldB*/ -/* if(out->rect)out->rect -= out->x * out->y; - if(out->rect_float)out->rect_float -= out->x * out->y; +/* if (out->rect)out->rect -= out->x * out->y; + if (out->rect_float)out->rect_float -= out->x * out->y; out->flags |= IB_fields; interlace(out);*/ diff --git a/release/plugins/texture/clouds2.c b/release/plugins/texture/clouds2.c index fc20f5769ef..8561d11dc3b 100644 --- a/release/plugins/texture/clouds2.c +++ b/release/plugins/texture/clouds2.c @@ -150,7 +150,7 @@ int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt /* always return this value */ result[0] = CLAMP (val+cast->offset, 0.0, 1.0) * pow (fabs(sqrt(tv[0]*tv[0]+tv[1]*tv[1]+tv[2]*tv[2])), cast->falloff); - if(stype==1) { + if (stype==1) { /* * this is r, g, b, a: */ @@ -161,7 +161,7 @@ int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt res |= TEX_RGB; } - if(stype==2) { + if (stype==2) { /* * This value is the displacement of the actual normal in * the Material calculation. diff --git a/release/plugins/texture/tiles.c b/release/plugins/texture/tiles.c index 151f64b6dab..11e1ed8f8af 100644 --- a/release/plugins/texture/tiles.c +++ b/release/plugins/texture/tiles.c @@ -124,7 +124,7 @@ float sample_wave(float freq, float coord, float pixsize) float fac, frac, retval; int part1, part2; - if(pixsize > freq) return 0.5; + if (pixsize > freq) return 0.5; pixsize/= freq; @@ -132,19 +132,19 @@ float sample_wave(float freq, float coord, float pixsize) part1= ffloor(fac); frac= fac - part1; - if(part1 & 1) retval= 0.0; - else retval= 1.0; + if (part1 & 1) retval= 0.0; + else retval = 1.0; - if(pixsize != 0.0) { + if (pixsize != 0.0) { /* is coord+pixsize another value? */ part2= ffloor(fac + pixsize); - if(part1==part2) return retval; + if (part1==part2) return retval; /* antialias */ - if(retval==1.0) retval= (1.0-frac)/pixsize; - else retval= 1.0-(1.0-frac)/pixsize; + if (retval == 1.0) retval= (1.0 - frac) / pixsize; + else retval= 1.0 - (1.0 - frac) / pixsize; } return retval; } @@ -153,23 +153,23 @@ int plugin_tex_doit(int stype, Cast *cast, float *texvec, float *dxt, float *dyt { float xwave, ywave; - if(stype==1) { + if (stype==1) { texvec[0]+= hnoise(cast->noise, texvec[0], texvec[1], texvec[2]); texvec[1]+= hnoise(cast->noise, texvec[1], texvec[2], texvec[0]); } - if(dxt && dyt) { + if (dxt && dyt) { xwave= sample_wave(cast->size, texvec[0], fabs(dxt[0]) + fabs(dyt[0]) ); ywave= sample_wave(cast->size, texvec[1], fabs(dxt[1]) + fabs(dyt[1]) ); - if(xwave > ywave) result[0]= xwave-ywave; + if (xwave > ywave) result[0]= xwave-ywave; else result[0]= ywave-xwave; } else { xwave= sample_wave(cast->size, texvec[0], 0.0 ); ywave= sample_wave(cast->size, texvec[1], 0.0 ); - if(xwave > ywave) result[0]= xwave-ywave; + if (xwave > ywave) result[0]= xwave-ywave; else result[0]= ywave-xwave; } diff --git a/source/blender/avi/intern/avi.c b/source/blender/avi/intern/avi.c index 2011ced96d9..637d4be30fd 100644 --- a/source/blender/avi/intern/avi.c +++ b/source/blender/avi/intern/avi.c @@ -442,7 +442,9 @@ AviError AVI_open_movie (const char *name, AviMovie *movie) if (GET_FCC (movie->fp) != FCC("RIFF") || !(movie->size = GET_FCC (movie->fp))) + { return AVI_ERROR_FORMAT; + } movie->header = (AviMainHeader *) MEM_mallocN (sizeof (AviMainHeader), "movieheader"); diff --git a/source/blender/avi/intern/codecs.c b/source/blender/avi/intern/codecs.c index 73af7097994..2c244177655 100644 --- a/source/blender/avi/intern/codecs.c +++ b/source/blender/avi/intern/codecs.c @@ -46,10 +46,12 @@ void *avi_format_convert (AviMovie *movie, int stream, void *buffer, AviFormat f return buffer; if (from != AVI_FORMAT_RGB24 && - to != AVI_FORMAT_RGB24) + to != AVI_FORMAT_RGB24) + { return avi_format_convert(movie, stream, - avi_format_convert (movie, stream, buffer, from, AVI_FORMAT_RGB24, size), - AVI_FORMAT_RGB24, to, size); + avi_format_convert(movie, stream, buffer, from, AVI_FORMAT_RGB24, size), + AVI_FORMAT_RGB24, to, size); + } switch (to) { case AVI_FORMAT_RGB24: diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index f5718974f9f..53e4a973cd4 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -1272,7 +1272,9 @@ CCGError ccgSubSurf_syncFace(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGV if (f->numVerts != numVerts || memcmp(FACE_getVerts(f), ss->tempVerts, sizeof(*ss->tempVerts) * numVerts) || memcmp(FACE_getEdges(f), ss->tempEdges, sizeof(*ss->tempEdges) * numVerts)) + { topologyChanged = 1; + } } if (!f || topologyChanged) { diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index c28958d5b0d..511b4603791 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2279,8 +2279,10 @@ DerivedMesh *editbmesh_get_derived_cage_and_final(Scene *scene, Object *obedit, * the data we need, rebuild the derived mesh */ if (!em->derivedCage || - (em->lastDataMask & dataMask) != dataMask) + (em->lastDataMask & dataMask) != dataMask) + { editbmesh_build_data(scene, obedit, em, dataMask); + } *final_r = em->derivedFinal; return em->derivedCage; @@ -2292,8 +2294,10 @@ DerivedMesh *editbmesh_get_derived_cage(Scene *scene, Object *obedit, BMEditMesh * the data we need, rebuild the derived mesh */ if (!em->derivedCage || - (em->lastDataMask & dataMask) != dataMask) + (em->lastDataMask & dataMask) != dataMask) + { editbmesh_build_data(scene, obedit, em, dataMask); + } return em->derivedCage; } @@ -2701,8 +2705,7 @@ void DM_calc_auto_bump_scale(DerivedMesh *dm) if (nr_tris_to_pile==1 || nr_tris_to_pile==2) { const int indices[] = {offs+0, offs+1, offs+2, offs+0, offs+2, (offs+3)&0x3 }; int t; - for ( t=0; tpathcache[a]->steps < 0) || - (a >= totpart && psys->childcache[a-totpart]->steps < 0))) + ((a < totpart && psys->pathcache[a]->steps < 0) || + (a >= totpart && psys->childcache[a-totpart]->steps < 0))) + { continue; + } if (part->ren_as==PART_DRAW_GR) { /* prevent divide by zero below [#28336] */ diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 75b9ae59e26..be53e3ddcba 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -1250,8 +1250,7 @@ static void animsys_evaluate_fcurves (PointerRNA *ptr, ListBase *list, AnimMappe FCurve *fcu; /* calculate then execute each curve */ - for (fcu= list->first; fcu; fcu= fcu->next) - { + for (fcu= list->first; fcu; fcu= fcu->next) { /* check if this F-Curve doesn't belong to a muted group */ if ((fcu->grp == NULL) || (fcu->grp->flag & AGRP_MUTED)==0) { /* check if this curve should be skipped */ @@ -1274,8 +1273,7 @@ static void animsys_evaluate_drivers (PointerRNA *ptr, AnimData *adt, float ctim /* drivers are stored as F-Curves, but we cannot use the standard code, as we need to check if * the depsgraph requested that this driver be evaluated... */ - for (fcu= adt->drivers.first; fcu; fcu= fcu->next) - { + for (fcu= adt->drivers.first; fcu; fcu= fcu->next) { ChannelDriver *driver= fcu->driver; short ok= 0; @@ -1351,8 +1349,7 @@ void animsys_evaluate_action_group (PointerRNA *ptr, bAction *act, bActionGroup return; /* calculate then execute each curve */ - for (fcu= agrp->channels.first; (fcu) && (fcu->grp == agrp); fcu= fcu->next) - { + for (fcu= agrp->channels.first; (fcu) && (fcu->grp == agrp); fcu= fcu->next) { /* check if this curve should be skipped */ if ((fcu->flag & (FCURVE_MUTED|FCURVE_DISABLED)) == 0) { calculate_fcurve(fcu, ctime); @@ -1968,8 +1965,7 @@ void nladata_flush_channels (ListBase *channels) float value= nec->value; /* write values - see animsys_write_rna_setting() to sync the code */ - switch (RNA_property_type(prop)) - { + switch (RNA_property_type(prop)) { case PROP_BOOLEAN: if (RNA_property_array_length(ptr, prop)) RNA_property_boolean_set_index(ptr, prop, array_index, ANIMSYS_FLOAT_AS_BOOL(value)); @@ -2217,7 +2213,9 @@ void BKE_animsys_evaluate_animdata (Scene *scene, ID *id, AnimData *adt, float c * or be layered on top of existing animation data. * - Drivers should be in the appropriate order to be evaluated without problems... */ - if ((recalc & ADT_RECALC_DRIVERS) /*&& (adt->recalc & ADT_RECALC_DRIVERS)*/) // XXX for now, don't check yet, as depsgraph hasn't been updated + if ((recalc & ADT_RECALC_DRIVERS) + /* XXX for now, don't check yet, as depsgraph hasn't been updated */ + /* && (adt->recalc & ADT_RECALC_DRIVERS)*/) { animsys_evaluate_drivers(&id_ptr, adt, ctime); } diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 0f3e27a9b6e..931aa2d6242 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -1372,7 +1372,7 @@ void armature_mat_pose_to_bone_ex(Object *ob, bPoseChannel *pchan, float inmat[] /* same as object_mat3_to_rot() */ void pchan_mat3_to_rot(bPoseChannel *pchan, float mat[][3], short use_compat) { - switch(pchan->rotmode) { + switch (pchan->rotmode) { case ROT_MODE_QUAT: mat3_to_quat(pchan->quat, mat); break; diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c index a556c99dc7d..fbcabccd2b9 100644 --- a/source/blender/blenkernel/intern/boids.c +++ b/source/blender/blenkernel/intern/boids.c @@ -962,7 +962,7 @@ void boid_brain(BoidBrainData *bbd, int p, ParticleData *pa) set_boid_values(&val, bbd->part->boids, pa); /* go through rules */ - switch(state->ruleset_type) { + switch (state->ruleset_type) { case eBoidRulesetType_Fuzzy: { for (rule = state->rules.first; rule; rule = rule->next) { @@ -1258,7 +1258,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa) bpa->ground = boid_find_ground(bbd, pa, ground_co, ground_nor); /* change modes, constrain movement & keep track of down vector */ - switch(bpa->data.mode) { + switch (bpa->data.mode) { case eBoidMode_InAir: { float grav[3]; @@ -1437,7 +1437,7 @@ BoidRule *boid_new_rule(int type) if (type <= 0) return NULL; - switch(type) { + switch (type) { case eBoidRuleType_Goal: case eBoidRuleType_Avoid: rule = MEM_callocN(sizeof(BoidRuleGoalAvoid), "BoidRuleGoalAvoid"); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index e7ba09d3959..3df6de2fd24 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -337,7 +337,7 @@ void brush_reset_sculpt(Brush *br) brush_set_defaults(br); brush_curve_preset(br, CURVE_PRESET_SMOOTH); - switch(br->sculpt_tool) { + switch (br->sculpt_tool) { case SCULPT_TOOL_CLAY: br->flag |= BRUSH_FRONTFACE; break; diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c index 009b7ca7f99..df80ce6e87c 100644 --- a/source/blender/blenkernel/intern/bvhutils.c +++ b/source/blender/blenkernel/intern/bvhutils.c @@ -649,8 +649,7 @@ BVHTree* bvhtree_from_mesh_edges(BVHTreeFromMesh *data, DerivedMesh *mesh, float BVHTree *tree = bvhcache_find(&mesh->bvhCache, BVHTREE_FROM_EDGES); //Not in cache - if (tree == NULL) - { + if (tree == NULL) { int i; int numEdges= mesh->getNumEdges(mesh); MVert *vert = mesh->getVertDataArray(mesh, CD_MVERT); @@ -675,8 +674,7 @@ BVHTree* bvhtree_from_mesh_edges(BVHTreeFromMesh *data, DerivedMesh *mesh, float } } } - else - { + else { // printf("BVHTree is already build, using cached tree\n"); } diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index a0c273cf962..97baaad430b 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -191,8 +191,7 @@ static BVHTree *bvhselftree_build_from_cloth (ClothModifierData *clmd, float eps bvhtree = BLI_bvhtree_new(cloth->numverts, epsilon, 4, 6); // fill tree - for (i = 0; i < cloth->numverts; i++, verts++) - { + for (i = 0; i < cloth->numverts; i++, verts++) { copy_v3_v3(&co[0*3], verts->xold); BLI_bvhtree_insert(bvhtree, i, co, 1); @@ -232,8 +231,7 @@ static BVHTree *bvhtree_build_from_cloth (ClothModifierData *clmd, float epsilon bvhtree = BLI_bvhtree_new(cloth->numfaces, epsilon, 4, 26); // fill tree - for (i = 0; i < cloth->numfaces; i++, mfaces++) - { + for (i = 0; i < cloth->numfaces; i++, mfaces++) { copy_v3_v3(&co[0*3], verts[mfaces->v1].xold); copy_v3_v3(&co[1*3], verts[mfaces->v2].xold); copy_v3_v3(&co[2*3], verts[mfaces->v3].xold); @@ -266,10 +264,8 @@ void bvhtree_update_from_cloth(ClothModifierData *clmd, int moving) mfaces = cloth->mfaces; // update vertex position in bvh tree - if (verts && mfaces) - { - for (i = 0; i < cloth->numfaces; i++, mfaces++) - { + if (verts && mfaces) { + for (i = 0; i < cloth->numfaces; i++, mfaces++) { copy_v3_v3(&co[0*3], verts[mfaces->v1].txold); copy_v3_v3(&co[1*3], verts[mfaces->v2].txold); copy_v3_v3(&co[2*3], verts[mfaces->v3].txold); @@ -278,8 +274,7 @@ void bvhtree_update_from_cloth(ClothModifierData *clmd, int moving) copy_v3_v3(&co[3*3], verts[mfaces->v4].txold); // copy new locations into array - if (moving) - { + if (moving) { // update moving positions copy_v3_v3(&co_moving[0*3], verts[mfaces->v1].tx); copy_v3_v3(&co_moving[1*3], verts[mfaces->v2].tx); @@ -319,15 +314,12 @@ void bvhselftree_update_from_cloth(ClothModifierData *clmd, int moving) mfaces = cloth->mfaces; // update vertex position in bvh tree - if (verts && mfaces) - { - for (i = 0; i < cloth->numverts; i++, verts++) - { + if (verts && mfaces) { + for (i = 0; i < cloth->numverts; i++, verts++) { copy_v3_v3(&co[0*3], verts->txold); // copy new locations into array - if (moving) - { + if (moving) { // update moving positions copy_v3_v3(&co_moving[0*3], verts->tx); @@ -558,11 +550,9 @@ void cloth_free_modifier(ClothModifierData *clmd ) cloth = clmd->clothObject; - if ( cloth ) - { + if ( cloth ) { // If our solver provides a free function, call it - if ( solvers [clmd->sim_parms->solver_type].free ) - { + if ( solvers [clmd->sim_parms->solver_type].free ) { solvers [clmd->sim_parms->solver_type].free ( clmd ); } @@ -574,11 +564,9 @@ void cloth_free_modifier(ClothModifierData *clmd ) cloth->numverts = 0; // Free the springs. - if ( cloth->springs != NULL ) - { + if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; - while (search) - { + while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); @@ -628,14 +616,12 @@ void cloth_free_modifier_extern ( ClothModifierData *clmd ) cloth = clmd->clothObject; - if ( cloth ) - { + if ( cloth ) { if (G.rt > 0) printf("cloth_free_modifier_extern in\n"); // If our solver provides a free function, call it - if ( solvers [clmd->sim_parms->solver_type].free ) - { + if ( solvers [clmd->sim_parms->solver_type].free ) { solvers [clmd->sim_parms->solver_type].free ( clmd ); } @@ -647,11 +633,9 @@ void cloth_free_modifier_extern ( ClothModifierData *clmd ) cloth->numverts = 0; // Free the springs. - if ( cloth->springs != NULL ) - { + if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; - while (search) - { + while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); @@ -708,8 +692,7 @@ static void cloth_to_object (Object *ob, ClothModifierData *clmd, float (*verte /* inverse matrix is not uptodate... */ invert_m4_m4(ob->imat, ob->obmat); - for (i = 0; i < cloth->numverts; i++) - { + for (i = 0; i < cloth->numverts; i++) { copy_v3_v3 (vertexCos[i], cloth->verts[i].x); mul_m4_v3(ob->imat, vertexCos[i]); /* cloth is in global coords */ } @@ -749,17 +732,12 @@ static void cloth_apply_vgroup ( ClothModifierData *clmd, DerivedMesh *dm ) verts = clothObj->verts; - if (cloth_uses_vgroup(clmd)) - { - for ( i = 0; i < numverts; i++, verts++ ) - { + if (cloth_uses_vgroup(clmd)) { + for ( i = 0; i < numverts; i++, verts++ ) { dvert = dm->getVertData ( dm, i, CD_MDEFORMVERT ); - if ( dvert ) - { - for ( j = 0; j < dvert->totweight; j++ ) - { - if (( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_mass-1)) && (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL )) - { + if ( dvert ) { + for ( j = 0; j < dvert->totweight; j++ ) { + if (( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_mass-1)) && (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL )) { verts->goal = dvert->dw [j].weight; /* goalfac= 1.0f; */ /* UNUSED */ @@ -769,22 +747,18 @@ static void cloth_apply_vgroup ( ClothModifierData *clmd, DerivedMesh *dm ) */ verts->goal = ( float ) pow ( verts->goal , 4.0f ); - if ( verts->goal >=SOFTGOALSNAP ) - { + if ( verts->goal >=SOFTGOALSNAP ) { verts->flags |= CLOTH_VERT_FLAG_PINNED; } } - if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_SCALING ) - { - if ( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_struct-1)) - { + if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_SCALING ) { + if ( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_struct-1)) { verts->struct_stiff = dvert->dw [j].weight; verts->shear_stiff = dvert->dw [j].weight; } - if ( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_bend-1)) - { + if ( dvert->dw[j].def_nr == (clmd->sim_parms->vgroup_bend-1)) { verts->bend_stiff = dvert->dw [j].weight; } } @@ -812,8 +786,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d float maxdist = 0; // If we have a clothObject, free it. - if ( clmd->clothObject != NULL ) - { + if ( clmd->clothObject != NULL ) { cloth_free_modifier ( clmd ); if (G.rt > 0) printf("cloth_free_modifier cloth_from_object\n"); @@ -821,8 +794,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d // Allocate a new cloth object. clmd->clothObject = MEM_callocN ( sizeof ( Cloth ), "cloth" ); - if ( clmd->clothObject ) - { + if ( clmd->clothObject ) { clmd->clothObject->old_solver_type = 255; // clmd->clothObject->old_collision_type = 255; cloth = clmd->clothObject; @@ -851,10 +823,8 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d verts = clmd->clothObject->verts; // set initial values - for ( i = 0; i < dm->getNumVerts(dm); i++, verts++ ) - { - if (first) - { + for ( i = 0; i < dm->getNumVerts(dm); i++, verts++ ) { + if (first) { copy_v3_v3( verts->x, mvert[i].co ); mul_m4_v3( ob->obmat, verts->x ); @@ -891,18 +861,15 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d // has to be happen before springs are build! cloth_apply_vgroup (clmd, dm); - if ( !cloth_build_springs ( clmd, dm ) ) - { + if ( !cloth_build_springs ( clmd, dm ) ) { cloth_free_modifier ( clmd ); modifier_setError(&(clmd->modifier), "%s", TIP_("Can't build springs.")); printf("cloth_free_modifier cloth_build_springs\n"); return 0; } - for ( i = 0; i < dm->getNumVerts(dm); i++) - { - if ((!(cloth->verts[i].flags & CLOTH_VERT_FLAG_PINNED)) && (cloth->verts[i].goal > ALMOST_ZERO)) - { + for ( i = 0; i < dm->getNumVerts(dm); i++) { + if ((!(cloth->verts[i].flags & CLOTH_VERT_FLAG_PINNED)) && (cloth->verts[i].goal > ALMOST_ZERO)) { cloth_add_spring (clmd, i, i, 0.0, CLOTH_SPRING_TYPE_GOAL); } } @@ -917,8 +884,7 @@ static int cloth_from_object(Object *ob, ClothModifierData *clmd, DerivedMesh *d clmd->clothObject->bvhtree = bvhtree_build_from_cloth ( clmd, MAX2(clmd->coll_parms->epsilon, clmd->coll_parms->distance_repel) ); - for (i = 0; i < dm->getNumVerts(dm); i++) - { + for (i = 0; i < dm->getNumVerts(dm); i++) { maxdist = MAX2(maxdist, clmd->coll_parms->selfepsilon* ( cloth->verts[i].avg_spring_len*2.0f)); } @@ -937,8 +903,7 @@ static void cloth_from_mesh ( ClothModifierData *clmd, DerivedMesh *dm ) /* Allocate our vertices. */ clmd->clothObject->numverts = numverts; clmd->clothObject->verts = MEM_callocN ( sizeof ( ClothVertex ) * clmd->clothObject->numverts, "clothVertex" ); - if ( clmd->clothObject->verts == NULL ) - { + if ( clmd->clothObject->verts == NULL ) { cloth_free_modifier ( clmd ); modifier_setError(&(clmd->modifier), "%s", TIP_("Out of memory on allocating clmd->clothObject->verts.")); printf("cloth_free_modifier clmd->clothObject->verts\n"); @@ -948,8 +913,7 @@ static void cloth_from_mesh ( ClothModifierData *clmd, DerivedMesh *dm ) // save face information clmd->clothObject->numfaces = numfaces; clmd->clothObject->mfaces = MEM_callocN ( sizeof ( MFace ) * clmd->clothObject->numfaces, "clothMFaces" ); - if ( clmd->clothObject->mfaces == NULL ) - { + if ( clmd->clothObject->mfaces == NULL ) { cloth_free_modifier ( clmd ); modifier_setError(&(clmd->modifier), "%s", TIP_("Out of memory on allocating clmd->clothObject->mfaces.")); printf("cloth_free_modifier clmd->clothObject->mfaces\n"); @@ -977,8 +941,7 @@ int cloth_add_spring ( ClothModifierData *clmd, unsigned int indexA, unsigned in Cloth *cloth = clmd->clothObject; ClothSpring *spring = NULL; - if (cloth) - { + if (cloth) { // TODO: look if this spring is already there spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); @@ -1006,11 +969,9 @@ static void cloth_free_errorsprings(Cloth *cloth, EdgeHash *UNUSED(edgehash), Li { unsigned int i = 0; - if ( cloth->springs != NULL ) - { + if ( cloth->springs != NULL ) { LinkNode *search = cloth->springs; - while (search) - { + while (search) { ClothSpring *spring = search->link; MEM_freeN ( spring ); @@ -1021,10 +982,8 @@ static void cloth_free_errorsprings(Cloth *cloth, EdgeHash *UNUSED(edgehash), Li cloth->springs = NULL; } - if (edgelist) - { - for ( i = 0; i < cloth->numverts; i++ ) - { + if (edgelist) { + for ( i = 0; i < cloth->numverts; i++ ) { BLI_linklist_free ( edgelist[i],NULL ); } @@ -1062,8 +1021,7 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) if (!edgelist) return 0; - for ( i = 0; i < numverts; i++ ) - { + for ( i = 0; i < numverts; i++ ) { edgelist[i] = NULL; } @@ -1074,12 +1032,10 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) edgehash = BLI_edgehash_new(); // structural springs - for ( i = 0; i < numedges; i++ ) - { + for ( i = 0; i < numedges; i++ ) { spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); - if ( spring ) - { + if ( spring ) { spring->ij = MIN2(medge[i].v1, medge[i].v2); spring->kl = MAX2(medge[i].v2, medge[i].v1); spring->restlen = len_v3v3(cloth->verts[spring->kl].xrest, cloth->verts[spring->ij].xrest); @@ -1104,22 +1060,19 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) if (struct_springs > 0) clmd->sim_parms->avg_spring_len /= struct_springs; - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { cloth->verts[i].avg_spring_len = cloth->verts[i].avg_spring_len * 0.49f / ((float)cloth->verts[i].spring_count); } // shear springs - for ( i = 0; i < numfaces; i++ ) - { + for ( i = 0; i < numfaces; i++ ) { // triangle faces already have shear springs due to structural geometry if ( !mface[i].v4 ) continue; spring = ( ClothSpring *) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); - if (!spring) - { + if (!spring) { cloth_free_errorsprings(cloth, edgehash, edgelist); return 0; } @@ -1140,8 +1093,7 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) // if ( mface[i].v4 ) --> Quad face spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); - if (!spring) - { + if (!spring) { cloth_free_errorsprings(cloth, edgehash, edgelist); return 0; } @@ -1162,15 +1114,13 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) if (numfaces) { // bending springs search2 = cloth->springs; - for ( i = struct_springs; i < struct_springs+shear_springs; i++ ) - { + for ( i = struct_springs; i < struct_springs+shear_springs; i++ ) { if ( !search2 ) break; tspring2 = search2->link; search = edgelist[tspring2->kl]; - while ( search ) - { + while ( search ) { tspring = search->link; index2 = ( ( tspring->ij==tspring2->kl ) ? ( tspring->kl ) : ( tspring->ij ) ); @@ -1181,8 +1131,7 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) { spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); - if (!spring) - { + if (!spring) { cloth_free_errorsprings(cloth, edgehash, edgelist); return 0; } @@ -1212,16 +1161,14 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) /* of the strands. -jahka */ search = cloth->springs; search2 = search->next; - while (search && search2) - { + while (search && search2) { tspring = search->link; tspring2 = search2->link; if (tspring->ij == tspring2->kl) { spring = ( ClothSpring * ) MEM_callocN ( sizeof ( ClothSpring ), "cloth spring" ); - if (!spring) - { + if (!spring) { cloth_free_errorsprings(cloth, edgehash, edgelist); return 0; } @@ -1242,13 +1189,12 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) } /* insert other near springs in edgehash AFTER bending springs are calculated (for selfcolls) */ - for ( i = 0; i < numedges; i++ ) // struct springs + for (i = 0; i < numedges; i++) { /* struct springs */ BLI_edgehash_insert ( edgehash, MIN2(medge[i].v1, medge[i].v2), MAX2(medge[i].v2, medge[i].v1), NULL ); - - for ( i = 0; i < numfaces; i++ ) // edge springs - { - if (mface[i].v4) - { + } + + for (i = 0; i < numfaces; i++) { /* edge springs */ + if (mface[i].v4) { BLI_edgehash_insert ( edgehash, MIN2(mface[i].v1, mface[i].v3), MAX2(mface[i].v3, mface[i].v1), NULL ); BLI_edgehash_insert ( edgehash, MIN2(mface[i].v2, mface[i].v4), MAX2(mface[i].v2, mface[i].v4), NULL ); @@ -1258,10 +1204,8 @@ static int cloth_build_springs ( ClothModifierData *clmd, DerivedMesh *dm ) cloth->numsprings = struct_springs + shear_springs + bend_springs; - if ( edgelist ) - { - for ( i = 0; i < numverts; i++ ) - { + if ( edgelist ) { + for ( i = 0; i < numverts; i++ ) { BLI_linklist_free ( edgelist[i],NULL ); } diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index 5b03f73e120..264a251c317 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -80,8 +80,7 @@ void collision_move_object(CollisionModifierData *collmd, float step, float prev float tv[3] = {0, 0, 0}; unsigned int i = 0; - for ( i = 0; i < collmd->numverts; i++ ) - { + for ( i = 0; i < collmd->numverts; i++ ) { sub_v3_v3v3 ( tv, collmd->xnew[i].co, collmd->x[i].co ); VECADDS ( collmd->current_x[i].co, collmd->x[i].co, tv, prevstep ); VECADDS ( collmd->current_xnew[i].co, collmd->x[i].co, tv, step ); @@ -101,8 +100,7 @@ BVHTree *bvhtree_build_from_mvert ( MFace *mfaces, unsigned int numfaces, MVert tree = BLI_bvhtree_new ( numfaces*2, epsilon, 4, 26 ); // fill tree - for ( i = 0; i < numfaces; i++, tface++ ) - { + for ( i = 0; i < numfaces; i++, tface++ ) { copy_v3_v3 ( &co[0*3], x[tface->v1].co ); copy_v3_v3 ( &co[1*3], x[tface->v2].co ); copy_v3_v3 ( &co[2*3], x[tface->v3].co ); @@ -128,10 +126,8 @@ void bvhtree_update_from_mvert ( BVHTree * bvhtree, MFace *faces, int numfaces, if ( !bvhtree ) return; - if ( x ) - { - for ( i = 0; i < numfaces; i++, mfaces++ ) - { + if ( x ) { + for ( i = 0; i < numfaces; i++, mfaces++ ) { copy_v3_v3 ( &co[0*3], x[mfaces->v1].co ); copy_v3_v3 ( &co[1*3], x[mfaces->v2].co ); copy_v3_v3 ( &co[2*3], x[mfaces->v3].co ); @@ -139,8 +135,7 @@ void bvhtree_update_from_mvert ( BVHTree * bvhtree, MFace *faces, int numfaces, copy_v3_v3 ( &co[3*3], x[mfaces->v4].co ); // copy new locations into array - if ( moving && xnew ) - { + if ( moving && xnew ) { // update moving positions copy_v3_v3 ( &co_moving[0*3], xnew[mfaces->v1].co ); copy_v3_v3 ( &co_moving[1*3], xnew[mfaces->v2].co ); @@ -150,8 +145,7 @@ void bvhtree_update_from_mvert ( BVHTree * bvhtree, MFace *faces, int numfaces, ret = BLI_bvhtree_update_node ( bvhtree, i, co, co_moving, ( mfaces->v4 ? 4 : 3 ) ); } - else - { + else { ret = BLI_bvhtree_update_node ( bvhtree, i, co, NULL, ( mfaces->v4 ? 4 : 3 ) ); } @@ -465,8 +459,7 @@ static void collision_compute_barycentric ( float pv[3], float p1[3], float p2[3 d = ( a * c - b * b ); - if ( ABS ( d ) < (double)ALMOST_ZERO ) - { + if ( ABS ( d ) < (double)ALMOST_ZERO ) { *w1 = *w2 = *w3 = 1.0 / 3.0; return; } @@ -504,8 +497,7 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM cloth1 = clmd->clothObject; - for ( ; collpair != collision_end; collpair++ ) - { + for ( ; collpair != collision_end; collpair++ ) { // only handle static collisions here if ( collpair->flag & COLLISION_IN_FUTURE ) continue; @@ -540,8 +532,7 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM // TODO // If v_n_mag < 0 the edges are approaching each other. - if ( magrelVel > ALMOST_ZERO ) - { + if ( magrelVel > ALMOST_ZERO ) { // Calculate Impulse magnitude to stop all motion in normal direction. float magtangent = 0, repulse = 0, d = 0; double impulse = 0.0; @@ -558,8 +549,7 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM magtangent = MIN2 ( clmd->coll_parms->friction * 0.01f * magrelVel, sqrtf( dot_v3v3( vrel_t_pre,vrel_t_pre ) ) ); // Apply friction impulse. - if ( magtangent > ALMOST_ZERO ) - { + if ( magtangent > ALMOST_ZERO ) { normalize_v3( vrel_t_pre ); impulse = magtangent / ( 1.0f + w1*w1 + w2*w2 + w3*w3 ); // 2.0 * @@ -587,8 +577,7 @@ static int cloth_collision_response_static ( ClothModifierData *clmd, CollisionM spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale; d = clmd->coll_parms->epsilon*8.0f/9.0f + epsilon2*8.0f/9.0f - collpair->distance; - if ( ( magrelVel < 0.1f*d*spf ) && ( d > ALMOST_ZERO ) ) - { + if ( ( magrelVel < 0.1f*d*spf ) && ( d > ALMOST_ZERO ) ) { repulse = MIN2 ( d*1.0f/spf, 0.1f*d*spf - magrelVel ); // stay on the safe side and clamp repulse @@ -685,10 +674,8 @@ static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, face2 = & ( collmd->mfaces[overlap->indexB] ); // check all 4 possible collisions - for ( i = 0; i < 4; i++ ) - { - if ( i == 0 ) - { + for ( i = 0; i < 4; i++ ) { + if ( i == 0 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v2; @@ -699,10 +686,8 @@ static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, bp2 = face2->v2; bp3 = face2->v3; } - else if ( i == 1 ) - { - if ( face1->v4 ) - { + else if ( i == 1 ) { + if ( face1->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v3; @@ -717,10 +702,8 @@ static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, continue; } } - if ( i == 2 ) - { - if ( face2->v4 ) - { + if ( i == 2 ) { + if ( face2->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v2; @@ -735,10 +718,8 @@ static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, continue; } } - else if ( i == 3 ) - { - if ( face1->v4 && face2->v4 ) - { + else if ( i == 3 ) { + if ( face1->v4 && face2->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v3; @@ -847,8 +828,7 @@ static int cloth_edge_collision_response_moving ( ClothModifierData *clmd, Colli cloth1 = clmd->clothObject; - for ( ; collpair != collision_end; collpair++ ) - { + for ( ; collpair != collision_end; collpair++ ) { if (!(collpair->flag & COLLISION_IS_EDGES)) continue; @@ -865,8 +845,7 @@ static int cloth_edge_collision_response_moving ( ClothModifierData *clmd, Colli magrelVel = dot_v3v3 ( relativeVelocity, collpair->normal ); // If v_n_mag < 0 the edges are approaching each other. - if ( magrelVel > ALMOST_ZERO ) - { + if ( magrelVel > ALMOST_ZERO ) { // Calculate Impulse magnitude to stop all motion in normal direction. float magtangent = 0, repulse = 0, d = 0; double impulse = 0.0; @@ -885,8 +864,7 @@ static int cloth_edge_collision_response_moving ( ClothModifierData *clmd, Colli magtangent = MIN2 ( clmd->coll_parms->friction * 0.01 * magrelVel,sqrt ( dot_v3v3 ( vrel_t_pre,vrel_t_pre ) ) ); // Apply friction impulse. - if ( magtangent > ALMOST_ZERO ) - { + if ( magtangent > ALMOST_ZERO ) { normalize_v3( vrel_t_pre ); impulse = magtangent; @@ -906,8 +884,7 @@ static int cloth_edge_collision_response_moving ( ClothModifierData *clmd, Colli spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale; d = collpair->distance; - if ( ( magrelVel < 0.1*d*spf && ( d > ALMOST_ZERO ) ) ) - { + if ( ( magrelVel < 0.1*d*spf && ( d > ALMOST_ZERO ) ) ) { repulse = MIN2 ( d*1.0/spf, 0.1*d*spf - magrelVel ); // stay on the safe side and clamp repulse @@ -949,8 +926,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM cloth1 = clmd->clothObject; - for ( ; collpair != collision_end; collpair++ ) - { + for ( ; collpair != collision_end; collpair++ ) { if (collpair->flag & COLLISION_IS_EDGES) continue; @@ -967,8 +943,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM magrelVel = dot_v3v3 ( relativeVelocity, collpair->normal ); // If v_n_mag < 0 the edges are approaching each other. - if ( magrelVel > ALMOST_ZERO ) - { + if ( magrelVel > ALMOST_ZERO ) { // Calculate Impulse magnitude to stop all motion in normal direction. float magtangent = 0, repulse = 0, d = 0; double impulse = 0.0; @@ -985,8 +960,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM magtangent = MIN2 ( clmd->coll_parms->friction * 0.01 * magrelVel,sqrt ( dot_v3v3 ( vrel_t_pre,vrel_t_pre ) ) ); // Apply friction impulse. - if ( magtangent > ALMOST_ZERO ) - { + if ( magtangent > ALMOST_ZERO ) { normalize_v3( vrel_t_pre ); impulse = magtangent; // 2.0 * @@ -1006,8 +980,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale; d = -collpair->distance; - if ( ( magrelVel < 0.1*d*spf ) && ( d > ALMOST_ZERO ) ) - { + if ( ( magrelVel < 0.1*d*spf ) && ( d > ALMOST_ZERO ) ) { repulse = MIN2 ( d*1.0/spf, 0.1*d*spf - magrelVel ); // stay on the safe side and clamp repulse @@ -1034,8 +1007,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM magrelVel = dot_v3v3 ( relativeVelocity, collpair->normal ); // If v_n_mag < 0 the edges are approaching each other. - if ( magrelVel > ALMOST_ZERO ) - { + if ( magrelVel > ALMOST_ZERO ) { // Calculate Impulse magnitude to stop all motion in normal direction. float magtangent = 0, repulse = 0, d = 0; double impulse = 0.0; @@ -1052,8 +1024,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM magtangent = MIN2 ( clmd->coll_parms->friction * 0.01 * magrelVel,sqrt ( dot_v3v3 ( vrel_t_pre,vrel_t_pre ) ) ); // Apply friction impulse. - if ( magtangent > ALMOST_ZERO ) - { + if ( magtangent > ALMOST_ZERO ) { normalize_v3( vrel_t_pre ); impulse = magtangent; // 2.0 * @@ -1072,8 +1043,7 @@ static int cloth_collision_response_moving ( ClothModifierData *clmd, CollisionM spf = (float)clmd->sim_parms->stepsPerFrame / clmd->sim_parms->timescale; d = -collpair->distance; - if ( ( magrelVel < 0.1*d*spf ) && ( d > ALMOST_ZERO ) ) - { + if ( ( magrelVel < 0.1*d*spf ) && ( d > ALMOST_ZERO ) ) { repulse = MIN2 ( d*1.0/spf, 0.1*d*spf - magrelVel ); // stay on the safe side and clamp repulse @@ -1202,10 +1172,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTree face2 = & ( collmd->mfaces[overlap->indexB] ); // check all 4 possible collisions - for ( i = 0; i < 4; i++ ) - { - if ( i == 0 ) - { + for ( i = 0; i < 4; i++ ) { + if ( i == 0 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v2; @@ -1216,10 +1184,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTree bp2 = face2->v2; bp3 = face2->v3; } - else if ( i == 1 ) - { - if ( face1->v4 ) - { + else if ( i == 1 ) { + if ( face1->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v3; @@ -1234,10 +1200,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTree continue; } } - if ( i == 2 ) - { - if ( face2->v4 ) - { + if ( i == 2 ) { + if ( face2->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v2; @@ -1252,10 +1216,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTree continue; } } - else if ( i == 3 ) - { - if ( face1->v4 && face2->v4 ) - { + else if ( i == 3 ) { + if ( face1->v4 && face2->v4 ) { // fill faceA ap1 = face1->v1; ap2 = face1->v3; @@ -1417,10 +1379,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, face2 = & ( collmd->mfaces[overlap->indexB] ); // check all 4 possible collisions - for ( i = 0; i < 4; i++ ) - { - if ( i == 0 ) - { + for ( i = 0; i < 4; i++ ) { + if ( i == 0 ) { // fill faceA collpair->ap1 = face1->v1; collpair->ap2 = face1->v2; @@ -1431,10 +1391,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, collpair->bp2 = face2->v2; collpair->bp3 = face2->v3; } - else if ( i == 1 ) - { - if ( face1->v4 ) - { + else if ( i == 1 ) { + if ( face1->v4 ) { // fill faceA collpair->ap1 = face1->v1; collpair->ap2 = face1->v4; @@ -1448,10 +1406,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, else i++; } - if ( i == 2 ) - { - if ( face2->v4 ) - { + if ( i == 2 ) { + if ( face2->v4 ) { // fill faceA collpair->ap1 = face1->v1; collpair->ap2 = face1->v2; @@ -1465,10 +1421,8 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, else break; } - else if ( i == 3 ) - { - if ( face1->v4 && face2->v4 ) - { + else if ( i == 3 ) { + if ( face1->v4 && face2->v4 ) { // fill faceA collpair->ap1 = face1->v1; collpair->ap2 = face1->v4; @@ -1513,8 +1467,7 @@ static CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, distance = 2.0 * (double)( epsilon1 + epsilon2 + ALMOST_ZERO ); #endif - if ( distance <= ( epsilon1 + epsilon2 + ALMOST_ZERO ) ) - { + if ( distance <= ( epsilon1 + epsilon2 + ALMOST_ZERO ) ) { normalize_v3_v3( collpair->normal, collpair->vector ); collpair->distance = distance; @@ -2283,14 +2236,12 @@ static void cloth_bvh_objcollisions_nearcheck ( ClothModifierData * clmd, Collis #ifdef WITH_ELTOPO machine_epsilon_offset(clmd->clothObject); - for ( i = 0; i < numresult; i++ ) - { + for ( i = 0; i < numresult; i++ ) { *collisions_index = cloth_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, dt, tri_visithash, arena ); } - for ( i = 0; i < numresult; i++ ) - { + for ( i = 0; i < numresult; i++ ) { *collisions_index = cloth_edge_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, visithash, arena ); } @@ -2298,8 +2249,7 @@ static void cloth_bvh_objcollisions_nearcheck ( ClothModifierData * clmd, Collis BLI_ghash_free(tri_visithash, NULL, NULL); BLI_memarena_free(arena); #else /* WITH_ELTOPO */ - for ( i = 0; i < numresult; i++ ) - { + for ( i = 0; i < numresult; i++ ) { *collisions_index = cloth_collision ( (ModifierData *)clmd, (ModifierData *)collmd, overlap+i, *collisions_index, dt ); } @@ -2323,12 +2273,10 @@ static int cloth_bvh_objcollisions_resolve ( ClothModifierData * clmd, Collision // process all collisions (calculate impulses, TODO: also repulses if distance too short) result = 1; - for ( j = 0; j < 5; j++ ) // 5 is just a value that ensures convergence - { + for ( j = 0; j < 5; j++ ) { /* 5 is just a value that ensures convergence */ result = 0; - if ( collmd->bvhtree ) - { + if ( collmd->bvhtree ) { #ifdef WITH_ELTOPO result += cloth_collision_response_moving(clmd, collmd, collisions, collisions_index); result += cloth_edge_collision_response_moving(clmd, collmd, collisions, collisions_index); @@ -2339,14 +2287,11 @@ static int cloth_bvh_objcollisions_resolve ( ClothModifierData * clmd, Collision { #else // apply impulses in parallel - if ( result ) - { + if (result) { #endif - for ( i = 0; i < numverts; i++ ) - { + for (i = 0; i < numverts; i++) { // calculate "velocities" (just xnew = xold + v; no dt in v) - if ( verts[i].impulse_count ) - { + if (verts[i].impulse_count) { VECADDMUL ( verts[i].tv, verts[i].impulse, 1.0f / verts[i].impulse_count ); copy_v3_v3 ( verts[i].impulse, tnull ); verts[i].impulse_count = 0; @@ -2402,8 +2347,7 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl collisions_index = MEM_callocN(sizeof(CollPair *) *numcollobj , "CollPair"); // check all collision objects - for (i = 0; i < numcollobj; i++) - { + for (i = 0; i < numcollobj; i++) { Object *collob= collobjs[i]; CollisionModifierData *collmd = (CollisionModifierData*)modifiers_findByType(collob, eModifierType_Collision); BVHTreeOverlap *overlap = NULL; @@ -2435,8 +2379,7 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl } rounds++; - for (i = 0; i < numcollobj; i++) - { + for (i = 0; i < numcollobj; i++) { if ( collisions[i] ) MEM_freeN ( collisions[i] ); } @@ -2449,12 +2392,9 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl //////////////////////////////////////////////////////////// // verts come from clmd - for ( i = 0; i < numverts; i++ ) - { - if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL ) - { - if ( verts [i].flags & CLOTH_VERT_FLAG_PINNED ) - { + for ( i = 0; i < numverts; i++ ) { + if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL ) { + if ( verts [i].flags & CLOTH_VERT_FLAG_PINNED ) { continue; } } @@ -2467,10 +2407,8 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl //////////////////////////////////////////////////////////// // Test on *simple* selfcollisions //////////////////////////////////////////////////////////// - if ( clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_SELF ) - { - for (l = 0; l < (unsigned int)clmd->coll_parms->self_loop_count; l++) - { + if ( clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_SELF ) { + for (l = 0; l < (unsigned int)clmd->coll_parms->self_loop_count; l++) { // TODO: add coll quality rounds again BVHTreeOverlap *overlap = NULL; unsigned int result = 0; @@ -2483,14 +2421,12 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl verts = cloth->verts; - if ( cloth->bvhselftree ) - { - // search for overlapping collision pairs + if ( cloth->bvhselftree ) { + // search for overlapping collision pairs overlap = BLI_bvhtree_overlap ( cloth->bvhselftree, cloth->bvhselftree, &result ); // #pragma omp parallel for private(k, i, j) schedule(static) - for ( k = 0; k < result; k++ ) - { + for ( k = 0; k < result; k++ ) { float temp[3]; float length = 0; float mindistance; @@ -2500,8 +2436,7 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl mindistance = clmd->coll_parms->selfepsilon* ( cloth->verts[i].avg_spring_len + cloth->verts[j].avg_spring_len ); - if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL ) - { + if ( clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL ) { if ( ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED ) && ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) ) { @@ -2514,29 +2449,24 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl if ( ( ABS ( temp[0] ) > mindistance ) || ( ABS ( temp[1] ) > mindistance ) || ( ABS ( temp[2] ) > mindistance ) ) continue; // check for adjacent points (i must be smaller j) - if ( BLI_edgehash_haskey ( cloth->edgehash, MIN2(i, j), MAX2(i, j) ) ) - { + if ( BLI_edgehash_haskey ( cloth->edgehash, MIN2(i, j), MAX2(i, j) ) ) { continue; } length = normalize_v3( temp ); - if ( length < mindistance ) - { + if ( length < mindistance ) { float correction = mindistance - length; - if ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED ) - { + if ( cloth->verts [i].flags & CLOTH_VERT_FLAG_PINNED ) { mul_v3_fl( temp, -correction ); VECADD ( verts[j].tx, verts[j].tx, temp ); } - else if ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) - { + else if ( cloth->verts [j].flags & CLOTH_VERT_FLAG_PINNED ) { mul_v3_fl( temp, correction ); VECADD ( verts[i].tx, verts[i].tx, temp ); } - else - { + else { mul_v3_fl( temp, correction * -0.5 ); VECADD ( verts[j].tx, verts[j].tx, temp ); @@ -2560,12 +2490,9 @@ int cloth_bvh_objcollision (Object *ob, ClothModifierData * clmd, float step, fl //////////////////////////////////////////////////////////// // SELFCOLLISIONS: update velocities //////////////////////////////////////////////////////////// - if ( ret2 ) - { - for ( i = 0; i < cloth->numverts; i++ ) - { - if ( ! ( verts [i].flags & CLOTH_VERT_FLAG_PINNED ) ) - { + if ( ret2 ) { + for ( i = 0; i < cloth->numverts; i++ ) { + if ( ! ( verts [i].flags & CLOTH_VERT_FLAG_PINNED ) ) { sub_v3_v3v3 ( verts[i].tv, verts[i].tx, verts[i].txold ); } } diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index 25391a34689..2d5631509b4 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -202,7 +202,7 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset, int slope) if (cuma->curve) MEM_freeN(cuma->curve); - switch(preset) { + switch (preset) { case CURVE_PRESET_LINE: cuma->totpoint= 2; break; case CURVE_PRESET_SHARP: cuma->totpoint= 4; break; case CURVE_PRESET_SMOOTH: cuma->totpoint= 4; break; @@ -214,7 +214,7 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset, int slope) cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), "curve points"); - switch(preset) { + switch (preset) { case CURVE_PRESET_LINE: cuma->curve[0].x= clipr->xmin; cuma->curve[0].y= clipr->ymax; @@ -252,10 +252,9 @@ void curvemap_reset(CurveMap *cuma, rctf *clipr, int preset, int slope) case CURVE_PRESET_MID9: { int i; - for (i=0; i < cuma->totpoint; i++) - { - cuma->curve[i].x= i / ((float)cuma->totpoint-1); - cuma->curve[i].y= 0.5; + for (i = 0; i < cuma->totpoint; i++) { + cuma->curve[i].x = i / ((float)cuma->totpoint - 1); + cuma->curve[i].y = 0.5; } } break; diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 0a6e8a163cc..82a908eaf57 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -3439,8 +3439,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr { bShrinkwrapConstraint *scon = (bShrinkwrapConstraint *) con->data; - if ( VALID_CONS_TARGET(ct) && (ct->tar->type == OB_MESH) ) - { + if ( VALID_CONS_TARGET(ct) && (ct->tar->type == OB_MESH) ) { int fail = FALSE; float co[3] = {0.0f, 0.0f, 0.0f}; float no[3] = {0.0f, 0.0f, 0.0f}; @@ -3461,12 +3460,10 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr unit_m4(ct->matrix); - if (target != NULL) - { + if (target != NULL) { space_transform_from_matrixs(&transform, cob->matrix, ct->tar->obmat); - switch(scon->shrinkType) - { + switch (scon->shrinkType) { case MOD_SHRINKWRAP_NEAREST_SURFACE: case MOD_SHRINKWRAP_NEAREST_VERTEX: @@ -3475,8 +3472,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr else bvhtree_from_mesh_faces(&treeData, target, 0.0, 2, 6); - if (treeData.tree == NULL) - { + if (treeData.tree == NULL) { fail = TRUE; break; } @@ -3506,14 +3502,12 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr bvhtree_from_mesh_faces(&treeData, target, scon->dist, 4, 6); - if (treeData.tree == NULL) - { + if (treeData.tree == NULL) { fail = TRUE; break; } - if (normal_projection_project_vertex(0, co, no, &transform, treeData.tree, &hit, treeData.raycast_callback, &treeData) == FALSE) - { + if (normal_projection_project_vertex(0, co, no, &transform, treeData.tree, &hit, treeData.raycast_callback, &treeData) == FALSE) { fail = TRUE; break; } @@ -3542,8 +3536,7 @@ static void shrinkwrap_evaluate (bConstraint *UNUSED(con), bConstraintOb *cob, L bConstraintTarget *ct= targets->first; /* only evaluate if there is a target */ - if (VALID_CONS_TARGET(ct)) - { + if (VALID_CONS_TARGET(ct)) { copy_v3_v3(cob->matrix[3], ct->matrix[3]); } } diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index e9dd4d01b0e..7a5b4ef9b24 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -777,7 +777,7 @@ int CTX_data_mode_enum(const bContext *C) Object *obedit= CTX_data_edit_object(C); if (obedit) { - switch(obedit->type) { + switch (obedit->type) { case OB_MESH: return CTX_MODE_EDIT_MESH; case OB_CURVE: diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 9232fe8ec04..e5b2e5f69c7 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -636,7 +636,7 @@ static void calcknots(float *knots, const short pnts, const short order, const s float k; int a; - switch(flag & (CU_NURB_ENDPOINT|CU_NURB_BEZIER)) { + switch (flag & (CU_NURB_ENDPOINT|CU_NURB_BEZIER)) { case CU_NURB_ENDPOINT: k= 0.0; for (a=1; a <= pnts_order; a++) { @@ -2038,7 +2038,7 @@ static void make_bevel_list_3D_tangent(BevList *bl) static void make_bevel_list_3D(BevList *bl, int smooth_iter, int twist_mode) { - switch(twist_mode) { + switch (twist_mode) { case CU_TWIST_TANGENT: make_bevel_list_3D_tangent(bl); break; diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 1514716d717..ee8e57d5a3e 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -2337,7 +2337,10 @@ int CustomData_layer_has_math(struct CustomData *data, int layer_n) const LayerTypeInfo *typeInfo = layerType_getInfo(data->layers[layer_n].type); if (typeInfo->equal && typeInfo->add && typeInfo->multiply && - typeInfo->initminmax && typeInfo->dominmax) return 1; + typeInfo->initminmax && typeInfo->dominmax) + { + return 1; + } return 0; } @@ -2684,7 +2687,9 @@ int CustomData_verify_versions(struct CustomData *data, int index) if (!typeInfo->defaultname && (index > 0) && data->layers[index-1].type == layer->type) + { keeplayer = 0; /* multiple layers of which we only support one */ + } } if (!keeplayer) { diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 1232177fa10..3e0c947ff4a 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -479,7 +479,7 @@ void flip_side_name(char name[MAX_VGROUP_NAME], const char from_name[MAX_VGROUP_ /* first case; separator . - _ with extensions r R l L */ if (is_char_sep(name[len - 2]) ) { - switch(name[len - 1]) { + switch (name[len - 1]) { case 'l': prefix[len - 1] = 0; strcpy(replace, "r"); @@ -500,7 +500,7 @@ void flip_side_name(char name[MAX_VGROUP_NAME], const char from_name[MAX_VGROUP_ } /* case; beginning with r R l L , with separator after it */ else if (is_char_sep(name[1]) ) { - switch(name[0]) { + switch (name[0]) { case 'l': strcpy(replace, "r"); BLI_strncpy(suffix, name + 1, sizeof(suffix)); diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index aa6d42977ca..246c973169e 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -462,7 +462,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O if (ob->parent) { node2 = dag_get_node(dag,ob->parent); - switch(ob->partype) { + switch (ob->partype) { case PARSKEL: dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Parent"); break; @@ -2245,7 +2245,7 @@ static void dag_object_time_update_flags(Object *ob) Curve *cu; Lattice *lt; - switch(ob->type) { + switch (ob->type) { case OB_MESH: me= ob->data; if (me->key) { diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 01d5d6ef2ad..fcd80698d5c 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -228,7 +228,7 @@ void count_displist(ListBase *lb, int *totvert, int *totface) dl= lb->first; while (dl) { - switch(dl->type) { + switch (dl->type) { case DL_SURF: *totvert+= dl->nr*dl->parts; *totface+= (dl->nr-1)*(dl->parts-1); diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index 9ce4d68eeed..31544dd5ca0 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -231,13 +231,22 @@ static int dynamicPaint_surfaceNumOfPoints(DynamicPaintSurface *surface) /* checks whether surface's format/type has realtime preview */ int dynamicPaint_surfaceHasColorPreview(DynamicPaintSurface *surface) { - if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) return 0; + if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) { + return 0; + } else if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX) { if (surface->type == MOD_DPAINT_SURFACE_T_DISPLACE || - surface->type == MOD_DPAINT_SURFACE_T_WAVE) return 0; - else return 1; + surface->type == MOD_DPAINT_SURFACE_T_WAVE) + { + return 0; + } + else { + return 1; + } + } + else { + return 1; } - else return 1; } /* get currently active surface (in user interface) */ @@ -393,11 +402,15 @@ void dynamicPaintSurface_updateType(struct DynamicPaintSurface *surface) static int surface_totalSamples(DynamicPaintSurface *surface) { if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ && - surface->flags & MOD_DPAINT_ANTIALIAS) - return (surface->data->total_points*5); + surface->flags & MOD_DPAINT_ANTIALIAS) + { + return (surface->data->total_points * 5); + } if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX && - surface->flags & MOD_DPAINT_ANTIALIAS && surface->data->adj_data) + surface->flags & MOD_DPAINT_ANTIALIAS && surface->data->adj_data) + { return (surface->data->total_points+surface->data->adj_data->total_targets); + } return surface->data->total_points; } @@ -548,8 +561,7 @@ static int surface_getBrushFlags(DynamicPaintSurface *surface, Scene *scene) else base = scene->base.first; - while (base || go) - { + while (base || go) { brushObj = NULL; /* select object */ @@ -559,8 +571,7 @@ static int surface_getBrushFlags(DynamicPaintSurface *surface, Scene *scene) else brushObj = base->object; - if (!brushObj) - { + if (!brushObj) { if (surface->brush_group) go = go->next; else base= base->next; continue; @@ -572,12 +583,10 @@ static int surface_getBrushFlags(DynamicPaintSurface *surface, Scene *scene) base= base->next; md = modifiers_findByType(brushObj, eModifierType_DynamicPaint); - if (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)) - { + if (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)) { DynamicPaintModifierData *pmd2 = (DynamicPaintModifierData *)md; - if (pmd2->brush) - { + if (pmd2->brush) { DynamicPaintBrushSettings *brush = pmd2->brush; if (brush->flags & MOD_DPAINT_USES_VELOCITY) @@ -888,8 +897,10 @@ void surface_freeUnusedData(DynamicPaintSurface *surface) /* free bakedata if not active or surface is baked */ if (!(surface->flags & MOD_DPAINT_ACTIVE) || - (surface->pointcache && surface->pointcache->flag & PTCACHE_BAKED)) + (surface->pointcache && surface->pointcache->flag & PTCACHE_BAKED)) + { free_bakeData(surface->data); + } } void dynamicPaint_freeSurfaceData(DynamicPaintSurface *surface) @@ -1219,9 +1230,13 @@ static int surface_usesAdjData(DynamicPaintSurface *surface) { if (surface_usesAdjDistance(surface)) return 1; if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX && - surface->flags & MOD_DPAINT_ANTIALIAS) return 1; - - return 0; + surface->flags & MOD_DPAINT_ANTIALIAS) + { + return 1; + } + else { + return 0; + } } /* initialize surface adjacency data */ @@ -1294,10 +1309,12 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, int for /* now check if total number of edges+faces for * each vertex is even, if not -> vertex is on mesh edge */ for (i=0; itotal_points; i++) { - if ((temp_data[i]%2) || - temp_data[i] < 4) + if ((temp_data[i] % 2) || + (temp_data[i] < 4)) + { ad->flags[i] |= ADJ_ON_MESH_EDGE; - + } + /* reset temp data */ temp_data[i] = 0; } @@ -1863,8 +1880,10 @@ static void dynamicPaint_frameUpdate(DynamicPaintModifierData *pmd, Scene *scene /* restore canvas derivedmesh if required */ if (surface->type == MOD_DPAINT_SURFACE_T_DISPLACE && - surface->flags & MOD_DPAINT_DISP_INCREMENTAL && surface->next) + surface->flags & MOD_DPAINT_DISP_INCREMENTAL && surface->next) + { canvas_copyDerivedMesh(canvas, dm); + } BKE_ptcache_validate(cache, surface->current_frame); BKE_ptcache_write(&pid, surface->current_frame); @@ -2042,9 +2061,12 @@ static int dynamicPaint_findNeighbourPixel(PaintUVPoint *tempPoints, DerivedMesh //printf("connected UV : %f,%f & %f,%f - %f,%f & %f,%f\n", s_uv1[0], s_uv1[1], s_uv2[0], s_uv2[1], t_uv1[0], t_uv1[1], t_uv2[0], t_uv2[1]); if (((s_uv1[0] == t_uv1[0] && s_uv1[1] == t_uv1[1]) && - (s_uv2[0] == t_uv2[0] && s_uv2[1] == t_uv2[1]) ) || - ((s_uv2[0] == t_uv1[0] && s_uv2[1] == t_uv1[1]) && - (s_uv1[0] == t_uv2[0] && s_uv1[1] == t_uv2[1]) )) return ((px+neighX[n_index]) + w*(py+neighY[n_index])); + (s_uv2[0] == t_uv2[0] && s_uv2[1] == t_uv2[1]) ) || + ((s_uv2[0] == t_uv1[0] && s_uv2[1] == t_uv1[1]) && + (s_uv1[0] == t_uv2[0] && s_uv1[1] == t_uv2[1]) )) + { + return ((px+neighX[n_index]) + w*(py+neighY[n_index])); + } /* * Find a point that is relatively at same edge position @@ -2185,11 +2207,9 @@ int dynamicPaint_createUVSurface(DynamicPaintSurface *surface) */ if (!error) { #pragma omp parallel for schedule(static) - for (ty = 0; ty < h; ty++) - { + for (ty = 0; ty < h; ty++) { int tx; - for (tx = 0; tx < w; tx++) - { + for (tx = 0; tx < w; tx++) { int i, sample; int index = tx+w*ty; PaintUVPoint *tPoint = (&tempPoints[index]); @@ -2257,8 +2277,7 @@ int dynamicPaint_createUVSurface(DynamicPaintSurface *surface) /* If collision wasn't found but the face is a quad * do another check for the second half */ - if ((!isInside) && mface[i].v4) - { + if ((!isInside) && mface[i].v4) { /* change d2 to test the other half */ sub_v2_v2v2(d2, tface[i].uv[3], tface[i].uv[0]); // uv3 - uv0 @@ -2330,11 +2349,9 @@ int dynamicPaint_createUVSurface(DynamicPaintSurface *surface) * (To avoid seams on uv island edges) */ #pragma omp parallel for schedule(static) - for (ty = 0; ty < h; ty++) - { + for (ty = 0; ty < h; ty++) { int tx; - for (tx = 0; tx < w; tx++) - { + for (tx = 0; tx < w; tx++) { int index = tx+w*ty; PaintUVPoint *tPoint = (&tempPoints[index]); @@ -2408,11 +2425,9 @@ int dynamicPaint_createUVSurface(DynamicPaintSurface *surface) * When base loop is over convert found neighbor indexes to real ones * Also count the final number of active surface points */ - for (ty = 0; ty < h; ty++) - { + for (ty = 0; ty < h; ty++) { int tx; - for (tx = 0; tx < w; tx++) - { + for (tx = 0; tx < w; tx++) { int index = tx+w*ty; PaintUVPoint *tPoint = (&tempPoints[index]); @@ -2440,11 +2455,9 @@ int dynamicPaint_createUVSurface(DynamicPaintSurface *surface) if (sData->adj_data) { PaintAdjData *ed = sData->adj_data; unsigned int n_pos = 0; - for (ty = 0; ty < h; ty++) - { + for (ty = 0; ty < h; ty++) { int tx; - for (tx = 0; tx < w; tx++) - { + for (tx = 0; tx < w; tx++) { int i, index = tx+w*ty; if (tempPoints[index].face_index != -1) { @@ -2576,8 +2589,7 @@ void dynamicPaint_outputSurfaceImage(DynamicPaintSurface *surface, char* filenam if (ibuf == NULL) {setError(surface->canvas, "Image save failed: Not enough free memory.");return;} #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int pos=f_data->uv_p[index].pixel_index*4; /* image buffer position */ /* Set values of preferred type */ @@ -2759,8 +2771,7 @@ static void mesh_faces_spherecast_dp(void *userdata, int index, const BVHTreeRay { float dist = bvhtree_ray_tri_intersection(ray, hit->dist, t0, t1, t2); - if (dist >= 0 && dist < hit->dist) - { + if (dist >= 0 && dist < hit->dist) { hit->index = index; hit->dist = dist; hit->no[0] = (quad) ? 1.0f : 0.0f; @@ -2799,8 +2810,7 @@ static void mesh_faces_nearest_point_dp(void *userdata, int index, const float * int vertex, edge; dist = nearest_point_in_tri_surface(t0, t1, t2, co, &vertex, &edge, nearest_tmp); - if (dist < nearest->dist) - { + if (dist < nearest->dist) { nearest->index = index; nearest->dist = dist; copy_v3_v3(nearest->co, nearest_tmp); @@ -3188,8 +3198,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, /* check bounding box collision */ if (grid && meshBrush_boundsIntersect(&grid->grid_bounds, &mesh_bb, brush, brush_radius)) /* Build a bvh tree from transformed vertices */ - if (bvhtree_from_mesh_faces(&treeData, dm, 0.0f, 4, 8)) - { + if (bvhtree_from_mesh_faces(&treeData, dm, 0.0f, 4, 8)) { int c_index; int total_cells = grid->dim[0]*grid->dim[1]*grid->dim[2]; @@ -3203,8 +3212,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, /* loop through cell points and process brush */ #pragma omp parallel for schedule(static) - for (id = 0; id < grid->s_num[c_index]; id++) - { + for (id = 0; id < grid->s_num[c_index]; id++) { int index = grid->t_index[grid->s_pos[c_index] + id]; int ss, samples = bData->s_num[index]; float total_sample = (float)samples; @@ -3220,8 +3228,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, total_sample = gaussianTotal; /* Supersampling */ - for (ss=0; sscollision == MOD_DPAINT_COL_VOLUME || brush->collision == MOD_DPAINT_COL_VOLDIST) - if (BLI_bvhtree_ray_cast(treeData.tree, ray_start, ray_dir, 0.0f, &hit, mesh_faces_spherecast_dp, &treeData) != -1) - { + if (BLI_bvhtree_ray_cast(treeData.tree, ray_start, ray_dir, 0.0f, &hit, mesh_faces_spherecast_dp, &treeData) != -1) { /* We hit a triangle, now check if collision point normal is facing the point */ /* For optimization sake, hit point normal isn't calculated in ray cast loop */ @@ -3277,8 +3283,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, /* If ray and hit face normal are facing same direction * hit point is inside a closed mesh. */ - if (dot>=0) - { + if (dot>=0) { float dist = hit.dist; int f_index = hit.index; @@ -3342,8 +3347,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, hit.dist = brush_radius; /* Do a face normal directional raycast, and use that distance */ - if (BLI_bvhtree_ray_cast(treeData.tree, ray_start, proj_ray, 0.0f, &hit, mesh_faces_spherecast_dp, &treeData) != -1) - { + if (BLI_bvhtree_ray_cast(treeData.tree, ray_start, proj_ray, 0.0f, &hit, mesh_faces_spherecast_dp, &treeData) != -1) { proxDist = hit.dist; madd_v3_v3v3fl(hitCo, ray_start, proj_ray, hit.dist); /* Calculate final hit coordinates */ hQuad = (hit.no[0] == 1.0f); @@ -3446,8 +3450,7 @@ static int dynamicPaint_paintMesh(DynamicPaintSurface *surface, /* * Process hit color and alpha */ - if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) - { + if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) { float sampleColor[3]; float alpha_factor = 1.0f; @@ -3589,8 +3592,7 @@ static int dynamicPaint_paintParticles(DynamicPaintSurface *surface, BLI_begin_threaded_malloc(); /* only continue if particle bb is close enough to canvas bb */ - if (boundsIntersectDist(&grid->grid_bounds, &part_bb, range)) - { + if (boundsIntersectDist(&grid->grid_bounds, &part_bb, range)) { int c_index; int total_cells = grid->dim[0]*grid->dim[1]*grid->dim[2]; @@ -3603,13 +3605,14 @@ static int dynamicPaint_paintParticles(DynamicPaintSurface *surface, /* check cell bounding box */ if (!grid->s_num[c_index] || - !boundsIntersectDist(&grid->bounds[c_index], &part_bb, range)) + !boundsIntersectDist(&grid->bounds[c_index], &part_bb, range)) + { continue; + } /* loop through cell points */ #pragma omp parallel for schedule(static) - for (id = 0; id < grid->s_num[c_index]; id++) - { + for (id = 0; id < grid->s_num[c_index]; id++) { int index = grid->t_index[grid->s_pos[c_index] + id]; float disp_intersect = 0.0f; float radius = 0.0f; @@ -3714,8 +3717,7 @@ static int dynamicPaint_paintParticles(DynamicPaintSurface *surface, } } - if (strength > 0.001f) - { + if (strength > 0.001f) { float paintColor[4] = {0.0f}; float depth = 0.0f; @@ -3781,8 +3783,7 @@ static int dynamicPaint_paintSinglePoint(DynamicPaintSurface *surface, float *po * Loop through every surface point */ #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { float distance = len_v3v3(pointCoord, bData->realCoord[bData->s_pos[index]].v); float colorband[4] = {0.0f}; float strength; @@ -3891,8 +3892,7 @@ static void dynamicPaint_prepareAdjacencyData(DynamicPaintSurface *surface, int if (!bNeighs) return; #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int i; int numOfNeighs = adj_data->n_num[index]; @@ -3911,8 +3911,7 @@ static void dynamicPaint_prepareAdjacencyData(DynamicPaintSurface *surface, int /* calculate average values (single thread) */ bData->average_dist = 0.0f; - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int i; int numOfNeighs = adj_data->n_num[index]; @@ -4080,8 +4079,7 @@ static int dynamicPaint_prepareEffectStep(DynamicPaintSurface *surface, Scene *s if (*force) { #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { float forc[3] = {0}; /* apply force fields */ @@ -4121,8 +4119,7 @@ static int dynamicPaint_prepareEffectStep(DynamicPaintSurface *surface, Scene *s } /* calculate average values (single thread) */ - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { average_force += (*force)[index*4+3]; } average_force /= sData->total_points; @@ -4171,8 +4168,7 @@ static void dynamicPaint_doEffectStep(DynamicPaintSurface *surface, float *force memcpy(prevPoint, sData->type_data, sData->total_points*sizeof(struct PaintPoint)); #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int i; int numOfNeighs = sData->adj_data->n_num[index]; PaintPoint *pPoint = &((PaintPoint*)sData->type_data)[index]; @@ -4214,8 +4210,7 @@ static void dynamicPaint_doEffectStep(DynamicPaintSurface *surface, float *force memcpy(prevPoint, sData->type_data, sData->total_points*sizeof(struct PaintPoint)); #pragma omp parallel for schedule(static) - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int i; int numOfNeighs = sData->adj_data->n_num[index]; float totalAlpha = 0.0f; @@ -4256,8 +4251,7 @@ static void dynamicPaint_doEffectStep(DynamicPaintSurface *surface, float *force /* * Drip Effect */ - if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP && force) - { + if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP && force) { float eff_scale = distance_scale*EFF_MOVEMENT_PER_FRAME*timescale/2.0f; /* Copy current surface to the previous points array to read unmodified values */ memcpy(prevPoint, sData->type_data, sData->total_points*sizeof(struct PaintPoint)); @@ -4335,8 +4329,7 @@ void dynamicPaint_doWaveStep(DynamicPaintSurface *surface, float timescale) if (!prevPoint) return; /* calculate average neigh distance (single thread) */ - for (index = 0; index < sData->total_points; index++) - { + for (index = 0; index < sData->total_points; index++) { int i; int numOfNeighs = sData->adj_data->n_num[index]; @@ -4435,8 +4428,7 @@ static void dynamicPaint_surfacePreStep(DynamicPaintSurface *surface, float time int index; #pragma omp parallel for schedule(static) - for (index=0; indextotal_points; index++) - { + for (index=0; indextotal_points; index++) { /* Do drying dissolve effects */ if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) { PaintPoint *pPoint = &((PaintPoint*)sData->type_data)[index]; @@ -4651,8 +4643,7 @@ static int dynamicPaint_generateBakeData(DynamicPaintSurface *surface, Scene *sc * Prepare each surface point for a new step */ #pragma omp parallel for schedule(static) - for (index=0; indextotal_points; index++) - { + for (index=0; indextotal_points; index++) { float prev_point[3] = {0.0f, 0.0f, 0.0f}; if (do_velocity_data && !new_bdata) { copy_v3_v3(prev_point, bData->realCoord[bData->s_pos[index]].v); @@ -4796,8 +4787,7 @@ static int dynamicPaint_doStep(Scene *scene, Object *ob, DynamicPaintSurface *su else base = scene->base.first; - while (base || go) - { + while (base || go) { brushObj = NULL; /* select object */ if (surface->brush_group) { @@ -4821,12 +4811,10 @@ static int dynamicPaint_doStep(Scene *scene, Object *ob, DynamicPaintSurface *su /* check if target has an active dp modifier */ md = modifiers_findByType(brushObj, eModifierType_DynamicPaint); - if (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)) - { + if (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)) { DynamicPaintModifierData *pmd2 = (DynamicPaintModifierData *)md; /* make sure we're dealing with a brush */ - if (pmd2->brush) - { + if (pmd2->brush) { DynamicPaintBrushSettings *brush = pmd2->brush; BrushMaterials bMats = {0}; diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 4f320b41184..c275d4ef0ac 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -129,7 +129,7 @@ PartDeflect *object_add_collision_fields(int type) pd->f_damp = 1.0f; /* set sensible defaults based on type */ - switch(type) { + switch (type) { case PFIELD_VORTEX: pd->shape = PFIELD_SHAPE_PLANE; break; @@ -419,8 +419,7 @@ static float eff_calc_visibility(ListBase *colliders, EffectorCache *eff, Effect len = normalize_v3(norm); // check all collision objects - for (col = colls->first; col; col = col->next) - { + for (col = colls->first; col; col = col->next) { CollisionModifierData *collmd = col->collmd; if (col->ob == eff->ob) @@ -506,7 +505,8 @@ float effector_falloff(EffectorCache *eff, EffectorData *efd, EffectedPoint *UNU falloff=0.0f; else if (eff->pd->zdir == PFIELD_Z_NEG && fac > 0.0f) falloff=0.0f; - else switch(eff->pd->falloff) { + else { + switch (eff->pd->falloff) { case PFIELD_FALL_SPHERE: falloff*= falloff_func_dist(eff->pd, efd->distance); break; @@ -529,6 +529,7 @@ float effector_falloff(EffectorCache *eff, EffectorData *efd, EffectedPoint *UNU falloff*= falloff_func_rad(eff->pd, r_fac); break; + } } return falloff; @@ -835,7 +836,7 @@ static void do_physical_effector(EffectorCache *eff, EffectorData *efd, Effected copy_v3_v3(force, efd->vec_to_point); - switch(pd->forcefield) { + switch (pd->forcefield) { case PFIELD_WIND: copy_v3_v3(force, efd->nor); mul_v3_fl(force, strength * efd->falloff); diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index bb8cfe37a88..806d795cc9d 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -1655,8 +1655,7 @@ static float evaluate_driver (ChannelDriver *driver, const float evaltime) { driver->curval= 0.0f; } - else - { + else { /* this evaluates the expression using Python,and returns its result: * - on errors it reports, then returns 0.0f */ diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index ed5cf5e7924..0b722aabd4c 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -318,8 +318,7 @@ static void fcm_fn_generator_evaluate (FCurve *UNUSED(fcu), FModifier *fcm, floa /* get function pointer to the func to use: * WARNING: must perform special argument validation hereto guard against crashes */ - switch (data->type) - { + switch (data->type) { /* simple ones */ case FCM_GENERATOR_FN_SIN: /* sine wave */ fn= sin; diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index b2759f18e9b..cdc923600d7 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -68,8 +68,7 @@ void free_vfont(struct VFont *vf) if (vf == NULL) return; if (vf->data) { - while (vf->data->characters.first) - { + while (vf->data->characters.first) { VChar *che = vf->data->characters.first; while (che->nurbsbase.first) { @@ -136,8 +135,7 @@ struct TmpFont *vfont_find_tmpfont(VFont *vfont) // Try finding the font from font list tmpfnt = ttfdata.first; - while (tmpfnt) - { + while (tmpfnt) { if (tmpfnt->vfont == vfont) break; tmpfnt = tmpfnt->next; @@ -280,7 +278,7 @@ VFont *load_vfont(Main *bmain, const char *name) static VFont *which_vfont(Curve *cu, CharInfo *info) { - switch(info->flag & (CU_CHINFO_BOLD|CU_CHINFO_ITALIC)) { + switch (info->flag & (CU_CHINFO_BOLD|CU_CHINFO_ITALIC)) { case CU_CHINFO_BOLD: if (cu->vfontb) return(cu->vfontb); else return(cu->vfont); case CU_CHINFO_ITALIC: @@ -397,8 +395,7 @@ static void buildchar(Main *bmain, Curve *cu, unsigned long character, CharInfo nu1 = che->nurbsbase.first; // Create the character - while (nu1) - { + while (nu1) { bezt1 = nu1->bezt; if (bezt1) { nu2 =(Nurb*) MEM_mallocN(sizeof(Nurb),"duplichar_nurb"); @@ -822,10 +819,15 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m } } else if ((cu->spacemode==CU_JUSTIFY) && (cu->tb[0].w != 0.0f)) { - float curofs= 0.0f; - for (i=0; i<=slen; i++) { - for (j=i; (mem[j]) && (mem[j]!='\n') && - (mem[j]!='\r') && (chartransdata[j].dobreak==0) && (jlinenr]-linedata[ct->linenr])/linedata4[ct->linenr]; @@ -833,7 +835,7 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m } if (mem[i]=='\n' || mem[i]=='\r' || chartransdata[i].dobreak) curofs= 0; ct++; - } + } } } @@ -950,7 +952,7 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m if ((mode==FO_CURSUP || mode==FO_PAGEUP) && ct->linenr==0); else if ((mode==FO_CURSDOWN || mode==FO_PAGEDOWN) && ct->linenr==lnr); else { - switch(mode) { + switch (mode) { case FO_CURSUP: lnr= ct->linenr-1; break; case FO_CURSDOWN: lnr= ct->linenr+1; break; case FO_PAGEUP: lnr= ct->linenr-10; break; diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index bb51325a6ef..dfe73ae20db 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -581,8 +581,7 @@ void IDP_FreeIterBeforeEnd(void *vself) static void IDP_FreeGroup(IDProperty *prop) { IDProperty *loop; - for (loop=prop->data.group.first; loop; loop=loop->next) - { + for (loop=prop->data.group.first; loop; loop=loop->next) { IDP_FreeProperty(loop); } BLI_freelistN(&prop->data.group); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 6e0330f5316..5c9c942cc6c 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -578,7 +578,7 @@ static ImBuf *add_ibuf_size(unsigned int width, unsigned int height, const char BLI_strncpy(ibuf->name, name, sizeof(ibuf->name)); ibuf->userflags |= IB_BITMAPDIRTY; - switch(uvtestgrid) { + switch (uvtestgrid) { case 1: BKE_image_buf_fill_checker(rect, rect_float, width, height); break; @@ -929,7 +929,7 @@ char BKE_ftype_to_imtype(const int ftype) int BKE_imtype_is_movie(const char imtype) { - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_AVIRAW: case R_IMF_IMTYPE_AVIJPEG: case R_IMF_IMTYPE_AVICODEC: @@ -946,7 +946,7 @@ int BKE_imtype_is_movie(const char imtype) int BKE_imtype_supports_zbuf(const char imtype) { - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_IRIZ: case R_IMF_IMTYPE_OPENEXR: /* but not R_IMF_IMTYPE_MULTILAYER */ return 1; @@ -956,7 +956,7 @@ int BKE_imtype_supports_zbuf(const char imtype) int BKE_imtype_supports_compress(const char imtype) { - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_PNG: return 1; } @@ -965,7 +965,7 @@ int BKE_imtype_supports_compress(const char imtype) int BKE_imtype_supports_quality(const char imtype) { - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_JPEG90: case R_IMF_IMTYPE_JP2: case R_IMF_IMTYPE_AVIJPEG: @@ -979,7 +979,7 @@ char BKE_imtype_valid_channels(const char imtype) char chan_flag= IMA_CHAN_FLAG_RGB; /* assume all support rgb */ /* alpha */ - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_TARGA: case R_IMF_IMTYPE_IRIS: case R_IMF_IMTYPE_PNG: @@ -995,7 +995,7 @@ char BKE_imtype_valid_channels(const char imtype) } /* bw */ - switch(imtype) { + switch (imtype) { case R_IMF_IMTYPE_PNG: case R_IMF_IMTYPE_JPEG90: case R_IMF_IMTYPE_TARGA: @@ -1110,8 +1110,11 @@ int BKE_add_image_extension(char *string, const char imtype) } #ifdef WITH_TIFF else if (imtype==R_IMF_IMTYPE_TIFF) { - if (!BLI_testextensie(string, ".tif") && - !BLI_testextensie(string, ".tiff")) extension= ".tif"; + if (!BLI_testextensie(string, ".tif") && + !BLI_testextensie(string, ".tiff")) + { + extension= ".tif"; + } } #endif #ifdef WITH_OPENEXR @@ -1791,7 +1794,7 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal) if (ima==NULL) return; - switch(signal) { + switch (signal) { case IMA_SIGNAL_FREE: image_free_buffers(ima); if (iuser) diff --git a/source/blender/blenkernel/intern/image_gen.c b/source/blender/blenkernel/intern/image_gen.c index 675c0771140..1441bd7b12b 100644 --- a/source/blender/blenkernel/intern/image_gen.c +++ b/source/blender/blenkernel/intern/image_gen.c @@ -169,12 +169,10 @@ static void checker_board_color_fill(unsigned char *rect, float *rect_float, int hue_step= power_of_2_max_i(width / 8); if (hue_step < 8) hue_step= 8; - for (y= 0; y < height; y++) - { + for (y= 0; y < height; y++) { val= 0.1 + (y * (0.4 / height)); /* use a number lower then 1.0 else its too bright */ - for (x= 0; x < width; x++) - { + for (x= 0; x < width; x++) { hue= (float)((double)(x/hue_step) * 1.0 / width * hue_step); hsv_to_rgb(hue, sat, val, &r, &g, &b); @@ -291,12 +289,10 @@ static void checker_board_text(unsigned char *rect, float *rect_float, int width BLF_buffer(mono, rect_float, rect, width, height, 4); - for (y= 0; y < height; y+=step) - { + for (y= 0; y < height; y+=step) { text[1]= '1'; - for (x= 0; x < width; x+=step) - { + for (x= 0; x < width; x+=step) { /* hard coded offset */ pen_x = x + 33; pen_y = y + 44; diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c index a4edc1e531a..b593419db9f 100644 --- a/source/blender/blenkernel/intern/implicit.c +++ b/source/blender/blenkernel/intern/implicit.c @@ -178,8 +178,7 @@ static void print_fvector(float m3[3]) DO_INLINE void print_lfvector(float (*fLongVector)[3], unsigned int verts) { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { print_fvector(fLongVector[i]); } } @@ -193,8 +192,7 @@ DO_INLINE lfVector *create_lfvector(unsigned int verts) /* delete long vector */ DO_INLINE void del_lfvector(float (*fLongVector)[3]) { - if (fLongVector != NULL) - { + if (fLongVector != NULL) { MEM_freeN (fLongVector); // cloth_aligned_free(&MEMORY_BASE, fLongVector); } @@ -208,8 +206,7 @@ DO_INLINE void cp_lfvector(float (*to)[3], float (*from)[3], unsigned int verts) DO_INLINE void init_lfvector(float (*fLongVector)[3], float vector[3], unsigned int verts) { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { copy_v3_v3(fLongVector[i], vector); } } @@ -223,8 +220,7 @@ DO_INLINE void mul_lfvectorS(float (*to)[3], float (*fLongVector)[3], float scal { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { mul_fvector_S(to[i], fLongVector[i], scalar); } } @@ -233,8 +229,7 @@ DO_INLINE void mul_lfvectorS(float (*to)[3], float (*fLongVector)[3], float scal DO_INLINE void submul_lfvectorS(float (*to)[3], float (*fLongVector)[3], float scalar, unsigned int verts) { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { VECSUBMUL(to[i], fLongVector[i], scalar); } } @@ -258,8 +253,7 @@ DO_INLINE void add_lfvector_lfvector(float (*to)[3], float (*fLongVectorA)[3], f { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { VECADD(to[i], fLongVectorA[i], fLongVectorB[i]); } @@ -269,8 +263,7 @@ DO_INLINE void add_lfvector_lfvectorS(float (*to)[3], float (*fLongVectorA)[3], { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { VECADDS(to[i], fLongVectorA[i], fLongVectorB[i], bS); } @@ -280,8 +273,7 @@ DO_INLINE void add_lfvectorS_lfvectorS(float (*to)[3], float (*fLongVectorA)[3], { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { VECADDSS(to[i], fLongVectorA[i], aS, fLongVectorB[i], bS); } } @@ -289,8 +281,7 @@ DO_INLINE void add_lfvectorS_lfvectorS(float (*to)[3], float (*fLongVectorA)[3], DO_INLINE void sub_lfvector_lfvectorS(float (*to)[3], float (*fLongVectorA)[3], float (*fLongVectorB)[3], float bS, unsigned int verts) { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { VECSUBS(to[i], fLongVectorA[i], fLongVectorB[i], bS); } @@ -300,8 +291,7 @@ DO_INLINE void sub_lfvector_lfvector(float (*to)[3], float (*fLongVectorA)[3], f { unsigned int i = 0; - for (i = 0; i < verts; i++) - { + for (i = 0; i < verts; i++) { sub_v3_v3v3(to[i], fLongVectorA[i], fLongVectorB[i]); } @@ -350,15 +340,12 @@ DO_INLINE void inverse_fmatrix(float to[3][3], float from[3][3]) unsigned int i, j; float d; - if ((d=det_fmatrix(from))==0) - { + if ((d=det_fmatrix(from)) == 0) { printf("can't build inverse"); exit(0); } - for (i=0;i<3;i++) - { - for (j=0;j<3;j++) - { + for (i=0;i<3;i++) { + for (j=0;j<3;j++) { int i1=(i+1)%3; int i2=(i+2)%3; int j1=(j+1)%3; @@ -535,8 +522,7 @@ DO_INLINE fmatrix3x3 *create_bfmatrix(unsigned int verts, unsigned int springs) /* delete big matrix */ DO_INLINE void del_bfmatrix(fmatrix3x3 *matrix) { - if (matrix != NULL) - { + if (matrix != NULL) { MEM_freeN (matrix); } } @@ -554,8 +540,7 @@ DO_INLINE void init_bfmatrix(fmatrix3x3 *matrix, float m3[3][3]) { unsigned int i; - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { cp_fmatrix(matrix[i].m, m3); } } @@ -567,12 +552,10 @@ DO_INLINE void initdiag_bfmatrix(fmatrix3x3 *matrix, float m3[3][3]) unsigned int i,j; float tmatrix[3][3] = {{0,0,0},{0,0,0},{0,0,0}}; - for (i = 0; i < matrix[0].vcount; i++) - { + for (i = 0; i < matrix[0].vcount; i++) { cp_fmatrix(matrix[i].m, m3); } - for (j = matrix[0].vcount; j < matrix[0].vcount+matrix[0].scount; j++) - { + for (j = matrix[0].vcount; j < matrix[0].vcount+matrix[0].scount; j++) { cp_fmatrix(matrix[j].m, tmatrix); } } @@ -581,8 +564,7 @@ DO_INLINE void initdiag_bfmatrix(fmatrix3x3 *matrix, float m3[3][3]) DO_INLINE void mul_bfmatrix_S(fmatrix3x3 *matrix, float scalar) { unsigned int i = 0; - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { mul_fmatrix_S(matrix[i].m, scalar); } } @@ -601,15 +583,13 @@ DO_INLINE void mul_bfmatrix_lfvector( float (*to)[3], fmatrix3x3 *from, lfVector { #pragma omp section { - for (i = from[0].vcount; i < from[0].vcount+from[0].scount; i++) - { + for (i = from[0].vcount; i < from[0].vcount+from[0].scount; i++) { muladd_fmatrix_fvector(to[from[i].c], from[i].m, fLongVector[from[i].r]); } } #pragma omp section { - for (i = 0; i < from[0].vcount+from[0].scount; i++) - { + for (i = 0; i < from[0].vcount+from[0].scount; i++) { muladd_fmatrix_fvector(temp[from[i].r], from[i].m, fLongVector[from[i].c]); } } @@ -627,8 +607,7 @@ DO_INLINE void mul_prevfmatrix_lfvector( float (*to)[3], fmatrix3x3 *from, lfVec { unsigned int i = 0; - for (i = 0; i < from[0].vcount; i++) - { + for (i = 0; i < from[0].vcount; i++) { mul_fmatrix_fvector(to[from[i].r], from[i].m, fLongVector[from[i].c]); } } @@ -639,8 +618,7 @@ DO_INLINE void add_bfmatrix_bfmatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmatrix unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { add_fmatrix_fmatrix(to[i].m, from[i].m, matrix[i].m); } @@ -651,8 +629,7 @@ DO_INLINE void addadd_bfmatrix_bfmatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmat unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { addadd_fmatrix_fmatrix(to[i].m, from[i].m, matrix[i].m); } @@ -663,8 +640,7 @@ DO_INLINE void subadd_bfmatrix_bfmatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmat unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { subadd_fmatrix_fmatrix(to[i].m, from[i].m, matrix[i].m); } @@ -675,8 +651,7 @@ DO_INLINE void sub_bfmatrix_bfmatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmatrix unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { sub_fmatrix_fmatrix(to[i].m, from[i].m, matrix[i].m); } @@ -687,8 +662,7 @@ DO_INLINE void sub_bfmatrix_Smatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmatrix3 unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount; i++) - { + for (i = 0; i < matrix[0].vcount; i++) { sub_fmatrix_fmatrix(to[matrix[i].c].m, from[matrix[i].c].m, matrix[i].m); } @@ -699,8 +673,7 @@ DO_INLINE void addsub_bfmatrix_bfmatrix( fmatrix3x3 *to, fmatrix3x3 *from, fmat unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { addsub_fmatrix_fmatrix(to[i].m, from[i].m, matrix[i].m); } @@ -713,8 +686,7 @@ DO_INLINE void subadd_bfmatrixS_bfmatrixS( fmatrix3x3 *to, fmatrix3x3 *from, flo unsigned int i = 0; /* process diagonal elements */ - for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) - { + for (i = 0; i < matrix[0].vcount+matrix[0].scount; i++) { subadd_fmatrixS_fmatrixS(to[i].m, from[i].m, aS, matrix[i].m, bS); } @@ -772,12 +744,10 @@ int implicit_init (Object *UNUSED(ob), ClothModifierData *clmd) id->dV = create_lfvector(cloth->numverts); id->z = create_lfvector(cloth->numverts); - for (i=0;inumverts;i++) - { + for (i=0;inumverts;i++) { id->A[i].r = id->A[i].c = id->dFdV[i].r = id->dFdV[i].c = id->dFdX[i].r = id->dFdX[i].c = id->P[i].c = id->P[i].r = id->Pinv[i].c = id->Pinv[i].r = id->bigI[i].c = id->bigI[i].r = id->M[i].r = id->M[i].c = i; - if (verts [i].flags & CLOTH_VERT_FLAG_PINNED) - { + if (verts [i].flags & CLOTH_VERT_FLAG_PINNED) { id->S[pinned].pinned = 1; id->S[pinned].c = id->S[pinned].r = i; pinned++; @@ -791,8 +761,7 @@ int implicit_init (Object *UNUSED(ob), ClothModifierData *clmd) // init springs search = cloth->springs; - for (i=0;inumsprings;i++) - { + for (i=0;inumsprings;i++) { spring = search->link; // dFdV_start[i].r = big_I[i].r = big_zero[i].r = @@ -810,8 +779,7 @@ int implicit_init (Object *UNUSED(ob), ClothModifierData *clmd) initdiag_bfmatrix(id->bigI, I); - for (i = 0; i < cloth->numverts; i++) - { + for (i = 0; i < cloth->numverts; i++) { copy_v3_v3(id->X[i], verts[i].x); } @@ -823,12 +791,10 @@ int implicit_free (ClothModifierData *clmd) Cloth *cloth; cloth = (Cloth *)clmd->clothObject; - if (cloth) - { + if (cloth) { id = cloth->implicit; - if (id) - { + if (id) { del_bfmatrix(id->A); del_bfmatrix(id->dFdV); del_bfmatrix(id->dFdX); @@ -886,12 +852,10 @@ DO_INLINE float fbstar_jacobi(float length, float L, float kb, float cb) float tempfb = kb * fb(length, L); float fbstar = cb * (length - L); - if (tempfb < fbstar) - { + if (tempfb < fbstar) { return cb; } - else - { + else { return kb * fbderiv(length, L); } } @@ -900,8 +864,7 @@ DO_INLINE void filter(lfVector *V, fmatrix3x3 *S) { unsigned int i=0; - for (i=0;istarget && conjgrad_loopcount < conjgrad_looplimit) - { + while (s>starget && conjgrad_loopcount < conjgrad_looplimit) { // Mul(q,A,d); // q = A*d; mul_bfmatrix_lfvector(q, lA, d); @@ -979,8 +941,7 @@ DO_INLINE void BuildPPinv(fmatrix3x3 *lA, fmatrix3x3 *P, fmatrix3x3 *Pinv) // Take only the diagonal blocks of A // #pragma omp parallel for private(i) if (lA[0].vcount > CLOTH_OPENMP_LIMIT) - for (i = 0; iflags &= ~CLOTH_SPRING_FLAG_NEEDED; - if (length > ALMOST_ZERO) - { + if (length > ALMOST_ZERO) { /* if (length>L) { @@ -1270,16 +1230,13 @@ DO_INLINE void cloth_calc_spring_force(ClothModifierData *clmd, ClothSpring *s, */ mul_fvector_S(dir, extent, 1.0f/length); } - else - { + else { mul_fvector_S(dir, extent, 0.0f); } // calculate force of structural + shear springs - if ((s->type & CLOTH_SPRING_TYPE_STRUCTURAL) || (s->type & CLOTH_SPRING_TYPE_SHEAR)) - { - if (length > L || no_compress) - { + if ((s->type & CLOTH_SPRING_TYPE_STRUCTURAL) || (s->type & CLOTH_SPRING_TYPE_SHEAR)) { + if (length > L || no_compress) { s->flags |= CLOTH_SPRING_FLAG_NEEDED; k = clmd->sim_parms->structural; @@ -1337,10 +1294,8 @@ DO_INLINE void cloth_calc_spring_force(ClothModifierData *clmd, ClothSpring *s, // dfdx_spring(s->dfdx, dir, length, 0.0, k); // dfdv_damp(s->dfdv, dir, MIN2(1.0, (clmd->sim_parms->goalfrict/100.0))); } - else // calculate force of bending springs - { - if (length < L) - { + else { /* calculate force of bending springs */ + if (length < L) { s->flags |= CLOTH_SPRING_FLAG_NEEDED; k = clmd->sim_parms->bending; @@ -1358,10 +1313,8 @@ DO_INLINE void cloth_calc_spring_force(ClothModifierData *clmd, ClothSpring *s, DO_INLINE void cloth_apply_spring_force(ClothModifierData *UNUSED(clmd), ClothSpring *s, lfVector *lF, lfVector *UNUSED(X), lfVector *UNUSED(V), fmatrix3x3 *dFdV, fmatrix3x3 *dFdX) { - if (s->flags & CLOTH_SPRING_FLAG_NEEDED) - { - if (!(s->type & CLOTH_SPRING_TYPE_BENDING)) - { + if (s->flags & CLOTH_SPRING_FLAG_NEEDED) { + if (!(s->type & CLOTH_SPRING_TYPE_BENDING)) { sub_fmatrix_fmatrix(dFdV[s->ij].m, dFdV[s->ij].m, s->dfdv); sub_fmatrix_fmatrix(dFdV[s->kl].m, dFdV[s->kl].m, s->dfdv); add_fmatrix_fmatrix(dFdV[s->matrix_index].m, dFdV[s->matrix_index].m, s->dfdv); @@ -1486,8 +1439,7 @@ static void hair_velocity_smoothing(ClothModifierData *clmd, lfVector *lF, lfVec } /* gather colliders */ - if (colliders && collfac > 0.0f) for (col = colliders->first; col; col = col->next) - { + if (colliders && collfac > 0.0f) for (col = colliders->first; col; col = col->next) { MVert *loc0 = col->collmd->x; MVert *loc1 = col->collmd->xnew; float vel[3]; @@ -1593,8 +1545,7 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec /* multiply lF with mass matrix * force = mass * acceleration (in this case: gravity) */ - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { float temp[3]; copy_v3_v3(temp, lF[i]); mul_fmatrix_fvector(lF[i], M[i].m, temp); @@ -1603,8 +1554,7 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec submul_lfvectorS(lF, lV, spring_air, numverts); /* handle external forces like wind */ - if (effectors) - { + if (effectors) { // 0 = force, 1 = normalized force winvec = create_lfvector(cloth->numverts); @@ -1612,14 +1562,12 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec printf("winvec: out of memory in implicit.c\n"); // precalculate wind forces - for (i = 0; i < cloth->numverts; i++) - { + for (i = 0; i < cloth->numverts; i++) { pd_point_from_loc(clmd->scene, (float*)lX[i], (float*)lV[i], i, &epoint); pdDoEffectors(effectors, NULL, clmd->sim_parms->effector_weights, &epoint, winvec[i], NULL); } - for (i = 0; i < cloth->numfaces; i++) - { + for (i = 0; i < cloth->numfaces; i++) { float trinormal[3]={0,0,0}; // normalized triangle normal float triunnormal[3]={0,0,0}; // not-normalized-triangle normal float tmp[3]={0,0,0}; @@ -1650,8 +1598,7 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec VECADDS(lF[mfaces[i].v3], lF[mfaces[i].v3], tmp, factor); // add wind from v4 - if (mfaces[i].v4) - { + if (mfaces[i].v4) { copy_v3_v3(tmp, trinormal); mul_v3_fl(tmp, calculateVertexWindForce(winvec[mfaces[i].v4], triunnormal)); VECADDS(lF[mfaces[i].v4], lF[mfaces[i].v4], tmp, factor); @@ -1692,8 +1639,7 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec // calculate spring forces search = cloth->springs; - while (search) - { + while (search) { // only handle active springs // if (((clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED) && !(springs[i].flags & CSPRING_FLAG_DEACTIVATE))|| !(clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED)) {} cloth_calc_spring_force(clmd, search->link, lF, lX, lV, dFdV, dFdX, time); @@ -1703,8 +1649,7 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), lfVec // apply spring forces search = cloth->springs; - while (search) - { + while (search) { // only handle active springs // if (((clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED) && !(springs[i].flags & CSPRING_FLAG_DEACTIVATE))|| !(clmd->sim_parms->flags & CSIMSETT_FLAG_TEARING_ENABLED)) cloth_apply_spring_force(clmd, search->link, lF, lX, lV, dFdV, dFdX); @@ -1836,21 +1781,17 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase Implicit_Data *id = cloth->implicit; int do_extra_solve; - if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) /* do goal stuff */ - { - for (i = 0; i < numverts; i++) - { + if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) { /* do goal stuff */ + for (i = 0; i < numverts; i++) { // update velocities with constrained velocities from pinned verts - if (verts [i].flags & CLOTH_VERT_FLAG_PINNED) - { + if (verts [i].flags & CLOTH_VERT_FLAG_PINNED) { sub_v3_v3v3(id->V[i], verts[i].xconst, verts[i].xold); // mul_v3_fl(id->V[i], clmd->sim_parms->stepsPerFrame); } } } - while (step < tf) - { + while (step < tf) { // damping velocity for artistic reasons mul_lfvectorS(id->V, id->V, clmd->sim_parms->vel_damping, numverts); @@ -1864,13 +1805,10 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase add_lfvector_lfvectorS(id->Xnew, id->X, id->Vnew, dt, numverts); /* move pinned verts to correct position */ - for (i = 0; i < numverts; i++) - { - if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) - { - if (verts [i].flags & CLOTH_VERT_FLAG_PINNED) - { - float tvect[3] = {.0,.0,.0}; + for (i = 0; i < numverts; i++) { + if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) { + if (verts[i].flags & CLOTH_VERT_FLAG_PINNED) { + float tvect[3] = {0.0f, 0.0f, 0.0f}; sub_v3_v3v3(tvect, verts[i].xconst, verts[i].xold); mul_fvector_S(tvect, tvect, step+dt); VECADD(tvect, tvect, verts[i].xold); @@ -1881,14 +1819,12 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase copy_v3_v3(verts[i].txold, id->X[i]); } - if (clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_ENABLED && clmd->clothObject->bvhtree) - { + if (clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_ENABLED && clmd->clothObject->bvhtree) { // collisions // itstart(); // update verts to current positions - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { copy_v3_v3(verts[i].tx, id->Xnew[i]); sub_v3_v3v3(verts[i].tv, verts[i].tx, verts[i].txold); @@ -1904,8 +1840,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase do_extra_solve = cloth_bvh_objcollision(ob, clmd, step/clmd->sim_parms->timescale, dt/clmd->sim_parms->timescale); // copy corrected positions back to simulation - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { // correct velocity again, just to be sure we had to change it due to adaptive collisions sub_v3_v3v3(verts[i].tv, verts[i].tx, id->X[i]); } @@ -1913,11 +1848,9 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase //if (do_extra_solve) // cloth_calc_helper_forces(ob, clmd, initial_cos, step/clmd->sim_parms->timescale, dt/clmd->sim_parms->timescale); - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { - if (do_extra_solve) - { + if (do_extra_solve) { if ((clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) && (verts [i].flags & CLOTH_VERT_FLAG_PINNED)) continue; @@ -1933,8 +1866,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase // if there were collisions, advance the velocity from v_n+1/2 to v_n+1 - if (do_extra_solve) - { + if (do_extra_solve) { // V = Vnew; cp_lfvector(id->V, id->Vnew, numverts); @@ -1944,8 +1876,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase simulate_implicit_euler(id->Vnew, id->X, id->V, id->F, id->dFdV, id->dFdX, dt / 2.0f, id->A, id->B, id->dV, id->S, id->z, id->olddV, id->P, id->Pinv, id->M, id->bigI); } } - else - { + else { // X = Xnew; cp_lfvector(id->X, id->Xnew, numverts); } @@ -1959,16 +1890,13 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase step += dt; } - for (i = 0; i < numverts; i++) - { - if ((clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) && (verts [i].flags & CLOTH_VERT_FLAG_PINNED)) - { + for (i = 0; i < numverts; i++) { + if ((clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_GOAL) && (verts [i].flags & CLOTH_VERT_FLAG_PINNED)) { copy_v3_v3(verts[i].txold, verts[i].xconst); // TODO: test --> should be .x copy_v3_v3(verts[i].x, verts[i].xconst); copy_v3_v3(verts[i].v, id->V[i]); } - else - { + else { copy_v3_v3(verts[i].txold, id->X[i]); copy_v3_v3(verts[i].x, id->X[i]); copy_v3_v3(verts[i].v, id->V[i]); @@ -1987,8 +1915,7 @@ void implicit_set_positions (ClothModifierData *clmd) unsigned int numverts = cloth->numverts, i; Implicit_Data *id = cloth->implicit; - for (i = 0; i < numverts; i++) - { + for (i = 0; i < numverts; i++) { copy_v3_v3(id->X[i], verts[i].x); copy_v3_v3(id->V[i], verts[i].v); } diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 7e756e853b1..07839b10ef1 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -182,7 +182,7 @@ int id_make_local(ID *id, int test) if (id->flag & LIB_INDIRECT) return 0; - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_SCE: return 0; /* not implemented */ case ID_LI: @@ -279,7 +279,7 @@ int id_copy(ID *id, ID **newid, int test) /* conventions: * - make shallow copy, only this ID block * - id.us of the new ID is set to 1 */ - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_SCE: return 0; /* can't be copied from here */ case ID_LI: @@ -368,7 +368,7 @@ int id_unlink(ID *id, int test) Main *mainlib= G.main; ListBase *lb; - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_TXT: if (test) return 1; unlink_text(mainlib, (Text*)id); @@ -425,7 +425,7 @@ int id_single_user(bContext *C, ID *id, PointerRNA *ptr, PropertyRNA *prop) ListBase *which_libbase(Main *mainlib, short type) { - switch( type ) { + switch ( type ) { case ID_SCE: return &(mainlib->scene); case ID_LI: @@ -589,7 +589,7 @@ static ID *alloc_libblock_notest(short type) { ID *id= NULL; - switch( type ) { + switch ( type ) { case ID_SCE: id= MEM_callocN(sizeof(Scene), "scene"); break; @@ -796,7 +796,7 @@ void free_libblock(ListBase *lb, void *idv) BPY_id_release(id); #endif - switch( GS(id->name) ) { /* GetShort from util.h */ + switch ( GS(id->name) ) { /* GetShort from util.h */ case ID_SCE: free_scene((Scene *)id); break; @@ -1010,8 +1010,7 @@ static void IDnames_to_dyn_pupstring(DynStr *pupds, ListBase *lb, ID *link, shor BLI_dynstr_append(pupds, numstr); /* icon */ - switch(GS(id->name)) - { + switch (GS(id->name)) { case ID_MA: /* fall through */ case ID_TE: /* fall through */ case ID_IM: /* fall through */ diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 6d44282c60a..21a91b34e8d 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -493,7 +493,7 @@ short *give_totcolp(Object *ob) /* same as above but for ID's */ Material ***give_matarar_id(ID *id) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_ME: return &(((Mesh *)id)->mat); break; @@ -509,7 +509,7 @@ Material ***give_matarar_id(ID *id) short *give_totcolp_id(ID *id) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_ME: return &(((Mesh *)id)->totcol); break; @@ -525,7 +525,7 @@ short *give_totcolp_id(ID *id) static void data_delete_material_index_id(ID *id, short index) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_ME: mesh_delete_material_index((Mesh *)id, index); break; diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index c06d796d562..60ccfa2a7cb 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -204,7 +204,7 @@ MetaElem *add_metaball_element(MetaBall *mb, const int type) ml->s= 2.0; ml->flag= MB_SCALE_RAD; - switch(type) { + switch (type) { case MB_BALL: ml->type = MB_BALL; ml->expx= ml->expy= ml->expz= 1.0; @@ -853,7 +853,7 @@ void docube(CUBE *cube, PROCESS *p, MetaBall *mb) count++; } if (count>2) { - switch(count) { + switch (count) { case 3: accum_mballfaces(indexar[2], indexar[1], indexar[0], 0); break; @@ -1179,10 +1179,13 @@ int getedge (EDGELIST *table[], k2=t; } q = table[HASH(i1, j1, k1)+HASH(i2, j2, k2)]; - for (; q != NULL; q = q->next) + for (; q != NULL; q = q->next) { if (q->i1 == i1 && q->j1 == j1 && q->k1 == k1 && q->i2 == i2 && q->j2 == j2 && q->k2 == k2) + { return q->vid; + } + } return -1; } diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 59dd7db43da..7509260d503 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -128,18 +128,22 @@ static int customdata_compare(CustomData *c1, CustomData *c2, Mesh *m1, Mesh *m2 CustomDataLayer *l1, *l2; int i, i1=0, i2=0, tot, j; - for (i=0; itotlayer; i++) { - if (ELEM7(c1->layers[i].type, CD_MVERT, CD_MEDGE, CD_MPOLY, - CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + for (i = 0; i < c1->totlayer; i++) { + if (ELEM7(c1->layers[i].type, CD_MVERT, CD_MEDGE, CD_MPOLY, + CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + { i1++; + } } - - for (i=0; itotlayer; i++) { - if (ELEM7(c2->layers[i].type, CD_MVERT, CD_MEDGE, CD_MPOLY, - CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + + for (i = 0; i < c2->totlayer; i++) { + if (ELEM7(c2->layers[i].type, CD_MVERT, CD_MEDGE, CD_MPOLY, + CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + { i2++; + } } - + if (i1 != i2) return MESHCMP_CDLAYERS_MISMATCH; @@ -148,12 +152,16 @@ static int customdata_compare(CustomData *c1, CustomData *c2, Mesh *m1, Mesh *m2 i1 = 0; i2 = 0; for (i=0; i < tot; i++) { while (i1 < c1->totlayer && !ELEM7(l1->type, CD_MVERT, CD_MEDGE, CD_MPOLY, - CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + { i1++, l1++; + } - while (i2 < c2->totlayer && !ELEM7(l2->type, CD_MVERT, CD_MEDGE, CD_MPOLY, - CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + while (i2 < c2->totlayer && !ELEM7(l2->type, CD_MVERT, CD_MEDGE, CD_MPOLY, + CD_MLOOPUV, CD_MLOOPCOL, CD_MTEXPOLY, CD_MDEFORMVERT)) + { i2++, l2++; + } if (l1->type == CD_MVERT) { MVert *v1 = l1->data; @@ -3054,10 +3062,13 @@ void mesh_flush_hidden_from_verts(const MVert *mvert, for (i = 0; i < totedge; i++) { MEdge *e = &medge[i]; if (mvert[e->v1].flag & ME_HIDE || - mvert[e->v2].flag & ME_HIDE) + mvert[e->v2].flag & ME_HIDE) + { e->flag |= ME_HIDE; - else + } + else { e->flag &= ~ME_HIDE; + } } for (i = 0; i < totpoly; i++) { MPoly *p = &mpoly[i]; diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 9a640bcb8eb..f23578e07d7 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -517,7 +517,7 @@ static void real_ibuf_size(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, in *height = ibuf->y; if (clip->flag & MCLIP_USE_PROXY) { - switch(user->render_size) { + switch (user->render_size) { case MCLIP_PROXY_RENDER_SIZE_25: (*width) *= 4; (*height) *= 4; diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 7580f2eee4d..e2142c393a5 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -1017,7 +1017,7 @@ static void multiresModifier_disp_run(DerivedMesh *dm, Mesh *me, DerivedMesh *dm column_vectors_to_mat3(mat, tx, ty, no); - switch(op) { + switch (op) { case APPLY_DISPLACEMENTS: /* Convert displacement to object space * and add to grid points */ diff --git a/source/blender/blenkernel/intern/navmesh_conversion.c b/source/blender/blenkernel/intern/navmesh_conversion.c index 34e0be1de92..23d2f50c3f7 100644 --- a/source/blender/blenkernel/intern/navmesh_conversion.c +++ b/source/blender/blenkernel/intern/navmesh_conversion.c @@ -57,8 +57,7 @@ BLI_INLINE int left(const float* a, const float* b, const float* c) int polyNumVerts(const unsigned short* p, const int vertsPerPoly) { int i, nv = 0; - for (i=0; igetNumVerts(dm); - if (nverts>=0xffff) - { + if (nverts>=0xffff) { printf("Converting navmesh: Error! Too many vertices. Max number of vertices %d\n", 0xffff); return 0; } @@ -128,8 +125,7 @@ int buildRawVertIndicesData(DerivedMesh* dm, int *nverts_r, float **verts_r, dm->getVertCos(dm, (float(*)[3])verts); //flip coordinates - for (vi=0; vigetNumTessFaces(dm); faces = dm->getTessFaceArray(dm); ntris = nfaces; - for (fi=0; fiv4) ntris++; @@ -149,15 +144,13 @@ int buildRawVertIndicesData(DerivedMesh* dm, int *nverts_r, float **verts_r, tris = MEM_callocN(sizeof(unsigned short)*3*ntris, "buildRawVertIndicesData tris"); tri = tris; triIdx = 0; - for (fi=0; fiv1; tri[3*triIdx+1] = (unsigned short) face->v3; tri[3*triIdx+2] = (unsigned short) face->v2; trisToFacesMap[triIdx++]=fi; - if (face->v4) - { + if (face->v4) { tri[3*triIdx+0] = (unsigned short) face->v1; tri[3*triIdx+1] = (unsigned short) face->v4; tri[3*triIdx+2] = (unsigned short) face->v3; @@ -187,8 +180,7 @@ int buildPolygonsByDetailedMeshes(const int vertsPerPoly, const int npolys, unsigned short* newPoly = MEM_callocN(sizeof(unsigned short)*capacity, "buildPolygonsByDetailedMeshes newPoly"); memset(newPoly, 0xff, sizeof(unsigned short)*capacity); - for (polyidx=0; polyidx0) - { + for (i=0; i< ntris; i++) { + if (recastData[trisToFacesMap[trisMapping[i]]]>0) { validTriStart = i; break; } } - if (validTriStart<0) - { + if (validTriStart<0) { printf("Converting navmesh: Error! No valid polygons in mesh\n"); MEM_freeN(trisMapping); return 0; @@ -396,8 +367,7 @@ int buildNavMeshData(const int nverts, const float* verts, //and reserve memory for adjacency info dtris = MEM_callocN(sizeof(unsigned short)*3*2*ndtris, "buildNavMeshData dtris"); memset(dtris, 0xffff, sizeof(unsigned short)*3*2*ndtris); - for (i=0; iend = (float)ceil((double)info.length * FPS); } - else + else #endif { strip->end = 10.0f; @@ -373,7 +373,7 @@ NlaStrip *add_nla_soundstrip (Scene *scene, Speaker *speaker) strip->extendmode = NLASTRIP_EXTEND_NOTHING; /* nothing to extend... */ /* strip should be referenced as-is */ - strip->scale= 1.0f; + strip->scale = 1.0f; strip->repeat = 1.0f; /* return this strip */ diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index bc9411b7e02..6d3cce6ccfc 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1483,7 +1483,7 @@ void object_rot_to_mat3(Object *ob, float mat[][3]) void object_mat3_to_rot(Object *ob, float mat[][3], short use_compat) { - switch(ob->rotmode) { + switch (ob->rotmode) { case ROT_MODE_QUAT: { float dquat[4]; @@ -2025,7 +2025,7 @@ static void solve_parenting (Scene *scene, Object *ob, Object *par, float obmat[ if (ob->partype & PARSLOW) copy_m4_m4(slowmat, obmat); - switch(ob->partype & PARTYPE) { + switch (ob->partype & PARTYPE) { case PAROBJECT: ok= 0; if (par->type==OB_CURVE) { @@ -2260,7 +2260,7 @@ void minmax_object(Object *ob, float min[3], float max[3]) int a; short change= FALSE; - switch(ob->type) { + switch (ob->type) { case OB_CURVE: case OB_FONT: case OB_SURF: @@ -2568,7 +2568,7 @@ void object_handle_update(Scene *scene, Object *ob) } /* includes all keys and modifiers */ - switch(ob->type) { + switch (ob->type) { case OB_MESH: { #if 0 // XXX, comment for 2.56a release, background wont set 'scene->customdata_mask' @@ -2784,8 +2784,7 @@ int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3 int result = 0; int i; - for (i = 0; i < 12 && result == 0; i++) - { + for (i = 0; i < 12 && result == 0; i++) { float lambda; int v1, v2, v3; v1 = triangle_indexes[i][0]; @@ -2812,8 +2811,7 @@ int object_insert_ptcache(Object *ob) BLI_sortlist(&ob->pc_ids, pc_cmp); - for (link=ob->pc_ids.first, i = 0; link; link=link->next, i++) - { + for (link=ob->pc_ids.first, i = 0; link; link=link->next, i++) { int index = GET_INT_FROM_POINTER(link->data); if (i < index) diff --git a/source/blender/blenkernel/intern/ocean.c b/source/blender/blenkernel/intern/ocean.c index 907de7888cb..5ba1b3d86c3 100644 --- a/source/blender/blenkernel/intern/ocean.c +++ b/source/blender/blenkernel/intern/ocean.c @@ -196,15 +196,13 @@ static float Ph(struct Ocean* o, float kx,float kz ) float tmp; float k2 = kx*kx + kz*kz; - if (k2 == 0.0f) - { + if (k2 == 0.0f) { return 0.0f; // no DC component } // damp out the waves going in the direction opposite the wind tmp = (o->_wx * kx + o->_wz * kz)/sqrtf(k2); - if (tmp < 0) - { + if (tmp < 0) { tmp *= o->_damp_reflections; } @@ -421,18 +419,15 @@ void BKE_ocean_eval_uv_catrom(struct Ocean *oc, struct OceanResult *ocr, float u frac_z) { - if (oc->_do_disp_y) - { + if (oc->_do_disp_y) { ocr->disp[1] = INTERP(oc->_disp_y); } - if (oc->_do_normals) - { + if (oc->_do_normals) { ocr->normal[0] = INTERP(oc->_N_x); ocr->normal[1] = oc->_N_y/*INTERP(oc->_N_y) (MEM01)*/; ocr->normal[2] = INTERP(oc->_N_z); } - if (oc->_do_chop) - { + if (oc->_do_chop) { ocr->disp[0] = INTERP(oc->_disp_x); ocr->disp[2] = INTERP(oc->_disp_z); } @@ -441,8 +436,7 @@ void BKE_ocean_eval_uv_catrom(struct Ocean *oc, struct OceanResult *ocr, float u ocr->disp[2] = 0.0; } - if (oc->_do_jacobian) - { + if (oc->_do_jacobian) { compute_eigenstuff(ocr, INTERP(oc->_Jxx),INTERP(oc->_Jzz),INTERP(oc->_Jxz)); } } @@ -474,8 +468,7 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) ocr->disp[1] = oc->_do_disp_y ? oc->_disp_y[i*oc->_N+j] : 0.0f; - if (oc->_do_chop) - { + if (oc->_do_chop) { ocr->disp[0] = oc->_disp_x[i*oc->_N+j]; ocr->disp[2] = oc->_disp_z[i*oc->_N+j]; } @@ -484,8 +477,7 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) ocr->disp[2] = 0.0f; } - if (oc->_do_normals) - { + if (oc->_do_normals) { ocr->normal[0] = oc->_N_x[i*oc->_N+j]; ocr->normal[1] = oc->_N_y/*oc->_N_y[i*oc->_N+j] (MEM01)*/; ocr->normal[2] = oc->_N_z[i*oc->_N+j]; @@ -493,8 +485,7 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) normalize_v3(ocr->normal); } - if (oc->_do_jacobian) - { + if (oc->_do_jacobian) { compute_eigenstuff(ocr, oc->_Jxx[i*oc->_N+j],oc->_Jzz[i*oc->_N+j],oc->_Jxz[i*oc->_N+j]); } @@ -511,12 +502,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount // compute a new htilda #pragma omp parallel for private(i, j) - for (i = 0 ; i < o->_M ; ++i) - { + for (i = 0 ; i < o->_M ; ++i) { // note the <= _N/2 here, see the fftw doco about // the mechanics of the complex->real fft storage - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex exp_param1; fftw_complex exp_param2; fftw_complex conj_param; @@ -541,8 +530,7 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_disp_y) - { + if (o->_do_disp_y) { // y displacement fftw_execute(o->_disp_y_plan); } @@ -550,13 +538,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_chop) - { + if (o->_do_chop) { // x displacement - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; fftw_complex minus_i; @@ -575,13 +560,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_chop) - { + if (o->_do_chop) { // z displacement - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; fftw_complex minus_i; @@ -600,13 +582,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) - { + if (o->_do_jacobian) { // Jxx - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -620,10 +599,8 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount } fftw_execute(o->_Jxx_plan); - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j < o->_N ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j < o->_N ; ++j) { o->_Jxx[i*o->_N+j] += 1.0; } } @@ -632,13 +609,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) - { + if (o->_do_jacobian) { // Jzz - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -651,10 +625,8 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount } } fftw_execute(o->_Jzz_plan); - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j < o->_N ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j < o->_N ; ++j) { o->_Jzz[i*o->_N+j] += 1.0; } } @@ -663,13 +635,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) - { + if (o->_do_jacobian) { // Jxz - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -688,12 +657,9 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { // fft normals - if (o->_do_normals) - { - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + if (o->_do_normals) { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; init_complex(mul_param, 0.0, -1.0); @@ -709,12 +675,9 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_normals) - { - for ( i = 0 ; i < o->_M ; ++i) - { - for ( j = 0 ; j <= o->_N / 2 ; ++j) - { + if (o->_do_normals) { + for ( i = 0 ; i < o->_M ; ++i) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) { fftw_complex mul_param; init_complex(mul_param, 0.0, -1.0); @@ -757,12 +720,9 @@ static void set_height_normalize_factor(struct Ocean *oc) BLI_rw_mutex_lock(&oc->oceanmutex, THREAD_LOCK_READ); - for (i = 0; i < oc->_M; ++i) - { - for (j = 0; j < oc->_N; ++j) - { - if ( max_h < fabsf(oc->_disp_y[i*oc->_N+j])) - { + for (i = 0; i < oc->_M; ++i) { + for (j = 0; j < oc->_N; ++j) { + if ( max_h < fabsf(oc->_disp_y[i*oc->_N+j])) { max_h = fabsf(oc->_disp_y[i*oc->_N+j]); } } @@ -851,10 +811,8 @@ void BKE_init_ocean(struct Ocean* o, int M,int N, float Lx, float Lz, float V, f /*srand(seed);*/ BLI_srand(seed); - for (i = 0 ; i < o->_M ; ++i) - { - for (j = 0 ; j < o->_N ; ++j) - { + for (i = 0 ; i < o->_M ; ++i) { + for (j = 0 ; j < o->_N ; ++j) { float r1 = gaussRand(); float r2 = gaussRand(); @@ -921,14 +879,12 @@ void BKE_free_ocean_data(struct Ocean *oc) BLI_rw_mutex_lock(&oc->oceanmutex, THREAD_LOCK_WRITE); - if (oc->_do_disp_y) - { + if (oc->_do_disp_y) { fftw_destroy_plan(oc->_disp_y_plan); MEM_freeN(oc->_disp_y); } - if (oc->_do_normals) - { + if (oc->_do_normals) { MEM_freeN(oc->_fft_in_nx); MEM_freeN(oc->_fft_in_nz); fftw_destroy_plan(oc->_N_x_plan); @@ -938,8 +894,7 @@ void BKE_free_ocean_data(struct Ocean *oc) MEM_freeN(oc->_N_z); } - if (oc->_do_chop) - { + if (oc->_do_chop) { MEM_freeN(oc->_fft_in_x); MEM_freeN(oc->_fft_in_z); fftw_destroy_plan(oc->_disp_x_plan); @@ -948,8 +903,7 @@ void BKE_free_ocean_data(struct Ocean *oc) MEM_freeN(oc->_disp_z); } - if (oc->_do_jacobian) - { + if (oc->_do_jacobian) { MEM_freeN(oc->_fft_in_jxx); MEM_freeN(oc->_fft_in_jzz); MEM_freeN(oc->_fft_in_jxz); @@ -1002,7 +956,7 @@ static void cache_filename(char *string, const char *path, const char *relbase, char cachepath[FILE_MAX]; const char *fname; - switch(type) { + switch (type) { case CACHE_TYPE_FOAM: fname= "foam_"; break; @@ -1043,8 +997,7 @@ void BKE_free_ocean_cache(struct OceanCache *och) if (!och) return; if (och->ibufs_disp) { - for (i=och->start, f=0; i<=och->end; i++, f++) - { + for (i=och->start, f=0; i<=och->end; i++, f++) { if (och->ibufs_disp[f]) { IMB_freeImBuf(och->ibufs_disp[f]); } @@ -1053,8 +1006,7 @@ void BKE_free_ocean_cache(struct OceanCache *och) } if (och->ibufs_foam) { - for (i=och->start, f=0; i<=och->end; i++, f++) - { + for (i=och->start, f=0; i<=och->end; i++, f++) { if (och->ibufs_foam[f]) { IMB_freeImBuf(och->ibufs_foam[f]); } @@ -1063,8 +1015,7 @@ void BKE_free_ocean_cache(struct OceanCache *och) } if (och->ibufs_norm) { - for (i=och->start, f=0; i<=och->end; i++, f++) - { + for (i=och->start, f=0; i<=och->end; i++, f++) { if (och->ibufs_norm[f]) { IMB_freeImBuf(och->ibufs_norm[f]); } diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index b55033b8493..e0c61fbcc90 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -72,7 +72,7 @@ int seekPackedFile(PackedFile *pf, int offset, int whence) if (pf) { oldseek = pf->seek; - switch(whence) { + switch (whence) { case SEEK_CUR: seek = oldseek + offset; break; diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 27f5f7d9eb1..f417f9b79fb 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -59,7 +59,7 @@ Paint *paint_get_active(Scene *sce) ToolSettings *ts = sce->toolsettings; if (sce->basact && sce->basact->object) { - switch(sce->basact->object->mode) { + switch (sce->basact->object->mode) { case OB_MODE_SCULPT: return &ts->sculpt->paint; case OB_MODE_VERTEX_PAINT: diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index a154a1f8926..febe4277010 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1572,7 +1572,7 @@ static float psys_interpolate_value_from_verts(DerivedMesh *dm, short from, int if (values==0 || index==-1) return 0.0; - switch(from) { + switch (from) { case PART_FROM_VERT: return values[index]; case PART_FROM_FACE: @@ -1936,7 +1936,7 @@ static void do_kink(ParticleKey *state, ParticleKey *par, float *par_rot, float copy_v3_v3(result, state->co); sub_v3_v3v3(par_vec, par->co, state->co); - switch(type) { + switch (type) { case PART_KINK_CURL: { negate_v3(par_vec); @@ -2846,7 +2846,7 @@ static void cache_key_incremental_rotation(ParticleCacheKey *key0, ParticleCache { float cosangle, angle, tangent[3], normal[3], q[4]; - switch(i) { + switch (i) { case 0: /* start from second key */ break; @@ -3778,7 +3778,7 @@ static void get_cpa_texture(DerivedMesh *dm, ParticleSystem *psys, ParticleSetti if (ELEM(texco, TEXCO_UV, TEXCO_ORCO) && (ELEM(part->from, PART_FROM_FACE, PART_FROM_VOLUME) == 0 || part->distr == PART_DISTR_GRID)) texco = TEXCO_GLOB; - switch(texco) { + switch (texco) { case TEXCO_GLOB: copy_v3_v3(texvec, par->state.co); break; @@ -3846,7 +3846,7 @@ void psys_get_texture(ParticleSimulationData *sim, ParticleData *pa, ParticleTex if (texco == TEXCO_UV && (ELEM(part->from, PART_FROM_FACE, PART_FROM_VOLUME) == 0 || part->distr == PART_DISTR_GRID)) texco = TEXCO_GLOB; - switch(texco) { + switch (texco) { case TEXCO_GLOB: copy_v3_v3(texvec, pa->state.co); break; diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 4ce24953c89..d3644657de7 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -787,7 +787,7 @@ static void distribute_threads_exec(ParticleThread *thread, ParticleData *pa, Ch pa->num = i = ctx->index[p]; mface = dm->getTessFaceData(dm,i,CD_MFACE); - switch(distr) { + switch (distr) { case PART_DISTR_JIT: if (ctx->jitlevel == 1) { if (mface->v4) @@ -855,13 +855,15 @@ static void distribute_threads_exec(ParticleThread *thread, ParticleData *pa, Ch } if (intersect==0) pa->foffset=0.0; - else switch(distr) { - case PART_DISTR_JIT: - pa->foffset*= ctx->jit[p%(2*ctx->jitlevel)]; - break; - case PART_DISTR_RAND: - pa->foffset*=BLI_frand(); - break; + else { + switch (distr) { + case PART_DISTR_JIT: + pa->foffset *= ctx->jit[p % (2 * ctx->jitlevel)]; + break; + case PART_DISTR_RAND: + pa->foffset *= BLI_frand(); + break; + } } } } @@ -1575,7 +1577,7 @@ static void initialize_all_particles(ParticleSimulationData *sim) static void get_angular_velocity_vector(short avemode, ParticleKey *state, float *vec) { - switch(avemode) { + switch (avemode) { case PART_AVE_VELOCITY: copy_v3_v3(vec, state->vel); break; @@ -1779,7 +1781,7 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P if (part->rotmode) { /* create vector into which rotation is aligned */ - switch(part->rotmode) { + switch (part->rotmode) { case PART_ROT_NOR: copy_v3_v3(rot_vec, nor); break; @@ -2141,7 +2143,7 @@ static void integrate_particle(ParticleSettings *part, ParticleData *pa, float d if (pa->prev_state.time < 0.f && integrator == PART_INT_VERLET) integrator = PART_INT_EULER; - switch(integrator) { + switch (integrator) { case PART_INT_EULER: steps=1; break; @@ -2175,7 +2177,7 @@ static void integrate_particle(ParticleSettings *part, ParticleData *pa, float d /* calculate next state */ add_v3_v3(states[i].vel, impulse); - switch(integrator) { + switch (integrator) { case PART_INT_EULER: madd_v3_v3v3fl(pa->state.co, states->co, states->vel, dtime); madd_v3_v3v3fl(pa->state.vel, states->vel, acceleration, dtime); @@ -2193,7 +2195,7 @@ static void integrate_particle(ParticleSettings *part, ParticleData *pa, float d } break; case PART_INT_RK4: - switch(i) { + switch (i) { case 0: copy_v3_v3(dx[0], states->vel); mul_v3_fl(dx[0], dtime); @@ -2859,7 +2861,7 @@ static float collision_point_distance_with_normal(float p[3], ParticleCollisionE if (fac >= 0.f) collision_interpolate_element(pce, 0.f, fac, col); - switch(pce->tot) { + switch (pce->tot) { case 1: { sub_v3_v3v3(nor, p, pce->x0); @@ -2884,7 +2886,7 @@ static void collision_point_on_surface(float p[3], ParticleCollisionElement *pce { collision_interpolate_element(pce, 0.f, fac, col); - switch(pce->tot) { + switch (pce->tot) { case 1: { sub_v3_v3v3(co, p, pce->x0); @@ -3833,7 +3835,7 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) sim->colliders = get_collider_cache(sim->scene, sim->ob, NULL); /* initialize physics type specific stuff */ - switch(part->phystype) { + switch (part->phystype) { case PART_PHYS_BOIDS: { ParticleTarget *pt = psys->targets.first; @@ -3908,7 +3910,7 @@ static void dynamics_step(ParticleSimulationData *sim, float cfra) pa->state.time = -1.f; } - switch(part->phystype) { + switch (part->phystype) { case PART_PHYS_NEWTON: { LOOP_DYNAMIC_PARTICLES { @@ -4499,7 +4501,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) /* setup necessary physics type dependent additional data if it doesn't yet exist */ psys_prepare_physics(&sim); - switch(part->type) { + switch (part->type) { case PART_HAIR: { /* nothing to do so bail out early */ @@ -4551,7 +4553,7 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys) } default: { - switch(part->phystype) { + switch (part->phystype) { case PART_PHYS_NO: case PART_PHYS_KEYED: { diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 2812592c69a..39293084dc0 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -433,7 +433,7 @@ static void ptcache_particle_extra_read(void *psys_v, PTCacheMem *pm, float UNUS PTCacheExtra *extra = pm->extradata.first; for (; extra; extra=extra->next) { - switch(extra->type) { + switch (extra->type) { case BPHYS_EXTRA_FLUID_SPRINGS: { if (psys->fluid_springs) @@ -690,14 +690,20 @@ static int ptcache_dynamicpaint_write(PTCacheFile *pf, void *dp_v) /* cache type */ ptcache_file_write(pf, &surface->type, 1, sizeof(int)); - if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) - in_len = sizeof(PaintPoint)*total_points; + if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) { + in_len = sizeof(PaintPoint) * total_points; + } else if (surface->type == MOD_DPAINT_SURFACE_T_DISPLACE || - surface->type == MOD_DPAINT_SURFACE_T_WEIGHT) - in_len = sizeof(float)*total_points; - else if (surface->type == MOD_DPAINT_SURFACE_T_WAVE) - in_len = sizeof(PaintWavePoint)*total_points; - else return 0; + surface->type == MOD_DPAINT_SURFACE_T_WEIGHT) + { + in_len = sizeof(float) * total_points; + } + else if (surface->type == MOD_DPAINT_SURFACE_T_WAVE) { + in_len = sizeof(PaintWavePoint) * total_points; + } + else { + return 0; + } out = (unsigned char *)MEM_callocN(LZO_OUT_LEN(in_len), "pointcache_lzo_buffer"); @@ -727,14 +733,20 @@ static int ptcache_dynamicpaint_read(PTCacheFile *pf, void *dp_v) return 0; /* read surface data */ - if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) + if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) { data_len = sizeof(PaintPoint); + } else if (surface->type == MOD_DPAINT_SURFACE_T_DISPLACE || - surface->type == MOD_DPAINT_SURFACE_T_WEIGHT) + surface->type == MOD_DPAINT_SURFACE_T_WEIGHT) + { data_len = sizeof(float); - else if (surface->type == MOD_DPAINT_SURFACE_T_WAVE) + } + else if (surface->type == MOD_DPAINT_SURFACE_T_WAVE) { data_len = sizeof(PaintWavePoint); - else return 0; + } + else { + return 0; + } ptcache_file_compressed_read(pf, (unsigned char*)surface->data->type_data, data_len*surface->data->total_points); @@ -989,8 +1001,7 @@ void BKE_ptcache_ids_from_object(ListBase *lb, Object *ob, Scene *scene, int dup } else if (md->type == eModifierType_Smoke) { SmokeModifierData *smd = (SmokeModifierData *)md; - if (smd->type & MOD_SMOKE_TYPE_DOMAIN) - { + if (smd->type & MOD_SMOKE_TYPE_DOMAIN) { pid= MEM_callocN(sizeof(PTCacheID), "PTCacheID"); BKE_ptcache_id_from_smoke(pid, ob, (SmokeModifierData*)md); BLI_addtail(lb, pid); @@ -998,8 +1009,7 @@ void BKE_ptcache_ids_from_object(ListBase *lb, Object *ob, Scene *scene, int dup } else if (md->type == eModifierType_DynamicPaint) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md; - if (pmd->canvas) - { + if (pmd->canvas) { DynamicPaintSurface *surface = pmd->canvas->surfaces.first; for (; surface; surface=surface->next) { @@ -1205,8 +1215,7 @@ static int ptcache_file_compressed_read(PTCacheFile *pf, unsigned char *result, r = lzo1x_decompress_safe(in, (lzo_uint)in_len, result, (lzo_uint *)&out_len, NULL); #endif #ifdef WITH_LZMA - if (compressed == 2) - { + if (compressed == 2) { size_t sizeOfIt; size_t leni = in_len, leno = len; ptcache_file_read(pf, &size, 1, sizeof(unsigned int)); @@ -1270,8 +1279,7 @@ static int ptcache_file_compressed_write(PTCacheFile *pf, unsigned char *in, uns else ptcache_file_write(pf, in, in_len, sizeof(unsigned char)); - if (compressed == 2) - { + if (compressed == 2) { unsigned int size = sizeOfIt; ptcache_file_write(pf, &sizeOfIt, 1, sizeof(unsigned int)); ptcache_file_write(pf, props, size, sizeof(unsigned char)); @@ -2505,16 +2513,14 @@ int BKE_ptcache_object_reset(Scene *scene, Object *ob, int mode) } if (md->type == eModifierType_Smoke) { SmokeModifierData *smd = (SmokeModifierData *)md; - if (smd->type & MOD_SMOKE_TYPE_DOMAIN) - { + if (smd->type & MOD_SMOKE_TYPE_DOMAIN) { BKE_ptcache_id_from_smoke(&pid, ob, (SmokeModifierData*)md); reset |= BKE_ptcache_id_reset(scene, &pid, mode); } } if (md->type == eModifierType_DynamicPaint) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md; - if (pmd->canvas) - { + if (pmd->canvas) { DynamicPaintSurface *surface = pmd->canvas->surfaces.first; for (; surface; surface=surface->next) { @@ -2813,8 +2819,7 @@ void BKE_ptcache_bake(PTCacheBaker* baker) PTCacheID *pid2; BKE_ptcache_ids_from_object(&pidlist2, pid->ob, scene, MAX_DUPLI_RECUR); for (pid2=pidlist2.first; pid2; pid2=pid2->next) { - if (pid2->type == PTCACHE_TYPE_SMOKE_DOMAIN) - { + if (pid2->type == PTCACHE_TYPE_SMOKE_DOMAIN) { if (pid2->cache && !(pid2->cache->flag & PTCACHE_BAKED)) { if (bake || pid2->cache->flag & PTCACHE_REDO_NEEDED) BKE_ptcache_id_clear(pid2, PTCACHE_CLEAR_ALL, 0); @@ -3246,8 +3251,7 @@ void BKE_ptcache_update_info(PTCacheID *pid) } if (cache->flag & PTCACHE_DISK_CACHE) { - if (pid->type == PTCACHE_TYPE_SMOKE_DOMAIN) - { + if (pid->type == PTCACHE_TYPE_SMOKE_DOMAIN) { int totpoint = pid->totpoint(pid->calldata, 0); if (cache->totpoint > totpoint) diff --git a/source/blender/blenkernel/intern/property.c b/source/blender/blenkernel/intern/property.c index 066de61575d..e7247be7f51 100644 --- a/source/blender/blenkernel/intern/property.c +++ b/source/blender/blenkernel/intern/property.c @@ -99,7 +99,7 @@ void init_property(bProperty *prop) prop->data= 0; - switch(prop->type) { + switch (prop->type) { case GPROP_BOOL: case GPROP_INT: case GPROP_FLOAT: @@ -206,7 +206,7 @@ int compare_property(bProperty *prop, const char *str) // extern int Gdfra; /* sector.c */ float fvalue, ftest; - switch(prop->type) { + switch (prop->type) { case GPROP_BOOL: if (BLI_strcasecmp(str, "true")==0) { if (prop->data==1) return 0; @@ -242,7 +242,7 @@ void set_property(bProperty *prop, const char *str) { // extern int Gdfra; /* sector.c */ - switch(prop->type) { + switch (prop->type) { case GPROP_BOOL: if (BLI_strcasecmp(str, "true")==0) prop->data= 1; else if (BLI_strcasecmp(str, "false")==0) prop->data= 0; @@ -266,7 +266,7 @@ void add_property(bProperty *prop, const char *str) { // extern int Gdfra; /* sector.c */ - switch(prop->type) { + switch (prop->type) { case GPROP_BOOL: case GPROP_INT: prop->data+= atoi(str); @@ -288,7 +288,7 @@ void set_property_valstr(bProperty *prop, char *str) if (str == NULL) return; - switch(prop->type) { + switch (prop->type) { case GPROP_BOOL: case GPROP_INT: sprintf(str, "%d", prop->data); diff --git a/source/blender/blenkernel/intern/report.c b/source/blender/blenkernel/intern/report.c index b3e288dfc74..a7df6b10f06 100644 --- a/source/blender/blenkernel/intern/report.c +++ b/source/blender/blenkernel/intern/report.c @@ -43,7 +43,7 @@ static const char *report_type_str(int type) { - switch(type) { + switch (type) { case RPT_DEBUG: return "Debug"; case RPT_INFO: return "Info"; case RPT_OPERATOR: return "Operator"; diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 8123cbf3f0b..b5bb6b76c61 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -110,7 +110,7 @@ void init_sensor(bSensor *sens) sens->data= NULL; sens->pulse = 0; - switch(sens->type) { + switch (sens->type) { case SENS_ALWAYS: sens->pulse = 0; break; @@ -272,7 +272,7 @@ void init_controller(bController *cont) if (cont->data) MEM_freeN(cont->data); cont->data= NULL; - switch(cont->type) { + switch (cont->type) { case CONT_EXPRESSION: cont->data= MEM_callocN(sizeof(bExpressionCont), "expcont"); break; @@ -400,7 +400,7 @@ void init_actuator(bActuator *act) if (act->data) MEM_freeN(act->data); act->data= NULL; - switch(act->type) { + switch (act->type) { case ACT_ACTION: case ACT_SHAPEACTION: act->data= MEM_callocN(sizeof(bActionActuator), "actionact"); @@ -647,7 +647,7 @@ void sca_remove_ob_poin(Object *obt, Object *ob) sens= obt->sensors.first; while (sens) { - switch(sens->type) { + switch (sens->type) { case SENS_MESSAGE: ms= sens->data; if (ms->fromObject==ob) ms->fromObject= NULL; @@ -657,7 +657,7 @@ void sca_remove_ob_poin(Object *obt, Object *ob) act= obt->actuators.first; while (act) { - switch(act->type) { + switch (act->type) { case ACT_CAMERA: ca= act->data; if (ca->ob==ob) ca->ob= NULL; diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index 8015e53e4c9..d3eade834e6 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -2112,7 +2112,7 @@ static void transform_image(int x, int y, struct ImBuf *ibuf1, struct ImBuf *out yt += (yo / 2.0f); //interpolate - switch(interpolation) { + switch (interpolation) { case 0: neareast_interpolation(ibuf1,out, xt,yt,xi,yi); break; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 2d4397d16cd..1c06f1da018 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3099,13 +3099,17 @@ int seqbase_isolated_sel_check(ListBase *seqbase) if ( (seq->seq1 && (seq->seq1->flag & SELECT) == 0) || (seq->seq2 && (seq->seq2->flag & SELECT) == 0) || (seq->seq3 && (seq->seq3->flag & SELECT) == 0) ) + { return FALSE; + } } else { if ( (seq->seq1 && (seq->seq1->flag & SELECT)) || (seq->seq2 && (seq->seq2->flag & SELECT)) || (seq->seq3 && (seq->seq3->flag & SELECT)) ) + { return FALSE; + } } } diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c index 4006837efd6..e201209ec3f 100644 --- a/source/blender/blenkernel/intern/shrinkwrap.c +++ b/source/blender/blenkernel/intern/shrinkwrap.c @@ -146,8 +146,7 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) BENCH(bvhtree_from_mesh_verts(&treeData, calc->target, 0.0, 2, 6)); - if (treeData.tree == NULL) - { + if (treeData.tree == NULL) { OUT_OF_MEMORY(); return; } @@ -158,8 +157,7 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) #ifndef __APPLE__ #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(treeData,calc) schedule(static) #endif - for (i = 0; inumVerts; ++i) - { + for (i = 0; inumVerts; ++i) { float *co = calc->vertexCos[i]; float tmp_co[3]; float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); @@ -189,8 +187,7 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) //Found the nearest vertex - if (nearest.index != -1) - { + if (nearest.index != -1) { //Adjusting the vertex weight, so that after interpolating it keeps a certain distance from the nearest position float dist = sasqrt(nearest.dist); if (dist > FLT_EPSILON) weight *= (dist - calc->keepDist)/dist; @@ -224,8 +221,7 @@ int normal_projection_project_vertex(char options, const float *vert, const floa memcpy( &hit_tmp, hit, sizeof(hit_tmp) ); //Apply space transform (TODO readjust dist) - if (transf) - { + if (transf) { copy_v3_v3( tmp_co, vert ); space_transform_apply( transf, tmp_co ); co = tmp_co; @@ -298,8 +294,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) //Prepare data to retrieve the direction in which we should project each vertex - if (calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) - { + if (calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL) { if (calc->vert == NULL) return; } else { @@ -316,8 +311,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) return; } - if (calc->smd->auxTarget) - { + if (calc->smd->auxTarget) { auxMesh = object_get_derived_final(calc->smd->auxTarget); if (!auxMesh) return; @@ -332,16 +326,14 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) #ifndef __APPLE__ #pragma omp parallel for private(i,hit) schedule(static) #endif - for (i = 0; inumVerts; ++i) - { + for (i = 0; inumVerts; ++i) { float *co = calc->vertexCos[i]; float tmp_co[3], tmp_no[3]; float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); if (weight == 0.0f) continue; - if (calc->vert) - { + if (calc->vert) { /* calc->vert contains verts from derivedMesh */ /* this coordinated are deformed by vertexCos only for normal projection (to get correct normals) */ /* for other cases calc->varts contains undeformed coordinates and vertexCos should be used */ @@ -364,8 +356,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) hit.dist = 10000.0f; //TODO: we should use FLT_MAX here, but sweepsphere code isn't prepared for that //Project over positive direction of axis - if (use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR) - { + if (use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR) { if (auxData.tree) normal_projection_project_vertex(0, tmp_co, tmp_no, &local2aux, auxData.tree, &hit, auxData.raycast_callback, &auxData); @@ -374,8 +365,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) } //Project over negative direction of axis - if (use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR && hit.index == -1) - { + if (use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR && hit.index == -1) { float inv_no[3]; negate_v3_v3(inv_no, tmp_no); @@ -386,8 +376,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc) } - if (hit.index != -1) - { + if (hit.index != -1) { madd_v3_v3v3fl(hit.co, hit.co, tmp_no, calc->keepDist); interp_v3_v3v3(co, co, hit.co, weight); } @@ -414,8 +403,7 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) //Create a bvh-tree of the given target BENCH(bvhtree_from_mesh_faces( &treeData, calc->target, 0.0, 2, 6)); - if (treeData.tree == NULL) - { + if (treeData.tree == NULL) { OUT_OF_MEMORY(); return; } @@ -429,8 +417,7 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) #ifndef __APPLE__ #pragma omp parallel for default(none) private(i) firstprivate(nearest) shared(calc,treeData) schedule(static) #endif - for (i = 0; inumVerts; ++i) - { + for (i = 0; inumVerts; ++i) { float *co = calc->vertexCos[i]; float tmp_co[3]; float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); @@ -458,10 +445,8 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) BLI_bvhtree_find_nearest(treeData.tree, tmp_co, &nearest, treeData.nearest_callback, &treeData); //Found the nearest vertex - if (nearest.index != -1) - { - if (calc->smd->shrinkOpts & MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE) - { + if (nearest.index != -1) { + if (calc->smd->shrinkOpts & MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE) { //Make the vertex stay on the front side of the face madd_v3_v3v3fl(tmp_co, nearest.co, nearest.no, calc->keepDist); } @@ -511,8 +496,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Object *ob, DerivedM } - if (smd->target) - { + if (smd->target) { calc.target = object_get_derived_final(smd->target); //TODO there might be several "bugs" on non-uniform scales matrixs @@ -528,28 +512,24 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Object *ob, DerivedM calc.vgroup = defgroup_name_index(calc.ob, smd->vgroup_name); - if (dm != NULL && smd->shrinkType == MOD_SHRINKWRAP_PROJECT) - { + if (dm != NULL && smd->shrinkType == MOD_SHRINKWRAP_PROJECT) { //Setup arrays to get vertexs positions, normals and deform weights calc.vert = dm->getVertDataArray(dm, CD_MVERT); calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); //Using vertexs positions/normals as if a subsurface was applied - if (smd->subsurfLevels) - { + if (smd->subsurfLevels) { SubsurfModifierData ssmd= {{NULL}}; ssmd.subdivType = ME_CC_SUBSURF; //catmull clark ssmd.levels = smd->subsurfLevels; //levels ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, FALSE, NULL, 0, 0, (ob->mode & OB_MODE_EDIT)); - if (ss_mesh) - { + if (ss_mesh) { calc.vert = ss_mesh->getVertDataArray(ss_mesh, CD_MVERT); - if (calc.vert) - { - //TRICKY: this code assumes subsurface will have the transformed original vertices - //in their original order at the end of the vert array. + if (calc.vert) { + /* TRICKY: this code assumes subsurface will have the transformed original vertices + * in their original order at the end of the vert array. */ calc.vert = calc.vert + ss_mesh->getNumVerts(ss_mesh) - dm->getNumVerts(dm); } } @@ -562,8 +542,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Object *ob, DerivedM //Projecting target defined - lets work! if (calc.target) { - switch(smd->shrinkType) - { + switch (smd->shrinkType) { case MOD_SHRINKWRAP_NEAREST_SURFACE: BENCH(shrinkwrap_calc_nearest_surface_point(&calc)); break; diff --git a/source/blender/blenkernel/intern/sketch.c b/source/blender/blenkernel/intern/sketch.c index 71ea85de716..32681c3a041 100644 --- a/source/blender/blenkernel/intern/sketch.c +++ b/source/blender/blenkernel/intern/sketch.c @@ -44,8 +44,7 @@ void freeSketch(SK_Sketch *sketch) { SK_Stroke *stk, *next; - for (stk = sketch->strokes.first; stk; stk = next) - { + for (stk = sketch->strokes.first; stk; stk = next) { next = stk->next; sk_freeStroke(stk); @@ -119,8 +118,7 @@ SK_Stroke* sk_createStroke(void) void sk_shrinkStrokeBuffer(SK_Stroke *stk) { - if (stk->nb_points < stk->buf_size) - { + if (stk->nb_points < stk->buf_size) { SK_Point *old_points = stk->points; stk->buf_size = stk->nb_points; @@ -135,8 +133,7 @@ void sk_shrinkStrokeBuffer(SK_Stroke *stk) void sk_growStrokeBuffer(SK_Stroke *stk) { - if (stk->nb_points == stk->buf_size) - { + if (stk->nb_points == stk->buf_size) { SK_Point *old_points = stk->points; stk->buf_size *= 2; @@ -151,12 +148,10 @@ void sk_growStrokeBuffer(SK_Stroke *stk) void sk_growStrokeBufferN(SK_Stroke *stk, int n) { - if (stk->nb_points + n > stk->buf_size) - { + if (stk->nb_points + n > stk->buf_size) { SK_Point *old_points = stk->points; - while (stk->nb_points + n > stk->buf_size) - { + while (stk->nb_points + n > stk->buf_size) { stk->buf_size *= 2; } @@ -202,8 +197,7 @@ void sk_insertStrokePoints(SK_Stroke *stk, SK_Point *pts, int len, int start, in sk_growStrokeBufferN(stk, len - size); - if (len != size) - { + if (len != size) { int tail_size = stk->nb_points - end + 1; memmove(stk->points + start + len, stk->points + end + 1, tail_size * sizeof(SK_Point)); @@ -218,8 +212,7 @@ void sk_trimStroke(SK_Stroke *stk, int start, int end) { int size = end - start + 1; - if (start > 0) - { + if (start > 0) { memmove(stk->points, stk->points + start, size * sizeof(SK_Point)); } @@ -253,8 +246,7 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f sk_insertStrokePoint(stk, &pt1, start + 1); /* insert after start */ sk_insertStrokePoint(stk, &pt2, end + 1); /* insert before end (since end was pushed back already) */ - for (i = 1; i < total; i++) - { + for (i = 1; i < total; i++) { float delta = (float)i / (float)total; float *p = stk->points[start + 1 + i].p; @@ -269,30 +261,23 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end) int i; /* find first exact points outside of range */ - for (;start > 0; start--) - { - if (stk->points[start].type == PT_EXACT) - { + for (;start > 0; start--) { + if (stk->points[start].type == PT_EXACT) { break; } } - for (;end < stk->nb_points - 1; end++) - { - if (stk->points[end].type == PT_EXACT) - { + for (;end < stk->nb_points - 1; end++) { + if (stk->points[end].type == PT_EXACT) { break; } } offset = start + 1; - for (i = start + 1; i < end; i++) - { - if (stk->points[i].type == PT_EXACT) - { - if (offset != i) - { + for (i = start + 1; i < end; i++) { + if (stk->points[i].type == PT_EXACT) { + if (offset != i) { memcpy(stk->points + offset, stk->points + i, sizeof(SK_Point)); } @@ -301,8 +286,7 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end) } /* some points were removes, move end of array */ - if (offset < end) - { + if (offset < end) { int size = stk->nb_points - end; memmove(stk->points + offset, stk->points + end, size * sizeof(SK_Point)); stk->nb_points = offset + size; @@ -323,8 +307,7 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end) project_v3_v3v3(normal, distance, normal); limit = normalize_v3(normal); - for (i = 1; i < total - 1; i++) - { + for (i = 1; i < total - 1; i++) { float d = limit * i / total; float offset[3]; float *p = stk->points[start + i].p; @@ -342,8 +325,7 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end) void sk_removeStroke(SK_Sketch *sketch, SK_Stroke *stk) { - if (sketch->active_stroke == stk) - { + if (sketch->active_stroke == stk) { sketch->active_stroke = NULL; } @@ -358,8 +340,7 @@ void sk_reverseStroke(SK_Stroke *stk) sk_allocStrokeBuffer(stk); - for (i = 0; i < stk->nb_points; i++) - { + for (i = 0; i < stk->nb_points; i++) { sk_copyPoint(stk->points + i, old_points + stk->nb_points - 1 - i); } @@ -376,8 +357,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) char work; int i; - if (start == -1) - { + if (start == -1) { start = 0; end = stk->nb_points - 1; } @@ -386,8 +366,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) stk->nb_points = 0; /* adding points before range */ - for (i = 0; i < start; i++) - { + for (i = 0; i < start; i++) { sk_appendStrokePoint(stk, old_points + i); } @@ -398,8 +377,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) work = 1; /* while still reducing */ - while (work) - { + while (work) { int ls, le; work = 0; @@ -407,15 +385,13 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) le = start+1; /* while not over interval */ - while (ls < end) - { + while (ls < end) { int max_i = 0; short v1[2]; float max_dist = 16; /* more than 4 pixels */ /* find the next marked point */ - while (marked[le] == 0) - { + while (marked[le] == 0) { le++; } @@ -424,8 +400,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) v1[0] = old_points[ls].p2d[1] - old_points[le].p2d[1]; - for ( i = ls + 1; i < le; i++ ) - { + for ( i = ls + 1; i < le; i++ ) { float mul; float dist; short v2[2]; @@ -433,8 +408,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) v2[0] = old_points[i].p2d[0] - old_points[ls].p2d[0]; v2[1] = old_points[i].p2d[1] - old_points[ls].p2d[1]; - if (v2[0] == 0 && v2[1] == 0) - { + if (v2[0] == 0 && v2[1] == 0) { continue; } @@ -442,15 +416,13 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) dist = mul * mul * (v2[0]*v2[0] + v2[1]*v2[1]); - if (dist > max_dist) - { + if (dist > max_dist) { max_dist = dist; max_i = i; } } - if (max_i != 0) - { + if (max_i != 0) { work = 1; marked[max_i] = 1; } @@ -462,10 +434,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) /* adding points after range */ - for (i = start; i <= end; i++) - { - if (marked[i]) - { + for (i = start; i <= end; i++) { + if (marked[i]) { sk_appendStrokePoint(stk, old_points + i); } } @@ -473,8 +443,7 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) MEM_freeN(marked); /* adding points after range */ - for (i = end + 1; i < nb_points; i++) - { + for (i = end + 1; i < nb_points; i++) { sk_appendStrokePoint(stk, old_points + i); } @@ -490,13 +459,11 @@ void sk_filterLastContinuousStroke(SK_Stroke *stk) end = stk->nb_points -1; - for (start = end - 1; start > 0 && stk->points[start].type == PT_CONTINUOUS; start--) - { + for (start = end - 1; start > 0 && stk->points[start].type == PT_CONTINUOUS; start--) { /* nothing to do here*/ } - if (end - start > 1) - { + if (end - start > 1) { sk_filterStroke(stk, start, end); } } @@ -505,8 +472,7 @@ SK_Point *sk_lastStrokePoint(SK_Stroke *stk) { SK_Point *pt = NULL; - if (stk->nb_points > 0) - { + if (stk->nb_points > 0) { pt = stk->points + (stk->nb_points - 1); } @@ -520,8 +486,7 @@ void sk_endContinuousStroke(SK_Stroke *stk) void sk_updateNextPoint(SK_Sketch *sketch, SK_Stroke *stk) { - if (stk) - { + if (stk) { memcpy(&sketch->next_point, stk->points[stk->nb_points - 1].p, sizeof(SK_Point)); } } @@ -529,8 +494,7 @@ void sk_updateNextPoint(SK_Sketch *sketch, SK_Stroke *stk) int sk_stroke_filtermval(SK_DrawData *dd) { int retval = 0; - if (ABS(dd->mval[0] - dd->previous_mval[0]) + ABS(dd->mval[1] - dd->previous_mval[1]) > U.gp_manhattendist) - { + if (ABS(dd->mval[0] - dd->previous_mval[0]) + ABS(dd->mval[1] - dd->previous_mval[1]) > U.gp_manhattendist) { retval = 1; } @@ -551,12 +515,10 @@ void sk_deleteSelectedStrokes(SK_Sketch *sketch) { SK_Stroke *stk, *next; - for (stk = sketch->strokes.first; stk; stk = next) - { + for (stk = sketch->strokes.first; stk; stk = next) { next = stk->next; - if (stk->selected == 1) - { + if (stk->selected == 1) { sk_removeStroke(sketch, stk); } } @@ -566,31 +528,26 @@ void sk_selectAllSketch(SK_Sketch *sketch, int mode) { SK_Stroke *stk = NULL; - if (mode == -1) - { - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + if (mode == -1) { + for (stk = sketch->strokes.first; stk; stk = stk->next) { stk->selected = 0; } } else if (mode == 0) { - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { stk->selected = 1; } } else if (mode == 1) { int selected = 1; - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { selected &= stk->selected; } selected ^= 1; - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { stk->selected = selected; } } diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index e3a309fc945..d0eca731a1a 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -402,7 +402,10 @@ static void ccd_mesh_update(Object *ob,ccd_Mesh *pccd_M) if (!cmd->numverts || !cmd->numfaces) return; if ((pccd_M->totvert != cmd->numverts) || - (pccd_M->totface != cmd->numfaces)) return; + (pccd_M->totface != cmd->numfaces)) + { + return; + } pccd_M->bbmin[0]=pccd_M->bbmin[1]=pccd_M->bbmin[2]=1e30f; pccd_M->bbmax[0]=pccd_M->bbmax[1]=pccd_M->bbmax[2]=-1e30f; @@ -1388,8 +1391,7 @@ static void scan_for_ext_face_forces(Object *ob,float timenow) } bf = sb->scratch->bodyface; for (a=0; ascratch->totface; a++, bf++) { - if (( bf->flag & BFF_INTERSECT) || ( bf->flag & BFF_CLOSEVERT)) - { + if (( bf->flag & BFF_INTERSECT) || ( bf->flag & BFF_CLOSEVERT)) { sb->bpoint[bf->v1].choke2=MAX2(sb->bpoint[bf->v1].choke2,choke); sb->bpoint[bf->v2].choke2=MAX2(sb->bpoint[bf->v2].choke2,choke); sb->bpoint[bf->v3].choke2=MAX2(sb->bpoint[bf->v3].choke2,choke); @@ -1935,8 +1937,8 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3], } } - if ((deflected < 2)&& (G.rt != 444)) // we did not hit a face until now - { // see if 'outer' hits an edge + if ((deflected < 2)&& (G.rt != 444)) { /* we did not hit a face until now */ + /* see if 'outer' hits an edge */ float dist; closest_to_line_segment_v3(ve, opco, nv1, nv2); @@ -2831,8 +2833,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); - if ((G.rt == 32) && (nl_flags & NLF_BUILD)) - { + if ((G.rt == 32) && (nl_flags & NLF_BUILD)) { printf("####MEE#####\n"); nlPrintMatrix(); } @@ -3230,8 +3231,7 @@ static void springs_from_mesh(Object *ob) float scale =1.0f; sb= ob->soft; - if (me && sb) - { + if (me && sb) { /* using bp->origS as a container for spring calcualtions here ** will be overwritten sbObjectStep() to receive ** actual modifier stack positions @@ -3307,8 +3307,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) this enables per vertex *mass painting* */ - if (sb->namedVG_Mass[0]) - { + if (sb->namedVG_Mass[0]) { int grp= defgroup_name_index (ob,sb->namedVG_Mass); /* printf("VGN %s %d\n",sb->namedVG_Mass,grp); */ if (grp > -1) { @@ -3321,8 +3320,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) /* first set the default */ bp->springweight = 1.0f; - if (sb->namedVG_Spring_K[0]) - { + if (sb->namedVG_Spring_K[0]) { int grp= defgroup_name_index (ob,sb->namedVG_Spring_K); //printf("VGN %s %d\n",sb->namedVG_Spring_K,grp); if (grp > -1) { @@ -3639,8 +3637,7 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) } } - if (totspring) - { + if (totspring) { build_bps_springlist(ob); /* link bps to springs */ if (ob->softflag & OB_SB_SELF) {calculate_collision_balls(ob);} } @@ -3896,7 +3893,7 @@ static void softbody_reset(Object *ob, SoftBody *sb, float (*vertexCos)[3], int SB_estimate_transform(ob,NULL,NULL,NULL); SB_estimate_transform(ob,NULL,NULL,NULL); } - switch(ob->type) { + switch (ob->type) { case OB_MESH: if (ob->softflag & OB_SB_FACECOLL) mesh_faces_to_scratch(ob); break; @@ -3952,8 +3949,7 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) if (sb->solver_ID>0) mid_flags |= MID_PRESERVE; forcetime = forcetimemax; /* hope for integrating in one step */ - while ( (ABS(timedone) < ABS(dtime)) && (loops < 2000) ) - { + while ( (ABS(timedone) < ABS(dtime)) && (loops < 2000) ) { /* set goals in time */ interpolate_exciter(ob,200,(int)(200.0f*(timedone/dtime))); @@ -4021,12 +4017,11 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) } } - else if (sb->solver_ID == 2) - {/* do semi "fake" implicit euler */ + else if (sb->solver_ID == 2) { + /* do semi "fake" implicit euler */ //removed }/*SOLVER SELECT*/ - else if (sb->solver_ID == 4) - { + else if (sb->solver_ID == 4) { /* do semi "fake" implicit euler */ }/*SOLVER SELECT*/ else if (sb->solver_ID == 3) { @@ -4083,7 +4078,7 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i if (sb->bpoint == NULL || ((ob->softflag & OB_SB_EDGES) && !ob->soft->bspring && object_has_edges(ob))) { - switch(ob->type) { + switch (ob->type) { case OB_MESH: mesh_to_softbody(scene, ob); break; diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index c2dbb518837..28ce95ea8d1 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -95,8 +95,7 @@ struct bSound* sound_new_file(struct Main *bmain, const char *filename) sound_load(bmain, sound); - if (!sound->playback_handle) - { + if (!sound->playback_handle) { free_libblock(&bmain->sound, sound); sound = NULL; } @@ -106,22 +105,19 @@ struct bSound* sound_new_file(struct Main *bmain, const char *filename) void sound_free(struct bSound* sound) { - if (sound->packedfile) - { + if (sound->packedfile) { freePackedFile(sound->packedfile); sound->packedfile = NULL; } #ifdef WITH_AUDASPACE - if (sound->handle) - { + if (sound->handle) { AUD_unload(sound->handle); sound->handle = NULL; sound->playback_handle = NULL; } - if (sound->cache) - { + if (sound->cache) { AUD_unload(sound->cache); sound->cache = NULL; } @@ -141,10 +137,8 @@ static void sound_sync_callback(void* data, int mode, float time) struct Scene* scene; scene = bmain->scene.first; - while (scene) - { - if (scene->audio.flag & AUDIO_SYNC) - { + while (scene) { + if (scene->audio.flag & AUDIO_SYNC) { if (mode) sound_play_scene(scene); else @@ -282,8 +276,7 @@ struct bSound* sound_new_limiter(struct Main *bmain, struct bSound *source, floa void sound_delete(struct Main *bmain, struct bSound* sound) { - if (sound) - { + if (sound) { sound_free(sound); free_libblock(&bmain->sound, sound); @@ -312,8 +305,7 @@ void sound_cache_notifying(struct Main* main, struct bSound* sound) void sound_delete_cache(struct bSound* sound) { sound->flags &= ~SOUND_FLAGS_CACHING; - if (sound->cache) - { + if (sound->cache) { AUD_unload(sound->cache); sound->cache = NULL; sound->playback_handle = sound->handle; @@ -322,16 +314,13 @@ void sound_delete_cache(struct bSound* sound) void sound_load(struct Main *bmain, struct bSound* sound) { - if (sound) - { - if (sound->cache) - { + if (sound) { + if (sound->cache) { AUD_unload(sound->cache); sound->cache = NULL; } - if (sound->handle) - { + if (sound->handle) { AUD_unload(sound->handle); sound->handle = NULL; sound->playback_handle = NULL; @@ -341,7 +330,7 @@ void sound_load(struct Main *bmain, struct bSound* sound) // XXX unused currently #if 0 - switch(sound->type) + switch (sound->type) { case SOUND_TYPE_FILE: #endif @@ -376,15 +365,13 @@ void sound_load(struct Main *bmain, struct bSound* sound) break; } #endif - if (sound->flags & SOUND_FLAGS_MONO) - { + if (sound->flags & SOUND_FLAGS_MONO) { void* handle = AUD_monoSound(sound->handle); AUD_unload(sound->handle); sound->handle = handle; } - if (sound->flags & SOUND_FLAGS_CACHING) - { + if (sound->flags & SOUND_FLAGS_CACHING) { sound->cache = AUD_bufferSound(sound->handle); } @@ -557,14 +544,12 @@ void sound_play_scene(struct Scene *scene) if (status == AUD_STATUS_INVALID) sound_start_play_scene(scene); - if (!scene->sound_scene_handle) - { + if (!scene->sound_scene_handle) { AUD_unlock(); return; } - if (status != AUD_STATUS_PLAYING) - { + if (status != AUD_STATUS_PLAYING) { AUD_seek(scene->sound_scene_handle, CFRA / FPS); AUD_resume(scene->sound_scene_handle); } @@ -577,8 +562,7 @@ void sound_play_scene(struct Scene *scene) void sound_stop_scene(struct Scene *scene) { - if (scene->sound_scene_handle) - { + if (scene->sound_scene_handle) { AUD_pause(scene->sound_scene_handle); if (scene->audio.flag & AUDIO_SYNC) @@ -596,12 +580,10 @@ void sound_seek_scene(struct Main *bmain, struct Scene *scene) status = scene->sound_scene_handle ? AUD_getStatus(scene->sound_scene_handle) : AUD_STATUS_INVALID; - if (status == AUD_STATUS_INVALID) - { + if (status == AUD_STATUS_INVALID) { sound_start_play_scene(scene); - if (!scene->sound_scene_handle) - { + if (!scene->sound_scene_handle) { AUD_unlock(); return; } @@ -616,10 +598,8 @@ void sound_seek_scene(struct Main *bmain, struct Scene *scene) } } - if (scene->audio.flag & AUDIO_SCRUB && !animation_playing) - { - if (scene->audio.flag & AUDIO_SYNC) - { + if (scene->audio.flag & AUDIO_SCRUB && !animation_playing) { + if (scene->audio.flag & AUDIO_SYNC) { AUD_seek(scene->sound_scene_handle, CFRA / FPS); AUD_seekSequencer(scene->sound_scene_handle, CFRA / FPS); } @@ -648,8 +628,7 @@ void sound_seek_scene(struct Main *bmain, struct Scene *scene) float sound_sync_scene(struct Scene *scene) { - if (scene->sound_scene_handle) - { + if (scene->sound_scene_handle) { if (scene->audio.flag & AUDIO_SYNC) return AUD_getSequencerPosition(scene->sound_scene_handle); else @@ -668,8 +647,7 @@ int sound_scene_playing(struct Scene *scene) void sound_free_waveform(struct bSound* sound) { - if (sound->waveform) - { + if (sound->waveform) { MEM_freeN(((SoundWaveform*)sound->waveform)->data); MEM_freeN(sound->waveform); } @@ -683,8 +661,7 @@ void sound_read_waveform(struct bSound* sound) info = AUD_getInfo(sound->playback_handle); - if (info.length > 0) - { + if (info.length > 0) { SoundWaveform* waveform = MEM_mallocN(sizeof(SoundWaveform), "SoundWaveform"); int length = info.length * SOUND_WAVE_SAMPLES_PER_SECOND; @@ -709,23 +686,16 @@ void sound_update_scene(struct Scene* scene) void* handle; float quat[4]; - for (SETLOOPER(scene, sce_it, base)) - { + for (SETLOOPER(scene, sce_it, base)) { ob = base->object; - if (ob->type == OB_SPEAKER) - { - if (ob->adt) - { - for (track = ob->adt->nla_tracks.first; track; track = track->next) - { - for (strip = track->strips.first; strip; strip = strip->next) - { - if (strip->type == NLASTRIP_TYPE_SOUND) - { + if (ob->type == OB_SPEAKER) { + if (ob->adt) { + for (track = ob->adt->nla_tracks.first; track; track = track->next) { + for (strip = track->strips.first; strip; strip = strip->next) { + if (strip->type == NLASTRIP_TYPE_SOUND) { speaker = (Speaker*)ob->data; - if (AUD_removeSet(scene->speaker_handles, strip->speaker_handle)) - { + if (AUD_removeSet(scene->speaker_handles, strip->speaker_handle)) { if (speaker->sound) AUD_moveSequence(strip->speaker_handle, strip->start / FPS, -1, 0); else { @@ -734,15 +704,13 @@ void sound_update_scene(struct Scene* scene) } } else { - if (speaker->sound) - { + if (speaker->sound) { strip->speaker_handle = AUD_addSequence(scene->sound_scene, speaker->sound->playback_handle, strip->start / FPS, -1, 0); AUD_setRelativeSequence(strip->speaker_handle, 0); } } - if (strip->speaker_handle) - { + if (strip->speaker_handle) { AUD_addSet(new_set, strip->speaker_handle); AUD_updateSequenceData(strip->speaker_handle, speaker->volume_max, speaker->volume_min, speaker->distance_max, @@ -765,13 +733,11 @@ void sound_update_scene(struct Scene* scene) } } - while ((handle = AUD_getSet(scene->speaker_handles))) - { + while ((handle = AUD_getSet(scene->speaker_handles))) { AUD_removeSequence(scene->sound_scene, handle); } - if (scene->camera) - { + if (scene->camera) { mat4_to_quat(quat, scene->camera->obmat); AUD_setSequencerAnimData(scene->sound_scene, AUD_AP_LOCATION, CFRA, scene->camera->obmat[3], 1); AUD_setSequencerAnimData(scene->sound_scene, AUD_AP_ORIENTATION, CFRA, quat, 1); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 83a24f6afdc..83225163ea3 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -2423,7 +2423,9 @@ static void ccgDM_release(DerivedMesh *dm) /* Check that mmd still exists */ if (!ccgdm->multires.local_mmd && BLI_findindex(&ccgdm->multires.ob->modifiers, ccgdm->multires.mmd) < 0) + { ccgdm->multires.mmd = NULL; + } if (ccgdm->multires.mmd) { if (ccgdm->multires.modified_flags & MULTIRES_COORDS_MODIFIED) diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index 1197ec23907..cb7369476c0 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -1193,9 +1193,11 @@ void txt_order_cursors(Text *text) if (!text->sell) return; /* Flip so text->curl is before text->sell */ - if (txt_get_span(text->curl, text->sell)<0 || - (text->curl==text->sell && text->curc>text->selc)) + if ((txt_get_span(text->curl, text->sell) < 0) || + (text->curl == text->sell && text->curc > text->selc)) + { txt_curs_swap(text); + } } int txt_has_sel(Text *text) @@ -2018,7 +2020,7 @@ void txt_do_undo(Text *text) undoing= 1; - switch(op) { + switch (op) { case UNDO_CLEFT: txt_move_right(text, 0); break; @@ -2245,7 +2247,7 @@ void txt_do_redo(Text *text) undoing= 1; - switch(op) { + switch (op) { case UNDO_CLEFT: txt_move_left(text, 0); break; @@ -2832,8 +2834,7 @@ void txt_indent(Text *text) } num = 0; - while (TRUE) - { + while (TRUE) { tmp= MEM_mallocN(text->curl->len+indentlen+1, "textline_string"); text->curc = 0; @@ -2851,8 +2852,7 @@ void txt_indent(Text *text) txt_make_dirty(text); txt_clean_text(text); - if (text->curl == text->sell) - { + if (text->curl == text->sell) { text->selc = text->sell->len; break; } @@ -2862,14 +2862,12 @@ void txt_indent(Text *text) } } text->curc = 0; - while ( num > 0 ) - { + while ( num > 0 ) { text->curl = text->curl->prev; num--; } - if (!undoing) - { + if (!undoing) { txt_undo_add_toop(text, UNDO_INDENT, txt_get_span(text->lines.first, text->curl), text->curc, txt_get_span(text->lines.first, text->sell), text->selc); } } @@ -2893,12 +2891,10 @@ void txt_unindent(Text *text) indent = spaceslen; } - while (TRUE) - { + while (TRUE) { int i = 0; - if (BLI_strncasecmp(text->curl->line, remove, indent) == 0) - { + if (BLI_strncasecmp(text->curl->line, remove, indent) == 0) { while (i< text->curl->len) { text->curl->line[i]= text->curl->line[i+indent]; i++; @@ -2909,8 +2905,7 @@ void txt_unindent(Text *text) txt_make_dirty(text); txt_clean_text(text); - if (text->curl == text->sell) - { + if (text->curl == text->sell) { text->selc = text->sell->len; break; } @@ -2921,14 +2916,12 @@ void txt_unindent(Text *text) } text->curc = 0; - while ( num > 0 ) - { + while ( num > 0 ) { text->curl = text->curl->prev; num--; } - if (!undoing) - { + if (!undoing) { txt_undo_add_toop(text, UNDO_UNINDENT, txt_get_span(text->lines.first, text->curl), text->curc, txt_get_span(text->lines.first, text->sell), text->selc); } } @@ -2944,8 +2937,7 @@ void txt_comment(Text *text) if (!text->sell) return;// Need to change this need to check if only one line is selected to more then one num = 0; - while (TRUE) - { + while (TRUE) { tmp= MEM_mallocN(text->curl->len+2, "textline_string"); text->curc = 0; @@ -2963,8 +2955,7 @@ void txt_comment(Text *text) txt_make_dirty(text); txt_clean_text(text); - if (text->curl == text->sell) - { + if (text->curl == text->sell) { text->selc = text->sell->len; break; } @@ -2974,14 +2965,12 @@ void txt_comment(Text *text) } } text->curc = 0; - while ( num > 0 ) - { + while ( num > 0 ) { text->curl = text->curl->prev; num--; } - if (!undoing) - { + if (!undoing) { txt_undo_add_toop(text, UNDO_COMMENT, txt_get_span(text->lines.first, text->curl), text->curc, txt_get_span(text->lines.first, text->sell), text->selc); } } @@ -2995,12 +2984,10 @@ void txt_uncomment(Text *text) if (!text->curl) return; if (!text->sell) return; - while (TRUE) - { + while (TRUE) { int i = 0; - if (text->curl->line[i] == remove) - { + if (text->curl->line[i] == remove) { while (i< text->curl->len) { text->curl->line[i]= text->curl->line[i+1]; i++; @@ -3012,8 +2999,7 @@ void txt_uncomment(Text *text) txt_make_dirty(text); txt_clean_text(text); - if (text->curl == text->sell) - { + if (text->curl == text->sell) { text->selc = text->sell->len; break; } @@ -3024,14 +3010,12 @@ void txt_uncomment(Text *text) } text->curc = 0; - while ( num > 0 ) - { + while ( num > 0 ) { text->curl = text->curl->prev; num--; } - if (!undoing) - { + if (!undoing) { txt_undo_add_toop(text, UNDO_UNCOMMENT, txt_get_span(text->lines.first, text->curl), text->curc, txt_get_span(text->lines.first, text->sell), text->selc); } } @@ -3047,27 +3031,23 @@ int setcurr_tab_spaces (Text *text, int space) if (!text) return 0; if (!text->curl) return 0; - while (text->curl->line[i] == indent) - { + while (text->curl->line[i] == indent) { //we only count those tabs/spaces that are before any text or before the curs; - if (i == text->curc) - { + if (i == text->curc) { return i; } else { i++; } } - if (strstr(text->curl->line, word)) - { + if (strstr(text->curl->line, word)) { /* if we find a ':' on this line, then add a tab but not if it is: * 1) in a comment * 2) within an identifier * 3) after the cursor (text->curc), i.e. when creating space before a function def [#25414] */ int a, is_indent = 0; - for (a=0; (a < text->curc) && (text->curl->line[a] != '\0'); a++) - { + for (a=0; (a < text->curc) && (text->curl->line[a] != '\0'); a++) { char ch= text->curl->line[a]; if (ch=='#') { break; @@ -3084,13 +3064,10 @@ int setcurr_tab_spaces (Text *text, int space) } } - for (test=0; back_words[test]; test++) - { + for (test=0; back_words[test]; test++) { /* if there are these key words then remove a tab because we are done with the block */ - if (strstr(text->curl->line, back_words[test]) && i > 0) - { - if (strcspn(text->curl->line, back_words[test]) < strcspn(text->curl->line, comm)) - { + if (strstr(text->curl->line, back_words[test]) && i > 0) { + if (strcspn(text->curl->line, back_words[test]) < strcspn(text->curl->line, comm)) { i -= space; } } @@ -3139,14 +3116,16 @@ TextMarker *txt_find_marker_region(Text *text, TextLine *line, int start, int en for (marker=text->markers.first; marker; marker=next) { next= marker->next; - if (group && marker->group != group) continue; + if (group && marker->group != group) continue; else if ((marker->flags & flags) != flags) continue; - else if (marker->lineno < lineno) continue; + else if (marker->lineno < lineno) continue; else if (marker->lineno > lineno) break; if ((marker->start==marker->end && start<=marker->start && marker->start<=end) || - (marker->startend>start)) + (marker->startend>start)) + { return marker; + } } return NULL; } diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 23d818369a2..29b9505f449 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -663,7 +663,7 @@ void default_tex(Tex *tex) void tex_set_type(Tex *tex, int type) { - switch(type) { + switch (type) { case TEX_VOXELDATA: if (tex->vd == NULL) @@ -1180,7 +1180,7 @@ Tex *give_current_material_texture(Material *ma) int give_active_mtex(ID *id, MTex ***mtex_ar, short *act) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_MA: *mtex_ar= ((Material *)id)->mtex; if (act) *act= (((Material *)id)->texact); @@ -1211,7 +1211,7 @@ void set_active_mtex(ID *id, short act) if (act<0) act= 0; else if (act>=MAX_MTEX) act= MAX_MTEX-1; - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_MA: ((Material *)id)->texact= act; break; diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 59c38117858..079bde0afec 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -120,19 +120,17 @@ static int write_audio_frame(void) audio_time += (double) audio_input_samples / (double) c->sample_rate; pkt.size = avcodec_encode_audio(c, audio_output_buffer, - audio_outbuf_size, - (short*) audio_input_buffer); + audio_outbuf_size, + (short *)audio_input_buffer); - if (pkt.size < 0) - { + if (pkt.size < 0) { // XXX error("Error writing audio packet"); return -1; } pkt.data = audio_output_buffer; - if (c->coded_frame && c->coded_frame->pts != AV_NOPTS_VALUE) - { + if (c->coded_frame && c->coded_frame->pts != AV_NOPTS_VALUE) { pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, audio_stream->time_base); fprintf(stderr, "Audio Frame PTS: %d\n", (int)pkt.pts); @@ -175,7 +173,7 @@ static AVFrame* alloc_picture(int pix_fmt, int width, int height) * first is always desired guess_format parameter */ static const char** get_file_extensions(int format) { - switch(format) { + switch (format) { case FFMPEG_DV: { static const char * rv[] = { ".dv", NULL }; return rv; @@ -372,7 +370,7 @@ static void set_ffmpeg_property_option(AVCodecContext* c, IDProperty * prop) *param++ = 0; } - switch(prop->type) { + switch (prop->type) { case IDP_STRING: fprintf(stderr, "%s.\n", IDP_String(prop)); av_set_string3(c, prop->name, IDP_String(prop), 1, &rv); @@ -717,7 +715,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report BLI_snprintf(of->filename, sizeof(of->filename), "%s", name); /* set the codec to the user's selection */ - switch(ffmpeg_type) { + switch (ffmpeg_type) { case FFMPEG_AVI: case FFMPEG_MOV: case FFMPEG_MKV: @@ -929,8 +927,7 @@ int start_ffmpeg(struct Scene *scene, RenderData *rd, int rectx, int recty, Repo success = start_ffmpeg_impl(rd, rectx, recty, reports); #ifdef WITH_AUDASPACE - if (audio_stream) - { + if (audio_stream) { AVCodecContext* c = audio_stream->codec; AUD_DeviceSpecs specs; specs.channels = c->channels; @@ -974,8 +971,7 @@ int append_ffmpeg(RenderData *rd, int start_frame, int frame, int *pixels, int r // why is this done before writing the video frame and again at end_ffmpeg? // write_audio_frames(frame / (((double)rd->frs_sec) / rd->frs_sec_base)); - if (video_stream) - { + if (video_stream) { avframe= generate_video_frame((unsigned char*) pixels, reports); success= (avframe && write_video_frame(rd, frame - start_frame, avframe, reports)); @@ -1172,10 +1168,12 @@ static const AVOption *my_av_find_opt(void *v, const char *name, const AVOption *o= c->option; for (;o && o->name; o++) { - if (!strcmp(o->name, name) && - (!unit || (o->unit && !strcmp(o->unit, unit))) && - (o->flags & mask) == flags ) + if (!strcmp(o->name, name) && + (!unit || (o->unit && !strcmp(o->unit, unit))) && + (o->flags & mask) == flags) + { return o; + } } return NULL; } diff --git a/source/blender/blenlib/intern/BLI_kdopbvh.c b/source/blender/blenlib/intern/BLI_kdopbvh.c index 2cc67b3f0aa..3921c01d2cf 100644 --- a/source/blender/blenlib/intern/BLI_kdopbvh.c +++ b/source/blender/blenlib/intern/BLI_kdopbvh.c @@ -217,12 +217,10 @@ static void bvh_insertionsort(BVHNode **a, int lo, int hi, int axis) { int i,j; BVHNode *t; - for (i=lo; i < hi; i++) - { + for (i=lo; i < hi; i++) { j=i; t = a[i]; - while ((j!=lo) && (t->bv[axis] < (a[j-1])->bv[axis])) - { + while ((j!=lo) && (t->bv[axis] < (a[j-1])->bv[axis])) { a[j] = a[j-1]; j--; } @@ -233,8 +231,7 @@ static void bvh_insertionsort(BVHNode **a, int lo, int hi, int axis) static int bvh_partition(BVHNode **a, int lo, int hi, BVHNode * x, int axis) { int i=lo, j=hi; - while (1) - { + while (1) { while ((a[i])->bv[axis] < x->bv[axis]) i++; j--; while (x->bv[axis] < (a[j])->bv[axis]) j--; @@ -284,22 +281,18 @@ static void bvh_heapsort(BVHNode **a, int lo, int hi, int axis) static BVHNode *bvh_medianof3(BVHNode **a, int lo, int mid, int hi, int axis) // returns Sortable { - if ((a[mid])->bv[axis] < (a[lo])->bv[axis]) - { + if ((a[mid])->bv[axis] < (a[lo])->bv[axis]) { if ((a[hi])->bv[axis] < (a[mid])->bv[axis]) return a[mid]; - else - { + else { if ((a[hi])->bv[axis] < (a[lo])->bv[axis]) return a[hi]; else return a[lo]; } } - else - { - if ((a[hi])->bv[axis] < (a[mid])->bv[axis]) - { + else { + if ((a[hi])->bv[axis] < (a[mid])->bv[axis]) { if ((a[hi])->bv[axis] < (a[lo])->bv[axis]) return a[lo]; else @@ -354,8 +347,7 @@ static void sort_along_axis(BVHTree *tree, int start, int end, int axis) static int partition_nth_element(BVHNode **a, int _begin, int _end, int n, int axis) { int begin = _begin, end = _end, cut; - while (end-begin > 3) - { + while (end-begin > 3) { cut = bvh_partition(a, begin, end, bvh_medianof3(a, begin, (begin+end)/2, end-1, axis), axis ); if (cut <= n) begin = cut; @@ -375,8 +367,7 @@ static void build_skip_links(BVHTree *tree, BVHNode *node, BVHNode *left, BVHNod node->skip[0] = left; node->skip[1] = right; - for (i = 0; i < node->totnode; i++) - { + for (i = 0; i < node->totnode; i++) { if (i+1 < node->totnode) build_skip_links(tree, node->children[i], left, node->children[i+1] ); else @@ -396,20 +387,16 @@ static void create_kdop_hull(BVHTree *tree, BVHNode *node, const float *co, int int i, k; // don't init boudings for the moving case - if (!moving) - { - for (i = tree->start_axis; i < tree->stop_axis; i++) - { - bv[2*i] = FLT_MAX; - bv[2*i + 1] = -FLT_MAX; + if (!moving) { + for (i = tree->start_axis; i < tree->stop_axis; i++) { + bv[2 * i] = FLT_MAX; + bv[2 * i + 1] = -FLT_MAX; } } - for (k = 0; k < numpoints; k++) - { - // for all Axes. - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (k = 0; k < numpoints; k++) { + /* for all Axes. */ + for (i = tree->start_axis; i < tree->stop_axis; i++) { newminmax = dot_v3v3(&co[k * 3], KDOP_AXES[i]); if (newminmax < bv[2 * i]) bv[2 * i] = newminmax; @@ -427,17 +414,14 @@ static void refit_kdop_hull(BVHTree *tree, BVHNode *node, int start, int end) float *bv = node->bv; - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (i = tree->start_axis; i < tree->stop_axis; i++) { bv[2*i] = FLT_MAX; bv[2*i + 1] = -FLT_MAX; } - for (j = start; j < end; j++) - { -// for all Axes. - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (j = start; j < end; j++) { + /* for all Axes. */ + for (i = tree->start_axis; i < tree->stop_axis; i++) { newmin = tree->nodes[j]->bv[(2 * i)]; if ((newmin < bv[(2 * i)])) bv[(2 * i)] = newmin; @@ -459,15 +443,13 @@ static char get_largest_axis(float *bv) middle_point[0] = (bv[1]) - (bv[0]); // x axis middle_point[1] = (bv[3]) - (bv[2]); // y axis middle_point[2] = (bv[5]) - (bv[4]); // z axis - if (middle_point[0] > middle_point[1]) - { + if (middle_point[0] > middle_point[1]) { if (middle_point[0] > middle_point[2]) return 1; // max x axis else return 5; // max z axis } - else - { + else { if (middle_point[1] > middle_point[2]) return 3; // max y axis else @@ -481,18 +463,14 @@ static void node_join(BVHTree *tree, BVHNode *node) { int i, j; - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (i = tree->start_axis; i < tree->stop_axis; i++) { node->bv[2*i] = FLT_MAX; node->bv[2*i + 1] = -FLT_MAX; } - for (i = 0; i < tree->tree_type; i++) - { - if (node->children[i]) - { - for (j = tree->start_axis; j < tree->stop_axis; j++) - { + for (i = 0; i < tree->tree_type; i++) { + if (node->children[i]) { + for (j = tree->start_axis; j < tree->stop_axis; j++) { // update minimum if (node->children[i]->bv[(2 * j)] < node->bv[(2 * j)]) node->bv[(2 * j)] = node->children[i]->bv[(2 * j)]; @@ -619,17 +597,17 @@ static void build_implicit_tree_helper(BVHTree *tree, BVHBuildHelper *data) data->tree_type= tree->tree_type; //Calculate the smallest tree_type^n such that tree_type^n >= num_leafs - for ( - data->leafs_per_child[0] = 1; - data->leafs_per_child[0] < data->totleafs; - data->leafs_per_child[0] *= data->tree_type - ); + for (data->leafs_per_child[0] = 1; + data->leafs_per_child[0] < data->totleafs; + data->leafs_per_child[0] *= data->tree_type) + { + /* pass */ + } data->branches_on_level[0] = 1; //We could stop the loop first (but I am lazy to find out when) - for (depth = 1; depth < 32; depth++) - { + for (depth = 1; depth < 32; depth++) { data->branches_on_level[depth] = data->branches_on_level[depth-1] * data->tree_type; data->leafs_per_child [depth] = data->leafs_per_child [depth-1] / data->tree_type; } @@ -700,8 +678,7 @@ static int implicit_needed_branches(int tree_type, int leafs) static void split_leafs(BVHNode **leafs_array, int *nth, int partitions, int split_axis) { int i; - for (i=0; i < partitions-1; i++) - { + for (i=0; i < partitions-1; i++) { if (nth[i] >= nth[partitions]) break; @@ -742,8 +719,7 @@ static void non_recursive_bvh_div_nodes(BVHTree *tree, BVHNode *branches_array, //Most of bvhtree code relies on 1-leaf trees having at least one branch //We handle that special case here - if (num_leafs == 1) - { + if (num_leafs == 1) { BVHNode *root = branches_array+0; refit_kdop_hull(tree, root, 0, num_leafs); root->main_axis = get_largest_axis(root->bv) / 2; @@ -758,8 +734,7 @@ static void non_recursive_bvh_div_nodes(BVHTree *tree, BVHNode *branches_array, build_implicit_tree_helper(tree, &data); //Loop tree levels (log N) loops - for (i=1, depth = 1; i <= num_branches; i = i*tree_type + tree_offset, depth++) - { + for (i=1, depth = 1; i <= num_branches; i = i*tree_type + tree_offset, depth++) { const int first_of_next_level = i*tree_type + tree_offset; const int end_j = MIN2(first_of_next_level, num_branches + 1); //index of last branch on this level int j; @@ -885,22 +860,19 @@ BVHTree *BLI_bvhtree_new(int maxsize, float epsilon, char tree_type, char axis) tree->nodes = (BVHNode **)MEM_callocN(sizeof(BVHNode *)*numnodes, "BVHNodes"); - if (!tree->nodes) - { + if (!tree->nodes) { MEM_freeN(tree); return NULL; } tree->nodebv = (float*)MEM_callocN(sizeof(float)* axis * numnodes, "BVHNodeBV"); - if (!tree->nodebv) - { + if (!tree->nodebv) { MEM_freeN(tree->nodes); MEM_freeN(tree); } tree->nodechild = (BVHNode**)MEM_callocN(sizeof(BVHNode*) * tree_type * numnodes, "BVHNodeBV"); - if (!tree->nodechild) - { + if (!tree->nodechild) { MEM_freeN(tree->nodebv); MEM_freeN(tree->nodes); MEM_freeN(tree); @@ -908,8 +880,7 @@ BVHTree *BLI_bvhtree_new(int maxsize, float epsilon, char tree_type, char axis) tree->nodearray = (BVHNode *)MEM_callocN(sizeof(BVHNode)* numnodes, "BVHNodeArray"); - if (!tree->nodearray) - { + if (!tree->nodearray) { MEM_freeN(tree->nodechild); MEM_freeN(tree->nodebv); MEM_freeN(tree->nodes); @@ -918,8 +889,7 @@ BVHTree *BLI_bvhtree_new(int maxsize, float epsilon, char tree_type, char axis) } //link the dynamic bv and child links - for (i=0; i< numnodes; i++) - { + for (i=0; i< numnodes; i++) { tree->nodearray[i].bv = tree->nodebv + i * axis; tree->nodearray[i].children = tree->nodechild + i * tree_type; } @@ -931,8 +901,7 @@ BVHTree *BLI_bvhtree_new(int maxsize, float epsilon, char tree_type, char axis) void BLI_bvhtree_free(BVHTree *tree) { - if (tree) - { + if (tree) { MEM_freeN(tree->nodes); MEM_freeN(tree->nodearray); MEM_freeN(tree->nodebv); @@ -985,8 +954,7 @@ int BLI_bvhtree_insert(BVHTree *tree, int index, const float *co, int numpoints) node->index= index; // inflate the bv with some epsilon - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (i = tree->start_axis; i < tree->stop_axis; i++) { node->bv[(2 * i)] -= tree->epsilon; // minimum node->bv[(2 * i) + 1] += tree->epsilon; // maximum } @@ -1013,8 +981,7 @@ int BLI_bvhtree_update_node(BVHTree *tree, int index, const float *co, const flo create_kdop_hull(tree, node, co_moving, numpoints, 1); // inflate the bv with some epsilon - for (i = tree->start_axis; i < tree->stop_axis; i++) - { + for (i = tree->start_axis; i < tree->stop_axis; i++) { node->bv[(2 * i)] -= tree->epsilon; // minimum node->bv[(2 * i) + 1] += tree->epsilon; // maximum } @@ -1057,8 +1024,7 @@ static int tree_overlap(BVHNode *node1, BVHNode *node2, int start_axis, int stop bv2 += start_axis<<1; // test all axis if min + max overlap - for (; bv1 != bv1_end; bv1+=2, bv2+=2) - { + for (; bv1 != bv1_end; bv1+=2, bv2+=2) { if ((*(bv1) > *(bv2 + 1)) || (*(bv2) > *(bv1 + 1))) return 0; } @@ -1070,27 +1036,21 @@ static void traverse(BVHOverlapData *data, BVHNode *node1, BVHNode *node2) { int j; - if (tree_overlap(node1, node2, data->start_axis, data->stop_axis)) - { + if (tree_overlap(node1, node2, data->start_axis, data->stop_axis)) { // check if node1 is a leaf - if (!node1->totnode) - { + if (!node1->totnode) { // check if node2 is a leaf - if (!node2->totnode) - { + if (!node2->totnode) { - if (node1 == node2) - { + if (node1 == node2) { return; } - if (data->i >= data->max_overlap) - { + if (data->i >= data->max_overlap) { // try to make alloc'ed memory bigger data->overlap = realloc(data->overlap, sizeof(BVHTreeOverlap)*data->max_overlap*2); - if (!data->overlap) - { + if (!data->overlap) { printf("Out of Memory in traverse\n"); return; } @@ -1103,20 +1063,15 @@ static void traverse(BVHOverlapData *data, BVHNode *node1, BVHNode *node2) data->i++; } - else - { - for (j = 0; j < data->tree2->tree_type; j++) - { + else { + for (j = 0; j < data->tree2->tree_type; j++) { if (node2->children[j]) traverse(data, node1, node2->children[j]); } } } - else - { - - for (j = 0; j < data->tree2->tree_type; j++) - { + else { + for (j = 0; j < data->tree2->tree_type; j++) { if (node1->children[j]) traverse(data, node1->children[j], node2); } @@ -1142,8 +1097,7 @@ BVHTreeOverlap *BLI_bvhtree_overlap(BVHTree *tree1, BVHTree *tree2, unsigned int data = MEM_callocN(sizeof(BVHOverlapData *)* tree1->tree_type, "BVHOverlapData_star"); - for (j = 0; j < tree1->tree_type; j++) - { + for (j = 0; j < tree1->tree_type; j++) { data[j] = (BVHOverlapData *)MEM_callocN(sizeof(BVHOverlapData), "BVHOverlapData"); // init BVHOverlapData @@ -1157,8 +1111,7 @@ BVHTreeOverlap *BLI_bvhtree_overlap(BVHTree *tree1, BVHTree *tree2, unsigned int } #pragma omp parallel for private(j) schedule(static) - for (j = 0; j < MIN2(tree1->tree_type, tree1->nodes[tree1->totleaf]->totnode); j++) - { + for (j = 0; j < MIN2(tree1->tree_type, tree1->nodes[tree1->totleaf]->totnode); j++) { traverse(data[j], tree1->nodes[tree1->totleaf]->children[j], tree2->nodes[tree2->totleaf]); } @@ -1167,14 +1120,12 @@ BVHTreeOverlap *BLI_bvhtree_overlap(BVHTree *tree1, BVHTree *tree2, unsigned int to = overlap = (BVHTreeOverlap *)MEM_callocN(sizeof(BVHTreeOverlap)*total, "BVHTreeOverlap"); - for (j = 0; j < tree1->tree_type; j++) - { + for (j = 0; j < tree1->tree_type; j++) { memcpy(to, data[j]->overlap, data[j]->i*sizeof(BVHTreeOverlap)); to+=data[j]->i; } - for (j = 0; j < tree1->tree_type; j++) - { + for (j = 0; j < tree1->tree_type; j++) { free(data[j]->overlap); MEM_freeN(data[j]); } @@ -1191,8 +1142,7 @@ static float calc_nearest_point(const float proj[3], BVHNode *node, float *neare const float *bv = node->bv; //nearest on AABB hull - for (i=0; i != 3; i++, bv += 2) - { + for (i=0; i != 3; i++, bv += 2) { if (bv[0] > proj[i]) nearest[i] = bv[0]; else if (bv[1] < proj[i]) @@ -1235,35 +1185,28 @@ typedef struct NodeDistance // TODO: use a priority queue to reduce the number of nodes looked on static void dfs_find_nearest_dfs(BVHNearestData *data, BVHNode *node) { - if (node->totnode == 0) - { + if (node->totnode == 0) { if (data->callback) data->callback(data->userdata , node->index, data->co, &data->nearest); - else - { + else { data->nearest.index = node->index; data->nearest.dist = calc_nearest_point(data->proj, node, data->nearest.co); } } - else - { + else { //Better heuristic to pick the closest node to dive on int i; float nearest[3]; - if (data->proj[ node->main_axis ] <= node->children[0]->bv[node->main_axis*2+1]) - { + if (data->proj[ node->main_axis ] <= node->children[0]->bv[node->main_axis*2+1]) { - for (i=0; i != node->totnode; i++) - { + for (i=0; i != node->totnode; i++) { if ( calc_nearest_point(data->proj, node->children[i], nearest) >= data->nearest.dist) continue; dfs_find_nearest_dfs(data, node->children[i]); } } - else - { - for (i=node->totnode-1; i >= 0 ; i--) - { + else { + for (i=node->totnode-1; i >= 0 ; i--) { if ( calc_nearest_point(data->proj, node->children[i], nearest) >= data->nearest.dist) continue; dfs_find_nearest_dfs(data, node->children[i]); } @@ -1381,17 +1324,14 @@ int BLI_bvhtree_find_nearest(BVHTree *tree, const float co[3], BVHTreeNearest *n data.callback = callback; data.userdata = userdata; - for (i = data.tree->start_axis; i != data.tree->stop_axis; i++) - { + for (i = data.tree->start_axis; i != data.tree->stop_axis; i++) { data.proj[i] = dot_v3v3(data.co, KDOP_AXES[i]); } - if (nearest) - { + if (nearest) { memcpy( &data.nearest , nearest, sizeof(*nearest) ); } - else - { + else { data.nearest.index = -1; data.nearest.dist = FLT_MAX; } @@ -1401,8 +1341,7 @@ int BLI_bvhtree_find_nearest(BVHTree *tree, const float co[3], BVHTreeNearest *n dfs_find_nearest_begin(&data, root); //copy back results - if (nearest) - { + if (nearest) { memcpy(nearest, &data.nearest, sizeof(*nearest)); } @@ -1424,10 +1363,8 @@ static float ray_nearest_hit(BVHRayCastData *data, float *bv) float low = 0, upper = data->hit.dist; - for (i=0; i != 3; i++, bv += 2) - { - if (data->ray_dot_axis[i] == 0.0f) - { + for (i=0; i != 3; i++, bv += 2) { + if (data->ray_dot_axis[i] == 0.0f) { //axis aligned ray if (data->ray.origin[i] < bv[0] - data->ray.radius || data->ray.origin[i] > bv[1] + data->ray.radius) @@ -1435,18 +1372,15 @@ static float ray_nearest_hit(BVHRayCastData *data, float *bv) return FLT_MAX; } } - else - { + else { float ll = (bv[0] - data->ray.radius - data->ray.origin[i]) / data->ray_dot_axis[i]; float lu = (bv[1] + data->ray.radius - data->ray.origin[i]) / data->ray_dot_axis[i]; - if (data->ray_dot_axis[i] > 0.0f) - { + if (data->ray_dot_axis[i] > 0.0f) { if (ll > low) low = ll; if (lu < upper) upper = lu; } - else - { + else { if (lu > low) low = lu; if (ll < upper) upper = ll; } @@ -1494,31 +1428,25 @@ static void dfs_raycast(BVHRayCastData *data, BVHNode *node) float dist = (data->ray.radius > 0.0f) ? ray_nearest_hit(data, node->bv) : fast_ray_nearest_hit(data, node); if (dist >= data->hit.dist) return; - if (node->totnode == 0) - { - if (data->callback) + if (node->totnode == 0) { + if (data->callback) { data->callback(data->userdata, node->index, &data->ray, &data->hit); - else - { + } + else { data->hit.index = node->index; data->hit.dist = dist; madd_v3_v3v3fl(data->hit.co, data->ray.origin, data->ray.direction, dist); } } - else - { + else { //pick loop direction to dive into the tree (based on ray direction and split axis) - if (data->ray_dot_axis[ (int)node->main_axis ] > 0.0f) - { - for (i=0; i != node->totnode; i++) - { + if (data->ray_dot_axis[ (int)node->main_axis ] > 0.0f) { + for (i=0; i != node->totnode; i++) { dfs_raycast(data, node->children[i]); } } - else - { - for (i=node->totnode-1; i >= 0; i--) - { + else { + for (i=node->totnode-1; i >= 0; i--) { dfs_raycast(data, node->children[i]); } } @@ -1575,13 +1503,11 @@ int BLI_bvhtree_ray_cast(BVHTree *tree, const float co[3], const float dir[3], f normalize_v3(data.ray.direction); - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) { data.ray_dot_axis[i] = dot_v3v3(data.ray.direction, KDOP_AXES[i]); data.idot_axis[i] = 1.0f / data.ray_dot_axis[i]; - if (fabsf(data.ray_dot_axis[i]) < FLT_EPSILON) - { + if (fabsf(data.ray_dot_axis[i]) < FLT_EPSILON) { data.ray_dot_axis[i] = 0.0; } data.index[2*i] = data.idot_axis[i] < 0.0f ? 1 : 0; @@ -1593,14 +1519,12 @@ int BLI_bvhtree_ray_cast(BVHTree *tree, const float co[3], const float dir[3], f if (hit) memcpy( &data.hit, hit, sizeof(*hit) ); - else - { + else { data.hit.index = -1; data.hit.dist = FLT_MAX; } - if (root) - { + if (root) { dfs_raycast(&data, root); // iterative_raycast(&data, root); } @@ -1635,8 +1559,7 @@ float BLI_bvhtree_bb_raycast(float *bv, const float light_start[3], const float dist = ray_nearest_hit(&data, bv); - if (dist > 0.0f) - { + if (dist > 0.0f) { madd_v3_v3v3fl(pos, light_start, data.ray.direction, dist); } return dist; @@ -1666,8 +1589,7 @@ typedef struct RangeQueryData static void dfs_range_query(RangeQueryData *data, BVHNode *node) { - if (node->totnode == 0) - { + if (node->totnode == 0) { #if 0 /*UNUSED*/ //Calculate the node min-coords (if the node was a point then this is the point coordinates) float co[3]; @@ -1676,18 +1598,14 @@ static void dfs_range_query(RangeQueryData *data, BVHNode *node) co[2] = node->bv[4]; #endif } - else - { + else { int i; - for (i=0; i != node->totnode; i++) - { + for (i=0; i != node->totnode; i++) { float nearest[3]; float dist = calc_nearest_point(data->center, node->children[i], nearest); - if (dist < data->radius) - { + if (dist < data->radius) { //Its a leaf.. call the callback - if (node->children[i]->totnode == 0) - { + if (node->children[i]->totnode == 0) { data->hits++; data->callback(data->userdata, node->children[i]->index, dist); } @@ -1711,15 +1629,12 @@ int BLI_bvhtree_range_query(BVHTree *tree, const float co[3], float radius, BVHT data.callback = callback; data.userdata = userdata; - if (root != NULL) - { + if (root != NULL) { float nearest[3]; float dist = calc_nearest_point(data.center, root, nearest); - if (dist < data.radius) - { - //Its a leaf.. call the callback - if (root->totnode == 0) - { + if (dist < data.radius) { + /* Its a leaf.. call the callback */ + if (root->totnode == 0) { data.hits++; data.callback(data.userdata, root->index, dist); } diff --git a/source/blender/blenlib/intern/DLRB_tree.c b/source/blender/blenlib/intern/DLRB_tree.c index 0e90042a35f..7c5ee236a35 100644 --- a/source/blender/blenlib/intern/DLRB_tree.c +++ b/source/blender/blenlib/intern/DLRB_tree.c @@ -141,8 +141,7 @@ DLRBT_Node *BLI_dlrbTree_search (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, v return NULL; /* iteratively perform this search */ - while (node && found==0) - { + while (node && found == 0) { /* check if traverse further or not * NOTE: it is assumed that the values will be unit values only */ @@ -183,8 +182,7 @@ DLRBT_Node *BLI_dlrbTree_search_exact (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp return NULL; /* iteratively perform this search */ - while (node && found==0) - { + while (node && found==0) { /* check if traverse further or not * NOTE: it is assumed that the values will be unit values only */ diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 0504ac5be60..7c3ad2c62a2 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -387,7 +387,7 @@ void bpath_traverse_id(Main *bmain, ID *id, BPathVisitor visit_cb, const int fla return; } - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_IM: ima= (Image *)id; if (ima->packedfile == NULL || (flag & BPATH_TRAVERSE_SKIP_PACKED) == 0) { diff --git a/source/blender/blenlib/intern/dynlib.c b/source/blender/blenlib/intern/dynlib.c index e300d09ffbc..c80f3e08e3b 100644 --- a/source/blender/blenlib/intern/dynlib.c +++ b/source/blender/blenlib/intern/dynlib.c @@ -85,7 +85,9 @@ char *BLI_dynlib_get_error_as_string(DynamicLibrary *lib) if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) + { return buf; + } } return NULL; diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c index a9a1f2bc57e..8f2a2e6f8b5 100644 --- a/source/blender/blenlib/intern/freetypefont.c +++ b/source/blender/blenlib/intern/freetypefont.c @@ -127,17 +127,21 @@ static void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vf npoints[j] = ftoutline.contours[j] - ftoutline.contours[j - 1]; } - // get number of on-curve points for beziertriples (including conic virtual on-points) + // get number of on-curve points for beziertriples (including conic virtual on-points) for (j = 0; j < ftoutline.n_contours; j++) { for (k = 0; k < npoints[j]; k++) { - if (j > 0) l = k + ftoutline.contours[j - 1] + 1; else l = k; - if (ftoutline.tags[l] == FT_Curve_Tag_On) - onpoints[j]++; + l = (j > 0) ? (k + ftoutline.contours[j - 1] + 1) : k; - if (k < npoints[j] - 1 ) + if (ftoutline.tags[l] == FT_Curve_Tag_On) + onpoints[j]++; + + if (k < npoints[j] - 1 ) { if ( ftoutline.tags[l] == FT_Curve_Tag_Conic && - ftoutline.tags[l+1] == FT_Curve_Tag_Conic) + ftoutline.tags[l+1] == FT_Curve_Tag_Conic) + { onpoints[j]++; + } + } } } @@ -398,8 +402,7 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf) } // Load characters - while (charcode < 256) - { + while (charcode < 256) { // Generate the font data freetypechar_to_vchar(face, charcode, vfd); diff --git a/source/blender/blenlib/intern/graph.c b/source/blender/blenlib/intern/graph.c index 75131f81ade..432a74a5890 100644 --- a/source/blender/blenlib/intern/graph.c +++ b/source/blender/blenlib/intern/graph.c @@ -46,13 +46,11 @@ static void flagAxialSymmetry(BNode *root_node, BNode *end_node, BArc *arc, int void BLI_freeNode(BGraph *graph, BNode *node) { - if (node->arcs) - { + if (node->arcs) { MEM_freeN(node->arcs); } - if (graph->free_node) - { + if (graph->free_node) { graph->free_node(node); } } @@ -70,8 +68,7 @@ BNode *BLI_otherNode(BArc *arc, BNode *node) void BLI_removeArc(BGraph *graph, BArc *arc) { - if (graph->free_arc) - { + if (graph->free_arc) { graph->free_arc(arc); } @@ -82,8 +79,7 @@ void BLI_flagNodes(BGraph *graph, int flag) { BNode *node; - for (node = graph->nodes.first; node; node = node->next) - { + for (node = graph->nodes.first; node; node = node->next) { node->flag = flag; } } @@ -92,8 +88,7 @@ void BLI_flagArcs(BGraph *graph, int flag) { BArc *arc; - for (arc = graph->arcs.first; arc; arc = arc->next) - { + for (arc = graph->arcs.first; arc; arc = arc->next) { arc->flag = flag; } } @@ -109,10 +104,8 @@ void BLI_buildAdjacencyList(BGraph *graph) BNode *node; BArc *arc; - for (node = graph->nodes.first; node; node = node->next) - { - if (node->arcs != NULL) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->arcs != NULL) { MEM_freeN(node->arcs); } @@ -122,16 +115,13 @@ void BLI_buildAdjacencyList(BGraph *graph) node->flag = 0; } - for (arc = graph->arcs.first; arc; arc= arc->next) - { + for (arc = graph->arcs.first; arc; arc= arc->next) { addArcToNodeAdjacencyList(arc->head, arc); addArcToNodeAdjacencyList(arc->tail, arc); } - for (node = graph->nodes.first; node; node = node->next) - { - if (node->degree != node->flag) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->degree != node->flag) { printf("error in node [%p]. Added only %i arcs out of %i\n", (void *)node, node->flag, node->degree); } } @@ -141,8 +131,7 @@ void BLI_rebuildAdjacencyListForNode(BGraph* graph, BNode *node) { BArc *arc; - if (node->arcs != NULL) - { + if (node->arcs != NULL) { MEM_freeN(node->arcs); } @@ -151,20 +140,16 @@ void BLI_rebuildAdjacencyListForNode(BGraph* graph, BNode *node) /* temporary use to indicate the first index available in the lists */ node->flag = 0; - for (arc = graph->arcs.first; arc; arc= arc->next) - { - if (arc->head == node) - { + for (arc = graph->arcs.first; arc; arc= arc->next) { + if (arc->head == node) { addArcToNodeAdjacencyList(arc->head, arc); } - else if (arc->tail == node) - { + else if (arc->tail == node) { addArcToNodeAdjacencyList(arc->tail, arc); } } - if (node->degree != node->flag) - { + if (node->degree != node->flag) { printf("error in node [%p]. Added only %i arcs out of %i\n", (void *)node, node->flag, node->degree); } } @@ -173,10 +158,8 @@ void BLI_freeAdjacencyList(BGraph *graph) { BNode *node; - for (node = graph->nodes.first; node; node = node->next) - { - if (node->arcs != NULL) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->arcs != NULL) { MEM_freeN(node->arcs); node->arcs = NULL; } @@ -187,10 +170,8 @@ int BLI_hasAdjacencyList(BGraph *graph) { BNode *node; - for (node = graph->nodes.first; node; node = node->next) - { - if (node->arcs == NULL) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->arcs == NULL) { return 0; } } @@ -200,28 +181,24 @@ int BLI_hasAdjacencyList(BGraph *graph) void BLI_replaceNodeInArc(BGraph *graph, BArc *arc, BNode *node_src, BNode *node_replaced) { - if (arc->head == node_replaced) - { + if (arc->head == node_replaced) { arc->head = node_src; node_src->degree++; } - if (arc->tail == node_replaced) - { + if (arc->tail == node_replaced) { arc->tail = node_src; node_src->degree++; } - if (arc->head == arc->tail) - { + if (arc->head == arc->tail) { node_src->degree -= 2; graph->free_arc(arc); BLI_freelinkN(&graph->arcs, arc); } - if (node_replaced->degree == 0) - { + if (node_replaced->degree == 0) { BLI_removeNode(graph, node_replaced); } } @@ -230,26 +207,22 @@ void BLI_replaceNode(BGraph *graph, BNode *node_src, BNode *node_replaced) { BArc *arc, *next_arc; - for (arc = graph->arcs.first; arc; arc = next_arc) - { + for (arc = graph->arcs.first; arc; arc = next_arc) { next_arc = arc->next; - if (arc->head == node_replaced) - { + if (arc->head == node_replaced) { arc->head = node_src; node_replaced->degree--; node_src->degree++; } - if (arc->tail == node_replaced) - { + if (arc->tail == node_replaced) { arc->tail = node_src; node_replaced->degree--; node_src->degree++; } - if (arc->head == arc->tail) - { + if (arc->head == arc->tail) { node_src->degree -= 2; graph->free_arc(arc); @@ -257,8 +230,7 @@ void BLI_replaceNode(BGraph *graph, BNode *node_src, BNode *node_replaced) } } - if (node_replaced->degree == 0) - { + if (node_replaced->degree == 0) { BLI_removeNode(graph, node_replaced); } } @@ -267,12 +239,9 @@ void BLI_removeDoubleNodes(BGraph *graph, float limit) { BNode *node_src, *node_replaced; - for (node_src = graph->nodes.first; node_src; node_src = node_src->next) - { - for (node_replaced = graph->nodes.first; node_replaced; node_replaced = node_replaced->next) - { - if (node_replaced != node_src && len_v3v3(node_replaced->p, node_src->p) <= limit) - { + for (node_src = graph->nodes.first; node_src; node_src = node_src->next) { + for (node_replaced = graph->nodes.first; node_replaced; node_replaced = node_replaced->next) { + if (node_replaced != node_src && len_v3v3(node_replaced->p, node_src->p) <= limit) { BLI_replaceNode(graph, node_src, node_replaced); } } @@ -285,11 +254,9 @@ BNode * BLI_FindNodeByPosition(BGraph *graph, float *p, float limit) BNode *closest_node = NULL, *node; float min_distance = 0.0f; - for (node = graph->nodes.first; node; node = node->next) - { + for (node = graph->nodes.first; node; node = node->next) { float distance = len_v3v3(p, node->p); - if (distance <= limit && (closest_node == NULL || distance < min_distance)) - { + if (distance <= limit && (closest_node == NULL || distance < min_distance)) { closest_node = node; min_distance = distance; } @@ -301,15 +268,13 @@ BNode * BLI_FindNodeByPosition(BGraph *graph, float *p, float limit) static void flagSubgraph(BNode *node, int subgraph) { - if (node->subgraph_index == 0) - { + if (node->subgraph_index == 0) { BArc *arc; int i; node->subgraph_index = subgraph; - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { arc = node->arcs[i]; flagSubgraph(BLI_otherNode(arc, node), subgraph); } @@ -321,20 +286,16 @@ int BLI_FlagSubgraphs(BGraph *graph) BNode *node; int subgraph = 0; - if (BLI_hasAdjacencyList(graph) == 0) - { + if (BLI_hasAdjacencyList(graph) == 0) { BLI_buildAdjacencyList(graph); } - for (node = graph->nodes.first; node; node = node->next) - { + for (node = graph->nodes.first; node; node = node->next) { node->subgraph_index = 0; } - for (node = graph->nodes.first; node; node = node->next) - { - if (node->subgraph_index == 0) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->subgraph_index == 0) { subgraph++; flagSubgraph(node, subgraph); } @@ -347,10 +308,8 @@ void BLI_ReflagSubgraph(BGraph *graph, int old_subgraph, int new_subgraph) { BNode *node; - for (node = graph->nodes.first; node; node = node->next) - { - if (node->flag == old_subgraph) - { + for (node = graph->nodes.first; node; node = node->next) { + if (node->flag == old_subgraph) { node->flag = new_subgraph; } } @@ -362,26 +321,22 @@ static int detectCycle(BNode *node, BArc *src_arc) { int value = 0; - if (node->flag == 0) - { + if (node->flag == 0) { int i; /* mark node as visited */ node->flag = 1; - for (i = 0; i < node->degree && value == 0; i++) - { + for (i = 0; i < node->degree && value == 0; i++) { BArc *arc = node->arcs[i]; /* don't go back on the source arc */ - if (arc != src_arc) - { + if (arc != src_arc) { value = detectCycle(BLI_otherNode(arc, node), arc); } } } - else - { + else { value = 1; } @@ -399,11 +354,9 @@ int BLI_isGraphCyclic(BGraph *graph) BLI_flagNodes(graph, 0); /* detectCycles in subgraphs */ - for (node = graph->nodes.first; node && value == 0; node = node->next) - { + for (node = graph->nodes.first; node && value == 0; node = node->next) { /* only for nodes in subgraphs that haven't been visited yet */ - if (node->flag == 0) - { + if (node->flag == 0) { value = value || detectCycle(node, NULL); } } @@ -415,10 +368,8 @@ BArc * BLI_findConnectedArc(BGraph *graph, BArc *arc, BNode *v) { BArc *nextArc; - for (nextArc = graph->arcs.first; nextArc; nextArc = nextArc->next) - { - if (arc != nextArc && (nextArc->head == v || nextArc->tail == v)) - { + for (nextArc = graph->arcs.first; nextArc; nextArc = nextArc->next) { + if (arc != nextArc && (nextArc->head == v || nextArc->tail == v)) { break; } } @@ -434,30 +385,24 @@ static int subtreeShape(BNode *node, BArc *rootArc, int include_root) node->flag = 1; - if (include_root) - { + if (include_root) { BNode *newNode = BLI_otherNode(rootArc, node); return subtreeShape(newNode, rootArc, 0); } - else - { + else { /* Base case, no arcs leading away */ - if (node->arcs == NULL || *(node->arcs) == NULL) - { + if (node->arcs == NULL || *(node->arcs) == NULL) { return 0; } - else - { + else { int i; - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *arc = node->arcs[i]; BNode *newNode = BLI_otherNode(arc, node); /* stop immediate and cyclic backtracking */ - if (arc != rootArc && newNode->flag == 0) - { + if (arc != rootArc && newNode->flag == 0) { depth += subtreeShape(newNode, arc, 0); } } @@ -480,13 +425,11 @@ float BLI_subtreeLength(BNode *node) node->flag = 0; /* flag node as visited */ - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *arc = node->arcs[i]; BNode *other_node = BLI_otherNode(arc, node); - if (other_node->flag != 0) - { + if (other_node->flag != 0) { float subgraph_length = arc->length + BLI_subtreeLength(other_node); length = MAX2(length, subgraph_length); } @@ -503,15 +446,12 @@ void BLI_calcGraphLength(BGraph *graph) nb_subgraphs = BLI_FlagSubgraphs(graph); - for (i = 1; i <= nb_subgraphs; i++) - { + for (i = 1; i <= nb_subgraphs; i++) { BNode *node; - for (node = graph->nodes.first; node; node = node->next) - { + for (node = graph->nodes.first; node; node = node->next) { /* start on an external node of the subgraph */ - if (node->subgraph_index == i && node->degree == 1) - { + if (node->subgraph_index == i && node->degree == 1) { float subgraph_length = BLI_subtreeLength(node); length = MAX2(length, subgraph_length); break; @@ -542,32 +482,27 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring, int i; /* sort ring by angle */ - for (i = 0; i < total - 1; i++) - { + for (i = 0; i < total - 1; i++) { float minAngle = FLT_MAX; int minIndex = -1; int j; - for (j = i + 1; j < total; j++) - { + for (j = i + 1; j < total; j++) { float angle = dot_v3v3(ring[i].n, ring[j].n); /* map negative values to 1..2 */ - if (angle < 0) - { + if (angle < 0) { angle = 1 - angle; } - if (angle < minAngle) - { + if (angle < minAngle) { minIndex = j; minAngle = angle; } } /* swap if needed */ - if (minIndex != i + 1) - { + if (minIndex != i + 1) { RadialArc tmp; tmp = ring[i + 1]; ring[i + 1] = ring[minIndex]; @@ -575,8 +510,7 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring, } } - for (i = 0; i < total && symmetric; i++) - { + for (i = 0; i < total && symmetric; i++) { BNode *node1, *node2; float tangent[3]; float normal[3]; @@ -593,29 +527,25 @@ static void testRadialSymmetry(BGraph *graph, BNode* root_node, RadialArc* ring, BLI_mirrorAlongAxis(p, root_node->p, normal); /* check if it's within limit before continuing */ - if (len_v3v3(node1->p, p) > limit) - { + if (len_v3v3(node1->p, p) > limit) { symmetric = 0; } } - if (symmetric) - { + if (symmetric) { /* mark node as symmetric physically */ copy_v3_v3(root_node->symmetry_axis, axis); root_node->symmetry_flag |= SYM_PHYSICAL; root_node->symmetry_flag |= SYM_RADIAL; /* FLAG SYMMETRY GROUP */ - for (i = 0; i < total; i++) - { + for (i = 0; i < total; i++) { ring[i].arc->symmetry_group = group; ring[i].arc->symmetry_flag = SYM_SIDE_RADIAL + i; } - if (graph->radial_symmetry) - { + if (graph->radial_symmetry) { graph->radial_symmetry(root_node, ring, total); } } @@ -634,13 +564,11 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo root_node->symmetry_flag |= SYM_TOPOLOGICAL; /* total the number of arcs in the symmetry ring */ - for (i = 0; i < root_node->degree; i++) - { + for (i = 0; i < root_node->degree; i++) { BArc *connectedArc = root_node->arcs[i]; /* depth is store as a negative in flag. symmetry level is positive */ - if (connectedArc->symmetry_level == -depth) - { + if (connectedArc->symmetry_level == -depth) { total++; } } @@ -649,13 +577,11 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo unit = ring; /* fill in the ring */ - for (unit = ring, i = 0; i < root_node->degree; i++) - { + for (unit = ring, i = 0; i < root_node->degree; i++) { BArc *connectedArc = root_node->arcs[i]; /* depth is store as a negative in flag. symmetry level is positive */ - if (connectedArc->symmetry_level == -depth) - { + if (connectedArc->symmetry_level == -depth) { BNode *otherNode = BLI_otherNode(connectedArc, root_node); float vec[3]; @@ -676,19 +602,16 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo * using a rather bogus insertion sort * butrings will never get too big to matter * */ - for (i = 0; i < total; i++) - { + for (i = 0; i < total; i++) { int j; - for (j = i - 1; j >= 0; j--) - { + for (j = i - 1; j >= 0; j--) { BArc *arc1, *arc2; arc1 = ring[j].arc; arc2 = ring[j + 1].arc; - if (arc1->length > arc2->length) - { + if (arc1->length > arc2->length) { /* swap with smaller */ RadialArc tmp; @@ -696,8 +619,7 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo ring[j + 1] = ring[j]; ring[j] = tmp; } - else - { + else { break; } } @@ -707,38 +629,32 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo first = 0; group = 0; - for (i = 1; i < total; i++) - { + for (i = 1; i < total; i++) { int dispatch = 0; int last = i - 1; - if (fabsf(ring[first].arc->length - ring[i].arc->length) > limit) - { + if (fabsf(ring[first].arc->length - ring[i].arc->length) > limit) { dispatch = 1; } /* if not dispatching already and on last arc * Dispatch using current arc as last * */ - if (dispatch == 0 && i == total - 1) - { + if (dispatch == 0 && i == total - 1) { last = i; dispatch = 1; } - if (dispatch) - { + if (dispatch) { int sub_total = last - first + 1; group += 1; - if (sub_total == 1) - { + if (sub_total == 1) { group -= 1; /* not really a group so decrement */ /* NOTHING TO DO */ } - else if (sub_total == 2) - { + else if (sub_total == 2) { BArc *arc1, *arc2; BNode *node1, *node2; @@ -750,14 +666,12 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo testAxialSymmetry(graph, root_node, node1, node2, arc1, arc2, axis, limit, group); } - else if (sub_total != total) /* allocate a new sub ring if needed */ - { + else if (sub_total != total) /* allocate a new sub ring if needed */ { RadialArc *sub_ring = MEM_callocN(sizeof(RadialArc) * sub_total, "radial symmetry ring"); int sub_i; /* fill in the sub ring */ - for (sub_i = 0; sub_i < sub_total; sub_i++) - { + for (sub_i = 0; sub_i < sub_total; sub_i++) { sub_ring[sub_i] = ring[first + sub_i]; } @@ -765,8 +679,7 @@ static void handleRadialSymmetry(BGraph *graph, BNode *root_node, int depth, flo MEM_freeN(sub_ring); } - else if (sub_total == total) - { + else if (sub_total == total) { testRadialSymmetry(graph, root_node, ring, total, axis, limit, group); } @@ -786,12 +699,10 @@ static void flagAxialSymmetry(BNode *root_node, BNode *end_node, BArc *arc, int sub_v3_v3v3(vec, end_node->p, root_node->p); - if (dot_v3v3(vec, root_node->symmetry_axis) < 0) - { + if (dot_v3v3(vec, root_node->symmetry_axis) < 0) { arc->symmetry_flag |= SYM_SIDE_NEGATIVE; } - else - { + else { arc->symmetry_flag |= SYM_SIDE_POSITIVE; } } @@ -809,16 +720,13 @@ static void testAxialSymmetry(BGraph *graph, BNode* root_node, BNode* node1, BNo cross_v3_v3v3(nor, vec, axis); - if (abs(nor[0]) > abs(nor[1]) && abs(nor[0]) > abs(nor[2]) && nor[0] < 0) - { + if (abs(nor[0]) > abs(nor[1]) && abs(nor[0]) > abs(nor[2]) && nor[0] < 0) { negate_v3(nor); } - else if (abs(nor[1]) > abs(nor[0]) && abs(nor[1]) > abs(nor[2]) && nor[1] < 0) - { + else if (abs(nor[1]) > abs(nor[0]) && abs(nor[1]) > abs(nor[2]) && nor[1] < 0) { negate_v3(nor); } - else if (abs(nor[2]) > abs(nor[1]) && abs(nor[2]) > abs(nor[0]) && nor[2] < 0) - { + else if (abs(nor[2]) > abs(nor[1]) && abs(nor[2]) > abs(nor[0]) && nor[2] < 0) { negate_v3(nor); } @@ -827,8 +735,7 @@ static void testAxialSymmetry(BGraph *graph, BNode* root_node, BNode* node1, BNo BLI_mirrorAlongAxis(p, root_node->p, nor); /* check if it's within limit before continuing */ - if (len_v3v3(node1->p, p) <= limit) - { + if (len_v3v3(node1->p, p) <= limit) { /* mark node as symmetric physically */ copy_v3_v3(root_node->symmetry_axis, nor); root_node->symmetry_flag |= SYM_PHYSICAL; @@ -838,13 +745,11 @@ static void testAxialSymmetry(BGraph *graph, BNode* root_node, BNode* node1, BNo flagAxialSymmetry(root_node, node1, arc1, group); flagAxialSymmetry(root_node, node2, arc2, group); - if (graph->axial_symmetry) - { + if (graph->axial_symmetry) { graph->axial_symmetry(root_node, node1, node2, arc1, arc2); } } - else - { + else { /* NOT SYMMETRIC */ } } @@ -858,20 +763,16 @@ static void handleAxialSymmetry(BGraph *graph, BNode *root_node, int depth, floa /* mark topological symmetry */ root_node->symmetry_flag |= SYM_TOPOLOGICAL; - for (i = 0; i < root_node->degree; i++) - { + for (i = 0; i < root_node->degree; i++) { BArc *connectedArc = root_node->arcs[i]; /* depth is store as a negative in flag. symmetry level is positive */ - if (connectedArc->symmetry_level == -depth) - { - if (arc1 == NULL) - { + if (connectedArc->symmetry_level == -depth) { + if (arc1 == NULL) { arc1 = connectedArc; node1 = BLI_otherNode(arc1, root_node); } - else - { + else { arc2 = connectedArc; node2 = BLI_otherNode(arc2, root_node); break; /* Can stop now, the two arcs have been found */ @@ -880,8 +781,7 @@ static void handleAxialSymmetry(BGraph *graph, BNode *root_node, int depth, floa } /* shouldn't happen, but just to be sure */ - if (node1 == NULL || node2 == NULL) - { + if (node1 == NULL || node2 == NULL) { return; } @@ -897,18 +797,15 @@ static void markdownSecondarySymmetry(BGraph *graph, BNode *node, int depth, int /* count the number of branches in this symmetry group * and determinate the axis of symmetry * */ - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *connectedArc = node->arcs[i]; /* depth is store as a negative in flag. symmetry level is positive */ - if (connectedArc->symmetry_level == -depth) - { + if (connectedArc->symmetry_level == -depth) { count++; } /* If arc is on the axis */ - else if (connectedArc->symmetry_level == level) - { + else if (connectedArc->symmetry_level == level) { add_v3_v3(axis, connectedArc->head->p); sub_v3_v3v3(axis, axis, connectedArc->tail->p); } @@ -917,22 +814,18 @@ static void markdownSecondarySymmetry(BGraph *graph, BNode *node, int depth, int normalize_v3(axis); /* Split between axial and radial symmetry */ - if (count == 2) - { + if (count == 2) { handleAxialSymmetry(graph, node, depth, axis, limit); } - else - { + else { handleRadialSymmetry(graph, node, depth, axis, limit); } /* markdown secondary symetries */ - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *connectedArc = node->arcs[i]; - if (connectedArc->symmetry_level == -depth) - { + if (connectedArc->symmetry_level == -depth) { /* markdown symmetry for branches corresponding to the depth */ markdownSymmetryArc(graph, connectedArc, node, level + 1, limit); } @@ -944,19 +837,16 @@ static void markdownSymmetryArc(BGraph *graph, BArc *arc, BNode *node, int level int i; /* if arc is null, we start straight from a node */ - if (arc) - { + if (arc) { arc->symmetry_level = level; node = BLI_otherNode(arc, node); } - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *connectedArc = node->arcs[i]; - if (connectedArc != arc) - { + if (connectedArc != arc) { BNode *connectedNode = BLI_otherNode(connectedArc, node); /* symmetry level is positive value, negative values is subtree depth */ @@ -966,26 +856,22 @@ static void markdownSymmetryArc(BGraph *graph, BArc *arc, BNode *node, int level arc = NULL; - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { int issymmetryAxis = 0; BArc *connectedArc = node->arcs[i]; /* only arcs not already marked as symetric */ - if (connectedArc->symmetry_level < 0) - { + if (connectedArc->symmetry_level < 0) { int j; /* true by default */ issymmetryAxis = 1; - for (j = 0; j < node->degree; j++) - { + for (j = 0; j < node->degree; j++) { BArc *otherArc = node->arcs[j]; /* different arc, same depth */ - if (otherArc != connectedArc && otherArc->symmetry_level == connectedArc->symmetry_level) - { + if (otherArc != connectedArc && otherArc->symmetry_level == connectedArc->symmetry_level) { /* not on the symmetry axis */ issymmetryAxis = 0; break; @@ -994,15 +880,12 @@ static void markdownSymmetryArc(BGraph *graph, BArc *arc, BNode *node, int level } /* arc could be on the symmetry axis */ - if (issymmetryAxis == 1) - { + if (issymmetryAxis == 1) { /* no arc as been marked previously, keep this one */ - if (arc == NULL) - { + if (arc == NULL) { arc = connectedArc; } - else if (connectedArc->symmetry_level < arc->symmetry_level) - { + else if (connectedArc->symmetry_level < arc->symmetry_level) { /* go with more complex subtree as symmetry arc */ arc = connectedArc; } @@ -1010,20 +893,17 @@ static void markdownSymmetryArc(BGraph *graph, BArc *arc, BNode *node, int level } /* go down the arc continuing the symmetry axis */ - if (arc) - { + if (arc) { markdownSymmetryArc(graph, arc, node, level, limit); } /* secondary symmetry */ - for (i = 0; i < node->degree; i++) - { + for (i = 0; i < node->degree; i++) { BArc *connectedArc = node->arcs[i]; /* only arcs not already marked as symetric and is not the next arc on the symmetry axis */ - if (connectedArc->symmetry_level < 0) - { + if (connectedArc->symmetry_level < 0) { /* subtree depth is store as a negative value in the symmetry */ markdownSecondarySymmetry(graph, node, -connectedArc->symmetry_level, level, limit); } @@ -1035,13 +915,11 @@ void BLI_markdownSymmetry(BGraph *graph, BNode *root_node, float limit) BNode *node; BArc *arc; - if (root_node == NULL) - { + if (root_node == NULL) { return; } - if (BLI_isGraphCyclic(graph)) - { + if (BLI_isGraphCyclic(graph)) { return; } @@ -1054,37 +932,29 @@ void BLI_markdownSymmetry(BGraph *graph, BNode *root_node, float limit) node = root_node; /* sanity check REMOVE ME */ - if (node->degree > 0) - { + if (node->degree > 0) { arc = node->arcs[0]; - if (node->degree == 1) - { + if (node->degree == 1) { markdownSymmetryArc(graph, arc, node, 1, limit); } - else - { + else { markdownSymmetryArc(graph, NULL, node, 1, limit); } /* mark down non-symetric arcs */ - for (arc = graph->arcs.first; arc; arc = arc->next) - { - if (arc->symmetry_level < 0) - { + for (arc = graph->arcs.first; arc; arc = arc->next) { + if (arc->symmetry_level < 0) { arc->symmetry_level = 0; } - else - { + else { /* mark down nodes with the lowest level symmetry axis */ - if (arc->head->symmetry_level == 0 || arc->head->symmetry_level > arc->symmetry_level) - { + if (arc->head->symmetry_level == 0 || arc->head->symmetry_level > arc->symmetry_level) { arc->head->symmetry_level = arc->symmetry_level; } - if (arc->tail->symmetry_level == 0 || arc->tail->symmetry_level > arc->symmetry_level) - { + if (arc->tail->symmetry_level == 0 || arc->tail->symmetry_level > arc->symmetry_level) { arc->tail->symmetry_level = arc->symmetry_level; } } @@ -1108,16 +978,13 @@ void* IT_peek(void* arg, int n) { BArcIterator *iter = (BArcIterator*)arg; - if (iter->index + n < 0) - { + if (iter->index + n < 0) { return iter->head(iter); } - else if (iter->index + n >= iter->length) - { + else if (iter->index + n >= iter->length) { return iter->tail(iter); } - else - { + else { return iter->peek(iter, n); } } diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c index b2b18286cfb..f7114822dfd 100644 --- a/source/blender/blenlib/intern/listbase.c +++ b/source/blender/blenlib/intern/listbase.c @@ -184,8 +184,7 @@ void BLI_sortlist(ListBase *listbase, int (*cmp)(void *, void *)) BLI_remlink(listbase, current); - while (previous && cmp(previous, current) == 1) - { + while (previous && cmp(previous, current) == 1) { previous = previous->prev; } diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 3c59ca8d52b..f52921cd19b 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1156,7 +1156,7 @@ char *BLI_get_folder_version(const int id, const int ver, const int do_check) { static char path[FILE_MAX] = ""; int ok; - switch(id) { + switch (id) { case BLENDER_RESOURCE_PATH_USER: ok= get_path_user(path, NULL, NULL, NULL, ver); break; diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index 7a955cf6ed9..f4481c37f2d 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -1151,7 +1151,7 @@ static void pbvh_update_draw_buffers(PBVH *bvh, PBVHNode **nodes, int totnode) } if (node->flag & PBVH_UpdateDrawBuffers) { - switch(bvh->type) { + switch (bvh->type) { case PBVH_GRIDS: GPU_update_grid_buffers(node->draw_buffers, bvh->grids, @@ -1290,7 +1290,9 @@ void BLI_pbvh_get_grid_updates(PBVH *bvh, int clear, void ***gridfaces, int *tot for (hiter = BLI_ghashIterator_new(map), i = 0; !BLI_ghashIterator_isDone(hiter); BLI_ghashIterator_step(hiter), ++i) + { faces[i]= BLI_ghashIterator_getKey(hiter); + } BLI_ghashIterator_free(hiter); @@ -1345,7 +1347,7 @@ void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *to { int tot; - switch(bvh->type) { + switch (bvh->type) { case PBVH_GRIDS: tot= node->totprim*bvh->gridsize*bvh->gridsize; if (totvert) *totvert= tot; @@ -1360,7 +1362,7 @@ void BLI_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *to void BLI_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, DMGridData ***griddata, DMGridAdjacency **gridadj) { - switch(bvh->type) { + switch (bvh->type) { case PBVH_GRIDS: if (grid_indices) *grid_indices= node->prim_indices; if (totgrid) *totgrid= node->totprim; @@ -1504,7 +1506,7 @@ int BLI_pbvh_node_raycast(PBVH *bvh, PBVHNode *node, float (*origco)[3], if (node->flag & PBVH_FullyHidden) return 0; - switch(bvh->type) { + switch (bvh->type) { case PBVH_FACES: vert = bvh->verts; faces= node->prim_indices; diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index 4c92a872ed7..b2245226a3c 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -125,7 +125,7 @@ size_t BLI_strescape(char *dst, const char *src, const size_t maxlen) { size_t len= 0; while (len < maxlen) { - switch(*src) { + switch (*src) { case '\0': goto escape_finish; case '\\': diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index aede08be7f9..20c5c8082ce 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -168,7 +168,7 @@ static const size_t utf8_skip_data[256] = { size_t utf8_size; \ while (*src != '\0' && (utf8_size= utf8_skip_data[*src]) < maxncpy) { \ maxncpy -= utf8_size; \ - switch(utf8_size) { \ + switch (utf8_size) { \ case 6: *dst ++ = *src ++; \ case 5: *dst ++ = *src ++; \ case 4: *dst ++ = *src ++; \ diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index 49990a953f6..8f3131c733a 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -156,8 +156,7 @@ LinkNode *BLO_blendhandle_get_previews(BlendHandle *bh, int ofblocktype, int *to for (bhead= blo_firstbhead(fd); bhead; bhead= blo_nextbhead(fd, bhead)) { if (bhead->code==ofblocktype) { char *idname= bhead_id_name(fd, bhead); - switch(GS(idname)) - { + switch (GS(idname)) { case ID_MA: /* fall through */ case ID_TE: /* fall through */ case ID_IM: /* fall through */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d278d3733e6..545ba2f198f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1061,8 +1061,7 @@ void blo_freefiledata(FileData *fd) close(fd->filedes); } - if (fd->gzfiledes != NULL) - { + if (fd->gzfiledes != NULL) { gzclose(fd->gzfiledes); } @@ -2756,9 +2755,9 @@ static void switch_endian_keyblock(Key *key, KeyBlock *kb) cp= key->elemstr; poin= data; - while ( cp[0] ) { /* cp[0]==amount */ + while ( cp[0] ) { /* cp[0] == amount */ - switch(cp[1]) { /* cp[1]= type */ + switch (cp[1]) { /* cp[1] = type */ case IPO_FLOAT: case IPO_BPOINT: case IPO_BEZTRIPLE: @@ -3442,7 +3441,7 @@ static void lib_link_particlesettings(FileData *fd, Main *main) for (; state; state=state->next) { rule = state->rules.first; for (; rule; rule=rule->next) - switch(rule->type) { + switch (rule->type) { case eBoidRuleType_Goal: case eBoidRuleType_Avoid: { @@ -4235,8 +4234,7 @@ static void lib_link_object(FileData *fd, Main *main) { SmokeModifierData *smd = (SmokeModifierData *)modifiers_findByType(ob, eModifierType_Smoke); - if (smd && smd->type == MOD_SMOKE_TYPE_DOMAIN && smd->domain) - { + if (smd && smd->type == MOD_SMOKE_TYPE_DOMAIN && smd->domain) { smd->domain->flags |= MOD_SMOKE_FILE_LOAD; /* flag for refreshing the simulation after loading */ } } @@ -4359,8 +4357,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) else if (md->type==eModifierType_Smoke) { SmokeModifierData *smd = (SmokeModifierData*) md; - if (smd->type==MOD_SMOKE_TYPE_DOMAIN) - { + if (smd->type==MOD_SMOKE_TYPE_DOMAIN) { smd->flow = NULL; smd->coll = NULL; smd->domain = newdataadr(fd, smd->domain); @@ -4405,8 +4402,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) smd->flow = NULL; smd->domain = NULL; smd->coll = newdataadr(fd, smd->coll); - if (smd->coll) - { + if (smd->coll) { smd->coll->points = NULL; smd->coll->numpoints = 0; } @@ -4418,8 +4414,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) else if (md->type==eModifierType_DynamicPaint) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md; - if (pmd->canvas) - { + if (pmd->canvas) { pmd->canvas = newdataadr(fd, pmd->canvas); pmd->canvas->pmd = pmd; pmd->canvas->dm = NULL; @@ -4439,8 +4434,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb) } } } - if (pmd->brush) - { + if (pmd->brush) { pmd->brush = newdataadr(fd, pmd->brush); pmd->brush->pmd = pmd; pmd->brush->psys = newdataadr(fd, pmd->brush->psys); @@ -6089,8 +6083,7 @@ static void direct_link_sound(FileData *fd, bSound *sound) sound->waveform = NULL; // versioning stuff, if there was a cache, then we enable caching: - if (sound->cache) - { + if (sound->cache) { sound->flags |= SOUND_FLAGS_CACHING; sound->cache = NULL; } @@ -6233,8 +6226,7 @@ static void lib_link_movieclip(FileData *fd, Main *main) static const char *dataname(short id_code) { - - switch( id_code ) { + switch ( id_code ) { case ID_OB: return "Data from OB"; case ID_ME: return "Data from ME"; case ID_IP: return "Data from IP"; @@ -6344,7 +6336,7 @@ static BHead *read_libblock(FileData *fd, Main *main, BHead *bhead, int flag, ID bhead= read_data_into_oldnewmap(fd, bhead, allocname); /* init pointers direct data */ - switch( GS(id->name) ) { + switch (GS(id->name)) { case ID_WM: direct_link_windowmanager(fd, (wmWindowManager *)id); break; @@ -6922,7 +6914,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) if (sl) { /* first channels for ipo action nla... */ - switch(sl->spacetype) { + switch (sl->spacetype) { case SPACE_IPO: ar= MEM_callocN(sizeof(ARegion), "area region from do_versions"); BLI_addtail(lb, ar); @@ -7044,7 +7036,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) if (sl) { /* if active spacetype has view2d data, copy that over to main region */ /* and we split view3d */ - switch(sl->spacetype) { + switch (sl->spacetype) { case SPACE_VIEW3D: view3d_split_250((View3D *)sl, lb); break; @@ -7450,8 +7442,7 @@ static void do_version_constraints_radians_degrees_250(ListBase *lb) static void do_version_old_trackto_to_constraints(Object *ob) { /* create new trackto constraint from the relationship */ - if (ob->track) - { + if (ob->track) { bConstraint *con= add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO); bTrackToConstraint *data = con->data; @@ -8336,8 +8327,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Mesh *me; sound = main->sound.first; - while (sound) - { + while (sound) { sound->max_gain = 1.0; sound->min_gain = 0.0; sound->distance = 1.0; @@ -9753,17 +9743,16 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (md->type==eModifierType_Mirror) { MirrorModifierData *mmd = (MirrorModifierData*) md; - switch(mmd->axis) - { - case 0: - mmd->flag |= MOD_MIR_AXIS_X; - break; - case 1: - mmd->flag |= MOD_MIR_AXIS_Y; - break; - case 2: - mmd->flag |= MOD_MIR_AXIS_Z; - break; + switch (mmd->axis) { + case 0: + mmd->flag |= MOD_MIR_AXIS_X; + break; + case 1: + mmd->flag |= MOD_MIR_AXIS_Y; + break; + case 2: + mmd->flag |= MOD_MIR_AXIS_Z; + break; } mmd->axis = 0; @@ -10062,8 +10051,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) * */ { Scene *sce; - for (sce=main->scene.first; sce; sce = sce->id.next) - { + for (sce=main->scene.first; sce; sce = sce->id.next) { if (sce->toolsettings->skgen_subdivisions[0] == sce->toolsettings->skgen_subdivisions[1] || sce->toolsettings->skgen_subdivisions[0] == sce->toolsettings->skgen_subdivisions[2] || sce->toolsettings->skgen_subdivisions[1] == sce->toolsettings->skgen_subdivisions[2]) @@ -10479,13 +10467,11 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } // convert fluids to modifier - if (main->versionfile < 246 || (main->versionfile == 246 && main->subversionfile < 1)) - { + if (main->versionfile < 246 || (main->versionfile == 246 && main->subversionfile < 1)) { Object *ob; for (ob = main->object.first; ob; ob= ob->id.next) { - if (ob->fluidsimSettings) - { + if (ob->fluidsimSettings) { FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifier_new(eModifierType_Fluidsim); BLI_addhead(&ob->modifiers, (ModifierData *)fluidmd); @@ -10809,10 +10795,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) bActuator *act; int a; - for (sound = main->sound.first; sound; sound = sound->id.next) - { - if (sound->newpackedfile) - { + for (sound = main->sound.first; sound; sound = sound->id.next) { + if (sound->newpackedfile) { sound->packedfile = sound->newpackedfile; sound->newpackedfile = NULL; } @@ -10822,8 +10806,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (act= ob->actuators.first; act; act= act->next) { if (act->type == ACT_SOUND) { bSoundActuator *sAct = (bSoundActuator*) act->data; - if (sAct->sound) - { + if (sAct->sound) { sound = newlibadr(fd, lib, sAct->sound); sAct->flag = sound->flags & SOUND_FLAGS_3D ? ACT_SND_3D_SOUND : 0; sAct->pitch = sound->pitch; @@ -10846,13 +10829,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - for (scene = main->scene.first; scene; scene = scene->id.next) - { - if (scene->ed && scene->ed->seqbasep) - { + for (scene = main->scene.first; scene; scene = scene->id.next) { + if (scene->ed && scene->ed->seqbasep) { SEQ_BEGIN(scene->ed, seq) { - if (seq->type == SEQ_HD_SOUND) - { + if (seq->type == SEQ_HD_SOUND) { char str[FILE_MAX]; BLI_join_dirfile(str, sizeof(str), seq->strip->dir, seq->strip->stripdata->name); BLI_path_abs(str, main->name); @@ -11228,8 +11208,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (tex->vd->extend == 0) tex->vd->extend = TEX_CLIP; - for (sce= main->scene.first; sce; sce= sce->id.next) - { + for (sce= main->scene.first; sce; sce= sce->id.next) { if (sce->audio.main == 0.0f) sce->audio.main = 1.0f; @@ -11371,8 +11350,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 8)) - { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 8)) { { Scene *sce= main->scene.first; while (sce) { @@ -11494,8 +11472,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 9)) - { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 9)) { Scene *sce; Mesh *me; Object *ob; @@ -11521,8 +11498,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 10)) - { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 10)) { Object *ob; /* properly initialize hair clothsim data on old files */ @@ -11539,8 +11515,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } /* fix bad area setup in subversion 10 */ - if (main->versionfile == 250 && main->subversionfile == 10) - { + if (main->versionfile == 250 && main->subversionfile == 10) { /* fix for new view type in sequencer */ bScreen *screen; ScrArea *sa; @@ -11579,8 +11554,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 11)) - { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 11)) { { /* fix for new view type in sequencer */ bScreen *screen; @@ -11622,8 +11596,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 12)) - { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 12)) { Scene *sce; Object *ob; Brush *brush; @@ -11984,8 +11957,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } - if (main->versionfile < 253) - { + if (main->versionfile < 253) { Object *ob; Scene *scene; bScreen *sc; @@ -12196,8 +12168,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 253 || (main->versionfile == 253 && main->subversionfile < 1)) - { + if (main->versionfile < 253 || (main->versionfile == 253 && main->subversionfile < 1)) { Object *ob; for (ob = main->object.first; ob; ob = ob->id.next) { @@ -12206,8 +12177,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (md->type == eModifierType_Smoke) { SmokeModifierData *smd = (SmokeModifierData *)md; - if ((smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) - { + if ((smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) { smd->domain->vorticity = 2.0f; smd->domain->time_scale = 1.0f; @@ -12226,8 +12196,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (md2->type == eModifierType_Smoke) { SmokeModifierData *smd2 = (SmokeModifierData *)md2; - if ((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) - { + if ((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) { smd2->flow->flags |= MOD_SMOKE_FLOW_INITVELOCITY; } } @@ -12313,8 +12282,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (act= ob->actuators.first; act; act= act->next) { if (act->type==ACT_STEERING) { bSteeringActuator* stact = act->data; - if (stact->facingaxis==0) - { + if (stact->facingaxis==0) { stact->facingaxis=1; } } @@ -12574,8 +12542,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Scene *scene; Sequence *seq; - for (scene=main->scene.first; scene; scene=scene->id.next) - { + for (scene=main->scene.first; scene; scene=scene->id.next) { scene->r.ffcodecdata.audio_channels = 2; scene->audio.volume = 1.0f; SEQ_BEGIN(scene->ed, seq) { @@ -12749,8 +12716,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) { /* set defaults for obstacle avoidance, recast data */ Scene *sce; - for (sce = main->scene.first; sce; sce = sce->id.next) - { + for (sce = main->scene.first; sce; sce = sce->id.next) { if (sce->gm.levelHeight == 0.f) sce->gm.levelHeight = 2.f; @@ -12930,8 +12896,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 6)) - { + if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 6)) { Scene *sce; MovieClip *clip; bScreen *sc; @@ -12995,8 +12960,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 8)) - { + if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 8)) { Brush *brush; for (brush= main->brush.first; brush; brush= brush->id.next) { @@ -13005,8 +12969,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 1)) - { + if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 1)) { { /* update use flags for node sockets (was only temporary before) */ Scene *sce; @@ -13107,8 +13070,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 2)) - { + if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 2)) { { /* convert Camera Actuator values to defines */ Object *ob; @@ -13142,8 +13104,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 3)) - { + if (main->versionfile < 261 || (main->versionfile == 261 && main->subversionfile < 3)) { { /* convert extended ascii to utf-8 for text editor */ Text *text; @@ -13169,8 +13130,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (md= ob->modifiers.first; md; md= md->next) { if (md->type == eModifierType_DynamicPaint) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md; - if (pmd->canvas) - { + if (pmd->canvas) { DynamicPaintSurface *surface = pmd->canvas->surfaces.first; for (; surface; surface=surface->next) { surface->color_dry_threshold = 1.0f; @@ -13185,8 +13145,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 262) - { + if (main->versionfile < 262) { Object *ob; for (ob=main->object.first; ob; ob= ob->id.next) { ModifierData *md; @@ -13201,8 +13160,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 263) - { + if (main->versionfile < 263) { /* set fluidsim rate. the version patch for this in 2.62 was wrong, so * try to correct it, if rate is 0.0 that's likely not intentional */ Object *ob; @@ -13219,8 +13177,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 1)) - { + if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 1)) { /* update use flags for node sockets (was only temporary before) */ Scene *sce; bNodeTree *ntree; @@ -13235,8 +13192,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } /* only swap for pre-release bmesh merge which had MLoopCol red/blue swap */ - if (main->versionfile == 262 && main->subversionfile == 1) - { + if (main->versionfile == 262 && main->subversionfile == 1) { { Mesh *me; for (me = main->mesh.first; me; me = me->id.next) { @@ -13246,8 +13202,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } - if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 2)) - { + if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 2)) { { /* Set new idname of keyingsets from their now "label-only" name. */ Scene *scene; @@ -13261,8 +13216,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 3)) - { + if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 3)) { Object *ob; ModifierData *md; @@ -13276,8 +13230,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 4)) - { + if (main->versionfile < 262 || (main->versionfile == 262 && main->subversionfile < 4)) { /* Read Viscosity presets from older files */ Object *ob; @@ -13301,8 +13254,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) - if (main->versionfile < 263) - { + if (main->versionfile < 263) { /* Default for old files is to save particle rotations to pointcache */ ParticleSettings *part; for (part = main->particle.first; part; part = part->id.next) @@ -13440,7 +13392,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath) BLI_strncpy(bfd->main->name, filepath, sizeof(bfd->main->name)); while (bhead) { - switch(bhead->code) { + switch (bhead->code) { case DATA: case DNA1: case TEST: /* used as preview since 2.5x */ @@ -14336,7 +14288,7 @@ static void expand_main(FileData *fd, Main *mainvar) while (id) { if (id->flag & LIB_TEST) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_OB: expand_object(fd, mainvar, (Object *)id); diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 61969c7878a..ab620e983d5 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -837,7 +837,7 @@ static void write_boid_state(WriteData *wd, BoidState *state) writestruct(wd, DATA, "BoidState", 1, state); for (; rule; rule=rule->next) { - switch(rule->type) { + switch (rule->type) { case eBoidRuleType_Goal: case eBoidRuleType_Avoid: writestruct(wd, DATA, "BoidRuleGoalAvoid", 1, rule); @@ -1030,7 +1030,7 @@ static void write_sensors(WriteData *wd, ListBase *lb) writedata(wd, DATA, sizeof(void *)*sens->totlinks, sens->links); - switch(sens->type) { + switch (sens->type) { case SENS_NEAR: writestruct(wd, DATA, "bNearSensor", 1, sens->data); break; @@ -1091,7 +1091,7 @@ static void write_controllers(WriteData *wd, ListBase *lb) writedata(wd, DATA, sizeof(void *)*cont->totlinks, cont->links); - switch(cont->type) { + switch (cont->type) { case CONT_EXPRESSION: writestruct(wd, DATA, "bExpressionCont", 1, cont->data); break; @@ -1114,7 +1114,7 @@ static void write_actuators(WriteData *wd, ListBase *lb) while (act) { writestruct(wd, DATA, "bActuator", 1, act); - switch(act->type) { + switch (act->type) { case ACT_ACTION: case ACT_SHAPEACTION: writestruct(wd, DATA, "bActionActuator", 1, act->data); @@ -1316,10 +1316,8 @@ static void write_modifiers(WriteData *wd, ListBase *modbase) else if (md->type==eModifierType_Smoke) { SmokeModifierData *smd = (SmokeModifierData*) md; - if (smd->type & MOD_SMOKE_TYPE_DOMAIN) - { - if (smd->domain) - { + if (smd->type & MOD_SMOKE_TYPE_DOMAIN) { + if (smd->domain) { write_pointcaches(wd, &(smd->domain->ptcaches[0])); /* create fake pointcache so that old blender versions can read it */ @@ -1353,8 +1351,7 @@ static void write_modifiers(WriteData *wd, ListBase *modbase) else if (md->type==eModifierType_DynamicPaint) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData*) md; - if (pmd->canvas) - { + if (pmd->canvas) { DynamicPaintSurface *surface; writestruct(wd, DATA, "DynamicPaintCanvasSettings", 1, pmd->canvas); @@ -1368,8 +1365,7 @@ static void write_modifiers(WriteData *wd, ListBase *modbase) writestruct(wd, DATA, "EffectorWeights", 1, surface->effector_weights); } } - if (pmd->brush) - { + if (pmd->brush) { writestruct(wd, DATA, "DynamicPaintBrushSettings", 1, pmd->brush); writestruct(wd, DATA, "ColorBand", 1, pmd->brush->paint_ramp); writestruct(wd, DATA, "ColorBand", 1, pmd->brush->vel_ramp); @@ -2124,7 +2120,7 @@ static void write_scenes(WriteData *wd, ListBase *scebase) if (seq->plugin) writestruct(wd, DATA, "PluginSeq", 1, seq->plugin); if (seq->effectdata) { - switch(seq->type) { + switch (seq->type) { case SEQ_COLOR: writestruct(wd, DATA, "SolidColorVars", 1, seq->effectdata); break; @@ -2258,7 +2254,7 @@ static void write_region(WriteData *wd, ARegion *ar, int spacetype) writestruct(wd, DATA, "ARegion", 1, ar); if (ar->regiondata) { - switch(spacetype) { + switch (spacetype) { case SPACE_VIEW3D: if (ar->regiontype==RGN_TYPE_WINDOW) { RegionView3D *rv3d= ar->regiondata; diff --git a/source/blender/bmesh/intern/bmesh_walkers.c b/source/blender/bmesh/intern/bmesh_walkers.c index a3b5d94ba8e..ea29c149c1a 100644 --- a/source/blender/bmesh/intern/bmesh_walkers.c +++ b/source/blender/bmesh/intern/bmesh_walkers.c @@ -226,8 +226,7 @@ void *BMW_state_add(BMWalker *walker) BMwGenericWalker *newstate; newstate = BLI_mempool_alloc(walker->worklist); newstate->depth = walker->depth; - switch (walker->order) - { + switch (walker->order) { case BMW_DEPTH_FIRST: BLI_addhead(&walker->states, newstate); break; diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c index 113e1ddc164..ec4b97d59f3 100644 --- a/source/blender/bmesh/intern/bmesh_walkers_impl.c +++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c @@ -880,7 +880,7 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker) } /* only walk to manifold edge */ if ((l->f->len % 2 == 0) && EDGE_CHECK(l->e) && - !BLI_ghash_haskey(walker->visithash, l->e)) + !BLI_ghash_haskey(walker->visithash, l->e)) #else diff --git a/source/blender/collada/AnimationExporter.cpp b/source/blender/collada/AnimationExporter.cpp index 778e3029266..c93ee832fe6 100644 --- a/source/blender/collada/AnimationExporter.cpp +++ b/source/blender/collada/AnimationExporter.cpp @@ -29,7 +29,7 @@ void forEachObjectInScene(Scene *sce, Functor &f) { Base *base= (Base*) sce->base.first; - while(base) { + while (base) { Object *ob = base->object; f(ob); @@ -59,13 +59,11 @@ void AnimationExporter::operator() (Object *ob) /* bool isMatAnim = false; */ /* UNUSED */ //Export transform animations - if (ob->adt && ob->adt->action) - { + if (ob->adt && ob->adt->action) { fcu = (FCurve*)ob->adt->action->curves.first; //transform matrix export for bones are temporarily disabled here. - if ( ob->type == OB_ARMATURE ) - { + if ( ob->type == OB_ARMATURE ) { bArmature *arm = (bArmature*)ob->data; for (Bone *bone = (Bone*)arm->bonebase.first; bone; bone = bone->next) write_bone_animation_matrix(ob, bone); @@ -79,59 +77,63 @@ void AnimationExporter::operator() (Object *ob) transformName = extract_transform_name( fcu->rna_path ); if ((!strcmp(transformName, "location") || !strcmp(transformName, "scale")) || - (!strcmp(transformName, "rotation_euler") && ob->rotmode == ROT_MODE_EUL)|| - (!strcmp(transformName, "rotation_quaternion"))) + (!strcmp(transformName, "rotation_euler") && ob->rotmode == ROT_MODE_EUL)|| + (!strcmp(transformName, "rotation_quaternion"))) + { dae_animation(ob ,fcu, transformName, false); + } fcu = fcu->next; } } //Export Lamp parameter animations - if ( (ob->type == OB_LAMP ) && ((Lamp*)ob ->data)->adt && ((Lamp*)ob ->data)->adt->action ) - { + if ( (ob->type == OB_LAMP ) && ((Lamp*)ob ->data)->adt && ((Lamp*)ob ->data)->adt->action ) { fcu = (FCurve*)(((Lamp*)ob ->data)->adt->action->curves.first); while (fcu) { transformName = extract_transform_name( fcu->rna_path ); - if ((!strcmp(transformName, "color")) || (!strcmp(transformName, "spot_size"))|| (!strcmp(transformName, "spot_blend"))|| - (!strcmp(transformName, "distance")) ) - dae_animation(ob , fcu, transformName, true ); + if ((!strcmp(transformName, "color")) || (!strcmp(transformName, "spot_size"))|| + (!strcmp(transformName, "spot_blend")) || (!strcmp(transformName, "distance"))) + { + dae_animation(ob , fcu, transformName, true); + } fcu = fcu->next; } } //Export Camera parameter animations - if ( (ob->type == OB_CAMERA ) && ((Camera*)ob ->data)->adt && ((Camera*)ob ->data)->adt->action ) - { + if ( (ob->type == OB_CAMERA ) && ((Camera*)ob ->data)->adt && ((Camera*)ob ->data)->adt->action ) { fcu = (FCurve*)(((Camera*)ob ->data)->adt->action->curves.first); while (fcu) { transformName = extract_transform_name( fcu->rna_path ); if ((!strcmp(transformName, "lens"))|| - (!strcmp(transformName, "ortho_scale"))|| - (!strcmp(transformName, "clip_end"))||(!strcmp(transformName, "clip_start"))) - dae_animation(ob , fcu, transformName, true ); + (!strcmp(transformName, "ortho_scale"))|| + (!strcmp(transformName, "clip_end"))||(!strcmp(transformName, "clip_start"))) + { + dae_animation(ob , fcu, transformName, true); + } fcu = fcu->next; } } //Export Material parameter animations. - for (int a = 0; a < ob->totcol; a++) - { + for (int a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); if (!ma) continue; - if (ma->adt && ma->adt->action) - { + if (ma->adt && ma->adt->action) { /* isMatAnim = true; */ fcu = (FCurve*)ma->adt->action->curves.first; while (fcu) { transformName = extract_transform_name( fcu->rna_path ); - if ((!strcmp(transformName, "specular_hardness"))||(!strcmp(transformName, "specular_color")) - ||(!strcmp(transformName, "diffuse_color"))||(!strcmp(transformName, "alpha"))|| - (!strcmp(transformName, "ior"))) + if ((!strcmp(transformName, "specular_hardness"))||(!strcmp(transformName, "specular_color")) || + (!strcmp(transformName, "diffuse_color"))||(!strcmp(transformName, "alpha")) || + (!strcmp(transformName, "ior"))) + { dae_animation(ob ,fcu, transformName, true, ma ); + } fcu = fcu->next; } } @@ -148,8 +150,7 @@ float * AnimationExporter::get_eul_source_for_quat(Object *ob ) float *eul = (float*)MEM_callocN(sizeof(float) * fcu->totvert * 3, "quat output source values"); float temp_quat[4]; float temp_eul[3]; - while(fcu) - { + while (fcu) { char * transformName = extract_transform_name( fcu->rna_path ); if ( !strcmp(transformName, "rotation_quaternion") ) { @@ -199,8 +200,7 @@ void AnimationExporter::dae_animation(Object* ob, FCurve *fcu, char* transformNa bool has_tangents = false; bool quatRotation = false; - if ( !strcmp(transformName, "rotation_quaternion") ) - { + if ( !strcmp(transformName, "rotation_quaternion") ) { fprintf(stderr, "quaternion rotation curves are not supported. rotation curve will not be exported\n"); quatRotation = true; return; @@ -223,23 +223,20 @@ void AnimationExporter::dae_animation(Object* ob, FCurve *fcu, char* transformNa if (fcu->array_index < 3) axis_name = axis_names[fcu->array_index]; } - - //no axis name. single parameter. - else{ + else { + /* no axis name. single parameter */ axis_name = ""; } std::string ob_name = std::string("null"); //Create anim Id - if (ob->type == OB_ARMATURE) - { + if (ob->type == OB_ARMATURE) { ob_name = getObjectBoneName( ob , fcu); BLI_snprintf(anim_id, sizeof(anim_id), "%s_%s.%s", (char*)translate_id(ob_name).c_str(), transformName, axis_name); } - else - { + else { if (ma) ob_name = id_name(ob) + "_material"; else @@ -257,18 +254,17 @@ void AnimationExporter::dae_animation(Object* ob, FCurve *fcu, char* transformNa std::string output_id; //quat rotations are skipped for now, because of complications with determining axis. - if (quatRotation) - { - float * eul = get_eul_source_for_quat(ob); - float * eul_axis = (float*)MEM_callocN(sizeof(float) * fcu->totvert, "quat output source values"); - for ( int i = 0 ; i< fcu->totvert ; i++) + if (quatRotation) { + float *eul = get_eul_source_for_quat(ob); + float *eul_axis = (float*)MEM_callocN(sizeof(float) * fcu->totvert, "quat output source values"); + for (int i = 0 ; i< fcu->totvert ; i++) { eul_axis[i] = eul[i*3 + fcu->array_index]; + } output_id= create_source_from_array(COLLADASW::InputSemantic::OUTPUT, eul_axis , fcu->totvert, quatRotation, anim_id, axis_name); MEM_freeN(eul); MEM_freeN(eul_axis); } - else - { + else { output_id= create_source_from_fcurve(COLLADASW::InputSemantic::OUTPUT, fcu, anim_id, axis_name); } // create interpolations source @@ -307,8 +303,7 @@ void AnimationExporter::dae_animation(Object* ob, FCurve *fcu, char* transformNa if ( !is_param ) target = translate_id(ob_name) + "/" + get_transform_sid(fcu->rna_path, -1, axis_name, true); - else - { + else { if ( ob->type == OB_LAMP ) target = get_light_id(ob) + "/" + get_light_param_sid(fcu->rna_path, -1, axis_name, true); @@ -349,8 +344,7 @@ bool AnimationExporter::is_bone_deform_group(Bone * bone) //Check if current bone is deform if ((bone->flag & BONE_NO_DEFORM) == 0 ) return true; //Check child bones - else - { + else { for (Bone *child = (Bone*)bone->childbase.first; child; child = child->next) { //loop through all the children until deform bone is found, and then return is_def = is_bone_deform_group(child); @@ -369,8 +363,7 @@ void AnimationExporter::sample_and_write_bone_animation_matrix(Object *ob_arm, B //char prefix[256]; FCurve* fcu = (FCurve*)ob_arm->adt->action->curves.first; - while(fcu) - { + while (fcu) { std::string bone_name = getObjectBoneName(ob_arm,fcu); int val = BLI_strcasecmp((char*)bone_name.c_str(),bone->name); if (val==0) break; @@ -511,7 +504,7 @@ float AnimationExporter::convert_angle(float angle) std::string AnimationExporter::get_semantic_suffix(COLLADASW::InputSemantic::Semantics semantic) { - switch(semantic) { + switch (semantic) { case COLLADASW::InputSemantic::INPUT: return INPUT_SOURCE_ID_SUFFIX; case COLLADASW::InputSemantic::OUTPUT: @@ -531,7 +524,7 @@ std::string AnimationExporter::get_semantic_suffix(COLLADASW::InputSemantic::Sem void AnimationExporter::add_source_parameters(COLLADASW::SourceBase::ParameterNameList& param, COLLADASW::InputSemantic::Semantics semantic, bool is_rot, const char *axis, bool transform) { - switch(semantic) { + switch (semantic) { case COLLADASW::InputSemantic::INPUT: param.push_back("TIME"); break; @@ -544,8 +537,7 @@ void AnimationExporter::add_source_parameters(COLLADASW::SourceBase::ParameterNa param.push_back(axis); } else - if ( transform ) - { + if ( transform ) { param.push_back("TRANSFORM"); } else { //assumes if axis isn't specified all axises are added @@ -778,8 +770,7 @@ std::string AnimationExporter::create_4x4_source(std::vector &frames , Ob // SECOND_LIFE_COMPATIBILITY // AFAIK animation to second life is via BVH, but no // reason to not have the collada-animation be correct - if (export_settings->second_life) - { + if (export_settings->second_life) { float temp[4][4]; copy_m4_m4(temp, bone->arm_mat); temp[3][0] = temp[3][1] = temp[3][2] = 0.0f; @@ -787,8 +778,7 @@ std::string AnimationExporter::create_4x4_source(std::vector &frames , Ob mult_m4_m4m4(mat, mat, temp); - if (bone->parent) - { + if (bone->parent) { copy_m4_m4(temp, bone->parent->arm_mat); temp[3][0] = temp[3][1] = temp[3][2] = 0.0f; @@ -1128,7 +1118,7 @@ bool AnimationExporter::hasAnimations(Scene *sce) { Base *base= (Base*) sce->base.first; - while(base) { + while (base) { Object *ob = base->object; FCurve *fcu = 0; @@ -1143,12 +1133,10 @@ bool AnimationExporter::hasAnimations(Scene *sce) fcu = (FCurve*)(((Camera*)ob ->data)->adt->action->curves.first); //Check Material Effect parameter animations. - for (int a = 0; a < ob->totcol; a++) - { + for (int a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); if (!ma) continue; - if (ma->adt && ma->adt->action) - { + if (ma->adt && ma->adt->action) { fcu = (FCurve*)ma->adt->action->curves.first; } } diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index e0079fbb8a0..8ef2235b6fb 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -138,8 +138,7 @@ void AnimationImporter::animation_to_fcurves(COLLADAFW::AnimationCurve *curve) bez.ipo = BEZT_IPO_CONST; //bez.h1 = bez.h2 = HD_AUTO; } - else - { + else { bez.h1 = bez.h2 = HD_AUTO; bez.ipo = BEZT_IPO_LIN; } @@ -789,17 +788,15 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , bool is_joint = node->getType() == COLLADAFW::Node::JOINT; COLLADAFW::Node *root = root_map.find(node->getUniqueId()) == root_map.end() ? node : root_map[node->getUniqueId()]; Object *ob = is_joint ? armature_importer->get_armature_for_joint(root) : object_map[node->getUniqueId()]; - if (!ob) - { + if (!ob) { fprintf(stderr, "cannot find Object for Node with id=\"%s\"\n", node->getOriginalId().c_str()); return; } bAction * act; - if ( (animType->transform) != 0 ) - { - const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL; + if ( (animType->transform) != 0 ) { + /* const char *bone_name = is_joint ? bc_get_joint_name(node) : NULL; */ /* UNUSED */ char joint_path[200]; if ( is_joint ) @@ -867,8 +864,7 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , } } - if ((animType->light) != 0) - { + if ((animType->light) != 0) { Lamp * lamp = (Lamp*) ob->data; if (!lamp->adt || !lamp->adt->action) act = verify_adt_action((ID*)&lamp->id, 1); @@ -880,22 +876,19 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , for (unsigned int i = 0; i < nodeLights.getCount(); i++) { const COLLADAFW::Light *light = (COLLADAFW::Light *) FW_object_map[nodeLights[i]->getInstanciatedObjectId()]; - if ((animType->light & LIGHT_COLOR) != 0) - { + if ((animType->light & LIGHT_COLOR) != 0) { const COLLADAFW::Color *col = &(light->getColor()); const COLLADAFW::UniqueId& listid = col->getAnimationList(); Assign_color_animations(listid, AnimCurves, "color"); } - if ((animType->light & LIGHT_FOA) != 0 ) - { + if ((animType->light & LIGHT_FOA) != 0 ) { const COLLADAFW::AnimatableFloat *foa = &(light->getFallOffAngle()); const COLLADAFW::UniqueId& listid = foa->getAnimationList(); Assign_float_animations( listid ,AnimCurves, "spot_size"); } - if ( (animType->light & LIGHT_FOE) != 0 ) - { + if ( (animType->light & LIGHT_FOE) != 0 ) { const COLLADAFW::AnimatableFloat *foe = &(light->getFallOffExponent()); const COLLADAFW::UniqueId& listid = foe->getAnimationList(); @@ -905,8 +898,7 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , } } - if ( (animType->camera) != 0) - { + if ( (animType->camera) != 0) { Camera * camera = (Camera*) ob->data; if (!camera->adt || !camera->adt->action) act = verify_adt_action((ID*)&camera->id, 1); @@ -918,29 +910,25 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , for (unsigned int i = 0; i < nodeCameras.getCount(); i++) { const COLLADAFW::Camera *camera = (COLLADAFW::Camera *) FW_object_map[nodeCameras[i]->getInstanciatedObjectId()]; - if ((animType->camera & CAMERA_XFOV) != 0 ) - { + if ((animType->camera & CAMERA_XFOV) != 0 ) { const COLLADAFW::AnimatableFloat *xfov = &(camera->getXFov()); const COLLADAFW::UniqueId& listid = xfov->getAnimationList(); Assign_float_animations( listid ,AnimCurves, "lens"); } - else if ((animType->camera & CAMERA_XMAG) != 0 ) - { + else if ((animType->camera & CAMERA_XMAG) != 0 ) { const COLLADAFW::AnimatableFloat *xmag = &(camera->getXMag()); const COLLADAFW::UniqueId& listid = xmag->getAnimationList(); Assign_float_animations( listid ,AnimCurves, "ortho_scale"); } - if ((animType->camera & CAMERA_ZFAR) != 0 ) - { + if ((animType->camera & CAMERA_ZFAR) != 0 ) { const COLLADAFW::AnimatableFloat *zfar = &(camera->getFarClippingPlane()); const COLLADAFW::UniqueId& listid = zfar->getAnimationList(); Assign_float_animations( listid ,AnimCurves, "clip_end"); } - if ((animType->camera & CAMERA_ZNEAR) != 0 ) - { + if ((animType->camera & CAMERA_ZNEAR) != 0 ) { const COLLADAFW::AnimatableFloat *znear = &(camera->getNearClippingPlane()); const COLLADAFW::UniqueId& listid = znear->getAnimationList(); Assign_float_animations( listid ,AnimCurves, "clip_start"); @@ -1162,12 +1150,10 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD for (unsigned int i = 0; i < nodeCameras.getCount(); i++) { const COLLADAFW::Camera *camera = (COLLADAFW::Camera *) FW_object_map[nodeCameras[i]->getInstanciatedObjectId()]; - if ( camera->getCameraType() == COLLADAFW::Camera::PERSPECTIVE ) - { + if ( camera->getCameraType() == COLLADAFW::Camera::PERSPECTIVE ) { types->camera = setAnimType(&(camera->getXMag()),(types->camera), CAMERA_XFOV); } - else - { + else { types->camera = setAnimType(&(camera->getXMag()),(types->camera), CAMERA_XMAG); } types->camera = setAnimType(&(camera->getFarClippingPlane()),(types->camera), CAMERA_ZFAR); @@ -1641,7 +1627,7 @@ bool AnimationImporter::evaluate_animation(COLLADAFW::Transformation *tm, float COLLADABU::Math::Vector3& axis = ((COLLADAFW::Rotate*)tm)->getRotationAxis(); - float ax[3] = {axis[0], axis[1], axis[2]}; + float ax[3] = {(float)axis[0], (float)axis[1], (float)axis[2]}; float angle = evaluate_fcurve(curves[0], fra); axis_angle_to_mat4(mat, ax, angle); diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp index 743d3c2a158..0d45df37796 100644 --- a/source/blender/collada/ArmatureExporter.cpp +++ b/source/blender/collada/ArmatureExporter.cpp @@ -127,7 +127,7 @@ void ArmatureExporter::find_objects_using_armature(Object *ob_arm, std::vectorbase.first; - while(base) { + while (base) { Object *ob = base->object; if (ob->type == OB_MESH && get_assigned_armature(ob) == ob_arm) { @@ -191,10 +191,8 @@ void ArmatureExporter::add_bone_node(Bone *bone, Object *ob_arm, Scene* sce, // Write nodes of childobjects, remove written objects from list std::list::iterator i = child_objects.begin(); - while( i != child_objects.end() ) - { - if ((*i)->partype == PARBONE && (0 == strcmp((*i)->parsubstr, bone->name))) - { + while (i != child_objects.end()) { + if ((*i)->partype == PARBONE && (0 == strcmp((*i)->parsubstr, bone->name))) { float backup_parinv[4][4]; copy_m4_m4(backup_parinv, (*i)->parentinv); @@ -210,8 +208,7 @@ void ArmatureExporter::add_bone_node(Bone *bone, Object *ob_arm, Scene* sce, // TODO: when such objects are animated as // single matrix the tweak must be applied // to the result. - if (export_settings->second_life) - { + if (export_settings->second_life) { // tweak objects parentinverse to match compatibility float temp[4][4]; @@ -274,8 +271,7 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW: } // SECOND_LIFE_COMPATIBILITY - if (export_settings->second_life) - { + if (export_settings->second_life) { // Remove rotations vs armature from transform // parent_rest_rot * mat * irest_rot float temp[4][4]; @@ -285,8 +281,7 @@ void ArmatureExporter::add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW: mult_m4_m4m4(mat, mat, temp); - if (bone->parent) - { + if (bone->parent) { copy_m4_m4(temp, bone->parent->arm_mat); temp[3][0] = temp[3][1] = temp[3][2] = 0.0f; @@ -370,25 +365,21 @@ void ArmatureExporter::export_controller(Object* ob, Object *ob_arm) for (j = 0; j < vert->totweight; j++) { int joint_index = joint_index_by_def_index[vert->dw[j].def_nr]; - if (joint_index != -1 && vert->dw[j].weight > 0.0f) - { + if (joint_index != -1 && vert->dw[j].weight > 0.0f) { jw[joint_index] += vert->dw[j].weight; sumw += vert->dw[j].weight; } } - if (sumw > 0.0f) - { + if (sumw > 0.0f) { float invsumw = 1.0f/sumw; vcounts.push_back(jw.size()); - for (std::map::iterator m = jw.begin(); m != jw.end(); ++m) - { + for (std::map::iterator m = jw.begin(); m != jw.end(); ++m) { joints.push_back((*m).first); weights.push_back(invsumw*(*m).second); } } - else - { + else { vcounts.push_back(0); /*vcounts.push_back(1); joints.push_back(-1); @@ -502,16 +493,14 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase float inv_bind_mat[4][4]; // SECOND_LIFE_COMPATIBILITY - if (export_settings->second_life) - { + if (export_settings->second_life) { // Only translations, no rotation vs armature float temp[4][4]; unit_m4(temp); copy_v3_v3(temp[3], pchan->bone->arm_mat[3]); mult_m4_m4m4(world, ob_arm->obmat, temp); } - else - { + else { // make world-space matrix, arm_mat is armature-space mult_m4_m4m4(world, ob_arm->obmat, pchan->bone->arm_mat); } @@ -597,8 +586,7 @@ void ArmatureExporter::add_vertex_weights_element(const std::string& weights_sou // write deformer index - weight index pairs int weight_index = 0; - for (std::list::const_iterator i = joints.begin(); i != joints.end(); ++i) - { + for (std::list::const_iterator i = joints.begin(); i != joints.end(); ++i) { weightselem.appendValues(*i, weight_index++); } diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp index a978a4757a7..05a2e5643f2 100644 --- a/source/blender/collada/ArmatureImporter.cpp +++ b/source/blender/collada/ArmatureImporter.cpp @@ -278,8 +278,7 @@ void ArmatureImporter::add_leaf_bone(float mat[][4], EditBone *bone, COLLADAFW: TagsMap::iterator etit; ExtraTags *et = 0; etit = uid_tags_map.find(node->getUniqueId().toAscii()); - if (etit != uid_tags_map.end()) - { + if (etit != uid_tags_map.end()) { et = etit->second; //else return; diff --git a/source/blender/collada/CameraExporter.cpp b/source/blender/collada/CameraExporter.cpp index fcb98cc7c32..8640e544dbf 100644 --- a/source/blender/collada/CameraExporter.cpp +++ b/source/blender/collada/CameraExporter.cpp @@ -42,15 +42,14 @@ CamerasExporter::CamerasExporter(COLLADASW::StreamWriter *sw, const ExportSettin template void forEachCameraObjectInScene(Scene *sce, Functor &f, bool export_selected) { - Base *base= (Base*) sce->base.first; - while(base) { + Base *base = (Base*) sce->base.first; + while (base) { Object *ob = base->object; - - if (ob->type == OB_CAMERA && ob->data - && !(export_selected && !(ob->flag & SELECT))) { + + if (ob->type == OB_CAMERA && ob->data && !(export_selected && !(ob->flag & SELECT))) { f(ob, sce); } - base= base->next; + base = base->next; } } diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index 52261346acb..19fc30a2790 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -175,7 +175,7 @@ void DocumentExporter::exportCurrentScene(Scene *sce) std::string unitname = "meter"; float linearmeasure = RNA_float_get(&unit_settings, "scale_length"); - switch(RNA_property_enum_get(&unit_settings, system)) { + switch (RNA_property_enum_get(&unit_settings, system)) { case USER_UNIT_NONE: case USER_UNIT_METRIC: if (linearmeasure == 0.001f) { diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index bc0606107ab..d81ffebae66 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -106,7 +106,7 @@ DocumentImporter::~DocumentImporter() { TagsMap::iterator etit; etit = uid_tags_map.begin(); - while(etit!=uid_tags_map.end()) { + while (etit!=uid_tags_map.end()) { delete etit->second; etit++; } @@ -178,7 +178,7 @@ void DocumentImporter::finish() system = RNA_struct_find_property(&unit_settings, "system"); scale = RNA_struct_find_property(&unit_settings, "scale_length"); - switch(unit_converter.isMetricSystem()) { + switch (unit_converter.isMetricSystem()) { case UnitConverter::Metric: RNA_property_enum_set(&unit_settings, system, USER_UNIT_METRIC); break; @@ -744,8 +744,7 @@ bool DocumentImporter::writeEffect( const COLLADAFW::Effect* effect ) Material *ma = uid_effect_map[uid]; std::map::iterator iter; - for (iter = uid_material_map.begin(); iter != uid_material_map.end() ; iter++ ) - { + for (iter = uid_material_map.begin(); iter != uid_material_map.end() ; iter++ ) { if ( iter->second == ma ) { this->FW_object_map[iter->first] = effect; break; @@ -789,7 +788,7 @@ bool DocumentImporter::writeCamera( const COLLADAFW::Camera* camera ) cam->clipend = camera->getFarClippingPlane().getValue(); COLLADAFW::Camera::CameraType type = camera->getCameraType(); - switch(type) { + switch (type) { case COLLADAFW::Camera::ORTHOGRAPHIC: { cam->type = CAM_ORTHO; @@ -808,10 +807,10 @@ bool DocumentImporter::writeCamera( const COLLADAFW::Camera* camera ) break; } - switch(camera->getDescriptionType()) { + switch (camera->getDescriptionType()) { case COLLADAFW::Camera::ASPECTRATIO_AND_Y: { - switch(cam->type) { + switch (cam->type) { case CAM_ORTHO: { double ymag = camera->getYMag().getValue(); @@ -839,7 +838,7 @@ bool DocumentImporter::writeCamera( const COLLADAFW::Camera* camera ) case COLLADAFW::Camera::SINGLE_X: case COLLADAFW::Camera::X_AND_Y: { - switch(cam->type) { + switch (cam->type) { case CAM_ORTHO: cam->ortho_scale = (float)camera->getXMag().getValue(); break; @@ -856,7 +855,7 @@ bool DocumentImporter::writeCamera( const COLLADAFW::Camera* camera ) break; case COLLADAFW::Camera::SINGLE_Y: { - switch(cam->type) { + switch (cam->type) { case CAM_ORTHO: cam->ortho_scale = (float)camera->getYMag().getValue(); break; @@ -1030,7 +1029,7 @@ bool DocumentImporter::writeLight( const COLLADAFW::Light* light ) lamp->dist = d; COLLADAFW::Light::LightType type = light->getLightType(); - switch(type) { + switch (type) { case COLLADAFW::Light::AMBIENT_LIGHT: { lamp->type = LA_HEMI; diff --git a/source/blender/collada/EffectExporter.cpp b/source/blender/collada/EffectExporter.cpp index 9720b92ffae..bbc7677c279 100644 --- a/source/blender/collada/EffectExporter.cpp +++ b/source/blender/collada/EffectExporter.cpp @@ -60,11 +60,10 @@ bool EffectsExporter::hasEffects(Scene *sce) { Base *base = (Base *)sce->base.first; - while(base) { + while (base) { Object *ob= base->object; int a; - for (a = 0; a < ob->totcol; a++) - { + for (a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); // no material, but check all of the slots diff --git a/source/blender/collada/ErrorHandler.cpp b/source/blender/collada/ErrorHandler.cpp index 1c0f40d2185..530158ed418 100644 --- a/source/blender/collada/ErrorHandler.cpp +++ b/source/blender/collada/ErrorHandler.cpp @@ -49,37 +49,31 @@ bool ErrorHandler::handleError( const COLLADASaxFWL::IError* error ) { mError = true; - if ( error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXPARSER ) - { + if ( error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXPARSER ) { COLLADASaxFWL::SaxParserError* saxParserError = (COLLADASaxFWL::SaxParserError*) error; const GeneratedSaxParser::ParserError& parserError = saxParserError->getError(); // Workaround to avoid wrong error - if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_VALIDATION_MIN_OCCURS_UNMATCHED) - { - if ( strcmp(parserError.getElement(), "effect") == 0 ) - { + if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_VALIDATION_MIN_OCCURS_UNMATCHED) { + if ( strcmp(parserError.getElement(), "effect") == 0 ) { mError = false; } } - if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_VALIDATION_SEQUENCE_PREVIOUS_SIBLING_NOT_PRESENT) - { - if ( !((strcmp(parserError.getElement(), "extra") == 0) - && (strcmp(parserError.getAdditionalText().c_str(), "sibling: fx_profile_abstract") == 0))) + if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_VALIDATION_SEQUENCE_PREVIOUS_SIBLING_NOT_PRESENT) { + if ( !((strcmp(parserError.getElement(), "extra") == 0) && + (strcmp(parserError.getAdditionalText().c_str(), "sibling: fx_profile_abstract") == 0))) { mError = false; } } - if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_COULD_NOT_OPEN_FILE) - { + if ( parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_COULD_NOT_OPEN_FILE) { std::cout << "Couldn't open file" << std::endl; } std::cout << "Schema validation error: " << parserError.getErrorMessage() << std::endl; } - else if ( error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXFWL ) - { + else if ( error->getErrorClass() == COLLADASaxFWL::IError::ERROR_SAXFWL ) { COLLADASaxFWL::SaxFWLError* saxFWLError = (COLLADASaxFWL::SaxFWLError*) error; std::cout << "Sax FWL Error: " << saxFWLError->getErrorMessage() << std::endl; } diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp index ca112abc0af..8e4fa057daf 100644 --- a/source/blender/collada/GeometryExporter.cpp +++ b/source/blender/collada/GeometryExporter.cpp @@ -440,9 +440,9 @@ void GeometryExporter::create_normals(std::vector &nor, std::vectorbase.first; - while(base) { + while (base) { Object *ob = base->object; - if (ob->type == OB_MESH && ob->data - && !(export_selected && !(ob->flag && SELECT)) - && ((sce->lay & ob->lay)!=0)) { + if (ob->type == OB_MESH && ob->data && + !(export_selected && !(ob->flag && SELECT)) && + ((sce->lay & ob->lay)!=0)) + { f(ob); } base= base->next; diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index 946effda832..4d7c56ab419 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -48,11 +48,10 @@ bool ImagesExporter::hasImages(Scene *sce) { Base *base = (Base *)sce->base.first; - while(base) { + while (base) { Object *ob= base->object; int a; - for (a = 0; a < ob->totcol; a++) - { + for (a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); // no material, but check all of the slots diff --git a/source/blender/collada/LightExporter.cpp b/source/blender/collada/LightExporter.cpp index 51242b36b64..1d7afb9b1a1 100644 --- a/source/blender/collada/LightExporter.cpp +++ b/source/blender/collada/LightExporter.cpp @@ -39,11 +39,10 @@ template void forEachLampObjectInScene(Scene *sce, Functor &f, bool export_selected) { Base *base= (Base*) sce->base.first; - while(base) { + while (base) { Object *ob = base->object; - - if (ob->type == OB_LAMP && ob->data - && !(export_selected && !(ob->flag & SELECT))) { + + if (ob->type == OB_LAMP && ob->data && !(export_selected && !(ob->flag & SELECT))) { f(ob); } base= base->next; diff --git a/source/blender/collada/MaterialExporter.cpp b/source/blender/collada/MaterialExporter.cpp index 1e3358c9216..ac1a5d32a08 100644 --- a/source/blender/collada/MaterialExporter.cpp +++ b/source/blender/collada/MaterialExporter.cpp @@ -50,11 +50,10 @@ bool MaterialsExporter::hasMaterials(Scene *sce) { Base *base = (Base *)sce->base.first; - while(base) { + while (base) { Object *ob= base->object; int a; - for (a = 0; a < ob->totcol; a++) - { + for (a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); // no material, but check all of the slots diff --git a/source/blender/collada/MaterialExporter.h b/source/blender/collada/MaterialExporter.h index eb7886c23b9..4a5422184d4 100644 --- a/source/blender/collada/MaterialExporter.h +++ b/source/blender/collada/MaterialExporter.h @@ -68,7 +68,7 @@ public: void operator ()(Object *ob) { int a; - for(a = 0; a < ob->totcol; a++) { + for (a = 0; a < ob->totcol; a++) { Material *ma = give_current_material(ob, a+1); diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index 5c01c31bd0d..0bf33206fa7 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -116,7 +116,7 @@ UVDataWrapper::UVDataWrapper(COLLADAFW::MeshVertexData& vdata) : mVData(&vdata) void WVDataWrapper::print() { fprintf(stderr, "UVs:\n"); - switch(mVData->getType()) { + switch (mVData->getType()) { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { COLLADAFW::ArrayPrimitiveType* values = mVData->getFloatValues(); @@ -147,7 +147,7 @@ void UVDataWrapper::getUV(int uv_index, float *uv) int stride = mVData->getStride(0); if (stride==0) stride = 2; - switch(mVData->getType()) { + switch (mVData->getType()) { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { COLLADAFW::ArrayPrimitiveType* values = mVData->getFloatValues(); @@ -676,7 +676,7 @@ void MeshImporter::get_vector(float v[3], COLLADAFW::MeshVertexData& arr, int i, { i *= stride; - switch(arr.getType()) { + switch (arr.getType()) { case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: { COLLADAFW::ArrayPrimitiveType* values = arr.getFloatValues(); @@ -797,7 +797,7 @@ MTFace *MeshImporter::assign_material_to_geom(COLLADAFW::MaterialBinding cmateri // what we already have handled. std::multimap::iterator it; it=materials_mapped_to_geom.find(*geom_uid); - while(it!=materials_mapped_to_geom.end()) { + while (it!=materials_mapped_to_geom.end()) { if (it->second == ma_uid && it->first == *geom_uid) return NULL; // do nothing if already found it++; } diff --git a/source/blender/collada/SceneExporter.cpp b/source/blender/collada/SceneExporter.cpp index 9010fd5062a..cd36267fd56 100644 --- a/source/blender/collada/SceneExporter.cpp +++ b/source/blender/collada/SceneExporter.cpp @@ -43,12 +43,12 @@ void SceneExporter::exportScene(Scene *sce) void SceneExporter::exportHierarchy(Scene *sce) { Base *base= (Base*) sce->base.first; - while(base) { + while (base) { Object *ob = base->object; if (!ob->parent) { if (sce->lay & ob->lay) { - switch(ob->type) { + switch (ob->type) { case OB_MESH: case OB_CAMERA: case OB_LAMP: @@ -81,12 +81,12 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) // list child objects Base *b = (Base*) sce->base.first; - while(b) { + while (b) { // cob - child object Object *cob = b->object; if (cob->parent == ob) { - switch(cob->type) { + switch (cob->type) { case OB_MESH: case OB_CAMERA: case OB_LAMP: @@ -154,8 +154,7 @@ void SceneExporter::writeNodes(Object *ob, Scene *sce) } } - for (std::list::iterator i= child_objects.begin(); i != child_objects.end(); ++i) - { + for (std::list::iterator i= child_objects.begin(); i != child_objects.end(); ++i) { writeNodes(*i, sce); } diff --git a/source/blender/collada/TransformReader.cpp b/source/blender/collada/TransformReader.cpp index a73d5243624..4c7fde8ef17 100644 --- a/source/blender/collada/TransformReader.cpp +++ b/source/blender/collada/TransformReader.cpp @@ -43,7 +43,7 @@ void TransformReader::get_node_mat(float mat[][4], COLLADAFW::Node *node, std::m COLLADAFW::Transformation *tm = node->getTransformations()[i]; COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); - switch(type) { + switch (type) { case COLLADAFW::Transformation::TRANSLATE: dae_translate_to_mat4(tm, cur); break; diff --git a/source/blender/collada/TransformWriter.cpp b/source/blender/collada/TransformWriter.cpp index f441833233c..f96aff8aa90 100644 --- a/source/blender/collada/TransformWriter.cpp +++ b/source/blender/collada/TransformWriter.cpp @@ -95,19 +95,16 @@ void TransformWriter::add_node_transform_ob(COLLADASW::Node& node, Object *ob) */ /* Using parentinv should allow use of existing curves */ - if (ob->parent) - { + if (ob->parent) { // If parentinv is identity don't add it. bool add_parinv = false; - for (int i = 0; i < 16; ++i) - { + for (int i = 0; i < 16; ++i) { float f = (i % 4 == i / 4) ? 1.0f : 0.0f; add_parinv |= (ob->parentinv[i % 4][i / 4] != f); } - if (add_parinv) - { + if (add_parinv) { double dmat[4][4]; UnitConverter converter; converter.mat4_to_dae_double(dmat, ob->parentinv); diff --git a/source/blender/collada/collada_internal.cpp b/source/blender/collada/collada_internal.cpp index fc4093bd795..fa99d460184 100644 --- a/source/blender/collada/collada_internal.cpp +++ b/source/blender/collada/collada_internal.cpp @@ -40,7 +40,7 @@ void UnitConverter::read_asset(const COLLADAFW::FileInfo* asset) UnitConverter::UnitSystem UnitConverter::isMetricSystem() { - switch(unit.getLinearUnitUnit()) { + switch (unit.getLinearUnitUnit()) { case COLLADAFW::FileInfo::Unit::MILLIMETER: case COLLADAFW::FileInfo::Unit::CENTIMETER: case COLLADAFW::FileInfo::Unit::DECIMETER: @@ -198,44 +198,39 @@ void clear_global_id_map() /** Look at documentation of translate_map */ std::string translate_id(const std::string &id) { - if (id.size() == 0) - { return id; } + if (id.size() == 0) { + return id; + } + std::string id_translated = id; id_translated[0] = translate_start_name_map[(unsigned int)id_translated[0]]; - for (unsigned int i=1; i < id_translated.size(); i++) - { + for (unsigned int i=1; i < id_translated.size(); i++) { id_translated[i] = translate_name_map[(unsigned int)id_translated[i]]; } // It's so much workload now, the if () should speed up things. - if (id_translated != id) - { + if (id_translated != id) { // Search duplicates map_string_list::iterator iter = global_id_map.find(id_translated); - if (iter != global_id_map.end()) - { + if (iter != global_id_map.end()) { unsigned int i = 0; bool found = false; - for (i=0; i < iter->second.size(); i++) - { - if (id == iter->second[i]) - { + for (i=0; i < iter->second.size(); i++) { + if (id == iter->second[i]) { found = true; break; } } bool convert = false; - if (found) - { - if (i > 0) - { convert = true; } + if (found) { + if (i > 0) { + convert = true; + } } - else - { + else { convert = true; global_id_map[id_translated].push_back(id); } - if (convert) - { + if (convert) { std::stringstream out; out << ++i; id_translated += out.str(); @@ -279,7 +274,7 @@ std::string get_material_id(Material *mat) bool has_object_type(Scene *sce, short obtype) { Base *base= (Base*) sce->base.first; - while(base) { + while (base) { Object *ob = base->object; if (ob->type == obtype && ob->data) { diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index e5822c76fa1..922156ebb7a 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -992,8 +992,7 @@ static size_t animfilter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve * * 4) the fcu pointer is set to the F-Curve after the one we just added, so that we can keep going through * the rest of the F-Curve list without an eternal loop. Back to step 2 :) */ - for (fcu=first; ( (fcu = animfilter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu=fcu->next) - { + for (fcu = first; ( (fcu = animfilter_fcurve_next(ads, fcu, grp, filter_mode, owner_id)) ); fcu = fcu->next) { ANIMCHANNEL_NEW_CHANNEL(fcu, ANIMTYPE_FCURVE, owner_id); } diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 73dba91207f..94d9d426932 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -745,7 +745,7 @@ static int ed_marker_move_modal(bContext *C, wmOperator *op, wmEvent *evt) float dx, fac; char str[256]; - switch(evt->type) { + switch (evt->type) { case ESCKEY: ed_marker_move_cancel(C, op); return OPERATOR_CANCELLED; diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index cc3d0c6e184..c529ad66d73 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -2458,8 +2458,7 @@ void preEditBoneDuplicate(ListBase *editbones) EditBone *eBone; /* clear temp */ - for (eBone = editbones->first; eBone; eBone = eBone->next) - { + for (eBone = editbones->first; eBone; eBone = eBone->next) { eBone->temp = NULL; } } @@ -5800,7 +5799,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg) /* Loop over subdivision methods */ for (i = 0; lastBone == NULL && i < SKGEN_SUB_TOTAL; i++) { - switch(scene->toolsettings->skgen_subdivisions[i]) { + switch (scene->toolsettings->skgen_subdivisions[i]) { case SKGEN_SUB_LENGTH: lastBone = test_subdivideByLength(scene, obedit, arc, head, tail); break; diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c index 37d095221c9..5b56f5fe7fe 100644 --- a/source/blender/editors/armature/editarmature_generate.c +++ b/source/blender/editors/armature/editarmature_generate.c @@ -52,8 +52,7 @@ void setBoneRollFromNormal(EditBone *bone, float *no, float UNUSED(invmat[][4]), float tmat[][3]) { - if (no != NULL && !is_zero_v3(no)) - { + if (no != NULL && !is_zero_v3(no)) { float normal[3]; copy_v3_v3(normal, no); @@ -67,16 +66,14 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl { int len = 2 + abs(end - start); - if (len > 2) - { + if (len > 2) { float avg_t = 0.0f; float s_t = 0.0f; float s_xyz = 0.0f; int i; /* First pass, calculate average */ - for (i = start; i <= end; i++) - { + for (i = start; i <= end; i++) { float v[3]; IT_peek(iter, i); @@ -89,8 +86,7 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl avg_t /= len; /* Second pass, calculate s_xyz and s_t */ - for (i = start; i <= end; i++) - { + for (i = start; i <= end; i++) { float v[3], d[3]; float dt; @@ -110,8 +106,7 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl return 1.0f - s_xyz / s_t; } - else - { + else { return 1.0f; } } @@ -125,15 +120,13 @@ int nextFixedSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int sta float length_threshold; int i; - if (stroke_length == 0) - { + if (stroke_length == 0) { current_length = 0; IT_peek(iter, start); v1 = iter->p; - for (i = start + 1; i <= end; i++) - { + for (i = start + 1; i <= end; i++) { IT_peek(iter, i); v2 = iter->p; @@ -154,8 +147,7 @@ int nextFixedSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int sta v1 = iter->p; /* < and not <= because we don't care about end, it is P_EXACT anyway */ - for (i = start + 1; i < end; i++) - { + for (i = start + 1; i < end; i++) { IT_peek(iter, i); v2 = iter->p; @@ -183,8 +175,7 @@ int nextAdaptativeSubdivision(ToolSettings *toolsettings, BArcIterator *iter, in IT_peek(iter, start); start_p = iter->p; - for (i = start + 2; i <= end; i++) - { + for (i = start + 2; i <= end; i++) { /* Calculate normal */ IT_peek(iter, i); sub_v3_v3v3(n, iter->p, head); @@ -206,8 +197,7 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st int i; i = start + 1; - while (i <= end) - { + while (i <= end) { float *vec0; float *vec1; @@ -218,10 +208,8 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st vec1 = iter->p; /* If lengthLimit hits the current segment */ - if (len_v3v3(vec1, head) > lengthLimit) - { - if (same == 0) - { + if (len_v3v3(vec1, head) > lengthLimit) { + if (same == 0) { float dv[3], off[3]; float a, b, c, f; @@ -260,8 +248,7 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st return i - 1; /* restart at lower bound */ } - else - { + else { i++; same = 0; // Reset same } @@ -286,16 +273,14 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * parent = ED_armature_edit_bone_add(arm, "Bone"); copy_v3_v3(parent->head, iter->p); - if (iter->size > 0) - { + if (iter->size > 0) { parent->rad_head = iter->size * size_buffer; } normal = iter->no; index = next_subdividion(toolsettings, iter, bone_start, end, parent->head, parent->tail); - while (index != -1) - { + while (index != -1) { IT_peek(iter, index); child = ED_armature_edit_bone_add(arm, "Bone"); @@ -303,8 +288,7 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase * child->parent = parent; child->flag |= BONE_CONNECTED; - if (iter->size > 0) - { + if (iter->size > 0) { child->rad_head = iter->size * size_buffer; parent->rad_tail = iter->size * size_buffer; } diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c index f554b7b1c50..7e4d76cb794 100644 --- a/source/blender/editors/armature/editarmature_retarget.c +++ b/source/blender/editors/armature/editarmature_retarget.c @@ -119,10 +119,8 @@ static int countEditBoneChildren(ListBase *list, EditBone *parent) EditBone *ebone; int count = 0; - for (ebone = list->first; ebone; ebone = ebone->next) - { - if (ebone->parent == parent) - { + for (ebone = list->first; ebone; ebone = ebone->next) { + if (ebone->parent == parent) { count++; } } @@ -134,12 +132,9 @@ static EditBone* nextEditBoneChild(ListBase *list, EditBone *parent, int n) { EditBone *ebone; - for (ebone = list->first; ebone; ebone = ebone->next) - { - if (ebone->parent == parent) - { - if (n == 0) - { + for (ebone = list->first; ebone; ebone = ebone->next) { + if (ebone->parent == parent) { + if (n == 0) { return ebone; } n--; @@ -175,23 +170,19 @@ static float rollBoneByQuatAligned(EditBone *bone, float old_up_axis[3], float q normalize_v3(x_axis); normalize_v3(z_axis); - if (dot_v3v3(new_up_axis, x_axis) < 0) - { + if (dot_v3v3(new_up_axis, x_axis) < 0) { negate_v3(x_axis); } - if (dot_v3v3(new_up_axis, z_axis) < 0) - { + if (dot_v3v3(new_up_axis, z_axis) < 0) { negate_v3(z_axis); } - if (angle_normalized_v3v3(x_axis, new_up_axis) < angle_normalized_v3v3(z_axis, new_up_axis)) - { + if (angle_normalized_v3v3(x_axis, new_up_axis) < angle_normalized_v3v3(z_axis, new_up_axis)) { rotation_between_vecs_to_quat(qroll, new_up_axis, x_axis); /* set roll rotation quat */ return ED_rollBoneToVector(bone, x_axis, FALSE); } - else - { + else { rotation_between_vecs_to_quat(qroll, new_up_axis, z_axis); /* set roll rotation quat */ return ED_rollBoneToVector(bone, z_axis, FALSE); } @@ -199,26 +190,21 @@ static float rollBoneByQuatAligned(EditBone *bone, float old_up_axis[3], float q static float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float qroll[4], float up_axis[3]) { - if (previous == NULL) - { + if (previous == NULL) { /* default to up_axis if no previous */ return rollBoneByQuatAligned(edge->bone, edge->up_axis, qrot, qroll, up_axis); } - else - { + else { float new_up_axis[3]; float vec_first[3], vec_second[3], normal[3]; - if (previous->bone) - { + if (previous->bone) { sub_v3_v3v3(vec_first, previous->bone->tail, previous->bone->head); } - else if (previous->prev->bone) - { + else if (previous->prev->bone) { sub_v3_v3v3(vec_first, edge->bone->head, previous->prev->bone->tail); } - else - { + else { /* default to up_axis if first bone in the chain is an offset */ return rollBoneByQuatAligned(edge->bone, edge->up_axis, qrot, qroll, up_axis); } @@ -274,19 +260,16 @@ void RIG_freeRigGraph(BGraph *rg) BLI_destroy_worker(rigg->worker); #endif - if (rigg->link_mesh) - { + if (rigg->link_mesh) { REEB_freeGraph(rigg->link_mesh); } - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RIG_freeRigArc(arc); } BLI_freelistN(&rg->arcs); - for (node = rg->nodes.first; node; node = node->next) - { + for (node = rg->nodes.first; node; node = node->next) { BLI_freeNode(rg, (BNode*)node); } BLI_freelistN(&rg->nodes); @@ -296,8 +279,7 @@ void RIG_freeRigGraph(BGraph *rg) BLI_ghash_free(rigg->bones_map, NULL, NULL); BLI_ghash_free(rigg->controls_map, NULL, NULL); - if (rigg->flag & RIG_FREE_BONELIST) - { + if (rigg->flag & RIG_FREE_BONELIST) { BLI_freelistN(rigg->editbones); MEM_freeN(rigg->editbones); } @@ -409,12 +391,10 @@ static void RIG_appendEdgeToArc(RigArc *arc, RigEdge *edge) { BLI_addtail(&arc->edges, edge); - if (edge->prev == NULL) - { + if (edge->prev == NULL) { copy_v3_v3(edge->head, arc->head->p); } - else - { + else { RigEdge *last_edge = edge->prev; copy_v3_v3(edge->head, last_edge->tail); RIG_calculateEdgeAngles(last_edge, edge); @@ -436,8 +416,7 @@ static void RIG_addEdgeToArc(RigArc *arc, float tail[3], EditBone *bone) copy_v3_v3(edge->tail, tail); edge->bone = bone; - if (bone) - { + if (bone) { getEditBoneRollUpAxis(bone, bone->roll, edge->up_axis); } @@ -449,28 +428,22 @@ static void renameTemplateBone(char *name, char *template_name, ListBase *editbo { int i, j; - for (i = 0, j = 0; i < (MAXBONENAME-1) && j < (MAXBONENAME-1) && template_name[i] != '\0'; i++) - { - if (template_name[i] == '&') - { - if (template_name[i+1] == 'S' || template_name[i+1] == 's') - { + for (i = 0, j = 0; i < (MAXBONENAME-1) && j < (MAXBONENAME-1) && template_name[i] != '\0'; i++) { + if (template_name[i] == '&') { + if (template_name[i+1] == 'S' || template_name[i+1] == 's') { j += sprintf(name + j, "%s", side_string); i++; } - else if (template_name[i+1] == 'N' || template_name[i+1] == 'n') - { + else if (template_name[i+1] == 'N' || template_name[i+1] == 'n') { j += sprintf(name + j, "%s", num_string); i++; } - else - { + else { name[j] = template_name[i]; j++; } } - else - { + else { name[j] = template_name[i]; j++; } @@ -524,8 +497,7 @@ static RigArc *cloneArc(RigGraph *rg, RigGraph *src_rg, RigArc *src_arc, GHash * arc->count = src_arc->count; - for (src_edge = src_arc->edges.first; src_edge; src_edge = src_edge->next) - { + for (src_edge = src_arc->edges.first; src_edge; src_edge = src_edge->next) { RigEdge *edge; edge = MEM_callocN(sizeof(RigEdge), "rig edge"); @@ -538,8 +510,7 @@ static RigArc *cloneArc(RigGraph *rg, RigGraph *src_rg, RigArc *src_arc, GHash * edge->angle = src_edge->angle; edge->up_angle = src_edge->up_angle; - if (src_edge->bone != NULL) - { + if (src_edge->bone != NULL) { char name[MAXBONENAME]; renameTemplateBone(name, src_edge->bone->name, rg->editbones, side_string, num_string); edge->bone = duplicateEditBoneObjects(src_edge->bone, name, rg->editbones, src_rg->ob, rg->ob); @@ -572,8 +543,7 @@ static RigGraph *cloneRigGraph(RigGraph *src, ListBase *editbones, Object *ob, c preEditBoneDuplicate(src->editbones); /* prime bones for duplication */ /* Clone nodes */ - for (node = src->nodes.first; node; node = node->next) - { + for (node = src->nodes.first; node; node = node->next) { RigNode *cloned_node = newRigNode(rg, node->p); BLI_ghash_insert(ptr_hash, node, cloned_node); } @@ -581,40 +551,32 @@ static RigGraph *cloneRigGraph(RigGraph *src, ListBase *editbones, Object *ob, c rg->head = BLI_ghash_lookup(ptr_hash, src->head); /* Clone arcs */ - for (arc = src->arcs.first; arc; arc = arc->next) - { + for (arc = src->arcs.first; arc; arc = arc->next) { cloneArc(rg, src, arc, ptr_hash, side_string, num_string); } /* Clone controls */ - for (ctrl = src->controls.first; ctrl; ctrl = ctrl->next) - { + for (ctrl = src->controls.first; ctrl; ctrl = ctrl->next) { cloneControl(rg, src, ctrl, ptr_hash, side_string, num_string); } /* Relink bones properly */ - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RigEdge *edge; - for (edge = arc->edges.first; edge; edge = edge->next) - { - if (edge->bone != NULL) - { + for (edge = arc->edges.first; edge; edge = edge->next) { + if (edge->bone != NULL) { EditBone *bone; updateDuplicateSubtargetObjects(edge->bone, src->editbones, src->ob, rg->ob); - if (edge->bone->parent) - { + if (edge->bone->parent) { bone = BLI_ghash_lookup(ptr_hash, edge->bone->parent); - if (bone != NULL) - { + if (bone != NULL) { edge->bone->parent = bone; } - else - { + else { /* disconnect since parent isn't cloned * this will only happen when cloning from selected bones * */ @@ -625,22 +587,18 @@ static RigGraph *cloneRigGraph(RigGraph *src, ListBase *editbones, Object *ob, c } } - for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) - { + for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) { EditBone *bone; updateDuplicateSubtargetObjects(ctrl->bone, src->editbones, src->ob, rg->ob); - if (ctrl->bone->parent) - { + if (ctrl->bone->parent) { bone = BLI_ghash_lookup(ptr_hash, ctrl->bone->parent); - if (bone != NULL) - { + if (bone != NULL) { ctrl->bone->parent = bone; } - else - { + else { /* disconnect since parent isn't cloned * this will only happen when cloning from selected bones * */ @@ -672,8 +630,7 @@ static void RIG_calculateEdgeAngles(RigEdge *edge_first, RigEdge *edge_second) edge_first->angle = angle_normalized_v3v3(vec_first, vec_second); - if (edge_second->bone != NULL) - { + if (edge_second->bone != NULL) { float normal[3]; cross_v3_v3v3(normal, vec_first, vec_second); @@ -699,16 +656,14 @@ static void RIG_addControlBone(RigGraph *rg, EditBone *bone) static int RIG_parentControl(RigControl *ctrl, EditBone *link) { - if (link) - { + if (link) { float offset[3]; int flag = 0; sub_v3_v3v3(offset, ctrl->bone->head, link->head); /* if root matches, check for direction too */ - if (dot_v3v3(offset, offset) < 0.0001f) - { + if (dot_v3v3(offset, offset) < 0.0001f) { float vbone[3], vparent[3]; flag |= RIG_CTRL_FIT_ROOT; @@ -717,45 +672,38 @@ static int RIG_parentControl(RigControl *ctrl, EditBone *link) sub_v3_v3v3(vparent, link->tail, link->head); /* test for opposite direction */ - if (dot_v3v3(vbone, vparent) > 0) - { + if (dot_v3v3(vbone, vparent) > 0) { float nor[3]; float len; cross_v3_v3v3(nor, vbone, vparent); len = dot_v3v3(nor, nor); - if (len < 0.0001f) - { + if (len < 0.0001f) { flag |= RIG_CTRL_FIT_BONE; } } } /* Bail out if old one is automatically better */ - if (flag < ctrl->flag) - { + if (flag < ctrl->flag) { return 0; } /* if there's already a link * overwrite only if new link is higher in the chain */ - if (ctrl->link && flag == ctrl->flag) - { + if (ctrl->link && flag == ctrl->flag) { EditBone *bone = NULL; - for (bone = ctrl->link; bone; bone = bone->parent) - { + for (bone = ctrl->link; bone; bone = bone->parent) { /* if link is in the chain, break and use that one */ - if (bone == link) - { + if (bone == link) { break; } } /* not in chain, don't update link */ - if (bone == NULL) - { + if (bone == NULL) { return 0; } } @@ -778,43 +726,34 @@ static void RIG_reconnectControlBones(RigGraph *rg) int change = 1; /* first pass, link to deform bones */ - for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) - { + for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) { bPoseChannel *pchan; bConstraint *con; int found = 0; /* DO SOME MAGIC HERE */ - for (pchan= rg->ob->pose->chanbase.first; pchan; pchan= pchan->next) - { - for (con= pchan->constraints.first; con; con= con->next) - { + for (pchan= rg->ob->pose->chanbase.first; pchan; pchan= pchan->next) { + for (con= pchan->constraints.first; con; con= con->next) { bConstraintTypeInfo *cti= constraint_get_typeinfo(con); ListBase targets = {NULL, NULL}; bConstraintTarget *ct; /* constraint targets */ - if (cti && cti->get_constraint_targets) - { + if (cti && cti->get_constraint_targets) { int target_index; cti->get_constraint_targets(con, &targets); - for (target_index = 0, ct= targets.first; ct; target_index++, ct= ct->next) - { - if ((ct->tar == rg->ob) && strcmp(ct->subtarget, ctrl->bone->name) == 0) - { + for (target_index = 0, ct= targets.first; ct; target_index++, ct= ct->next) { + if ((ct->tar == rg->ob) && strcmp(ct->subtarget, ctrl->bone->name) == 0) { /* SET bone link to bone corresponding to pchan */ EditBone *link = BLI_ghash_lookup(rg->bones_map, pchan->name); /* Making sure bone is in this armature */ - if (link != NULL) - { + if (link != NULL) { /* for pole targets, link to parent bone instead, if possible */ - if (con->type == CONSTRAINT_TYPE_KINEMATIC && target_index == 1) - { - if (link->parent && BLI_ghash_haskey(rg->bones_map, link->parent->name)) - { + if (con->type == CONSTRAINT_TYPE_KINEMATIC && target_index == 1) { + if (link->parent && BLI_ghash_haskey(rg->bones_map, link->parent->name)) { link = link->parent; } } @@ -831,10 +770,8 @@ static void RIG_reconnectControlBones(RigGraph *rg) } /* if not found yet, check parent */ - if (found == 0) - { - if (ctrl->bone->parent) - { + if (found == 0) { + if (ctrl->bone->parent) { /* make sure parent is a deforming bone * NULL if not * */ @@ -849,24 +786,19 @@ static void RIG_reconnectControlBones(RigGraph *rg) RigArc *best_arc = NULL; EditBone *link = NULL; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RigEdge *edge; - for (edge = arc->edges.first; edge; edge = edge->next) - { - if (edge->bone) - { + for (edge = arc->edges.first; edge; edge = edge->next) { + if (edge->bone) { int fit = 0; fit = len_v3v3(ctrl->bone->head, edge->bone->head) < 0.0001f; fit = fit || len_v3v3(ctrl->bone->tail, edge->bone->tail) < 0.0001f; - if (fit) - { + if (fit) { /* pick the bone on the arc with the lowest symmetry level * means you connect control to the trunk of the skeleton */ - if (best_arc == NULL || arc->symmetry_level < best_arc->symmetry_level) - { + if (best_arc == NULL || arc->symmetry_level < best_arc->symmetry_level) { best_arc = arc; link = edge->bone; } @@ -880,23 +812,18 @@ static void RIG_reconnectControlBones(RigGraph *rg) } /* if not found yet, check child */ - if (found == 0) - { + if (found == 0) { RigArc *arc; RigArc *best_arc = NULL; EditBone *link = NULL; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RigEdge *edge; - for (edge = arc->edges.first; edge; edge = edge->next) - { - if (edge->bone && edge->bone->parent == ctrl->bone) - { + for (edge = arc->edges.first; edge; edge = edge->next) { + if (edge->bone && edge->bone->parent == ctrl->bone) { /* pick the bone on the arc with the lowest symmetry level * means you connect control to the trunk of the skeleton */ - if (best_arc == NULL || arc->symmetry_level < best_arc->symmetry_level) - { + if (best_arc == NULL || arc->symmetry_level < best_arc->symmetry_level) { best_arc = arc; link = edge->bone; } @@ -911,52 +838,42 @@ static void RIG_reconnectControlBones(RigGraph *rg) /* second pass, make chains in control bones */ - while (change) - { + while (change) { change = 0; - for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) - { + for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) { /* if control is not linked yet */ - if (ctrl->link == NULL) - { + if (ctrl->link == NULL) { bPoseChannel *pchan; bConstraint *con; RigControl *ctrl_parent = NULL; RigControl *ctrl_child; int found = 0; - if (ctrl->bone->parent) - { + if (ctrl->bone->parent) { ctrl_parent = BLI_ghash_lookup(rg->controls_map, ctrl->bone->parent->name); } /* check constraints first */ /* DO SOME MAGIC HERE */ - for (pchan= rg->ob->pose->chanbase.first; pchan; pchan= pchan->next) - { - for (con= pchan->constraints.first; con; con= con->next) - { + for (pchan= rg->ob->pose->chanbase.first; pchan; pchan= pchan->next) { + for (con= pchan->constraints.first; con; con= con->next) { bConstraintTypeInfo *cti= constraint_get_typeinfo(con); ListBase targets = {NULL, NULL}; bConstraintTarget *ct; /* constraint targets */ - if (cti && cti->get_constraint_targets) - { + if (cti && cti->get_constraint_targets) { cti->get_constraint_targets(con, &targets); - for (ct= targets.first; ct; ct= ct->next) - { - if ((ct->tar == rg->ob) && strcmp(ct->subtarget, ctrl->bone->name) == 0) - { + for (ct= targets.first; ct; ct= ct->next) { + if ((ct->tar == rg->ob) && strcmp(ct->subtarget, ctrl->bone->name) == 0) { /* SET bone link to ctrl corresponding to pchan */ RigControl *link = BLI_ghash_lookup(rg->controls_map, pchan->name); /* if owner is a control bone, link with it */ - if (link && link->link) - { + if (link && link->link) { RIG_parentControl(ctrl, link->bone); found = 1; break; @@ -970,22 +887,17 @@ static void RIG_reconnectControlBones(RigGraph *rg) } } - if (found == 0) - { + if (found == 0) { /* check if parent is already linked */ - if (ctrl_parent && ctrl_parent->link) - { + if (ctrl_parent && ctrl_parent->link) { RIG_parentControl(ctrl, ctrl_parent->bone); change = 1; } - else - { + else { /* check childs */ - for (ctrl_child = rg->controls.first; ctrl_child; ctrl_child = ctrl_child->next) - { + for (ctrl_child = rg->controls.first; ctrl_child; ctrl_child = ctrl_child->next) { /* if a child is linked, link to that one */ - if (ctrl_child->link && ctrl_child->bone->parent == ctrl->bone) - { + if (ctrl_child->link && ctrl_child->bone->parent == ctrl->bone) { RIG_parentControl(ctrl, ctrl_child->bone); change = 1; break; @@ -998,31 +910,25 @@ static void RIG_reconnectControlBones(RigGraph *rg) } /* third pass, link control tails */ - for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) - { + for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) { /* fit bone already means full match, so skip those */ - if ((ctrl->flag & RIG_CTRL_FIT_BONE) == 0) - { + if ((ctrl->flag & RIG_CTRL_FIT_BONE) == 0) { GHashIterator ghi; /* look on deform bones first */ BLI_ghashIterator_init(&ghi, rg->bones_map); - for ( ; !BLI_ghashIterator_isDone(&ghi); BLI_ghashIterator_step(&ghi)) - { + for ( ; !BLI_ghashIterator_isDone(&ghi); BLI_ghashIterator_step(&ghi)) { EditBone *bone = (EditBone*)BLI_ghashIterator_getValue(&ghi); /* don't link with parent */ - if (bone->parent != ctrl->bone) - { - if (len_v3v3(ctrl->bone->tail, bone->head) < 0.01f) - { + if (bone->parent != ctrl->bone) { + if (len_v3v3(ctrl->bone->tail, bone->head) < 0.01f) { ctrl->tail_mode = TL_HEAD; ctrl->link_tail = bone; break; } - else if (len_v3v3(ctrl->bone->tail, bone->tail) < 0.01f) - { + else if (len_v3v3(ctrl->bone->tail, bone->tail) < 0.01f) { ctrl->tail_mode = TL_TAIL; ctrl->link_tail = bone; break; @@ -1031,8 +937,7 @@ static void RIG_reconnectControlBones(RigGraph *rg) } /* if we haven't found one yet, look in control bones */ - if (ctrl->tail_mode == TL_NONE) - { + if (ctrl->tail_mode == TL_NONE) { } } } @@ -1046,21 +951,18 @@ static void RIG_joinArcs(RigGraph *rg, RigNode *node, RigArc *joined_arc1, RigAr RigEdge *edge, *next_edge; /* ignore cases where joint is at start or end */ - if (joined_arc1->head == joined_arc2->head || joined_arc1->tail == joined_arc2->tail) - { + if (joined_arc1->head == joined_arc2->head || joined_arc1->tail == joined_arc2->tail) { return; } /* swap arcs to make sure arc1 is before arc2 */ - if (joined_arc1->head == joined_arc2->tail) - { + if (joined_arc1->head == joined_arc2->tail) { RigArc *tmp = joined_arc1; joined_arc1 = joined_arc2; joined_arc2 = tmp; } - for (edge = joined_arc2->edges.first; edge; edge = next_edge) - { + for (edge = joined_arc2->edges.first; edge; edge = next_edge) { next_edge = edge->next; RIG_appendEdgeToArc(joined_arc1, edge); @@ -1079,24 +981,18 @@ static void RIG_removeNormalNodes(RigGraph *rg) { RigNode *node, *next_node; - for (node = rg->nodes.first; node; node = next_node) - { + for (node = rg->nodes.first; node; node = next_node) { next_node = node->next; - if (node->degree == 2) - { + if (node->degree == 2) { RigArc *arc, *joined_arc1 = NULL, *joined_arc2 = NULL; - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (arc->head == node || arc->tail == node) - { - if (joined_arc1 == NULL) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (arc->head == node || arc->tail == node) { + if (joined_arc1 == NULL) { joined_arc1 = arc; } - else - { + else { joined_arc2 = arc; break; } @@ -1112,36 +1008,29 @@ static void RIG_removeUneededOffsets(RigGraph *rg) { RigArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RigEdge *first_edge, *last_edge; first_edge = arc->edges.first; last_edge = arc->edges.last; - if (first_edge->bone == NULL) - { - if (first_edge->bone == NULL && len_v3v3(first_edge->tail, arc->head->p) <= 0.001f) - { + if (first_edge->bone == NULL) { + if (first_edge->bone == NULL && len_v3v3(first_edge->tail, arc->head->p) <= 0.001f) { BLI_remlink(&arc->edges, first_edge); MEM_freeN(first_edge); } - else if (arc->head->degree == 1) - { + else if (arc->head->degree == 1) { RigNode *new_node = (RigNode*)BLI_FindNodeByPosition((BGraph*)rg, first_edge->tail, 0.001f); - if (new_node) - { + if (new_node) { BLI_remlink(&arc->edges, first_edge); MEM_freeN(first_edge); BLI_replaceNodeInArc((BGraph*)rg, (BArc*)arc, (BNode*)new_node, (BNode*)arc->head); } - else - { + else { RigEdge *next_edge = first_edge->next; - if (next_edge) - { + if (next_edge) { BLI_remlink(&arc->edges, first_edge); MEM_freeN(first_edge); @@ -1149,57 +1038,44 @@ static void RIG_removeUneededOffsets(RigGraph *rg) } } } - else - { + else { /* check if all arc connected start with a null edge */ RigArc *other_arc; - for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) - { - if (other_arc != arc) - { + for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) { + if (other_arc != arc) { RigEdge *test_edge; - if (other_arc->head == arc->head) - { + if (other_arc->head == arc->head) { test_edge = other_arc->edges.first; - if (test_edge->bone != NULL) - { + if (test_edge->bone != NULL) { break; } } - else if (other_arc->tail == arc->head) - { + else if (other_arc->tail == arc->head) { test_edge = other_arc->edges.last; - if (test_edge->bone != NULL) - { + if (test_edge->bone != NULL) { break; } } } } - if (other_arc == NULL) - { + if (other_arc == NULL) { RigNode *new_node = (RigNode*)BLI_FindNodeByPosition((BGraph*)rg, first_edge->tail, 0.001); - if (new_node) - { + if (new_node) { /* remove null edge in other arcs too */ - for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) - { - if (other_arc != arc) - { + for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) { + if (other_arc != arc) { RigEdge *test_edge; - if (other_arc->head == arc->head) - { + if (other_arc->head == arc->head) { BLI_replaceNodeInArc((BGraph*)rg, (BArc*)other_arc, (BNode*)new_node, (BNode*)other_arc->head); test_edge = other_arc->edges.first; BLI_remlink(&other_arc->edges, test_edge); MEM_freeN(test_edge); } - else if (other_arc->tail == arc->head) - { + else if (other_arc->tail == arc->head) { BLI_replaceNodeInArc((BGraph*)rg, (BArc*)other_arc, (BNode*)new_node, (BNode*)other_arc->tail); test_edge = other_arc->edges.last; BLI_remlink(&other_arc->edges, test_edge); @@ -1212,31 +1088,25 @@ static void RIG_removeUneededOffsets(RigGraph *rg) MEM_freeN(first_edge); BLI_replaceNodeInArc((BGraph*)rg, (BArc*)arc, (BNode*)new_node, (BNode*)arc->head); } - else - { + else { RigEdge *next_edge = first_edge->next; - if (next_edge) - { + if (next_edge) { BLI_remlink(&arc->edges, first_edge); MEM_freeN(first_edge); copy_v3_v3(arc->head->p, next_edge->head); /* remove null edge in other arcs too */ - for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) - { - if (other_arc != arc) - { + for (other_arc = rg->arcs.first; other_arc; other_arc = other_arc->next) { + if (other_arc != arc) { RigEdge *test_edge; - if (other_arc->head == arc->head) - { + if (other_arc->head == arc->head) { test_edge = other_arc->edges.first; BLI_remlink(&other_arc->edges, test_edge); MEM_freeN(test_edge); } - else if (other_arc->tail == arc->head) - { + else if (other_arc->tail == arc->head) { test_edge = other_arc->edges.last; BLI_remlink(&other_arc->edges, test_edge); MEM_freeN(test_edge); @@ -1249,19 +1119,15 @@ static void RIG_removeUneededOffsets(RigGraph *rg) } } - if (last_edge->bone == NULL) - { - if (len_v3v3(last_edge->head, arc->tail->p) <= 0.001f) - { + if (last_edge->bone == NULL) { + if (len_v3v3(last_edge->head, arc->tail->p) <= 0.001f) { BLI_remlink(&arc->edges, last_edge); MEM_freeN(last_edge); } - else if (arc->tail->degree == 1) - { + else if (arc->tail->degree == 1) { RigNode *new_node = (RigNode*)BLI_FindNodeByPosition((BGraph*)rg, last_edge->head, 0.001f); - if (new_node) - { + if (new_node) { RigEdge *previous_edge = last_edge->prev; BLI_remlink(&arc->edges, last_edge); @@ -1269,17 +1135,14 @@ static void RIG_removeUneededOffsets(RigGraph *rg) BLI_replaceNodeInArc((BGraph*)rg, (BArc*)arc, (BNode*)new_node, (BNode*)arc->tail); /* set previous angle to 0, since there's no following edges */ - if (previous_edge) - { + if (previous_edge) { previous_edge->angle = 0; } } - else - { + else { RigEdge *previous_edge = last_edge->prev; - if (previous_edge) - { + if (previous_edge) { BLI_remlink(&arc->edges, last_edge); MEM_freeN(last_edge); @@ -1298,32 +1161,25 @@ static void RIG_arcFromBoneChain(RigGraph *rg, ListBase *list, EditBone *root_bo RigArc *arc = NULL; int contain_head = 0; - for (bone = root_bone; bone; bone = nextEditBoneChild(list, bone, 0)) - { + for (bone = root_bone; bone; bone = nextEditBoneChild(list, bone, 0)) { int nb_children; - if (selected == 0 || (bone->flag & BONE_SELECTED)) - { - if ((bone->flag & BONE_NO_DEFORM) == 0) - { + if (selected == 0 || (bone->flag & BONE_SELECTED)) { + if ((bone->flag & BONE_NO_DEFORM) == 0) { BLI_ghash_insert(rg->bones_map, bone->name, bone); - if (arc == NULL) - { + if (arc == NULL) { arc = newRigArc(rg); - if (starting_node == NULL) - { + if (starting_node == NULL) { starting_node = newRigNodeHead(rg, arc, root_bone->head); } - else - { + else { addRigNodeHead(rg, arc, starting_node); } } - if (bone->parent && (bone->flag & BONE_CONNECTED) == 0) - { + if (bone->parent && (bone->flag & BONE_CONNECTED) == 0) { RIG_addEdgeToArc(arc, bone->head, NULL); } @@ -1331,34 +1187,28 @@ static void RIG_arcFromBoneChain(RigGraph *rg, ListBase *list, EditBone *root_bo last_bone = bone; - if (strcmp(bone->name, "head") == 0) - { + if (strcmp(bone->name, "head") == 0) { contain_head = 1; } } - else if ((bone->flag & BONE_EDITMODE_LOCKED) == 0) /* ignore locked bones */ - { + else if ((bone->flag & BONE_EDITMODE_LOCKED) == 0) { /* ignore locked bones */ RIG_addControlBone(rg, bone); } } nb_children = countEditBoneChildren(list, bone); - if (nb_children > 1) - { + if (nb_children > 1) { RigNode *end_node = NULL; int i; - if (arc != NULL) - { + if (arc != NULL) { end_node = newRigNodeTail(rg, arc, bone->tail); } - else - { + else { end_node = newRigNode(rg, bone->tail); } - for (i = 0; i < nb_children; i++) - { + for (i = 0; i < nb_children; i++) { root_bone = nextEditBoneChild(list, bone, i); RIG_arcFromBoneChain(rg, list, root_bone, end_node, selected); } @@ -1369,13 +1219,11 @@ static void RIG_arcFromBoneChain(RigGraph *rg, ListBase *list, EditBone *root_bo } /* If the loop exited without forking */ - if (arc != NULL && bone == NULL) - { + if (arc != NULL && bone == NULL) { newRigNodeTail(rg, arc, last_bone->tail); } - if (contain_head) - { + if (contain_head) { rg->head = arc->tail; } } @@ -1383,32 +1231,26 @@ static void RIG_arcFromBoneChain(RigGraph *rg, ListBase *list, EditBone *root_bo /*******************************************************************************************************/ static void RIG_findHead(RigGraph *rg) { - if (rg->head == NULL) - { - if (BLI_countlist(&rg->arcs) == 1) - { + if (rg->head == NULL) { + if (BLI_countlist(&rg->arcs) == 1) { RigArc *arc = rg->arcs.first; rg->head = (RigNode*)arc->head; } - else - { + else { RigArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RigEdge *edge = arc->edges.last; - if (edge->bone->flag & (BONE_TIPSEL|BONE_SELECTED)) - { + if (edge->bone->flag & (BONE_TIPSEL|BONE_SELECTED)) { rg->head = arc->tail; break; } } } - if (rg->head == NULL) - { + if (rg->head == NULL) { rg->head = rg->nodes.first; } } @@ -1420,8 +1262,7 @@ static void RIG_printNode(RigNode *node, const char name[]) { printf("%s %p %i <%0.3f, %0.3f, %0.3f>\n", name, (void *)node, node->degree, node->p[0], node->p[1], node->p[2]); - if (node->symmetry_flag & SYM_TOPOLOGICAL) - { + if (node->symmetry_flag & SYM_TOPOLOGICAL) { if (node->symmetry_flag & SYM_AXIAL) printf("Symmetry AXIAL\n"); else if (node->symmetry_flag & SYM_RADIAL) @@ -1435,8 +1276,7 @@ void RIG_printArcBones(RigArc *arc) { RigEdge *edge; - for (edge = arc->edges.first; edge; edge = edge->next) - { + for (edge = arc->edges.first; edge; edge = edge->next) { if (edge->bone) printf("%s ", edge->bone->name); else @@ -1465,17 +1305,14 @@ static void RIG_printLinkedCtrl(RigGraph *rg, EditBone *bone, int tabs) char *s = indent; int i; - for (i = 0; i < tabs; i++) - { + for (i = 0; i < tabs; i++) { s[0] = '\t'; s++; } s[0] = 0; - for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) - { - if (ctrl->link == bone) - { + for (ctrl = rg->controls.first; ctrl; ctrl = ctrl->next) { + if (ctrl->link == bone) { RIG_printCtrl(ctrl, indent); RIG_printLinkedCtrl(rg, ctrl->bone, tabs + 1); } @@ -1488,13 +1325,11 @@ void RIG_printArc(RigGraph *rg, RigArc *arc) RIG_printNode((RigNode*)arc->head, "head"); - for (edge = arc->edges.first; edge; edge = edge->next) - { + for (edge = arc->edges.first; edge; edge = edge->next) { printf("\tinner joints %0.3f %0.3f %0.3f\n", edge->tail[0], edge->tail[1], edge->tail[2]); printf("\t\tlength %f\n", edge->length); printf("\t\tangle %f\n", edge->angle * 180 / M_PI); - if (edge->bone) - { + if (edge->bone) { printf("\t\t%s\n", edge->bone->name); RIG_printLinkedCtrl(rg, edge->bone, 3); } @@ -1509,18 +1344,15 @@ void RIG_printGraph(RigGraph *rg) RigArc *arc; printf("---- ARCS ----\n"); - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { RIG_printArc(rg, arc); printf("\n"); } - if (rg->head) - { + if (rg->head) { RIG_printNode(rg->head, "HEAD NODE:"); } - else - { + else { printf("HEAD NODE: NONE\n"); } } @@ -1536,12 +1368,10 @@ RigGraph *RIG_graphFromArmature(const bContext *C, Object *ob, bArmature *arm) rg = newRigGraph(); - if (obedit == ob) - { + if (obedit == ob) { rg->editbones = ((bArmature *)obedit->data)->edbo; } - else - { + else { rg->editbones = MEM_callocN(sizeof(ListBase), "EditBones"); make_boneList(rg->editbones, &arm->bonebase, NULL, NULL); rg->flag |= RIG_FREE_BONELIST; @@ -1551,8 +1381,7 @@ RigGraph *RIG_graphFromArmature(const bContext *C, Object *ob, bArmature *arm) /* Do the rotations */ for (ebone = rg->editbones->first; ebone; ebone=ebone->next) { - if (ebone->parent == NULL) - { + if (ebone->parent == NULL) { RIG_arcFromBoneChain(rg, rg->editbones, ebone, NULL, 0); } } @@ -1571,8 +1400,7 @@ RigGraph *RIG_graphFromArmature(const bContext *C, Object *ob, bArmature *arm) RIG_reconnectControlBones(rg); /* after symmetry, because we use levels to find best match */ - if (BLI_isGraphCyclic((BGraph*)rg)) - { + if (BLI_isGraphCyclic((BGraph*)rg)) { printf("armature cyclic\n"); } @@ -1588,12 +1416,10 @@ static RigGraph *armatureSelectedToGraph(bContext *C, Object *ob, bArmature *arm rg = newRigGraph(); - if (obedit == ob) - { + if (obedit == ob) { rg->editbones = arm->edbo; } - else - { + else { rg->editbones = MEM_callocN(sizeof(ListBase), "EditBones"); make_boneList(rg->editbones, &arm->bonebase, NULL, NULL); rg->flag |= RIG_FREE_BONELIST; @@ -1603,8 +1429,7 @@ static RigGraph *armatureSelectedToGraph(bContext *C, Object *ob, bArmature *arm /* Do the rotations */ for (ebone = rg->editbones->first; ebone; ebone=ebone->next) { - if (ebone->parent == NULL) - { + if (ebone->parent == NULL) { RIG_arcFromBoneChain(rg, rg->editbones, ebone, NULL, 1); } } @@ -1623,8 +1448,7 @@ static RigGraph *armatureSelectedToGraph(bContext *C, Object *ob, bArmature *arm RIG_reconnectControlBones(rg); /* after symmetry, because we use levels to find best match */ - if (BLI_isGraphCyclic((BGraph*)rg)) - { + if (BLI_isGraphCyclic((BGraph*)rg)) { printf("armature cyclic\n"); } @@ -1721,8 +1545,7 @@ static void repositionTailControl(RigGraph *rigg, RigControl *ctrl); static void finalizeControl(RigGraph *rigg, RigControl *ctrl, float resize) { - if ((ctrl->flag & RIG_CTRL_DONE) == RIG_CTRL_DONE) - { + if ((ctrl->flag & RIG_CTRL_DONE) == RIG_CTRL_DONE) { RigControl *ctrl_child; #if 0 @@ -1737,17 +1560,14 @@ static void finalizeControl(RigGraph *rigg, RigControl *ctrl, float resize) #endif /* if there was a tail link: apply link, recalc resize factor and qrot */ - if (ctrl->tail_mode != TL_NONE) - { + if (ctrl->tail_mode != TL_NONE) { float *tail_vec = NULL; float v1[3], v2[3], qtail[4]; - if (ctrl->tail_mode == TL_TAIL) - { + if (ctrl->tail_mode == TL_TAIL) { tail_vec = ctrl->link_tail->tail; } - else if (ctrl->tail_mode == TL_HEAD) - { + else if (ctrl->tail_mode == TL_HEAD) { tail_vec = ctrl->link_tail->head; } @@ -1765,14 +1585,11 @@ static void finalizeControl(RigGraph *rigg, RigControl *ctrl, float resize) ctrl->bone->roll = rollBoneByQuat(ctrl->bone, ctrl->up_axis, ctrl->qrot); /* Cascade to connected control bones */ - for (ctrl_child = rigg->controls.first; ctrl_child; ctrl_child = ctrl_child->next) - { - if (ctrl_child->link == ctrl->bone) - { + for (ctrl_child = rigg->controls.first; ctrl_child; ctrl_child = ctrl_child->next) { + if (ctrl_child->link == ctrl->bone) { repositionControl(rigg, ctrl_child, ctrl->bone->head, ctrl->bone->tail, ctrl->qrot, resize); } - if (ctrl_child->link_tail == ctrl->bone) - { + if (ctrl_child->link_tail == ctrl->bone) { repositionTailControl(rigg, ctrl_child); } } @@ -1800,8 +1617,7 @@ static void repositionControl(RigGraph *rigg, RigControl *ctrl, float head[3], f copy_qt_qt(ctrl->qrot, qrot); - if (ctrl->tail_mode == TL_NONE) - { + if (ctrl->tail_mode == TL_NONE) { sub_v3_v3v3(tail_offset, ctrl->tail, ctrl->head); mul_v3_fl(tail_offset, resize); mul_qt_v3(qrot, tail_offset); @@ -1838,38 +1654,30 @@ static void repositionBone(bContext *C, RigGraph *rigg, RigEdge *edge, float vec copy_v3_v3(bone->head, vec0); copy_v3_v3(bone->tail, vec1); - if (!is_zero_v3(up_axis)) - { + if (!is_zero_v3(up_axis)) { float qroll[4]; - if (scene->toolsettings->skgen_retarget_roll == SK_RETARGET_ROLL_VIEW) - { + if (scene->toolsettings->skgen_retarget_roll == SK_RETARGET_ROLL_VIEW) { bone->roll = rollBoneByQuatAligned(bone, edge->up_axis, qrot, qroll, up_axis); } - else if (scene->toolsettings->skgen_retarget_roll == SK_RETARGET_ROLL_JOINT) - { + else if (scene->toolsettings->skgen_retarget_roll == SK_RETARGET_ROLL_JOINT) { bone->roll = rollBoneByQuatJoint(edge, edge->prev, qrot, qroll, up_axis); } - else - { + else { unit_qt(qroll); } mul_qt_qtqt(qrot, qroll, qrot); } - else - { + else { bone->roll = rollBoneByQuat(bone, edge->up_axis, qrot); } - for (ctrl = rigg->controls.first; ctrl; ctrl = ctrl->next) - { - if (ctrl->link == bone) - { + for (ctrl = rigg->controls.first; ctrl; ctrl = ctrl->next) { + if (ctrl->link == bone) { repositionControl(rigg, ctrl, vec0, vec1, qrot, resize); } - if (ctrl->link_tail == bone) - { + if (ctrl->link_tail == bone) { repositionTailControl(rigg, ctrl); } } @@ -1890,8 +1698,7 @@ static RetargetMode detectArcRetargetMode(RigArc *iarc) int nb_edges = 0; - for (edge = iarc->edges.first; edge; edge = edge->next) - { + for (edge = iarc->edges.first; edge; edge = edge->next) { avg_angle += edge->angle; nb_edges++; } @@ -1901,29 +1708,23 @@ static RetargetMode detectArcRetargetMode(RigArc *iarc) /* avg_length = iarc->length / nb_edges; */ /* UNUSED */ - if (nb_edges > 2) - { - for (edge = iarc->edges.first; edge; edge = edge->next) - { - if (fabs(edge->angle - avg_angle) > M_PI / 6) - { + if (nb_edges > 2) { + for (edge = iarc->edges.first; edge; edge = edge->next) { + if (fabs(edge->angle - avg_angle) > M_PI / 6) { large_angle = 1; } } } - else if (nb_edges == 2 && avg_angle > 0) - { + else if (nb_edges == 2 && avg_angle > 0) { large_angle = 1; } - if (large_angle == 0) - { + if (large_angle == 0) { mode = RETARGET_LENGTH; } - if (earc->bcount <= (iarc->count - 1)) - { + if (earc->bcount <= (iarc->count - 1)) { mode = RETARGET_LENGTH; } @@ -1936,8 +1737,7 @@ static void printMovesNeeded(int *positions, int nb_positions) int moves = 0; int i; - for (i = 0; i < nb_positions; i++) - { + for (i = 0; i < nb_positions; i++) { moves += positions[i] - (i + 1); } @@ -1948,8 +1748,7 @@ static void printPositions(int *positions, int nb_positions) { int i; - for (i = 0; i < nb_positions; i++) - { + for (i = 0; i < nb_positions; i++) { printf("%i ", positions[i]); } printf("\n"); @@ -1965,17 +1764,14 @@ static float costDistance(BArcIterator *iter, float *vec0, float *vec1, int i0, float v1[3], v2[3], c[3]; float v1_inpf; - if (distance_weight > 0) - { + if (distance_weight > 0) { sub_v3_v3v3(v1, vec0, vec1); v1_inpf = dot_v3v3(v1, v1); - if (v1_inpf > 0) - { + if (v1_inpf > 0) { int j; - for (j = i0 + 1; j < i1 - 1; j++) - { + for (j = i0 + 1; j < i1 - 1; j++) { float dist; bucket = IT_peek(iter, j); @@ -1991,48 +1787,40 @@ static float costDistance(BArcIterator *iter, float *vec0, float *vec1, int i0, return distance_weight * max_dist; } - else - { + else { return MAX_COST; } } - else - { + else { return 0; } } static float costAngle(float original_angle, float vec_first[3], float vec_second[3], float angle_weight) { - if (angle_weight > 0) - { + if (angle_weight > 0) { float current_angle; - if (!is_zero_v3(vec_first) && !is_zero_v3(vec_second)) - { + if (!is_zero_v3(vec_first) && !is_zero_v3(vec_second)) { current_angle = saacos(dot_v3v3(vec_first, vec_second)); return angle_weight * fabsf(current_angle - original_angle); } - else - { + else { return angle_weight * (float)M_PI; } } - else - { + else { return 0; } } static float costLength(float original_length, float current_length, float length_weight) { - if (current_length == 0) - { + if (current_length == 0) { return MAX_COST; } - else - { + else { float length_ratio = fabs((current_length - original_length) / original_length); return length_weight * length_ratio * length_ratio; } @@ -2062,8 +1850,7 @@ static float calcCostAngleLengthDistance(BArcIterator *iter, float **UNUSED(vec_ /* Angle cost */ - if (edge->prev) - { + if (edge->prev) { sub_v3_v3v3(vec_first, vec1, vec0); normalize_v3(vec_first); @@ -2089,8 +1876,7 @@ static void copyMemoPositions(int *positions, MemoNode *table, int nb_positions, int previous = 0, current = 0; int i = 0; - for (i = 0; joints_left > 0; joints_left--, i++) - { + for (i = 0; joints_left > 0; joints_left--, i++) { MemoNode *node; node = table + indexMemoNode(nb_positions, previous, current, joints_left); @@ -2108,12 +1894,10 @@ static MemoNode * solveJoints(MemoNode *table, BArcIterator *iter, float **vec_c node = table + index; - if (node->weight != 0) - { + if (node->weight != 0) { return node; } - else if (joints_left == 0) - { + else if (joints_left == 0) { float *vec0 = vec_cache[previous]; float *vec1 = vec_cache[current]; float *vec2 = vec_cache[nb_positions + 1]; @@ -2122,8 +1906,7 @@ static MemoNode * solveJoints(MemoNode *table, BArcIterator *iter, float **vec_c return node; } - else - { + else { MemoNode *min_node = NULL; float *vec0 = vec_cache[previous]; float *vec1 = vec_cache[current]; @@ -2131,8 +1914,7 @@ static MemoNode * solveJoints(MemoNode *table, BArcIterator *iter, float **vec_c int min_next= 0; int next; - for (next = current + 1; next <= nb_positions - (joints_left - 1); next++) - { + for (next = current + 1; next <= nb_positions - (joints_left - 1); next++) { MemoNode *next_node; float *vec2 = vec_cache[next]; float weight = 0.0f; @@ -2140,8 +1922,7 @@ static MemoNode * solveJoints(MemoNode *table, BArcIterator *iter, float **vec_c /* ADD WEIGHT OF PREVIOUS - CURRENT - NEXT triple */ weight = calcCostAngleLengthDistance(iter, vec_cache, edge, vec0, vec1, vec2, current, next, angle_weight, length_weight, distance_weight); - if (weight >= MAX_COST) - { + if (weight >= MAX_COST) { continue; } @@ -2149,22 +1930,19 @@ static MemoNode * solveJoints(MemoNode *table, BArcIterator *iter, float **vec_c next_node = solveJoints(table, iter, vec_cache, nb_joints, nb_positions, current, next, edge->next, joints_left - 1, angle_weight, length_weight, distance_weight); weight += next_node->weight; - if (min_node == NULL || weight < min_weight) - { + if (min_node == NULL || weight < min_weight) { min_weight = weight; min_node = next_node; min_next = next; } } - if (min_node) - { + if (min_node) { node->weight = min_weight; node->next = min_next; return node; } - else - { + else { node->weight = MAX_COST; return node; } @@ -2178,12 +1956,12 @@ static int testFlipArc(RigArc *iarc, RigNode *inode_start) ReebNode *enode_start = BIF_NodeFromIndex(earc, inode_start->link_mesh); /* no flip needed if both nodes are the same */ - if ((enode_start == earc->head && inode_start == iarc->head) || (enode_start == earc->tail && inode_start == iarc->tail)) + if ((enode_start == earc->head && inode_start == iarc->head) || + (enode_start == earc->tail && inode_start == iarc->tail)) { return 0; } - else - { + else { return 1; } } @@ -2209,38 +1987,32 @@ static void retargetArctoArcAggresive(bContext *C, RigGraph *rigg, RigArc *iarc, RetargetMethod method = METHOD_MEMOIZE; int i; - if (nb_joints > earc->bcount) - { + if (nb_joints > earc->bcount) { printf("NOT ENOUGH BUCKETS!\n"); return; } best_positions = MEM_callocN(sizeof(int) * nb_joints, "Best positions"); - if (testFlipArc(iarc, inode_start)) - { + if (testFlipArc(iarc, inode_start)) { node_start = earc->tail; node_end = earc->head; } - else - { + else { node_start = earc->head; node_end = earc->tail; } /* equal number of joints and potential position, just fill them in */ - if (nb_joints == earc->bcount) - { + if (nb_joints == earc->bcount) { int i; /* init with first values */ - for (i = 0; i < nb_joints; i++) - { + for (i = 0; i < nb_joints; i++) { best_positions[i] = i + 1; } } - if (method == METHOD_MEMOIZE) - { + if (method == METHOD_MEMOIZE) { int nb_positions = earc->bcount; int nb_memo_nodes = nb_positions * nb_positions * (nb_joints + 1); MemoNode *table = MEM_callocN(nb_memo_nodes * sizeof(MemoNode), "memoization table"); @@ -2255,8 +2027,7 @@ static void retargetArctoArcAggresive(bContext *C, RigGraph *rigg, RigArc *iarc, initArcIterator(iter, earc, node_start); - for (i = 1; i <= nb_positions; i++) - { + for (i = 1; i <= nb_positions; i++) { EmbedBucket *bucket = IT_peek(iter, i); positions_cache[i] = bucket->p; } @@ -2290,20 +2061,17 @@ static void retargetArctoArcAggresive(bContext *C, RigGraph *rigg, RigArc *iarc, edge = edge->next, i++) { float *no = NULL; - if (i < nb_joints) - { + if (i < nb_joints) { bucket = IT_peek(iter, best_positions[i]); vec1 = bucket->p; no = bucket->no; } - else - { + else { vec1 = node_end->p; no = node_end->no; } - if (edge->bone) - { + if (edge->bone) { repositionBone(C, rigg, edge, vec0, vec1, no); } @@ -2327,13 +2095,11 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri float *previous_vec = NULL; - if (testFlipArc(iarc, inode_start)) - { + if (testFlipArc(iarc, inode_start)) { node_start = (ReebNode*)earc->tail; node_end = (ReebNode*)earc->head; } - else - { + else { node_start = (ReebNode*)earc->head; node_end = (ReebNode*)earc->tail; } @@ -2344,8 +2110,7 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri vec0 = node_start->p; - while (bucket != NULL) - { + while (bucket != NULL) { vec1 = bucket->p; embedding_length += len_v3v3(vec0, vec1); @@ -2365,14 +2130,12 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri previous_vec = vec0; vec1 = bucket->p; - for (edge = iarc->edges.first; edge; edge = edge->next) - { + for (edge = iarc->edges.first; edge; edge = edge->next) { float new_bone_length = edge->length / iarc->length * embedding_length; float *no = NULL; float length = 0; - while (bucket && new_bone_length > length) - { + while (bucket && new_bone_length > length) { length += len_v3v3(previous_vec, vec1); bucket = IT_next(iter); previous_vec = vec1; @@ -2380,15 +2143,13 @@ static void retargetArctoArcLength(bContext *C, RigGraph *rigg, RigArc *iarc, Ri no = bucket->no; } - if (bucket == NULL) - { + if (bucket == NULL) { vec1 = node_end->p; no = node_end->no; } /* no need to move virtual edges (space between unconnected bones) */ - if (edge->bone) - { + if (edge->bone) { repositionBone(C, rigg, edge, vec0, vec1, no); } @@ -2429,29 +2190,23 @@ void *exec_retargetArctoArc(void *param) RigNode *inode_start = p->inode_start; ReebArc *earc = iarc->link_mesh; - if (BLI_countlist(&iarc->edges) == 1) - { + if (BLI_countlist(&iarc->edges) == 1) { RigEdge *edge = iarc->edges.first; - if (testFlipArc(iarc, inode_start)) - { + if (testFlipArc(iarc, inode_start)) { repositionBone(C, rigg, edge, earc->tail->p, earc->head->p, earc->head->no); } - else - { + else { repositionBone(C, rigg, edge, earc->head->p, earc->tail->p, earc->tail->no); } } - else - { + else { RetargetMode mode = detectArcRetargetMode(iarc); - if (mode == RETARGET_AGGRESSIVE) - { + if (mode == RETARGET_AGGRESSIVE) { retargetArctoArcAggresive(C, rigg, iarc, inode_start); } - else - { + else { retargetArctoArcLength(C, rigg, iarc, inode_start); } } @@ -2474,8 +2229,7 @@ static void matchMultiResolutionNode(RigGraph *rigg, RigNode *inode, ReebNode *t inode->link_mesh = enode; - while (ishape == eshape && enode->link_down) - { + while (ishape == eshape && enode->link_down) { inode->link_mesh = enode; enode = enode->link_down; @@ -2488,16 +2242,13 @@ static void markMultiResolutionChildArc(ReebNode *end_enode, ReebNode *enode) { int i; - for (i = 0; i < enode->degree; i++) - { + for (i = 0; i < enode->degree; i++) { ReebArc *earc = (ReebArc*)enode->arcs[i]; - if (earc->flag == ARC_FREE) - { + if (earc->flag == ARC_FREE) { earc->flag = ARC_TAKEN; - if (earc->tail->degree > 1 && earc->tail != end_enode) - { + if (earc->tail->degree > 1 && earc->tail != end_enode) { markMultiResolutionChildArc(end_enode, earc->tail); } break; @@ -2507,15 +2258,12 @@ static void markMultiResolutionChildArc(ReebNode *end_enode, ReebNode *enode) static void markMultiResolutionArc(ReebArc *start_earc) { - if (start_earc->link_up) - { + if (start_earc->link_up) { ReebArc *earc; - for (earc = start_earc->link_up ; earc; earc = earc->link_up) - { + for (earc = start_earc->link_up ; earc; earc = earc->link_up) { earc->flag = ARC_TAKEN; - if (earc->tail->index != start_earc->tail->index) - { + if (earc->tail->index != start_earc->tail->index) { markMultiResolutionChildArc(earc->tail, earc->tail); } } @@ -2531,8 +2279,7 @@ static void matchMultiResolutionArc(RigGraph *rigg, RigNode *start_node, RigArc ishape = BLI_subtreeShape((BGraph*)rigg, (BNode*)start_node, (BArc*)next_iarc, 1) % SHAPE_LEVELS; eshape = BLI_subtreeShape((BGraph*)reebg, (BNode*)enode, (BArc*)next_earc, 1) % SHAPE_LEVELS; - while (ishape != eshape && next_earc->link_up) - { + while (ishape != eshape && next_earc->link_up) { next_earc->flag = ARC_TAKEN; // mark previous as taken, to prevent backtrack on lower levels next_earc = next_earc->link_up; @@ -2563,8 +2310,7 @@ static void matchMultiResolutionStartingNode(RigGraph *rigg, ReebGraph *reebg, R ishape = BLI_subtreeShape((BGraph*)rigg, (BNode*)inode, NULL, 0) % SHAPE_LEVELS; eshape = BLI_subtreeShape((BGraph*)rigg->link_mesh, (BNode*)enode, NULL, 0) % SHAPE_LEVELS; - while (ishape != eshape && reebg->link_up) - { + while (ishape != eshape && reebg->link_up) { reebg = reebg->link_up; enode = reebg->nodes.first; @@ -2593,8 +2339,7 @@ static void findCorrespondingArc(RigGraph *rigg, RigArc *start_arc, RigNode *sta // RIG_printArcBones(next_iarc); // } - for (i = 0; i < enode->degree; i++) - { + for (i = 0; i < enode->degree; i++) { next_earc = (ReebArc*)enode->arcs[i]; // if (next_earc->flag == ARC_FREE) @@ -2619,20 +2364,17 @@ static void findCorrespondingArc(RigGraph *rigg, RigArc *start_arc, RigNode *sta } /* not found, try at higher nodes (lower node might have filtered internal arcs, messing shape of tree */ - if (next_iarc->link_mesh == NULL) - { + if (next_iarc->link_mesh == NULL) { // printf("NO CORRESPONDING ARC FOUND - GOING TO HIGHER LEVELS\n"); - if (enode->link_up) - { + if (enode->link_up) { start_node->link_mesh = enode->link_up; findCorrespondingArc(rigg, start_arc, start_node, next_iarc, 0); } } /* still not found, print debug info */ - if (root && next_iarc->link_mesh == NULL) - { + if (root && next_iarc->link_mesh == NULL) { start_node->link_mesh = enode; /* linking back with root node */ // printf("NO CORRESPONDING ARC FOUND\n"); @@ -2651,12 +2393,10 @@ static void findCorrespondingArc(RigGraph *rigg, RigArc *start_arc, RigNode *sta // } /* Emergency matching */ - for (i = 0; i < enode->degree; i++) - { + for (i = 0; i < enode->degree; i++) { next_earc = (ReebArc*)enode->arcs[i]; - if (next_earc->flag == ARC_FREE && next_earc->symmetry_level == symmetry_level) - { + if (next_earc->flag == ARC_FREE && next_earc->symmetry_level == symmetry_level) { // printf("USING:\n"); // printf("flag %i -- level %i -- flag %i -- group %i\n", next_earc->flag, next_earc->symmetry_level, next_earc->symmetry_flag, next_earc->symmetry_group); matchMultiResolutionArc(rigg, start_node, next_iarc, next_earc); @@ -2673,8 +2413,7 @@ static void retargetSubgraph(bContext *C, RigGraph *rigg, RigArc *start_arc, Rig int i; /* no start arc on first node */ - if (start_arc) - { + if (start_arc) { ReebNode *enode = start_node->link_mesh; ReebArc *earc = start_arc->link_mesh; @@ -2687,16 +2426,13 @@ static void retargetSubgraph(bContext *C, RigGraph *rigg, RigArc *start_arc, Rig matchMultiResolutionNode(rigg, inode, enode); } - for (i = 0; i < inode->degree; i++) - { + for (i = 0; i < inode->degree; i++) { RigArc *next_iarc = (RigArc*)inode->arcs[i]; /* no back tracking */ - if (next_iarc != start_arc) - { + if (next_iarc != start_arc) { findCorrespondingArc(rigg, start_arc, inode, next_iarc, 1); - if (next_iarc->link_mesh) - { + if (next_iarc->link_mesh) { retargetSubgraph(C, rigg, next_iarc, inode); } } @@ -2715,10 +2451,8 @@ static void adjustGraphs(bContext *C, RigGraph *rigg) bArmature *arm= rigg->ob->data; RigArc *arc; - for (arc = rigg->arcs.first; arc; arc = arc->next) - { - if (arc->link_mesh) - { + for (arc = rigg->arcs.first; arc; arc = arc->next) { + if (arc->link_mesh) { retargetArctoArc(C, rigg, arc, arc->head); } } @@ -2762,25 +2496,21 @@ const char *RIG_nameBone(RigGraph *rg, int arc_index, int bone_index) RigArc *arc = BLI_findlink(&rg->arcs, arc_index); RigEdge *iedge; - if (arc == NULL) - { + if (arc == NULL) { return "None"; } - if (bone_index == BLI_countlist(&arc->edges)) - { + if (bone_index == BLI_countlist(&arc->edges)) { return "Last joint"; } iedge = BLI_findlink(&arc->edges, bone_index); - if (iedge == NULL) - { + if (iedge == NULL) { return "Done"; } - if (iedge->bone == NULL) - { + if (iedge->bone == NULL) { return "Bone offset"; } @@ -2794,8 +2524,7 @@ int RIG_nbJoints(RigGraph *rg) total += BLI_countlist(&rg->nodes); - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { total += BLI_countlist(&arc->edges) - 1; /* -1 because end nodes are already counted */ } @@ -2804,8 +2533,7 @@ int RIG_nbJoints(RigGraph *rg) static void BIF_freeRetarget(void) { - if (GLOBAL_RIGG) - { + if (GLOBAL_RIGG) { RIG_freeRigGraph((BGraph*)GLOBAL_RIGG); GLOBAL_RIGG = NULL; } @@ -2830,8 +2558,7 @@ void BIF_retargetArmature(bContext *C) CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { Object *ob = base->object; - if (ob->type==OB_ARMATURE) - { + if (ob->type==OB_ARMATURE) { RigGraph *rigg; bArmature *arm; @@ -2910,8 +2637,7 @@ void BIF_retargetArc(bContext *C, ReebArc *earc, RigGraph *template_rigg) template_rigg = armatureSelectedToGraph(C, ob, ob->data); } - if (template_rigg->arcs.first == NULL) - { + if (template_rigg->arcs.first == NULL) { // XXX // error("No Template and no deforming bones selected"); return; @@ -2930,8 +2656,7 @@ void BIF_retargetArc(bContext *C, ReebArc *earc, RigGraph *template_rigg) finishRetarget(rigg); /* free template if it comes from the edit armature */ - if (free_template) - { + if (free_template) { RIG_freeRigGraph((BGraph*)template_rigg); } RIG_freeRigGraph((BGraph*)rigg); @@ -2944,8 +2669,7 @@ void BIF_retargetArc(bContext *C, ReebArc *earc, RigGraph *template_rigg) void BIF_adjustRetarget(bContext *C) { - if (GLOBAL_RIGG) - { + if (GLOBAL_RIGG) { adjustGraphs(C, GLOBAL_RIGG); } } diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index 81b020a4cf9..4c7ab833e69 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -162,25 +162,21 @@ void BIF_makeListTemplates(const bContext *C) Base *base; int index = 0; - if (TEMPLATES_HASH != NULL) - { + if (TEMPLATES_HASH != NULL) { BLI_ghash_free(TEMPLATES_HASH, NULL, NULL); } TEMPLATES_HASH = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp, "makeListTemplates gh"); TEMPLATES_CURRENT = 0; - for ( base = FIRSTBASE; base; base = base->next ) - { + for ( base = FIRSTBASE; base; base = base->next ) { Object *ob = base->object; - if (ob != obedit && ob->type == OB_ARMATURE) - { + if (ob != obedit && ob->type == OB_ARMATURE) { index++; BLI_ghash_insert(TEMPLATES_HASH, SET_INT_IN_POINTER(index), ob); - if (ob == ts->skgen_template) - { + if (ob == ts->skgen_template) { TEMPLATES_CURRENT = index; } } @@ -193,8 +189,7 @@ const char *BIF_listTemplates(const bContext *UNUSED(C)) char menu_header[] = "Template%t|None%x0|"; char *p; - if (TEMPLATES_MENU != NULL) - { + if (TEMPLATES_MENU != NULL) { MEM_freeN(TEMPLATES_MENU); } @@ -206,8 +201,7 @@ const char *BIF_listTemplates(const bContext *UNUSED(C)) BLI_ghashIterator_init(&ghi, TEMPLATES_HASH); - while (!BLI_ghashIterator_isDone(&ghi)) - { + while (!BLI_ghashIterator_isDone(&ghi)) { Object *ob = BLI_ghashIterator_getValue(&ghi); int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi)); @@ -223,18 +217,15 @@ int BIF_currentTemplate(const bContext *C) { ToolSettings *ts = CTX_data_tool_settings(C); - if (TEMPLATES_CURRENT == 0 && ts->skgen_template != NULL) - { + if (TEMPLATES_CURRENT == 0 && ts->skgen_template != NULL) { GHashIterator ghi; BLI_ghashIterator_init(&ghi, TEMPLATES_HASH); - while (!BLI_ghashIterator_isDone(&ghi)) - { + while (!BLI_ghashIterator_isDone(&ghi)) { Object *ob = BLI_ghashIterator_getValue(&ghi); int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi)); - if (ob == ts->skgen_template) - { + if (ob == ts->skgen_template) { TEMPLATES_CURRENT = key; break; } @@ -249,21 +240,17 @@ int BIF_currentTemplate(const bContext *C) static RigGraph* sk_makeTemplateGraph(const bContext *C, Object *ob) { Object *obedit = CTX_data_edit_object(C); - if (ob == obedit) - { + if (ob == obedit) { return NULL; } - if (ob != NULL) - { - if (TEMPLATE_RIGG && TEMPLATE_RIGG->ob != ob) - { + if (ob != NULL) { + if (TEMPLATE_RIGG && TEMPLATE_RIGG->ob != ob) { RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG); TEMPLATE_RIGG = NULL; } - if (TEMPLATE_RIGG == NULL) - { + if (TEMPLATE_RIGG == NULL) { bArmature *arm; arm = ob->data; @@ -280,12 +267,10 @@ int BIF_nbJointsTemplate(const bContext *C) ToolSettings *ts = CTX_data_tool_settings(C); RigGraph *rg = sk_makeTemplateGraph(C, ts->skgen_template); - if (rg) - { + if (rg) { return RIG_nbJoints(rg); } - else - { + else { return -1; } } @@ -297,15 +282,13 @@ const char * BIF_nameBoneTemplate(const bContext *C) RigGraph *rg; int index = 0; - if (stk && stk->active_stroke != NULL) - { + if (stk && stk->active_stroke != NULL) { index = stk->active_stroke->nb_points; } rg = sk_makeTemplateGraph(C, ts->skgen_template); - if (rg == NULL) - { + if (rg == NULL) { return ""; } @@ -314,20 +297,17 @@ const char * BIF_nameBoneTemplate(const bContext *C) void BIF_freeTemplates(bContext *UNUSED(C)) { - if (TEMPLATES_MENU != NULL) - { + if (TEMPLATES_MENU != NULL) { MEM_freeN(TEMPLATES_MENU); TEMPLATES_MENU = NULL; } - if (TEMPLATES_HASH != NULL) - { + if (TEMPLATES_HASH != NULL) { BLI_ghash_free(TEMPLATES_HASH, NULL, NULL); TEMPLATES_HASH = NULL; } - if (TEMPLATE_RIGG != NULL) - { + if (TEMPLATE_RIGG != NULL) { RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG); TEMPLATE_RIGG = NULL; } @@ -336,16 +316,13 @@ void BIF_freeTemplates(bContext *UNUSED(C)) void BIF_setTemplate(bContext *C, int index) { ToolSettings *ts = CTX_data_tool_settings(C); - if (index > 0) - { + if (index > 0) { ts->skgen_template = BLI_ghash_lookup(TEMPLATES_HASH, SET_INT_IN_POINTER(index)); } - else - { + else { ts->skgen_template = NULL; - if (TEMPLATE_RIGG != NULL) - { + if (TEMPLATE_RIGG != NULL) { RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG); } TEMPLATE_RIGG = NULL; @@ -357,44 +334,35 @@ void BIF_setTemplate(bContext *C, int index) static void sk_autoname(bContext *C, ReebArc *arc) { ToolSettings *ts = CTX_data_tool_settings(C); - if (ts->skgen_retarget_options & SK_RETARGET_AUTONAME) - { - if (arc == NULL) - { + if (ts->skgen_retarget_options & SK_RETARGET_AUTONAME) { + if (arc == NULL) { char *num = ts->skgen_num_string; int i = atoi(num); i++; BLI_snprintf(num, 8, "%i", i); } - else - { + else { char *side = ts->skgen_side_string; int valid = 0; int caps = 0; - if (side[0] == '\0') - { + if (side[0] == '\0') { valid = 1; } - else if (strcmp(side, "R")==0 || strcmp(side, "L")==0) - { + else if (strcmp(side, "R")==0 || strcmp(side, "L")==0) { valid = 1; caps = 1; } - else if (strcmp(side, "r")==0 || strcmp(side, "l")==0) - { + else if (strcmp(side, "r")==0 || strcmp(side, "l")==0) { valid = 1; caps = 0; } - if (valid) - { - if (arc->head->p[0] < 0) - { + if (valid) { + if (arc->head->p[0] < 0) { BLI_snprintf(side, 8, caps?"R":"r"); } - else - { + else { BLI_snprintf(side, 8, caps?"L":"l"); } } @@ -428,8 +396,7 @@ static ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3]) arc->bcount = stk->nb_points - 2; /* first and last are nodes, don't count */ arc->buckets = MEM_callocN(sizeof(EmbedBucket) * arc->bcount, "Buckets"); - for (i = 0; i < arc->bcount; i++) - { + for (i = 0; i < arc->bcount; i++) { copy_v3_v3(arc->buckets[i].p, stk->points[i + 1].p); mul_m4_v3(imat, arc->buckets[i].p); @@ -473,8 +440,7 @@ static void sk_retargetStroke(bContext *C, SK_Stroke *stk) static void sk_cancelStroke(SK_Sketch *sketch) { - if (sketch->active_stroke != NULL) - { + if (sketch->active_stroke != NULL) { sk_resetOverdraw(sketch); sk_removeStroke(sketch, sketch->active_stroke); } @@ -501,8 +467,7 @@ static void sk_drawEdge(GLUquadric *quad, SK_Point *pt0, SK_Point *pt1, float si length = normalize_v3(vec1); cross_v3_v3v3(axis, vec2, vec1); - if (is_zero_v3(axis)) - { + if (is_zero_v3(axis)) { axis[1] = 1; } @@ -522,8 +487,7 @@ static void sk_drawNormal(GLUquadric *quad, SK_Point *pt, float size, float heig cross_v3_v3v3(axis, vec2, pt->no); - if (is_zero_v3(axis)) - { + if (is_zero_v3(axis)) { axis[1] = 1; } @@ -544,18 +508,15 @@ static void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int GLUquadric *quad = gluNewQuadric(); gluQuadricNormals(quad, GLU_SMOOTH); - if (id != -1) - { + if (id != -1) { glLoadName(id); - for (i = 0; i < stk->nb_points; i++) - { + for (i = 0; i < stk->nb_points; i++) { glPushMatrix(); sk_drawPoint(quad, stk->points + i, 0.1); - if (i > 0) - { + if (i > 0) { sk_drawEdge(quad, stk->points + i - 1, stk->points + i, 0.1); } @@ -563,44 +524,37 @@ static void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int } } - else - { + else { float d_rgb[3] = {1, 1, 1}; copy_v3_v3(rgb, color); sub_v3_v3(d_rgb, rgb); mul_v3_fl(d_rgb, 1.0f / (float)stk->nb_points); - for (i = 0; i < stk->nb_points; i++) - { + for (i = 0; i < stk->nb_points; i++) { SK_Point *pt = stk->points + i; glPushMatrix(); - if (pt->type == PT_EXACT) - { + if (pt->type == PT_EXACT) { glColor3f(0, 0, 0); sk_drawPoint(quad, pt, 0.15); sk_drawNormal(quad, pt, 0.05, 0.9); } - if (i >= start && i <= end) - { + if (i >= start && i <= end) { glColor3f(0.3, 0.3, 0.3); } - else - { + else { glColor3fv(rgb); } - if (pt->type != PT_EXACT) - { + if (pt->type != PT_EXACT) { sk_drawPoint(quad, pt, 0.1); } - if (i > 0) - { + if (i > 0) { sk_drawEdge(quad, pt - 1, pt, 0.1); } @@ -627,8 +581,7 @@ static void drawSubdividedStrokeBy(ToolSettings *toolsettings, BArcIterator *ite copy_v3_v3(head, iter->p); index = next_subdividion(toolsettings, iter, bone_start, end, head, tail); - while (index != -1) - { + while (index != -1) { SK_Point *pt = stk->points + index; glPushMatrix(); @@ -654,41 +607,32 @@ static void sk_drawStrokeSubdivision(ToolSettings *toolsettings, SK_Stroke *stk) int head_index = -1; int i; - if (toolsettings->bone_sketching_convert == SK_CONVERT_RETARGET) - { + if (toolsettings->bone_sketching_convert == SK_CONVERT_RETARGET) { return; } - for (i = 0; i < stk->nb_points; i++) - { + for (i = 0; i < stk->nb_points; i++) { SK_Point *pt = stk->points + i; - if (pt->type == PT_EXACT || i == stk->nb_points - 1) /* stop on exact or on last point */ - { - if (head_index == -1) - { + if (pt->type == PT_EXACT || i == stk->nb_points - 1) /* stop on exact or on last point */ { + if (head_index == -1) { head_index = i; } - else - { - if (i - head_index > 1) - { + else { + if (i - head_index > 1) { SK_StrokeIterator sk_iter; BArcIterator *iter = (BArcIterator*)&sk_iter; initStrokeIterator(iter, stk, head_index, i); - if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE) - { + if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE) { drawSubdividedStrokeBy(toolsettings, iter, nextAdaptativeSubdivision); } - else if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_LENGTH) - { + else if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_LENGTH) { drawSubdividedStrokeBy(toolsettings, iter, nextLengthSubdivision); } - else if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_FIXED) - { + else if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_FIXED) { drawSubdividedStrokeBy(toolsettings, iter, nextFixedSubdivision); } @@ -706,10 +650,8 @@ static SK_Point *sk_snapPointStroke(bContext *C, SK_Stroke *stk, int mval[2], in SK_Point *pt = NULL; int i; - for (i = 0; i < stk->nb_points; i++) - { - if (all_pts || stk->points[i].type == PT_EXACT) - { + for (i = 0; i < stk->nb_points; i++) { + if (all_pts || stk->points[i].type == PT_EXACT) { short pval[2]; int pdist; @@ -717,13 +659,11 @@ static SK_Point *sk_snapPointStroke(bContext *C, SK_Stroke *stk, int mval[2], in pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]); - if (pdist < *dist) - { + if (pdist < *dist) { *dist = pdist; pt = stk->points + i; - if (index != NULL) - { + if (index != NULL) { *index = i; } } @@ -801,75 +741,60 @@ int sk_hasOverdraw(SK_Sketch *sketch, SK_Stroke *stk) static void sk_updateOverdraw(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd) { - if (sketch->over.target == NULL) - { + if (sketch->over.target == NULL) { SK_Stroke *target; int closest_index = -1; int dist = SNAP_MIN_DISTANCE * 2; - for (target = sketch->strokes.first; target; target = target->next) - { - if (target != stk) - { + for (target = sketch->strokes.first; target; target = target->next) { + if (target != stk) { int index; SK_Point *spt = sk_snapPointStroke(C, target, dd->mval, &dist, &index, 1); - if (spt != NULL) - { + if (spt != NULL) { sketch->over.target = target; closest_index = index; } } } - if (sketch->over.target != NULL) - { - if (closest_index > -1) - { - if (sk_lastStrokePoint(stk)->type == PT_EXACT) - { + if (sketch->over.target != NULL) { + if (closest_index > -1) { + if (sk_lastStrokePoint(stk)->type == PT_EXACT) { sketch->over.count = SK_OVERDRAW_LIMIT; } - else - { + else { sketch->over.count++; } } - if (stk->nb_points == 1) - { + if (stk->nb_points == 1) { sketch->over.start = closest_index; } - else - { + else { sketch->over.end = closest_index; } } } - else if (sketch->over.target != NULL) - { + else if (sketch->over.target != NULL) { SK_Point *closest_pt = NULL; int dist = SNAP_MIN_DISTANCE * 2; int index; closest_pt = sk_snapPointStroke(C, sketch->over.target, dd->mval, &dist, &index, 1); - if (closest_pt != NULL) - { - if (sk_lastStrokePoint(stk)->type == PT_EXACT) - { + if (closest_pt != NULL) { + if (sk_lastStrokePoint(stk)->type == PT_EXACT) { sketch->over.count = SK_OVERDRAW_LIMIT; } - else - { + else { sketch->over.count++; } sketch->over.end = index; } - else - { + else { sketch->over.end = -1; } } @@ -883,18 +808,15 @@ static int sk_adjustIndexes(SK_Sketch *sketch, int *start, int *end) *start = sketch->over.start; *end = sketch->over.end; - if (*start == -1) - { + if (*start == -1) { *start = 0; } - if (*end == -1) - { + if (*end == -1) { *end = sketch->over.target->nb_points - 1; } - if (*end < *start) - { + if (*end < *start) { int tmp = *start; *start = *end; *end = tmp; @@ -908,18 +830,15 @@ static void sk_endOverdraw(SK_Sketch *sketch) { SK_Stroke *stk = sketch->active_stroke; - if (sk_hasOverdraw(sketch, NULL)) - { + if (sk_hasOverdraw(sketch, NULL)) { int start; int end; - if (sk_adjustIndexes(sketch, &start, &end)) - { + if (sk_adjustIndexes(sketch, &start, &end)) { sk_reverseStroke(stk); } - if (stk->nb_points > 1) - { + if (stk->nb_points > 1) { stk->points->type = sketch->over.target->points[start].type; sk_lastStrokePoint(stk)->type = sketch->over.target->points[end].type; } @@ -948,8 +867,7 @@ static void sk_endStroke(bContext *C, SK_Sketch *sketch) ToolSettings *ts = CTX_data_tool_settings(C); sk_shrinkStrokeBuffer(sketch->active_stroke); - if (ts->bone_sketching & BONE_SKETCHING_ADJUST) - { + if (ts->bone_sketching & BONE_SKETCHING_ADJUST) { sk_endOverdraw(sketch); } @@ -977,8 +895,7 @@ static float sk_distanceDepth(bContext *C, float p1[3], float p2[3]) distance = len_v3(vec); - if (dot_v3v3(rv3d->viewinv[2], vec) > 0) - { + if (dot_v3v3(rv3d->viewinv[2], vec) > 0) { distance *= -1; } @@ -996,8 +913,7 @@ static void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, progress = len_v3v3(stk->points[start].p, stk->points[start - 1].p); - for (i = start; i <= end; i++) - { + for (i = start; i <= end; i++) { float ray_start[3], ray_normal[3]; float delta = len_v3v3(stk->points[i].p, stk->points[i + 1].p); float pval[2]; @@ -1022,8 +938,7 @@ static void sk_projectDrawPoint(bContext *C, float vec[3], SK_Stroke *stk, SK_Dr float dvec[3]; float mval_f[2]; - if (last != NULL) - { + if (last != NULL) { copy_v3_v3(fp, last->p); } @@ -1065,8 +980,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S ToolSettings *ts = CTX_data_tool_settings(C); int point_added = 0; - if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) - { + if (ts->snap_mode == SCE_SNAP_MODE_VOLUME) { DepthPeel *p1, *p2; float *last_p = NULL; float dist = FLT_MAX; @@ -1081,20 +995,16 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S mvalf[1]= dd->mval[1]; peelObjectsContext(C, &sketch->depth_peels, mvalf, SNAP_ALL); - if (stk->nb_points > 0 && stk->points[stk->nb_points - 1].type == PT_CONTINUOUS) - { + if (stk->nb_points > 0 && stk->points[stk->nb_points - 1].type == PT_CONTINUOUS) { last_p = stk->points[stk->nb_points - 1].p; } - else if (LAST_SNAP_POINT_VALID) - { + else if (LAST_SNAP_POINT_VALID) { last_p = LAST_SNAP_POINT; } - for (p1 = sketch->depth_peels.first; p1; p1 = p1->next) - { - if (p1->flag == 0) - { + for (p1 = sketch->depth_peels.first; p1; p1 = p1->next) { + if (p1->flag == 0) { float vec[3]; float new_dist; float new_size = 0; @@ -1103,42 +1013,34 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S p1->flag = 1; /* if peeling objects, take the first and last from each object */ - if (ts->snap_flag & SCE_SNAP_PEEL_OBJECT) - { + if (ts->snap_flag & SCE_SNAP_PEEL_OBJECT) { DepthPeel *peel; - for (peel = p1->next; peel; peel = peel->next) - { - if (peel->ob == p1->ob) - { + for (peel = p1->next; peel; peel = peel->next) { + if (peel->ob == p1->ob) { peel->flag = 1; p2 = peel; } } } /* otherwise, pair first with second and so on */ - else - { - for (p2 = p1->next; p2 && p2->ob != p1->ob; p2 = p2->next) - { + else { + for (p2 = p1->next; p2 && p2->ob != p1->ob; p2 = p2->next) { /* nothing to do here */ } } - if (p2) - { + if (p2) { p2->flag = 1; add_v3_v3v3(vec, p1->p, p2->p); mul_v3_fl(vec, 0.5f); new_size = len_v3v3(p1->p, p2->p); } - else - { + else { copy_v3_v3(vec, p1->p); } - if (last_p == NULL) - { + if (last_p == NULL) { copy_v3_v3(p, vec); size = new_size; dist = 0; @@ -1147,8 +1049,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S new_dist = len_v3v3(last_p, vec); - if (new_dist < dist) - { + if (new_dist < dist) { copy_v3_v3(p, vec); dist = new_dist; size = new_size; @@ -1156,8 +1057,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S } } - if (dist != FLT_MAX) - { + if (dist != FLT_MAX) { pt->type = dd->type; pt->mode = PT_SNAP; pt->size = size / 2; @@ -1168,8 +1068,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S //BLI_freelistN(&depth_peels); } - else - { + else { SK_Stroke *snap_stk; float vec[3]; float no[3]; @@ -1179,20 +1078,16 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S /* snap to strokes */ // if (ts->snap_mode == SCE_SNAP_MODE_VERTEX) /* snap all the time to strokes */ - for (snap_stk = sketch->strokes.first; snap_stk; snap_stk = snap_stk->next) - { + for (snap_stk = sketch->strokes.first; snap_stk; snap_stk = snap_stk->next) { SK_Point *spt = NULL; - if (snap_stk == stk) - { + if (snap_stk == stk) { spt = sk_snapPointStroke(C, snap_stk, dd->mval, &dist, NULL, 0); } - else - { + else { spt = sk_snapPointStroke(C, snap_stk, dd->mval, &dist, NULL, 1); } - if (spt != NULL) - { + if (spt != NULL) { copy_v3_v3(pt->p, spt->p); point_added = 1; } @@ -1203,8 +1098,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S /* try to snap to closer object */ found = snapObjectsContext(C, mval, &dist, vec, no, SNAP_NOT_SELECTED); - if (found == 1) - { + if (found == 1) { pt->type = dd->type; pt->mode = PT_SNAP; copy_v3_v3(pt->p, vec); @@ -1227,8 +1121,7 @@ static int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, point_added = sk_getStrokeSnapPoint(C, &pt, sketch, stk, dd); - if (point_added) - { + if (point_added) { float final_p[3]; float length, distance; int total; @@ -1242,18 +1135,15 @@ static int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, /* update all previous point to give smooth Z progresion */ total = 0; length = 0; - for (i = stk->nb_points - 2; i > 0; i--) - { + for (i = stk->nb_points - 2; i > 0; i--) { length += len_v3v3(stk->points[i].p, stk->points[i + 1].p); total++; - if (stk->points[i].mode == PT_SNAP || stk->points[i].type == PT_EXACT) - { + if (stk->points[i].mode == PT_SNAP || stk->points[i].type == PT_EXACT) { break; } } - if (total > 1) - { + if (total > 1) { distance = sk_distanceDepth(C, final_p, stk->points[i].p); sk_interpolateDepth(C, stk, i + 1, stk->nb_points - 2, length, distance); @@ -1272,18 +1162,15 @@ static void sk_addStrokePoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK ToolSettings *ts = CTX_data_tool_settings(C); int point_added = 0; - if (snap) - { + if (snap) { point_added = sk_addStrokeSnapPoint(C, sketch, stk, dd); } - if (point_added == 0) - { + if (point_added == 0) { point_added = sk_addStrokeDrawPoint(C, sketch, stk, dd); } - if (stk == sketch->active_stroke && ts->bone_sketching & BONE_SKETCHING_ADJUST) - { + if (stk == sketch->active_stroke && ts->bone_sketching & BONE_SKETCHING_ADJUST) { sk_updateOverdraw(C, sketch, stk, dd); } } @@ -1292,19 +1179,16 @@ static void sk_getStrokePoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_S { int point_added = 0; - if (snap) - { + if (snap) { point_added = sk_getStrokeSnapPoint(C, pt, sketch, stk, dd); LAST_SNAP_POINT_VALID = 1; copy_v3_v3(LAST_SNAP_POINT, pt->p); } - else - { + else { LAST_SNAP_POINT_VALID = 0; } - if (point_added == 0) - { + if (point_added == 0) { point_added = sk_getStrokeDrawPoint(C, pt, sketch, stk, dd); } } @@ -1334,15 +1218,13 @@ static SK_Point* setIteratorValues(SK_StrokeIterator *iter, int index) { SK_Point *pt = NULL; - if (index >= 0 && index < iter->length) - { + if (index >= 0 && index < iter->length) { pt = &(iter->stroke->points[iter->start + (iter->stride * index)]); iter->p = pt->p; iter->no = pt->no; iter->size = pt->size; } - else - { + else { iter->p = NULL; iter->no = NULL; iter->size = 0; @@ -1358,14 +1240,12 @@ void initStrokeIterator(BArcIterator *arg, SK_Stroke *stk, int start, int end) initIteratorFct(iter); iter->stroke = stk; - if (start < end) - { + if (start < end) { iter->start = start + 1; iter->end = end - 1; iter->stride = 1; } - else - { + else { iter->start = start - 1; iter->end = end + 1; iter->stride = -1; @@ -1409,8 +1289,7 @@ static void* nextPoint(void *arg) SK_Point *result = NULL; iter->index++; - if (iter->index < iter->length) - { + if (iter->index < iter->length) { result = setIteratorValues(iter, iter->index); } @@ -1425,8 +1304,7 @@ static void* nextNPoint(void *arg, int n) iter->index += n; /* check if passed end */ - if (iter->index < iter->length) - { + if (iter->index < iter->length) { result = setIteratorValues(iter, iter->index); } @@ -1440,8 +1318,7 @@ static void* peekPoint(void *arg, int n) int index = iter->index + n; /* check if passed end */ - if (index < iter->length) - { + if (index < iter->length) { result = setIteratorValues(iter, index); } @@ -1453,8 +1330,7 @@ static void* previousPoint(void *arg) SK_StrokeIterator *iter = (SK_StrokeIterator*)arg; SK_Point *result = NULL; - if (iter->index > 0) - { + if (iter->index > 0) { iter->index--; result = setIteratorValues(iter, iter->index); } @@ -1466,12 +1342,10 @@ static int iteratorStopped(void *arg) { SK_StrokeIterator *iter = (SK_StrokeIterator*)arg; - if (iter->index >= iter->length) - { + if (iter->index >= iter->length) { return 1; } - else - { + else { return 0; } } @@ -1495,45 +1369,36 @@ static void sk_convertStroke(bContext *C, SK_Stroke *stk) copy_m3_m4(tmat, obedit->obmat); transpose_m3(tmat); - for (i = 0; i < stk->nb_points; i++) - { + for (i = 0; i < stk->nb_points; i++) { SK_Point *pt = stk->points + i; - if (pt->type == PT_EXACT) - { - if (head == NULL) - { + if (pt->type == PT_EXACT) { + if (head == NULL) { head_index = i; head = pt; } - else - { + else { EditBone *bone = NULL; EditBone *new_parent; - if (i - head_index > 1) - { + if (i - head_index > 1) { SK_StrokeIterator sk_iter; BArcIterator *iter = (BArcIterator*)&sk_iter; initStrokeIterator(iter, stk, head_index, i); - if (ts->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE) - { + if (ts->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE) { bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextAdaptativeSubdivision); } - else if (ts->bone_sketching_convert == SK_CONVERT_CUT_LENGTH) - { + else if (ts->bone_sketching_convert == SK_CONVERT_CUT_LENGTH) { bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextLengthSubdivision); } - else if (ts->bone_sketching_convert == SK_CONVERT_CUT_FIXED) - { + else if (ts->bone_sketching_convert == SK_CONVERT_CUT_FIXED) { bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextFixedSubdivision); } } - if (bone == NULL) - { + if (bone == NULL) { bone = ED_armature_edit_bone_add(arm, "Bone"); copy_v3_v3(bone->head, head->p); @@ -1548,14 +1413,12 @@ static void sk_convertStroke(bContext *C, SK_Stroke *stk) bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; /* move to end of chain */ - while (bone->parent != NULL) - { + while (bone->parent != NULL) { bone = bone->parent; bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL; } - if (parent != NULL) - { + if (parent != NULL) { bone->parent = parent; bone->flag |= BONE_CONNECTED; } @@ -1573,16 +1436,12 @@ static void sk_convert(bContext *C, SK_Sketch *sketch) ToolSettings *ts = CTX_data_tool_settings(C); SK_Stroke *stk; - for (stk = sketch->strokes.first; stk; stk = stk->next) - { - if (stk->selected == 1) - { - if (ts->bone_sketching_convert == SK_CONVERT_RETARGET) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { + if (stk->selected == 1) { + if (ts->bone_sketching_convert == SK_CONVERT_RETARGET) { sk_retargetStroke(C, stk); } - else - { + else { sk_convertStroke(C, stk); } // XXX @@ -1600,8 +1459,7 @@ static int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gestu int added = 0; int s_i; - for (s_i = 0; s_i < gesture->nb_points - 1; s_i++) - { + for (s_i = 0; s_i < gesture->nb_points - 1; s_i++) { float s_p1[3] = {0, 0, 0}; float s_p2[3] = {0, 0, 0}; int g_i; @@ -1610,8 +1468,7 @@ static int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gestu project_float(ar, gesture->points[s_i + 1].p, s_p2); /* start checking from second next, because two consecutive cannot intersect */ - for (g_i = s_i + 2; g_i < gesture->nb_points - 1; g_i++) - { + for (g_i = s_i + 2; g_i < gesture->nb_points - 1; g_i++) { float g_p1[3] = {0, 0, 0}; float g_p2[3] = {0, 0, 0}; float vi[3]; @@ -1620,8 +1477,7 @@ static int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gestu project_float(ar, gesture->points[g_i].p, g_p1); project_float(ar, gesture->points[g_i + 1].p, g_p2); - if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda)) - { + if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda)) { SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection"); isect->gesture_index = g_i; @@ -1647,24 +1503,18 @@ static int cmpIntersections(void *i1, void *i2) { SK_Intersection *isect1 = i1, *isect2 = i2; - if (isect1->stroke == isect2->stroke) - { - if (isect1->before < isect2->before) - { + if (isect1->stroke == isect2->stroke) { + if (isect1->before < isect2->before) { return -1; } - else if (isect1->before > isect2->before) - { + else if (isect1->before > isect2->before) { return 1; } - else - { - if (isect1->lambda < isect2->lambda) - { + else { + if (isect1->lambda < isect2->lambda) { return -1; } - else if (isect1->lambda > isect2->lambda) - { + else if (isect1->lambda > isect2->lambda) { return 1; } } @@ -1683,13 +1533,11 @@ static int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, S SK_Stroke *stk; int added = 0; - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { int s_added = 0; int s_i; - for (s_i = 0; s_i < stk->nb_points - 1; s_i++) - { + for (s_i = 0; s_i < stk->nb_points - 1; s_i++) { float s_p1[3] = {0, 0, 0}; float s_p2[3] = {0, 0, 0}; int g_i; @@ -1697,8 +1545,7 @@ static int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, S project_float(ar, stk->points[s_i].p, s_p1); project_float(ar, stk->points[s_i + 1].p, s_p2); - for (g_i = 0; g_i < gesture->nb_points - 1; g_i++) - { + for (g_i = 0; g_i < gesture->nb_points - 1; g_i++) { float g_p1[3] = {0, 0, 0}; float g_p2[3] = {0, 0, 0}; float vi[3]; @@ -1707,8 +1554,7 @@ static int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, S project_float(ar, gesture->points[g_i].p, g_p1); project_float(ar, gesture->points[g_i + 1].p, g_p2); - if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda)) - { + if (isect_line_line_strict_v3(s_p1, s_p2, g_p1, g_p2, vi, &lambda)) { SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection"); float ray_start[3], ray_end[3]; float mval[2]; @@ -1759,15 +1605,13 @@ static int sk_getSegments(SK_Stroke *segments, SK_Stroke *gesture) initStrokeIterator(iter, gesture, 0, gesture->nb_points - 1); - for (i = 1, j = 0; i < gesture->nb_points; i++) - { + for (i = 1, j = 0; i < gesture->nb_points; i++) { float n[3]; /* Calculate normal */ sub_v3_v3v3(n, gesture->points[i].p, vec); - if (calcArcCorrelation(iter, j, i, vec, n) < CORRELATION_THRESHOLD) - { + if (calcArcCorrelation(iter, j, i, vec, n) < CORRELATION_THRESHOLD) { j = i - 1; sk_appendStrokePoint(segments, &gesture->points[j]); vec = segments->points[segments->nb_points - 1].p; @@ -1782,8 +1626,7 @@ static int sk_getSegments(SK_Stroke *segments, SK_Stroke *gesture) int sk_detectCutGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments == 1 && gest->nb_intersections == 1) - { + if (gest->nb_segments == 1 && gest->nb_intersections == 1) { return 1; } @@ -1794,8 +1637,7 @@ void sk_applyCutGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED { SK_Intersection *isect; - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { SK_Point pt; pt.type = PT_EXACT; @@ -1809,8 +1651,7 @@ void sk_applyCutGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED int sk_detectTrimGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments == 2 && gest->nb_intersections == 1 && gest->nb_self_intersections == 0) - { + if (gest->nb_segments == 2 && gest->nb_intersections == 1 && gest->nb_self_intersections == 0) { float s1[3], s2[3]; float angle; @@ -1819,8 +1660,7 @@ int sk_detectTrimGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSE angle = RAD2DEGF(angle_v2v2(s1, s2)); - if (angle > 60 && angle < 120) - { + if (angle > 60 && angle < 120) { return 1; } } @@ -1835,8 +1675,7 @@ void sk_applyTrimGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSE sub_v3_v3v3(trim_dir, gest->segments->points[2].p, gest->segments->points[1].p); - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { SK_Point pt; float stroke_dir[3]; @@ -1848,14 +1687,12 @@ void sk_applyTrimGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSE sub_v3_v3v3(stroke_dir, isect->stroke->points[isect->after].p, isect->stroke->points[isect->before].p); /* same direction, trim end */ - if (dot_v3v3(stroke_dir, trim_dir) > 0) - { + if (dot_v3v3(stroke_dir, trim_dir) > 0) { sk_replaceStrokePoint(isect->stroke, &pt, isect->after); sk_trimStroke(isect->stroke, 0, isect->after); } /* else, trim start */ - else - { + else { sk_replaceStrokePoint(isect->stroke, &pt, isect->before); sk_trimStroke(isect->stroke, isect->before, isect->stroke->nb_points - 1); } @@ -1865,15 +1702,12 @@ void sk_applyTrimGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSE int sk_detectCommandGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 1) - { + if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 1) { SK_Intersection *isect, *self_isect; /* get the the last intersection of the first pair */ - for ( isect = gest->intersections.first; isect; isect = isect->next ) - { - if (isect->stroke == isect->next->stroke) - { + for ( isect = gest->intersections.first; isect; isect = isect->next ) { + if (isect->stroke == isect->next->stroke) { isect = isect->next; break; } @@ -1881,8 +1715,7 @@ int sk_detectCommandGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UN self_isect = gest->self_intersections.first; - if (isect && isect->gesture_index < self_isect->gesture_index) - { + if (isect && isect->gesture_index < self_isect->gesture_index) { return 1; } } @@ -1899,16 +1732,13 @@ void sk_applyCommandGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UN // command = pupmenu("Action %t|Flatten %x1|Straighten %x2|Polygonize %x3"); if (command < 1) return; - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { SK_Intersection *i2; i2 = isect->next; - if (i2 && i2->stroke == isect->stroke) - { - switch (command) - { + if (i2 && i2->stroke == isect->stroke) { + switch (command) { case 1: sk_flattenStroke(isect->stroke, isect->before, i2->after); break; @@ -1927,8 +1757,7 @@ void sk_applyCommandGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UN int sk_detectDeleteGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments == 2 && gest->nb_intersections == 2) - { + if (gest->nb_segments == 2 && gest->nb_intersections == 2) { float s1[3], s2[3]; float angle; @@ -1937,8 +1766,7 @@ int sk_detectDeleteGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNU angle = RAD2DEGF(angle_v2v2(s1, s2)); - if (angle > 120) - { + if (angle > 120) { return 1; } } @@ -1950,11 +1778,9 @@ void sk_applyDeleteGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *ske { SK_Intersection *isect; - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { /* only delete strokes that are crossed twice */ - if (isect->next && isect->next->stroke == isect->stroke) - { + if (isect->next && isect->next->stroke == isect->stroke) { isect = isect->next; sk_removeStroke(sketch, isect->stroke); @@ -1965,8 +1791,7 @@ void sk_applyDeleteGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *ske int sk_detectMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { ARegion *ar = CTX_wm_region(C); - if (gest->nb_segments > 2 && gest->nb_intersections == 2) - { + if (gest->nb_segments > 2 && gest->nb_intersections == 2) { short start_val[2], end_val[2]; short dist; @@ -1976,26 +1801,21 @@ int sk_detectMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *UNUSED(sketc dist = MAX2(ABS(start_val[0] - end_val[0]), ABS(start_val[1] - end_val[1])); /* if gesture is a circle */ - if ( dist <= 20 ) - { + if ( dist <= 20 ) { SK_Intersection *isect; /* check if it circled around an exact point */ - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { /* only delete strokes that are crossed twice */ - if (isect->next && isect->next->stroke == isect->stroke) - { + if (isect->next && isect->next->stroke == isect->stroke) { int start_index, end_index; int i; start_index = MIN2(isect->after, isect->next->after); end_index = MAX2(isect->before, isect->next->before); - for (i = start_index; i <= end_index; i++) - { - if (isect->stroke->points[i].type == PT_EXACT) - { + for (i = start_index; i <= end_index; i++) { + if (isect->stroke->points[i].type == PT_EXACT) { return 1; /* at least one exact point found, stop detect here */ } } @@ -2015,22 +1835,18 @@ void sk_applyMergeGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUS SK_Intersection *isect; /* check if it circled around an exact point */ - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { /* only merge strokes that are crossed twice */ - if (isect->next && isect->next->stroke == isect->stroke) - { + if (isect->next && isect->next->stroke == isect->stroke) { int start_index, end_index; int i; start_index = MIN2(isect->after, isect->next->after); end_index = MAX2(isect->before, isect->next->before); - for (i = start_index; i <= end_index; i++) - { + for (i = start_index; i <= end_index; i++) { /* if exact, switch to continuous */ - if (isect->stroke->points[i].type == PT_EXACT) - { + if (isect->stroke->points[i].type == PT_EXACT) { isect->stroke->points[i].type = PT_CONTINUOUS; } } @@ -2043,34 +1859,28 @@ void sk_applyMergeGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUS int sk_detectReverseGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 0) - { + if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 0) { SK_Intersection *isect; /* check if it circled around an exact point */ - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { /* only delete strokes that are crossed twice */ - if (isect->next && isect->next->stroke == isect->stroke) - { + if (isect->next && isect->next->stroke == isect->stroke) { float start_v[3], end_v[3]; float angle; - if (isect->gesture_index < isect->next->gesture_index) - { + if (isect->gesture_index < isect->next->gesture_index) { sub_v3_v3v3(start_v, isect->p, gest->stk->points[0].p); sub_v3_v3v3(end_v, sk_lastStrokePoint(gest->stk)->p, isect->next->p); } - else - { + else { sub_v3_v3v3(start_v, isect->next->p, gest->stk->points[0].p); sub_v3_v3v3(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p); } angle = RAD2DEGF(angle_v2v2(start_v, end_v)); - if (angle > 120) - { + if (angle > 120) { return 1; } @@ -2087,11 +1897,9 @@ void sk_applyReverseGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UN { SK_Intersection *isect; - for (isect = gest->intersections.first; isect; isect = isect->next) - { + for (isect = gest->intersections.first; isect; isect = isect->next) { /* only reverse strokes that are crossed twice */ - if (isect->next && isect->next->stroke == isect->stroke) - { + if (isect->next && isect->next->stroke == isect->stroke) { sk_reverseStroke(isect->stroke); /* skip next */ @@ -2102,8 +1910,7 @@ void sk_applyReverseGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UN int sk_detectConvertGesture(bContext *UNUSED(C), SK_Gesture *gest, SK_Sketch *UNUSED(sketch)) { - if (gest->nb_segments == 3 && gest->nb_self_intersections == 1) - { + if (gest->nb_segments == 3 && gest->nb_self_intersections == 1) { return 1; } return 0; @@ -2142,10 +1949,8 @@ static void sk_applyGesture(bContext *C, SK_Sketch *sketch) sk_initGesture(C, &gest, sketch); /* detect and apply */ - for (act = GESTURE_ACTIONS; act->apply != NULL; act++) - { - if (act->detect(C, &gest, sketch)) - { + for (act = GESTURE_ACTIONS; act->apply != NULL; act++) { + if (act->detect(C, &gest, sketch)) { act->apply(C, &gest, sketch); break; } @@ -2173,8 +1978,7 @@ static int sk_selectStroke(bContext *C, SK_Sketch *sketch, const int mval[2], in hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect); - if (hits>0) - { + if (hits>0) { int besthitresult = -1; if (hits == 1) { @@ -2185,18 +1989,15 @@ static int sk_selectStroke(bContext *C, SK_Sketch *sketch, const int mval[2], in /* loop and get best hit */ } - if (besthitresult > 0) - { + if (besthitresult > 0) { SK_Stroke *selected_stk = BLI_findlink(&sketch->strokes, besthitresult - 1); - if (extend == 0) - { + if (extend == 0) { sk_selectAllSketch(sketch, -1); selected_stk->selected = 1; } - else - { + else { selected_stk->selected ^= 1; } @@ -2232,50 +2033,41 @@ static void sk_drawSketch(Scene *scene, View3D *UNUSED(v3d), SK_Sketch *sketch, glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); - if (with_names) - { + if (with_names) { int id; - for (id = 1, stk = sketch->strokes.first; stk; id++, stk = stk->next) - { + for (id = 1, stk = sketch->strokes.first; stk; id++, stk = stk->next) { sk_drawStroke(stk, id, NULL, -1, -1); } glLoadName(-1); } - else - { + else { float selected_rgb[3] = {1, 0, 0}; float unselected_rgb[3] = {1, 0.5, 0}; - for (stk = sketch->strokes.first; stk; stk = stk->next) - { + for (stk = sketch->strokes.first; stk; stk = stk->next) { int start = -1; int end = -1; - if (sk_hasOverdraw(sketch, stk)) - { + if (sk_hasOverdraw(sketch, stk)) { sk_adjustIndexes(sketch, &start, &end); } sk_drawStroke(stk, -1, (stk->selected==1?selected_rgb:unselected_rgb), start, end); - if (stk->selected == 1) - { + if (stk->selected == 1) { sk_drawStrokeSubdivision(ts, stk); } } - if (sketch->active_stroke != NULL) - { + if (sketch->active_stroke != NULL) { SK_Point *last = sk_lastStrokePoint(sketch->active_stroke); - if (ts->bone_sketching & BONE_SKETCHING_QUICK) - { + if (ts->bone_sketching & BONE_SKETCHING_QUICK) { sk_drawStrokeSubdivision(ts, sketch->active_stroke); } - if (last != NULL) - { + if (last != NULL) { GLUquadric *quad = gluNewQuadric(); gluQuadricNormals(quad, GLU_SMOOTH); @@ -2284,8 +2076,7 @@ static void sk_drawSketch(Scene *scene, View3D *UNUSED(v3d), SK_Sketch *sketch, glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - switch (sketch->next_point.mode) - { + switch (sketch->next_point.mode) { case PT_SNAP: glColor3f(0, 1, 0); break; @@ -2345,8 +2136,7 @@ static void sk_drawSketch(Scene *scene, View3D *UNUSED(v3d), SK_Sketch *sketch, glDisable(GL_DEPTH_TEST); /* only draw gesture in active area */ - if (sketch->gesture != NULL /*&& area_is_active_area(G.vd->area)*/) - { + if (sketch->gesture != NULL /* && area_is_active_area(G.vd->area) */) { float gesture_rgb[3] = {0, 0.5, 1}; sk_drawStroke(sketch->gesture, -1, gesture_rgb, -1, -1); } @@ -2356,20 +2146,16 @@ static int sk_finish_stroke(bContext *C, SK_Sketch *sketch) { ToolSettings *ts = CTX_data_tool_settings(C); - if (sketch->active_stroke != NULL) - { + if (sketch->active_stroke != NULL) { SK_Stroke *stk = sketch->active_stroke; sk_endStroke(C, sketch); - if (ts->bone_sketching & BONE_SKETCHING_QUICK) - { - if (ts->bone_sketching_convert == SK_CONVERT_RETARGET) - { + if (ts->bone_sketching & BONE_SKETCHING_QUICK) { + if (ts->bone_sketching_convert == SK_CONVERT_RETARGET) { sk_retargetStroke(C, stk); } - else - { + else { sk_convertStroke(C, stk); } // XXX @@ -2389,8 +2175,7 @@ static int sk_finish_stroke(bContext *C, SK_Sketch *sketch) static void sk_start_draw_stroke(SK_Sketch *sketch) { - if (sketch->active_stroke == NULL) - { + if (sketch->active_stroke == NULL) { sk_startStroke(sketch); sk_selectAllSketch(sketch, -1); @@ -2405,8 +2190,7 @@ static void sk_start_draw_gesture(SK_Sketch *sketch) static int sk_draw_stroke(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd, short snap) { - if (sk_stroke_filtermval(dd)) - { + if (sk_stroke_filtermval(dd)) { sk_addStrokePoint(C, sketch, stk, dd, snap); sk_updateDrawData(dd); sk_updateNextPoint(sketch, stk); @@ -2428,19 +2212,16 @@ static int ValidSketchViewContext(ViewContext *vc) { return 1; } - else - { + else { return 0; } } int BDR_drawSketchNames(ViewContext *vc) { - if (ValidSketchViewContext(vc)) - { + if (ValidSketchViewContext(vc)) { SK_Sketch *sketch = viewcontextSketch(vc, 0); - if (sketch) - { + if (sketch) { sk_drawSketch(vc->scene, vc->v3d, sketch, 1); return 1; } @@ -2451,11 +2232,9 @@ int BDR_drawSketchNames(ViewContext *vc) void BDR_drawSketch(const bContext *C) { - if (ED_operator_sketch_mode(C)) - { + if (ED_operator_sketch_mode(C)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { sk_drawSketch(CTX_data_scene(C), CTX_wm_view3d(C), sketch, 0); } } @@ -2464,8 +2243,7 @@ void BDR_drawSketch(const bContext *C) static int sketch_delete(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { sk_deleteSelectedStrokes(sketch); // allqueue(REDRAWVIEW3D, 0); } @@ -2478,8 +2256,7 @@ void BIF_sk_selectStroke(bContext *C, const int mval[2], short extend) ToolSettings *ts = CTX_data_tool_settings(C); SK_Sketch *sketch = contextSketch(C, 0); - if (sketch != NULL && ts->bone_sketching & BONE_SKETCHING) - { + if (sketch != NULL && ts->bone_sketching & BONE_SKETCHING) { if (sk_selectStroke(C, sketch, mval, extend)) ED_area_tag_redraw(CTX_wm_area(C)); } @@ -2487,11 +2264,9 @@ void BIF_sk_selectStroke(bContext *C, const int mval[2], short extend) void BIF_convertSketch(bContext *C) { - if (ED_operator_sketch_full_mode(C)) - { + if (ED_operator_sketch_full_mode(C)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { sk_convert(C, sketch); // BIF_undo_push("Convert Sketch"); // allqueue(REDRAWVIEW3D, 0); @@ -2502,11 +2277,9 @@ void BIF_convertSketch(bContext *C) void BIF_deleteSketch(bContext *C) { - if (ED_operator_sketch_full_mode(C)) - { + if (ED_operator_sketch_full_mode(C)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { sk_deleteSelectedStrokes(sketch); // BIF_undo_push("Convert Sketch"); // allqueue(REDRAWVIEW3D, 0); @@ -2535,12 +2308,10 @@ SK_Sketch* contextSketch(const bContext *C, int create) Object *obedit = CTX_data_edit_object(C); SK_Sketch *sketch = NULL; - if (obedit && obedit->type == OB_ARMATURE) - { + if (obedit && obedit->type == OB_ARMATURE) { bArmature *arm = obedit->data; - if (arm->sketch == NULL && create) - { + if (arm->sketch == NULL && create) { arm->sketch = createSketch(); } sketch = arm->sketch; @@ -2554,12 +2325,10 @@ SK_Sketch* viewcontextSketch(ViewContext *vc, int create) Object *obedit = vc->obedit; SK_Sketch *sketch = NULL; - if (obedit && obedit->type == OB_ARMATURE) - { + if (obedit && obedit->type == OB_ARMATURE) { bArmature *arm = obedit->data; - if (arm->sketch == NULL && create) - { + if (arm->sketch == NULL && create) { arm->sketch = createSketch(); } sketch = arm->sketch; @@ -2571,8 +2340,7 @@ SK_Sketch* viewcontextSketch(ViewContext *vc, int create) static int sketch_convert(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch != NULL) - { + if (sketch != NULL) { sk_convert(C, sketch); ED_area_tag_redraw(CTX_wm_area(C)); } @@ -2582,8 +2350,7 @@ static int sketch_convert(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(e static int sketch_cancel(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch != NULL) - { + if (sketch != NULL) { sk_cancelStroke(sketch); ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; @@ -2594,10 +2361,8 @@ static int sketch_cancel(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(ev static int sketch_finish(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event)) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch != NULL) - { - if (sk_finish_stroke(C, sketch)) - { + if (sketch != NULL) { + if (sk_finish_stroke(C, sketch)) { ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; } @@ -2608,8 +2373,7 @@ static int sketch_finish(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(ev static int sketch_select(bContext *C, wmOperator *UNUSED(op), wmEvent *event) { SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { short extend = 0; if (sk_selectStroke(C, sketch, event->mval, extend)) ED_area_tag_redraw(CTX_wm_area(C)); @@ -2677,8 +2441,7 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short SK_Sketch *sketch = contextSketch(C, 1); /* create just to be sure */ int retval = OPERATOR_RUNNING_MODAL; - switch (event->type) - { + switch (event->type) { case LEFTCTRLKEY: case RIGHTCTRLKEY: snap = event->ctrl; @@ -2697,10 +2460,8 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short retval = OPERATOR_CANCELLED; break; case LEFTMOUSE: - if (event->val == KM_RELEASE) - { - if (gesture == 0) - { + if (event->val == KM_RELEASE) { + if (gesture == 0) { sk_endContinuousStroke(stk); sk_filterLastContinuousStroke(stk); sk_updateNextPoint(sketch, stk); @@ -2708,13 +2469,11 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short MEM_freeN(op->customdata); retval = OPERATOR_FINISHED; } - else - { + else { sk_endContinuousStroke(stk); sk_filterLastContinuousStroke(stk); - if (stk->nb_points > 1) - { + if (stk->nb_points > 1) { /* apply gesture here */ sk_applyGesture(C, sketch); } @@ -2750,8 +2509,7 @@ static int sketch_draw_preview(bContext *C, wmOperator *op, wmEvent *event) short snap = RNA_boolean_get(op->ptr, "snap"); SK_Sketch *sketch = contextSketch(C, 0); - if (sketch) - { + if (sketch) { SK_DrawData dd; sk_initDrawData(&dd, event->mval); @@ -2775,8 +2533,7 @@ int ED_operator_sketch_mode_active_stroke(bContext *C) { return 1; } - else - { + else { return 0; } } @@ -2793,8 +2550,7 @@ static int ED_operator_sketch_mode_gesture(bContext *C) { return 1; } - else - { + else { return 0; } } @@ -2811,8 +2567,7 @@ int ED_operator_sketch_full_mode(bContext *C) { return 1; } - else - { + else { return 0; } } @@ -2828,8 +2583,7 @@ int ED_operator_sketch_mode(const bContext *C) { return 1; } - else - { + else { return 0; } } diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 2799d7994bc..ea2b28380e0 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -897,10 +897,12 @@ static void poselib_apply_pose (tPoseLib_PreviewData *pld) } else if (pchan->bone) { /* only ok if bone is visible and selected */ - if ( (pchan->bone->flag & BONE_SELECTED) && - (pchan->bone->flag & BONE_HIDDEN_P)==0 && - (pchan->bone->layer & arm->layer) ) + if ((pchan->bone->flag & BONE_SELECTED) && + (pchan->bone->flag & BONE_HIDDEN_P) == 0 && + (pchan->bone->layer & arm->layer)) + { ok = 1; + } } if (ok) diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c index 546bcb1f40f..f5e7770a7fc 100644 --- a/source/blender/editors/armature/reeb.c +++ b/source/blender/editors/armature/reeb.c @@ -183,16 +183,14 @@ void REEB_freeGraph(ReebGraph *rg) ReebNode *node; // free nodes - for ( node = rg->nodes.first; node; node = node->next ) - { + for (node = rg->nodes.first; node; node = node->next) { BLI_freeNode((BGraph*)rg, (BNode*)node); } BLI_freelistN(&rg->nodes); // free arcs arc = rg->arcs.first; - while ( arc ) - { + while ( arc ) { ReebArc *next = arc->next; REEB_freeArc((BArc*)arc); arc = next; @@ -202,8 +200,7 @@ void REEB_freeGraph(ReebGraph *rg) BLI_edgehash_free(rg->emap, NULL); /* free linked graph */ - if (rg->link_up) - { + if (rg->link_up) { REEB_freeGraph(rg->link_up); } @@ -229,8 +226,7 @@ ReebGraph * newReebGraph(void) void BIF_flagMultiArcs(ReebGraph *rg, int flag) { - for ( ; rg; rg = rg->link_up) - { + for ( ; rg; rg = rg->link_up) { BLI_flagArcs((BGraph*)rg, flag); } } @@ -318,8 +314,7 @@ ReebNode *BIF_NodeFromIndex(ReebArc *arc, ReebNode *node) ReebNode *BIF_lowestLevelNode(ReebNode *node) { - while (node->link_down) - { + while (node->link_down) { node = node->link_down; } @@ -407,8 +402,7 @@ ReebGraph *BIF_graphForMultiNode(ReebGraph *rg, ReebNode *node) { ReebGraph *multi_rg = rg; - while (multi_rg && multi_rg->multi_level != node->multi_level) - { + while (multi_rg && multi_rg->multi_level != node->multi_level) { multi_rg = multi_rg->link_up; } @@ -484,15 +478,12 @@ void repositionNodes(ReebGraph *rg) BNode *node = NULL; // Reset node positions - for (node = rg->nodes.first; node; node = node->next) - { + for (node = rg->nodes.first; node; node = node->next) { node->p[0] = node->p[1] = node->p[2] = 0; } - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (((ReebArc*)arc)->bcount > 0) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (((ReebArc*)arc)->bcount > 0) { float p[3]; copy_v3_v3(p, ((ReebArc*)arc)->buckets[0].p); @@ -512,22 +503,17 @@ void verifyNodeDegree(ReebGraph *rg) ReebNode *node = NULL; ReebArc *arc = NULL; - for (node = rg->nodes.first; node; node = node->next) - { + for (node = rg->nodes.first; node; node = node->next) { int count = 0; - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (arc->head == node || arc->tail == node) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (arc->head == node || arc->tail == node) { count++; } } - if (count != node->degree) - { + if (count != node->degree) { printf("degree error in node %i: expected %i got %i\n", node->index, count, node->degree); } - if (node->degree == 0) - { + if (node->degree == 0) { printf("zero degree node %i with weight %f\n", node->index, node->weight); } } @@ -539,25 +525,20 @@ static void verifyBucketsArc(ReebGraph *UNUSED(rg), ReebArc *arc) ReebNode *head = (ReebNode*)arc->head; ReebNode *tail = (ReebNode*)arc->tail; - if (arc->bcount > 0) - { + if (arc->bcount > 0) { int i; - for (i = 0; i < arc->bcount; i++) - { - if (arc->buckets[i].nv == 0) - { + for (i = 0; i < arc->bcount; i++) { + if (arc->buckets[i].nv == 0) { printArc(arc); printf("count error in bucket %i/%i\n", i+1, arc->bcount); } } - if (ceilf(head->weight) != arc->buckets[0].val) - { + if (ceilf(head->weight) != arc->buckets[0].val) { printArc(arc); printf("alloc error in first bucket: %f should be %f\n", arc->buckets[0].val, ceil(head->weight)); } - if (floorf(tail->weight) != arc->buckets[arc->bcount - 1].val) - { + if (floorf(tail->weight) != arc->buckets[arc->bcount - 1].val) { printArc(arc); printf("alloc error in last bucket: %f should be %f\n", arc->buckets[arc->bcount - 1].val, floor(tail->weight)); } @@ -568,8 +549,7 @@ void verifyBuckets(ReebGraph *rg) { #ifdef DEBUG_REEB ReebArc *arc = NULL; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { verifyBucketsArc(rg, arc); } #endif @@ -580,8 +560,7 @@ void verifyFaces(ReebGraph *rg) #ifdef DEBUG_REEB int total = 0; ReebArc *arc = NULL; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { total += BLI_ghash_size(arc->faces); } @@ -592,10 +571,8 @@ void verifyArcs(ReebGraph *rg) { ReebArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (arc->head->weight > arc->tail->weight) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (arc->head->weight > arc->tail->weight) { printf("FLIPPED ARC!\n"); } } @@ -606,14 +583,11 @@ static void verifyMultiResolutionLinks(ReebGraph *rg, int level) #ifdef DEBUG_REEB ReebGraph *lower_rg = rg->link_up; - if (lower_rg) - { + if (lower_rg) { ReebArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (BLI_findindex(&lower_rg->arcs, arc->link_up) == -1) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (BLI_findindex(&lower_rg->arcs, arc->link_up) == -1) { printf("missing arc %p for level %i\n", (void *)arc->link_up, level); printf("Source arc was ---\n"); printArc(arc); @@ -647,13 +621,11 @@ static void removeVertFromBucket(EmbedBucket *b, float co[3]) static void mergeBuckets(EmbedBucket *bDst, EmbedBucket *bSrc) { - if (bDst->nv > 0 && bSrc->nv > 0) - { + if (bDst->nv > 0 && bSrc->nv > 0) { bDst->nv += bSrc->nv; interp_v3_v3v3(bDst->p, bDst->p, bSrc->p, (float)bSrc->nv / (float)(bDst->nv)); } - else if (bSrc->nv > 0) - { + else if (bSrc->nv > 0) { bDst->nv = bSrc->nv; copy_v3_v3(bDst->p, bSrc->p); } @@ -661,19 +633,16 @@ static void mergeBuckets(EmbedBucket *bDst, EmbedBucket *bSrc) static void mergeArcBuckets(ReebArc *aDst, ReebArc *aSrc, float start, float end) { - if (aDst->bcount > 0 && aSrc->bcount > 0) - { + if (aDst->bcount > 0 && aSrc->bcount > 0) { int indexDst = 0, indexSrc = 0; start = MAX3(start, aDst->buckets[0].val, aSrc->buckets[0].val); - while (indexDst < aDst->bcount && aDst->buckets[indexDst].val < start) - { + while (indexDst < aDst->bcount && aDst->buckets[indexDst].val < start) { indexDst++; } - while (indexSrc < aSrc->bcount && aSrc->buckets[indexSrc].val < start) - { + while (indexSrc < aSrc->bcount && aSrc->buckets[indexSrc].val < start) { indexSrc++; } @@ -693,8 +662,7 @@ void flipArcBuckets(ReebArc *arc) { int i, j; - for (i = 0, j = arc->bcount - 1; i < j; i++, j--) - { + for (i = 0, j = arc->bcount - 1; i < j; i++, j--) { EmbedBucket tmp; tmp = arc->buckets[i]; @@ -714,20 +682,16 @@ static void allocArcBuckets(ReebArc *arc) float start = ceil(arc->head->weight); arc->bcount = countArcBuckets(arc); - if (arc->bcount > 0) - { + if (arc->bcount > 0) { arc->buckets = MEM_callocN(sizeof(EmbedBucket) * arc->bcount, "embed bucket"); - for (i = 0; i < arc->bcount; i++) - { + for (i = 0; i < arc->bcount; i++) { arc->buckets[i].val = start + i; } } - else - { + else { arc->buckets = NULL; } - } static void resizeArcBuckets(ReebArc *arc) @@ -735,15 +699,13 @@ static void resizeArcBuckets(ReebArc *arc) EmbedBucket *oldBuckets = arc->buckets; int oldBCount = arc->bcount; - if (countArcBuckets(arc) == oldBCount) - { + if (countArcBuckets(arc) == oldBCount) { return; } allocArcBuckets(arc); - if (oldBCount != 0 && arc->bcount != 0) - { + if (oldBCount != 0 && arc->bcount != 0) { int oldStart = (int)oldBuckets[0].val; int oldEnd = (int)oldBuckets[oldBCount - 1].val; int newStart = (int)arc->buckets[0].val; @@ -752,12 +714,10 @@ static void resizeArcBuckets(ReebArc *arc) int newOffset = 0; int len; - if (oldStart < newStart) - { + if (oldStart < newStart) { oldOffset = newStart - oldStart; } - else - { + else { newOffset = oldStart - newStart; } @@ -766,8 +726,7 @@ static void resizeArcBuckets(ReebArc *arc) memcpy(arc->buckets + newOffset, oldBuckets + oldOffset, len * sizeof(EmbedBucket)); } - if (oldBuckets != NULL) - { + if (oldBuckets != NULL) { MEM_freeN(oldBuckets); } } @@ -777,10 +736,8 @@ static void reweightBuckets(ReebArc *arc) int i; float start = ceil((arc->head)->weight); - if (arc->bcount > 0) - { - for (i = 0; i < arc->bcount; i++) - { + if (arc->bcount > 0) { + for (i = 0; i < arc->bcount; i++) { arc->buckets[i].val = start + i; } } @@ -793,8 +750,7 @@ static void interpolateBuckets(ReebArc *arc, float *start_p, float *end_p, int s total = end_index - start_index + 2; - for (j = start_index; j <= end_index; j++) - { + for (j = start_index; j <= end_index; j++) { EmbedBucket *empty = arc->buckets + j; empty->nv = 1; interp_v3_v3v3(empty->p, start_p, end_p, (float)(j - start_index + 1) / total); @@ -810,14 +766,11 @@ static void fillArcEmptyBuckets(ReebArc *arc) start_p = arc->head->p; - for (i = 0; i < arc->bcount; i++) - { + for (i = 0; i < arc->bcount; i++) { EmbedBucket *bucket = arc->buckets + i; - if (missing) - { - if (bucket->nv > 0) - { + if (missing) { + if (bucket->nv > 0) { missing = 0; end_p = bucket->p; @@ -826,14 +779,11 @@ static void fillArcEmptyBuckets(ReebArc *arc) interpolateBuckets(arc, start_p, end_p, start_index, end_index); } } - else - { - if (bucket->nv == 0) - { + else { + if (bucket->nv == 0) { missing = 1; - if (i > 0) - { + if (i > 0) { start_p = arc->buckets[i - 1].p; } start_index = i; @@ -841,8 +791,7 @@ static void fillArcEmptyBuckets(ReebArc *arc) } } - if (missing) - { + if (missing) { end_p = arc->tail->p; end_index = arc->bcount - 1; @@ -859,8 +808,7 @@ static void ExtendArcBuckets(ReebArc *arc) float average_length = 0, length; int padding_head = 0, padding_tail = 0; - if (arc->bcount == 0) - { + if (arc->bcount == 0) { return; /* failsafe, shouldn't happen */ } @@ -881,19 +829,16 @@ static void ExtendArcBuckets(ReebArc *arc) last_bucket = arc->buckets + (arc->bcount - 1); length = len_v3v3(first_bucket->p, arc->head->p); - if (length > 2 * average_length) - { + if (length > 2 * average_length) { padding_head = (int)floor(length / average_length); } length = len_v3v3(last_bucket->p, arc->tail->p); - if (length > 2 * average_length) - { + if (length > 2 * average_length) { padding_tail = (int)floor(length / average_length); } - if (padding_head + padding_tail > 0) - { + if (padding_head + padding_tail > 0) { EmbedBucket *old_buckets = arc->buckets; arc->buckets = MEM_callocN(sizeof(EmbedBucket) * (padding_head + arc->bcount + padding_tail), "embed bucket"); @@ -904,13 +849,11 @@ static void ExtendArcBuckets(ReebArc *arc) MEM_freeN(old_buckets); } - if (padding_head > 0) - { + if (padding_head > 0) { interpolateBuckets(arc, arc->head->p, first_bucket->p, 0, padding_head); } - if (padding_tail > 0) - { + if (padding_tail > 0) { interpolateBuckets(arc, last_bucket->p, arc->tail->p, arc->bcount - padding_tail, arc->bcount - 1); } } @@ -920,8 +863,7 @@ static void extendGraphBuckets(ReebGraph *rg) { ReebArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { ExtendArcBuckets(arc); } } @@ -941,8 +883,7 @@ static void calculateArcLength(ReebArc *arc) vec0 = arc->head->p; vec1 = arc->head->p; /* in case there's no embedding */ - while (IT_next(iter)) - { + while (IT_next(iter)) { vec1 = iter->p; arc->length += len_v3v3(vec0, vec1); @@ -957,8 +898,7 @@ static void calculateGraphLength(ReebGraph *rg) { ReebArc *arc; - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { calculateArcLength(arc); } } @@ -975,8 +915,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) copy_v3_v3(axis, root_node->symmetry_axis); /* first pass, merge incrementally */ - for (i = 0; i < count - 1; i++) - { + for (i = 0; i < count - 1; i++) { ReebNode *node1, *node2; ReebArc *arc1, *arc2; float tangent[3]; @@ -999,8 +938,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) /* Merge buckets * there shouldn't be any null arcs here, but just to be safe * */ - if (arc1->bcount > 0 && arc2->bcount > 0) - { + if (arc1->bcount > 0 && arc2->bcount > 0) { ReebArcIterator arc_iter1, arc_iter2; BArcIterator *iter1 = (BArcIterator*)&arc_iter1; BArcIterator *iter2 = (BArcIterator*)&arc_iter2; @@ -1013,19 +951,16 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) bucket2 = IT_next(iter2); /* Make sure they both start at the same value */ - while (bucket1 && bucket2 && bucket1->val < bucket2->val) - { + while (bucket1 && bucket2 && bucket1->val < bucket2->val) { bucket1 = IT_next(iter1); } - while (bucket1 && bucket2 && bucket2->val < bucket1->val) - { + while (bucket1 && bucket2 && bucket2->val < bucket1->val) { bucket2 = IT_next(iter2); } - for ( ;bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) - { + for ( ;bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) { bucket2->nv += bucket1->nv; /* add counts */ /* mirror on axis */ @@ -1037,8 +972,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) } /* second pass, mirror back on previous arcs */ - for (i = count - 1; i > 0; i--) - { + for (i = count - 1; i > 0; i--) { ReebNode *node1, *node2; ReebArc *arc1, *arc2; float tangent[3]; @@ -1061,8 +995,7 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) /* Copy buckets * there shouldn't be any null arcs here, but just to be safe * */ - if (arc1->bcount > 0 && arc2->bcount > 0) - { + if (arc1->bcount > 0 && arc2->bcount > 0) { ReebArcIterator arc_iter1, arc_iter2; BArcIterator *iter1 = (BArcIterator*)&arc_iter1; BArcIterator *iter2 = (BArcIterator*)&arc_iter2; @@ -1075,19 +1008,16 @@ void REEB_RadialSymmetry(BNode* root_node, RadialArc* ring, int count) bucket2 = IT_next(iter2); /* Make sure they both start at the same value */ - while (bucket1 && bucket1->val < bucket2->val) - { + while (bucket1 && bucket1->val < bucket2->val) { bucket1 = IT_next(iter1); } - while (bucket2 && bucket2->val < bucket1->val) - { + while (bucket2 && bucket2->val < bucket1->val) { bucket2 = IT_next(iter2); } - for ( ;bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) - { + for ( ;bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) { /* copy and mirror back to bucket2 */ bucket2->nv = bucket1->nv; copy_v3_v3(bucket2->p, bucket1->p); @@ -1122,8 +1052,7 @@ void REEB_AxialSymmetry(BNode* root_node, BNode* node1, BNode* node2, struct BAr /* Merge buckets * there shouldn't be any null arcs here, but just to be safe * */ - if (arc1->bcount > 0 && arc2->bcount > 0) - { + if (arc1->bcount > 0 && arc2->bcount > 0) { ReebArcIterator arc_iter1, arc_iter2; BArcIterator *iter1 = (BArcIterator*)&arc_iter1; BArcIterator *iter2 = (BArcIterator*)&arc_iter2; @@ -1136,19 +1065,16 @@ void REEB_AxialSymmetry(BNode* root_node, BNode* node1, BNode* node2, struct BAr bucket2 = IT_next(iter2); /* Make sure they both start at the same value */ - while (bucket1 && bucket1->val < bucket2->val) - { + while (bucket1 && bucket1->val < bucket2->val) { bucket1 = IT_next(iter1); } - while (bucket2 && bucket2->val < bucket1->val) - { + while (bucket2 && bucket2->val < bucket1->val) { bucket2 = IT_next(iter2); } - for ( ;bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) - { + for ( ; bucket1 && bucket2; bucket1 = IT_next(iter1), bucket2 = IT_next(iter2)) { bucket1->nv += bucket2->nv; /* add counts */ /* mirror on axis */ @@ -1175,7 +1101,7 @@ void postprocessGraph(ReebGraph *rg, char mode) ReebArc *arc; float fac1 = 0, fac2 = 1, fac3 = 0; - switch(mode) + switch (mode) { case SKGEN_AVERAGE: fac1 = fac2 = fac3 = 1.0f / 3.0f; @@ -1490,16 +1416,13 @@ static int compareArcs(void *varc1, void *varc2) float len1 = lengthArc(arc1); float len2 = lengthArc(arc2); - if (len1 < len2) - { + if (len1 < len2) { return -1; } - if (len1 > len2) - { + if (len1 > len2) { return 1; } - else - { + else { return 0; } } @@ -1508,13 +1431,10 @@ static void filterArc(ReebGraph *rg, ReebNode *newNode, ReebNode *removedNode, R { ReebArc *arc = NULL, *nextArc = NULL; - if (merging) - { + if (merging) { /* first pass, merge buckets for arcs that spawned the two nodes into the source arc*/ - for (arc = rg->arcs.first; arc; arc = arc->next) - { - if (arc->head == srcArc->head && arc->tail == srcArc->tail && arc != srcArc) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { + if (arc->head == srcArc->head && arc->tail == srcArc->tail && arc != srcArc) { ReebNode *head = srcArc->head; ReebNode *tail = srcArc->tail; mergeArcBuckets(srcArc, arc, head->weight, tail->weight); @@ -1524,47 +1444,38 @@ static void filterArc(ReebGraph *rg, ReebNode *newNode, ReebNode *removedNode, R /* second pass, replace removedNode by newNode, remove arcs that are collapsed in a loop */ arc = rg->arcs.first; - while (arc) - { + while (arc) { nextArc = arc->next; - if (arc->head == removedNode || arc->tail == removedNode) - { - if (arc->head == removedNode) - { + if (arc->head == removedNode || arc->tail == removedNode) { + if (arc->head == removedNode) { arc->head = newNode; } - else - { + else { arc->tail = newNode; } // Remove looped arcs - if (arc->head == arc->tail) - { + if (arc->head == arc->tail) { // v1 or v2 was already newNode, since we're removing an arc, decrement degree NodeDegreeDecrement(rg, newNode); // If it's srcArc, it'll be removed later, so keep it for now - if (arc != srcArc) - { + if (arc != srcArc) { BLI_remlink(&rg->arcs, arc); REEB_freeArc((BArc*)arc); } } - else - { + else { /* flip arcs that flipped, can happen on diamond shapes, mostly on null arcs */ - if (arc->head->weight > arc->tail->weight) - { + if (arc->head->weight > arc->tail->weight) { flipArc(arc); } //newNode->degree++; // incrementing degree since we're adding an arc NodeDegreeIncrement(rg, newNode); mergeArcFaces(rg, arc, srcArc); - if (merging) - { + if (merging) { ReebNode *head = arc->head; ReebNode *tail = arc->tail; @@ -1587,12 +1498,10 @@ void filterNullReebGraph(ReebGraph *rg) ReebArc *arc = NULL, *nextArc = NULL; arc = rg->arcs.first; - while (arc) - { + while (arc) { nextArc = arc->next; // Only collapse arcs too short to have any embed bucket - if (arc->bcount == 0) - { + if (arc->bcount == 0) { ReebNode *newNode = (ReebNode*)arc->head; ReebNode *removedNode = (ReebNode*)arc->tail; float blend; @@ -1623,12 +1532,14 @@ static int filterInternalExternalReebGraph(ReebGraph *rg, float threshold_intern BLI_sortlist(&rg->arcs, compareArcs); - for (arc = rg->arcs.first; arc; arc = nextArc) - { + for (arc = rg->arcs.first; arc; arc = nextArc) { nextArc = arc->next; - // Only collapse non-terminal arcs that are shorter than threshold - if (threshold_internal > 0 && arc->head->degree > 1 && arc->tail->degree > 1 && (lengthArc(arc) < threshold_internal)) + /* Only collapse non-terminal arcs that are shorter than threshold */ + if ((threshold_internal > 0) && + (arc->head->degree > 1) && + (arc->tail->degree > 1) && + (lengthArc(arc) < threshold_internal)) { ReebNode *newNode = NULL; ReebNode *removedNode = NULL; @@ -1650,26 +1561,25 @@ static int filterInternalExternalReebGraph(ReebGraph *rg, float threshold_intern } // Only collapse terminal arcs that are shorter than threshold - else if (threshold_external > 0 && (arc->head->degree == 1 || arc->tail->degree == 1) && (lengthArc(arc) < threshold_external)) + else if ((threshold_external > 0) && + (arc->head->degree == 1 || arc->tail->degree == 1) && + (lengthArc(arc) < threshold_external)) { ReebNode *terminalNode = NULL; ReebNode *middleNode = NULL; ReebNode *removedNode = NULL; // Assign terminal and middle nodes - if (arc->head->degree == 1) - { + if (arc->head->degree == 1) { terminalNode = arc->head; middleNode = arc->tail; } - else - { + else { terminalNode = arc->tail; middleNode = arc->head; } - if (middleNode->degree == 2 && middleNode != rg->nodes.first) - { + if (middleNode->degree == 2 && middleNode != rg->nodes.first) { #if 1 // If middle node is a normal node, it will be removed later // Only if middle node is not the root node @@ -1685,8 +1595,7 @@ static int filterInternalExternalReebGraph(ReebGraph *rg, float threshold_intern #endif } // Otherwise, just plain remove of the arc - else - { + else { removedNode = terminalNode; // removing arc, so we need to decrease the degree of the remaining node @@ -1713,13 +1622,10 @@ static int filterCyclesReebGraph(ReebGraph *rg, float UNUSED(distance_threshold) ReebArc *next2; int filtered = 0; - for (arc1 = rg->arcs.first; arc1; arc1 = arc1->next) - { - for (arc2 = arc1->next; arc2; arc2 = next2) - { + for (arc1 = rg->arcs.first; arc1; arc1 = arc1->next) { + for (arc2 = arc1->next; arc2; arc2 = next2) { next2 = arc2->next; - if (arc1 != arc2 && arc1->head == arc2->head && arc1->tail == arc2->tail) - { + if (arc1 != arc2 && arc1->head == arc2->head && arc1->tail == arc2->tail) { mergeArcEdges(rg, arc1, arc2, MERGE_APPEND); mergeArcFaces(rg, arc1, arc2); mergeArcBuckets(arc1, arc2, arc1->head->weight, arc1->tail->weight); @@ -1848,8 +1754,7 @@ int filterSmartReebGraph(ReebGraph *UNUSED(rg), float UNUSED(threshold)) if (avg_angle > threshold) merging = 1; - if (merging) - { + if (merging) { ReebNode *terminalNode = NULL; ReebNode *middleNode = NULL; ReebNode *newNode = NULL; @@ -1857,39 +1762,33 @@ int filterSmartReebGraph(ReebGraph *UNUSED(rg), float UNUSED(threshold)) int merging = 0; // Assign terminal and middle nodes - if (arc->head->degree == 1) - { + if (arc->head->degree == 1) { terminalNode = arc->head; middleNode = arc->tail; } - else - { + else { terminalNode = arc->tail; middleNode = arc->head; } // If middle node is a normal node, merge to terminal node - if (middleNode->degree == 2) - { + if (middleNode->degree == 2) { merging = 1; newNode = terminalNode; removedNode = middleNode; } // Otherwise, just plain remove of the arc - else - { + else { merging = 0; newNode = middleNode; removedNode = terminalNode; } // Merging arc - if (merging) - { + if (merging) { filterArc(rg, newNode, removedNode, arc, 1); } - else - { + else { // removing arc, so we need to decrease the degree of the remaining node //newNode->degree--; NodeDegreeDecrement(rg, newNode); @@ -1920,29 +1819,24 @@ static void filterGraph(ReebGraph *rg, short options, float threshold_internal, calculateGraphLength(rg); - if ((options & SKGEN_FILTER_EXTERNAL) == 0) - { + if ((options & SKGEN_FILTER_EXTERNAL) == 0) { threshold_external = 0; } - if ((options & SKGEN_FILTER_INTERNAL) == 0) - { + if ((options & SKGEN_FILTER_INTERNAL) == 0) { threshold_internal = 0; } - if (threshold_internal > 0 || threshold_external > 0) - { + if (threshold_internal > 0 || threshold_external > 0) { /* filter until there's nothing more to do */ - while (done == 1) - { + while (done == 1) { done = 0; /* no work done yet */ done = filterInternalExternalReebGraph(rg, threshold_internal, threshold_external); } } - if (options & SKGEN_FILTER_SMART) - { + if (options & SKGEN_FILTER_SMART) { filterSmartReebGraph(rg, 0.5); filterCyclesReebGraph(rg, 0.5); } @@ -1963,8 +1857,7 @@ static void finalizeGraph(ReebGraph *rg, char passes, char method) sortArcs(rg); - for (i = 0; i < passes; i++) - { + for (i = 0; i < passes; i++) { postprocessGraph(rg, method); } @@ -1979,12 +1872,10 @@ static int compareVerts( const void* a, const void* b ) EditVert *vb = *(EditVert**)b; int value = 0; - if (weightData(va) < weightData(vb)) - { + if (weightData(va) < weightData(vb)) { value = -1; } - else if (weightData(va) > weightData(vb)) - { + else if (weightData(va) > weightData(vb)) { value = 1; } @@ -2001,26 +1892,21 @@ static void spreadWeight(EditMesh *em) verts = MEM_callocN(sizeof(EditVert*) * totvert, "verts array"); - for (eve = em->verts.first, i = 0; eve; eve = eve->next, i++) - { + for (eve = em->verts.first, i = 0; eve; eve = eve->next, i++) { verts[i] = eve; } - while (work_needed == 1) - { + while (work_needed == 1) { work_needed = 0; qsort(verts, totvert, sizeof(EditVert*), compareVerts); - for (i = 0; i < totvert; i++) - { + for (i = 0; i < totvert; i++) { eve = verts[i]; - if (i == 0 || (weightData(eve) - lastWeight) > FLT_EPSILON) - { + if (i == 0 || (weightData(eve) - lastWeight) > FLT_EPSILON) { lastWeight = weightData(eve); } - else - { + else { work_needed = 1; weightSetData(eve, lastWeight + FLT_EPSILON * 2); lastWeight = weightData(eve); @@ -2044,8 +1930,7 @@ void REEB_exportGraph(ReebGraph *rg, int count) char filename[128]; FILE *f; - if (count == -1) - { + if (count == -1) { strcpy(filename, "test.txt"); } else { @@ -2053,15 +1938,13 @@ void REEB_exportGraph(ReebGraph *rg, int count) } f = BLI_fopen(filename, "w"); - for (arc = rg->arcs.first; arc; arc = arc->next) - { + for (arc = rg->arcs.first; arc; arc = arc->next) { int i; float p[3]; exportNode(f, "v1", arc->head); - for (i = 0; i < arc->bcount; i++) - { + for (i = 0; i < arc->bcount; i++) { fprintf(f, "b nv:%i %f %f %f\n", arc->buckets[i].nv, arc->buckets[i].p[0], arc->buckets[i].p[1], arc->buckets[i].p[2]); } @@ -2082,12 +1965,10 @@ static void removeZeroNodes(ReebGraph *rg) { ReebNode *node, *next_node; - for (node = rg->nodes.first; node; node = next_node) - { + for (node = rg->nodes.first; node; node = next_node) { next_node = node->next; - if (node->degree == 0) - { + if (node->degree == 0) { BLI_removeNode((BGraph*)rg, (BNode*)node); } } @@ -2098,63 +1979,51 @@ void removeNormalNodes(ReebGraph *rg) ReebArc *arc, *nextArc; // Merge degree 2 nodes - for (arc = rg->arcs.first; arc; arc = nextArc) - { + for (arc = rg->arcs.first; arc; arc = nextArc) { nextArc = arc->next; - while (arc->head->degree == 2 || arc->tail->degree == 2) - { + while (arc->head->degree == 2 || arc->tail->degree == 2) { // merge at v1 - if (arc->head->degree == 2) - { + if (arc->head->degree == 2) { ReebArc *connectedArc = (ReebArc*)BLI_findConnectedArc((BGraph*)rg, (BArc*)arc, (BNode*)arc->head); /* If arcs are one after the other */ - if (arc->head == connectedArc->tail) - { + if (arc->head == connectedArc->tail) { /* remove furthest arc */ - if (arc->tail->weight < connectedArc->head->weight) - { + if (arc->tail->weight < connectedArc->head->weight) { mergeConnectedArcs(rg, arc, connectedArc); nextArc = arc->next; } - else - { + else { mergeConnectedArcs(rg, connectedArc, arc); break; /* arc was removed, move to next */ } } /* Otherwise, arcs are side by side */ - else - { + else { /* Don't do anything, we need to keep the lowest node, even if degree 2 */ break; } } - // merge at v2 - if (arc->tail->degree == 2) - { + /* merge at v2 */ + if (arc->tail->degree == 2) { ReebArc *connectedArc = (ReebArc*)BLI_findConnectedArc((BGraph*)rg, (BArc*)arc, (BNode*)arc->tail); /* If arcs are one after the other */ - if (arc->tail == connectedArc->head) - { + if (arc->tail == connectedArc->head) { /* remove furthest arc */ - if (arc->head->weight < connectedArc->tail->weight) - { + if (arc->head->weight < connectedArc->tail->weight) { mergeConnectedArcs(rg, arc, connectedArc); nextArc = arc->next; } - else - { + else { mergeConnectedArcs(rg, connectedArc, arc); break; /* arc was removed, move to next */ } } /* Otherwise, arcs are side by side */ - else - { + else { /* Don't do anything, we need to keep the lowest node, even if degree 2 */ break; } @@ -2176,13 +2045,11 @@ static ReebArc *nextArcMappedToEdge(ReebArc *arc, ReebEdge *e) ReebArc *result = NULL; /* Find the ReebEdge in the edge list */ - for (edge = arc->edges.first; edge && !edgeEquals(edge, e); edge = edge->next) - { } + for (edge = arc->edges.first; edge && !edgeEquals(edge, e); edge = edge->next) { } nextEdge = edge->nextEdge; - if (nextEdge != NULL) - { + if (nextEdge != NULL) { result = nextEdge->arc; } @@ -2211,51 +2078,42 @@ void mergeArcEdges(ReebGraph *rg, ReebArc *aDst, ReebArc *aSrc, MergeDirection d { ReebEdge *e = NULL; - if (direction == MERGE_APPEND) - { - for (e = aSrc->edges.first; e; e = e->next) - { + if (direction == MERGE_APPEND) { + for (e = aSrc->edges.first; e; e = e->next) { e->arc = aDst; // Edge is stolen by new arc } BLI_movelisttolist(&aDst->edges , &aSrc->edges); } - else - { - for (e = aSrc->edges.first; e; e = e->next) - { + else { + for (e = aSrc->edges.first; e; e = e->next) { ReebEdge *newEdge = copyEdge(e); newEdge->arc = aDst; BLI_addtail(&aDst->edges, newEdge); - if (direction == MERGE_LOWER) - { + if (direction == MERGE_LOWER) { void **p = BLI_edgehash_lookup_p(rg->emap, e->v1->index, e->v2->index); newEdge->nextEdge = e; // if edge was the first in the list, point the edit edge to the new reeb edge instead. - if (*p == e) - { + if (*p == e) { *p = (void*)newEdge; } // otherwise, advance in the list until the predecessor is found then insert it there - else - { + else { ReebEdge *previous = (ReebEdge*)*p; - while (previous->nextEdge != e) - { + while (previous->nextEdge != e) { previous = previous->nextEdge; } previous->nextEdge = newEdge; } } - else - { + else { newEdge->nextEdge = e->nextEdge; e->nextEdge = newEdge; } @@ -2275,13 +2133,11 @@ int mergeConnectedArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) mergeArcFaces(rg, a0, a1); // Bring a0 to the combine length of both arcs - if (a0->tail == a1->head) - { + if (a0->tail == a1->head) { removedNode = a0->tail; a0->tail = a1->tail; } - else if (a0->head == a1->tail) - { + else if (a0->head == a1->tail) { removedNode = a0->head; a0->head = a1->head; } @@ -2303,11 +2159,9 @@ int mergeConnectedArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) { int result = 0; - // TRIANGLE POINTS DOWN - if (a0->head->weight == a1->head->weight) // heads are the same - { - if (a0->tail->weight == a1->tail->weight) // tails also the same, arcs can be totally merge together - { + /* TRIANGLE POINTS DOWN */ + if (a0->head->weight == a1->head->weight) { /* heads are the same */ + if (a0->tail->weight == a1->tail->weight) { /* tails also the same, arcs can be totally merge together */ mergeArcEdges(rg, a0, a1, MERGE_APPEND); mergeArcFaces(rg, a0, a1); @@ -2325,8 +2179,7 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) REEB_freeArc((BArc*)a1); result = 1; } - else if (a0->tail->weight > a1->tail->weight) // a1->tail->weight is in the middle - { + else if (a0->tail->weight > a1->tail->weight) { /* a1->tail->weight is in the middle */ mergeArcEdges(rg, a1, a0, MERGE_LOWER); mergeArcFaces(rg, a1, a0); @@ -2340,8 +2193,7 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) a0->head = a1->tail; resizeArcBuckets(a0); } - else // a0>n2 is in the middle - { + else { /* a0>n2 is in the middle */ mergeArcEdges(rg, a0, a1, MERGE_LOWER); mergeArcFaces(rg, a0, a1); @@ -2356,11 +2208,9 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) resizeArcBuckets(a1); } } - // TRIANGLE POINTS UP - else if (a0->tail->weight == a1->tail->weight) // tails are the same - { - if (a0->head->weight > a1->head->weight) // a0->head->weight is in the middle - { + /* TRIANGLE POINTS UP */ + else if (a0->tail->weight == a1->tail->weight) { /* tails are the same */ + if (a0->head->weight > a1->head->weight) { /* a0->head->weight is in the middle */ mergeArcEdges(rg, a0, a1, MERGE_HIGHER); mergeArcFaces(rg, a0, a1); @@ -2374,8 +2224,7 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) a1->tail = a0->head; resizeArcBuckets(a1); } - else // a1->head->weight is in the middle - { + else { /* a1->head->weight is in the middle */ mergeArcEdges(rg, a1, a0, MERGE_HIGHER); mergeArcFaces(rg, a1, a0); @@ -2390,9 +2239,8 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) resizeArcBuckets(a0); } } - else - { - // Need something here (OR NOT) + else { + /* Need something here (OR NOT) */ } return result; @@ -2401,18 +2249,14 @@ int mergeArcs(ReebGraph *rg, ReebArc *a0, ReebArc *a1) static void glueByMergeSort(ReebGraph *rg, ReebArc *a0, ReebArc *a1, ReebEdge *e0, ReebEdge *e1) { int total = 0; - while (total == 0 && a0 != a1 && a0 != NULL && a1 != NULL) - { + while (total == 0 && a0 != a1 && a0 != NULL && a1 != NULL) { total = mergeArcs(rg, a0, a1); - if (total == 0) // if it wasn't a total merge, go forward - { - if (a0->tail->weight < a1->tail->weight) - { + if (total == 0) // if it wasn't a total merge, go forward { + if (a0->tail->weight < a1->tail->weight) { a0 = nextArcMappedToEdge(a0, e0); } - else - { + else { a1 = nextArcMappedToEdge(a1, e1); } } @@ -2437,8 +2281,7 @@ static ReebEdge * createArc(ReebGraph *rg, ReebNode *node1, ReebNode *node2) edge = BLI_edgehash_lookup(rg->emap, node1->index, node2->index); // Only add existing edges that haven't been added yet - if (edge == NULL) - { + if (edge == NULL) { ReebArc *arc; ReebNode *v1, *v2; float len, offset; @@ -2451,13 +2294,11 @@ static ReebEdge * createArc(ReebGraph *rg, ReebNode *node1, ReebNode *node2) arc->symmetry_level = 0; arc->faces = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "createArc gh"); - if (node1->weight <= node2->weight) - { + if (node1->weight <= node2->weight) { v1 = node1; v2 = node2; } - else - { + else { v1 = node2; v2 = node1; } @@ -2497,8 +2338,7 @@ static ReebEdge * createArc(ReebGraph *rg, ReebNode *node1, ReebNode *node2) addVertToBucket(&(arc->buckets[arc->bcount - 1]), arc->tail->co); } #else - for (i = 0; i < arc->bcount; i++) - { + for (i = 0; i < arc->bcount; i++) { float co[3]; float f = (arc->buckets[i].val - offset) / len; @@ -2532,20 +2372,17 @@ static void addTriangleToGraph(ReebGraph *rg, ReebNode * n1, ReebNode * n2, Reeb /* The rest of the algorithm assumes that e1 is the longest edge */ - if (len1 >= len2 && len1 >= len3) - { + if (len1 >= len2 && len1 >= len3) { e1 = re1; e2 = re2; e3 = re3; } - else if (len2 >= len1 && len2 >= len3) - { + else if (len2 >= len1 && len2 >= len3) { e1 = re2; e2 = re1; e3 = re3; } - else - { + else { e1 = re3; e2 = re2; e3 = re1; @@ -2554,8 +2391,7 @@ static void addTriangleToGraph(ReebGraph *rg, ReebNode * n1, ReebNode * n2, Reeb /* And e2 is the lowest edge * If e3 is lower than e2, swap them */ - if (e3->v1->weight < e2->v1->weight) - { + if (e3->v1->weight < e2->v1->weight) { ReebEdge *etmp = e2; e2 = e3; e3 = etmp; @@ -2595,10 +2431,8 @@ ReebGraph * generateReebGraph(EditMesh *em, int subdivisions) renormalizeWeight(em, (float)rg->resolution); /* Adding vertice */ - for (index = 0, eve = em->verts.first; eve; eve = eve->next) - { - if (eve->h == 0) - { + for (index = 0, eve = em->verts.first; eve; eve = eve->next) { + if (eve->h == 0) { addNode(rg, eve); eve->f2 = 0; index++; @@ -2606,10 +2440,8 @@ ReebGraph * generateReebGraph(EditMesh *em, int subdivisions) } /* Adding face, edge per edge */ - for (efa = em->faces.first; efa; efa = efa->next) - { - if (efa->h == 0) - { + for (efa = em->faces.first; efa; efa = efa->next) { + if (efa->h == 0) { ReebNode *n1, *n2, *n3; n1 = nodeData(efa->v1); @@ -2618,15 +2450,13 @@ ReebGraph * generateReebGraph(EditMesh *em, int subdivisions) addTriangleToGraph(rg, n1, n2, n3, efa); - if (efa->v4) - { + if (efa->v4) { ReebNode *n4 = nodeData(efa->v4); addTriangleToGraph(rg, n1, n3, n4, efa); } #ifdef DEBUG_REEB countfaces++; - if (countfaces % 100 == 0) - { + if (countfaces % 100 == 0) { printf("\rface %i of %i", countfaces, totfaces); } #endif @@ -2656,8 +2486,7 @@ void renormalizeWeight(EditMesh *em, float newmax) eve = em->verts.first; minimum = weightData(eve); maximum = minimum; - for (; eve; eve = eve->next) - { + for (; eve; eve = eve->next) { maximum = MAX2(maximum, weightData(eve)); minimum = MIN2(minimum, weightData(eve)); } @@ -2665,8 +2494,7 @@ void renormalizeWeight(EditMesh *em, float newmax) range = maximum - minimum; /* Normalize weights */ - for (eve = em->verts.first; eve; eve = eve->next) - { + for (eve = em->verts.first; eve; eve = eve->next) { float weight = (weightData(eve) - minimum) / range * newmax; weightSetData(eve, weight); } @@ -2681,8 +2509,7 @@ int weightFromLoc(EditMesh *em, int axis) return 0; /* Copy coordinate in weight */ - for (eve = em->verts.first; eve; eve = eve->next) - { + for (eve = em->verts.first; eve; eve = eve->next) { weightSetData(eve, eve->co[axis]); } @@ -2745,8 +2572,7 @@ int weightToHarmonic(EditMesh *em, EdgeIndex *indexed_edges) int rval; /* Find local extrema */ - for (eve = em->verts.first; eve; eve = eve->next) - { + for (eve = em->verts.first; eve; eve = eve->next) { totvert++; } @@ -2759,52 +2585,42 @@ int weightToHarmonic(EditMesh *em, EdgeIndex *indexed_edges) nlBegin(NL_SYSTEM); /* Find local extrema */ - for (index = 0, eve = em->verts.first; eve; index++, eve = eve->next) - { - if (eve->h == 0) - { + for (index = 0, eve = em->verts.first; eve; index++, eve = eve->next) { + if (eve->h == 0) { EditEdge *eed; int maximum = 1; int minimum = 1; NextEdgeForVert(indexed_edges, -1); /* Reset next edge */ - for (eed = NextEdgeForVert(indexed_edges, index); eed && (maximum || minimum); eed = NextEdgeForVert(indexed_edges, index)) - { + for (eed = NextEdgeForVert(indexed_edges, index); eed && (maximum || minimum); eed = NextEdgeForVert(indexed_edges, index)) { EditVert *eve2; - if (eed->v1 == eve) - { + if (eed->v1 == eve) { eve2 = eed->v2; } - else - { + else { eve2 = eed->v1; } - if (eve2->h == 0) - { + if (eve2->h == 0) { /* Adjacent vertex is bigger, not a local maximum */ - if (weightData(eve2) > weightData(eve)) - { + if (weightData(eve2) > weightData(eve)) { maximum = 0; } /* Adjacent vertex is smaller, not a local minimum */ - else if (weightData(eve2) < weightData(eve)) - { + else if (weightData(eve2) < weightData(eve)) { minimum = 0; } } } - if (maximum || minimum) - { + if (maximum || minimum) { float w = weightData(eve); eve->f1 = 0; nlSetVariable(0, index, w); nlLockVariable(index); } - else - { + else { eve->f1 = 1; } } @@ -2813,38 +2629,30 @@ int weightToHarmonic(EditMesh *em, EdgeIndex *indexed_edges) nlBegin(NL_MATRIX); /* Zero edge weight */ - for (eed = em->edges.first; eed; eed = eed->next) - { + for (eed = em->edges.first; eed; eed = eed->next) { eed->tmp.l = 0; } /* Add faces count to the edge weight */ - for (efa = em->faces.first; efa; efa = efa->next) - { - if (efa->h == 0) - { + for (efa = em->faces.first; efa; efa = efa->next) { + if (efa->h == 0) { efa->e1->tmp.l++; efa->e2->tmp.l++; efa->e3->tmp.l++; - if (efa->e4) - { + if (efa->e4) { efa->e4->tmp.l++; } } } /* Add faces angle to the edge weight */ - for (efa = em->faces.first; efa; efa = efa->next) - { - if (efa->h == 0) - { - if (efa->v4 == NULL) - { + for (efa = em->faces.first; efa; efa = efa->next) { + if (efa->h == 0) { + if (efa->v4 == NULL) { addTriangle(efa->v1, efa->v2, efa->v3, efa->e1->tmp.l, efa->e2->tmp.l, efa->e3->tmp.l); } - else - { + else { addTriangle(efa->v1, efa->v2, efa->v3, efa->e1->tmp.l, efa->e2->tmp.l, 2); addTriangle(efa->v3, efa->v4, efa->v1, efa->e3->tmp.l, efa->e4->tmp.l, 2); } @@ -2857,16 +2665,13 @@ int weightToHarmonic(EditMesh *em, EdgeIndex *indexed_edges) success = nlSolveAdvanced(NULL, NL_TRUE); - if (success) - { + if (success) { rval = 1; - for (index = 0, eve = em->verts.first; eve; index++, eve = eve->next) - { + for (index = 0, eve = em->verts.first; eve; index++, eve = eve->next) { weightSetData(eve, nlGetVariable(0, index)); } } - else - { + else { rval = 0; } @@ -2881,20 +2686,17 @@ EditEdge * NextEdgeForVert(EdgeIndex *indexed_edges, int index) static int offset = -1; /* Reset method, call with NULL mesh pointer */ - if (index == -1) - { + if (index == -1) { offset = -1; return NULL; } /* first pass, start at the head of the list */ - if (offset == -1) - { + if (offset == -1) { offset = indexed_edges->offset[index]; } /* subsequent passes, start on the next edge */ - else - { + else { offset++; } @@ -2916,23 +2718,19 @@ static void shortestPathsFromVert(EditMesh *em, EditVert *starting_vert, EdgeInd BLI_heap_insert(edge_heap, FLT_MAX, NULL); /* Initialize edge flag */ - for (eed= em->edges.first; eed; eed= eed->next) - { + for (eed= em->edges.first; eed; eed= eed->next) { eed->f1 = 0; } - while (BLI_heap_size(edge_heap) > 0) - { + while (BLI_heap_size(edge_heap) > 0) { float current_weight; current_eve->f1 = 1; /* mark vertex as selected */ /* Add all new edges connected to current_eve to the list */ NextEdgeForVert(indexed_edges, -1); // Reset next edge - for (eed = NextEdgeForVert(indexed_edges, indexData(current_eve)); eed; eed = NextEdgeForVert(indexed_edges, indexData(current_eve))) - { - if (eed->f1 == 0) - { + for (eed = NextEdgeForVert(indexed_edges, indexData(current_eve)); eed; eed = NextEdgeForVert(indexed_edges, indexData(current_eve))) { + if (eed->f1 == 0) { BLI_heap_insert(edge_heap, weightData(current_eve) + eed->tmp.fp, eed); eed->f1 = 1; } @@ -2945,16 +2743,13 @@ static void shortestPathsFromVert(EditMesh *em, EditVert *starting_vert, EdgeInd select_eed = BLI_heap_popmin(edge_heap); } while (select_eed != NULL && select_eed->v1->f1 != 0 && select_eed->v2->f1); - if (select_eed != NULL) - { + if (select_eed != NULL) { select_eed->f1 = 2; - if (select_eed->v1->f1 == 0) /* v1 is the new vertex */ - { + if (select_eed->v1->f1 == 0) /* v1 is the new vertex */ { current_eve = select_eed->v1; } - else /* otherwise, it's v2 */ - { + else { /* otherwise, it's v2 */ current_eve = select_eed->v2; } @@ -2983,10 +2778,8 @@ static void buildIndexedEdges(EditMesh *em, EdgeIndex *indexed_edges) indexed_edges->offset = MEM_callocN(totvert * sizeof(int), "EdgeIndex offset"); - for (eed = em->edges.first; eed; eed = eed->next) - { - if (eed->v1->h == 0 && eed->v2->h == 0) - { + for (eed = em->edges.first; eed; eed = eed->next) { + if (eed->v1->h == 0 && eed->v2->h == 0) { tot_indexed += 2; indexed_edges->offset[indexData(eed->v1)]++; indexed_edges->offset[indexData(eed->v2)]++; @@ -2998,10 +2791,8 @@ static void buildIndexedEdges(EditMesh *em, EdgeIndex *indexed_edges) indexed_edges->edges = MEM_callocN(tot_indexed * sizeof(EditEdge*), "EdgeIndex edges"); /* setting vert offsets */ - for (eve = em->verts.first; eve; eve = eve->next) - { - if (eve->h == 0) - { + for (eve = em->verts.first; eve; eve = eve->next) { + if (eve->h == 0) { int d = indexed_edges->offset[indexData(eve)]; indexed_edges->offset[indexData(eve)] = offset; offset += d + 1; @@ -3009,24 +2800,18 @@ static void buildIndexedEdges(EditMesh *em, EdgeIndex *indexed_edges) } /* adding edges in array */ - for (eed = em->edges.first; eed; eed= eed->next) - { - if (eed->v1->h == 0 && eed->v2->h == 0) - { + for (eed = em->edges.first; eed; eed= eed->next) { + if (eed->v1->h == 0 && eed->v2->h == 0) { int i; - for (i = indexed_edges->offset[indexData(eed->v1)]; i < tot_indexed; i++) - { - if (indexed_edges->edges[i] == NULL) - { + for (i = indexed_edges->offset[indexData(eed->v1)]; i < tot_indexed; i++) { + if (indexed_edges->edges[i] == NULL) { indexed_edges->edges[i] = eed; break; } } - for (i = indexed_edges->offset[indexData(eed->v2)]; i < tot_indexed; i++) - { - if (indexed_edges->edges[i] == NULL) - { + for (i = indexed_edges->offset[indexData(eed->v2)]; i < tot_indexed; i++) { + if (indexed_edges->edges[i] == NULL) { indexed_edges->edges[i] = eed; break; } @@ -3044,80 +2829,64 @@ int weightFromDistance(EditMesh *em, EdgeIndex *indexed_edges) totvert = BLI_countlist(&em->verts); - if (em == NULL || totvert == 0) - { + if (em == NULL || totvert == 0) { return 0; } totedge = BLI_countlist(&em->edges); - if (totedge == 0) - { + if (totedge == 0) { return 0; } /* Initialize vertice flag and find at least one selected vertex */ - for (eve = em->verts.first; eve; eve = eve->next) - { + for (eve = em->verts.first; eve; eve = eve->next) { eve->f1 = 0; - if (eve->f & SELECT) - { + if (eve->f & SELECT) { vCount = 1; } } - if (vCount == 0) - { + if (vCount == 0) { return 0; /* no selected vert, failure */ } - else - { + else { EditEdge *eed; int allDone = 0; /* Calculate edge weight */ - for (eed = em->edges.first; eed; eed= eed->next) - { - if (eed->v1->h == 0 && eed->v2->h == 0) - { + for (eed = em->edges.first; eed; eed= eed->next) { + if (eed->v1->h == 0 && eed->v2->h == 0) { eed->tmp.fp = len_v3v3(eed->v1->co, eed->v2->co); } } /* Apply dijkstra spf for each selected vert */ - for (eve = em->verts.first; eve; eve = eve->next) - { - if (eve->f & SELECT) - { + for (eve = em->verts.first; eve; eve = eve->next) { + if (eve->f & SELECT) { shortestPathsFromVert(em, eve, indexed_edges); } } /* connect unselected islands */ - while (allDone == 0) - { + while (allDone == 0) { EditVert *selected_eve = NULL; float selected_weight = 0; float min_distance = FLT_MAX; allDone = 1; - for (eve = em->verts.first; eve; eve = eve->next) - { + for (eve = em->verts.first; eve; eve = eve->next) { /* for every vertex visible that hasn't been processed yet */ - if (eve->h == 0 && eve->f1 != 1) - { + if (eve->h == 0 && eve->f1 != 1) { EditVert *closest_eve; /* find the closest processed vertex */ - for (closest_eve = em->verts.first; closest_eve; closest_eve = closest_eve->next) - { + for (closest_eve = em->verts.first; closest_eve; closest_eve = closest_eve->next) { /* vertex is already processed and distance is smaller than current minimum */ - if (closest_eve->f1 == 1) - { + if (closest_eve->f1 == 1) { float distance = len_v3v3(closest_eve->co, eve->co); - if (distance < min_distance) - { + if (distance < min_distance) { min_distance = distance; selected_eve = eve; selected_weight = weightData(closest_eve); @@ -3127,8 +2896,7 @@ int weightFromDistance(EditMesh *em, EdgeIndex *indexed_edges) } } - if (selected_eve) - { + if (selected_eve) { allDone = 0; weightSetData(selected_eve, selected_weight + min_distance); @@ -3137,10 +2905,8 @@ int weightFromDistance(EditMesh *em, EdgeIndex *indexed_edges) } } - for (eve = em->verts.first; eve && vCount == 0; eve = eve->next) - { - if (eve->f1 == 0) - { + for (eve = em->verts.first; eve && vCount == 0; eve = eve->next) { + if (eve->f1 == 0) { printf("vertex not reached\n"); break; } @@ -3173,13 +2939,11 @@ static void initIteratorFct(ReebArcIterator *iter) static void setIteratorValues(ReebArcIterator *iter, EmbedBucket *bucket) { - if (bucket) - { + if (bucket) { iter->p = bucket->p; iter->no = bucket->no; } - else - { + else { iter->p = NULL; iter->no = NULL; } @@ -3193,14 +2957,12 @@ void initArcIterator(BArcIterator *arg, ReebArc *arc, ReebNode *head) initIteratorFct(iter); iter->arc = arc; - if (head == arc->head) - { + if (head == arc->head) { iter->start = 0; iter->end = arc->bcount - 1; iter->stride = 1; } - else - { + else { iter->start = arc->bcount - 1; iter->end = 0; iter->stride = -1; @@ -3218,14 +2980,12 @@ void initArcIteratorStart(BArcIterator *arg, struct ReebArc *arc, struct ReebNod initIteratorFct(iter); iter->arc = arc; - if (head == arc->head) - { + if (head == arc->head) { iter->start = start; iter->end = arc->bcount - 1; iter->stride = 1; } - else - { + else { iter->start = arc->bcount - 1 - start; iter->end = 0; iter->stride = -1; @@ -3235,8 +2995,7 @@ void initArcIteratorStart(BArcIterator *arg, struct ReebArc *arc, struct ReebNod iter->length = arc->bcount - start; - if (start >= arc->bcount) - { + if (start >= arc->bcount) { iter->start = iter->end; /* stop iterator since it's past its end */ } } @@ -3251,12 +3010,10 @@ void initArcIterator2(BArcIterator *arg, ReebArc *arc, int start, int end) iter->start = start; iter->end = end; - if (end > start) - { + if (end > start) { iter->stride = 1; } - else - { + else { iter->stride = -1; } @@ -3270,12 +3027,10 @@ static void* headNode(void *arg) ReebArcIterator *iter = (ReebArcIterator*)arg; ReebNode *node; - if (iter->start < iter->end) - { + if (iter->start < iter->end) { node = iter->arc->head; } - else - { + else { node = iter->arc->tail; } @@ -3291,12 +3046,10 @@ static void* tailNode(void *arg) ReebArcIterator *iter = (ReebArcIterator*)arg; ReebNode *node; - if (iter->start < iter->end) - { + if (iter->start < iter->end) { node = iter->arc->tail; } - else - { + else { node = iter->arc->head; } @@ -3314,8 +3067,7 @@ static void* nextBucket(void *arg) iter->index++; - if (iter->index < iter->length) - { + if (iter->index < iter->length) { result = &(iter->arc->buckets[iter->start + (iter->stride * iter->index)]); } @@ -3331,8 +3083,7 @@ static void* nextNBucket(void *arg, int n) iter->index += n; /* check if passed end */ - if (iter->index < iter->length) - { + if (iter->index < iter->length) { result = &(iter->arc->buckets[iter->start + (iter->stride * iter->index)]); } @@ -3347,8 +3098,7 @@ static void* peekBucket(void *arg, int n) int index = iter->index + n; /* check if passed end */ - if (index < iter->length) - { + if (index < iter->length) { result = &(iter->arc->buckets[iter->start + (iter->stride * index)]); } @@ -3361,8 +3111,7 @@ static void* previousBucket(void *arg) ReebArcIterator *iter = (ReebArcIterator*)arg; EmbedBucket *result = NULL; - if (iter->index > 0) - { + if (iter->index > 0) { iter->index--; result = &(iter->arc->buckets[iter->start + (iter->stride * iter->index)]); } @@ -3375,12 +3124,10 @@ static int iteratorStopped(void *arg) { ReebArcIterator *iter = (ReebArcIterator*)arg; - if (iter->index >= iter->length) - { + if (iter->index >= iter->length) { return 1; } - else - { + else { return 0; } } diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index c19041b817e..0b21e514f0e 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -6207,7 +6207,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) nu->resolv= cu->resolv; } - switch(stype) { + switch (stype) { case CU_PRIM_CURVE: /* curve */ nu->resolu= cu->resolu; if (cutype==CU_BEZIER) { diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 1f1d1495276..29bebfab9e0 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -520,13 +520,17 @@ void ED_text_to_object(bContext *C, Text *text, int split_lines) } /********************** utilities ***************************/ - static short next_word(Curve *cu) { short s; - for (s=cu->pos; (cu->str[s]) && (cu->str[s]!=' ') && (cu->str[s]!='\n') && - (cu->str[s]!=1) && (cu->str[s]!='\r'); s++); - if (cu->str[s]) return(s+1); else return(s); + for (s=cu->pos; ((cu->str[s]) && (cu->str[s] != ' ') && (cu->str[s] != '\n') && + (cu->str[s] != 1) && (cu->str[s] != '\r')); + s++) + { + /* pass */ + } + + return cu->str[s] ? (s + 1) : s; } static short prev_word(Curve *cu) @@ -534,9 +538,14 @@ static short prev_word(Curve *cu) short s; if (cu->pos==0) return(0); - for (s=cu->pos-2; (cu->str[s]) && (cu->str[s]!=' ') && (cu->str[s]!='\n') && - (cu->str[s]!=1) && (cu->str[s]!='\r'); s--); - if (cu->str[s]) return(s+1); else return(s); + for (s = cu->pos - 2; ((cu->str[s]) && (cu->str[s] != ' ') && (cu->str[s] != '\n') && + (cu->str[s] != 1) && (cu->str[s] != '\r')); + s--) + { + /* pass */ + } + + return cu->str[s] ? (s + 1) : s; } static int kill_selection(Object *obedit, int ins) /* 1 == new character */ @@ -816,7 +825,7 @@ static int move_cursor(bContext *C, int type, int select) EditFont *ef= cu->editfont; int cursmove= -1; - switch(type) { + switch (type) { case LINE_BEGIN: if ((select) && (cu->selstart==0)) cu->selstart = cu->selend = cu->pos+1; while (cu->pos>0) { @@ -1121,7 +1130,7 @@ static int delete_exec(bContext *C, wmOperator *op) else if (type == DEL_PREV_SEL) type= DEL_PREV_CHAR; } - switch(type) { + switch (type) { case DEL_ALL: cu->len = cu->pos = 0; ef->textbuf[0]= 0; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index a7ff1565c3d..e64446be84b 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -782,8 +782,7 @@ static void ui_add_smart_controller(bContext *C, uiBut *from, uiBut *to) /* (1) get the object */ CTX_DATA_BEGIN(C, Object *, ob_iter, selected_editable_objects) { - for (sens_iter = ob_iter->sensors.first; sens_iter; sens_iter = sens_iter->next) - { + for (sens_iter = ob_iter->sensors.first; sens_iter; sens_iter = sens_iter->next) { if (&(sens_iter->links) == sens_from_links) { ob = ob_iter; break; @@ -1564,8 +1563,7 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste len = strlen(str); } - for (y = 0; y < strlen(buf); y++) - { + for (y = 0; y < strlen(buf); y++) { /* add contents of buffer */ if (len + 1 < data->maxlen) { for (x = data->maxlen; x > but->pos; x--) diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index cce037822e3..03ceeb68c4c 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1061,8 +1061,7 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) /* after the leading text is gone, chop off the : and following space, with ofs */ - while ((but->strwidth > okwidth) && (but->ofs < 2)) - { + while ((but->strwidth > okwidth) && (but->ofs < 2)) { ui_text_clip_give_next_off(but); but->strwidth = BLF_width(fstyle->uifont_id, but->drawstr + but->ofs); if (but->strwidth < 10) break; diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 9f4a351c66d..2d222059fc1 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1151,8 +1151,7 @@ void UI_ThemeClearColor(int colorid) void UI_make_axis_color(const unsigned char src_col[3], unsigned char dst_col[3], const char axis) { - switch (axis) - { + switch (axis) { case 'X': dst_col[0] = src_col[0] > 219 ? 255 : src_col[0] + 36; dst_col[1] = src_col[1] < 26 ? 0 : src_col[1] - 26; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index e88b34b5812..f68c40d5f8a 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -927,7 +927,9 @@ static int edbm_delete_exec(bContext *C, wmOperator *op) //"Erase Only Faces"; if (!EDBM_op_callf(em, op, "del geom=%hf context=%i", BM_ELEM_SELECT, DEL_ONLYFACES)) + { return OPERATOR_CANCELLED; + } } EDBM_flag_disable_all(em, BM_ELEM_SELECT); @@ -1021,8 +1023,7 @@ static int edbm_add_edge_face__smooth_get(BMesh *bm) unsigned int vote_on_smooth[2] = {0, 0}; BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) { - if (BM_elem_flag_test(e, BM_ELEM_SELECT) && e->l) - { + if (BM_elem_flag_test(e, BM_ELEM_SELECT) && e->l) { vote_on_smooth[BM_elem_flag_test_bool(e->l->f, BM_ELEM_SMOOTH)]++; } } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 96fb2afbac4..0a6368daf74 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -928,9 +928,10 @@ static BMVert *editbmesh_get_x_mirror_vert_spacial(Object *ob, BMEditMesh *em, f /* ignore nan verts */ if (!finite(co[0]) || !finite(co[1]) || - !finite(co[2]) - ) + !finite(co[2])) + { return NULL; + } vec[0] = -co[0]; vec[1] = co[1]; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 3717591e412..ba527e6fa6a 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -430,7 +430,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, "Field"); - switch(type) { + switch (type) { case PFIELD_WIND: case PFIELD_VORTEX: ob->empty_drawtype = OB_SINGLE_ARROW; @@ -1680,7 +1680,7 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base id= obn->data; didit= 0; - switch(obn->type) { + switch (obn->type) { case OB_MESH: if (dupflag & USER_DUP_MESH) { ID_NEW_US2( obn->data ) diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 1f012c6f0be..8b22b4613b8 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -862,7 +862,7 @@ static void bake_images(MultiresBakeRender *bkr) if (ibuf->x>0 && ibuf->y>0) { ibuf->userdata= MEM_callocN(ibuf->y*ibuf->x, "MultiresBake imbuf mask"); - switch(bkr->mode) { + switch (bkr->mode) { case RE_BAKE_NORMALS: do_multires_bake(bkr, ima, apply_tangmat_callback, init_normal_data, NULL, free_normal_data); break; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 2fbc2966bc8..8531ec5701d 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1354,14 +1354,16 @@ static EnumPropertyItem *object_mode_set_itemsf(bContext *C, PointerRNA *UNUSED( ob = CTX_data_active_object(C); while (ob && input->identifier) { if ((input->value == OB_MODE_EDIT && ((ob->type == OB_MESH) || (ob->type == OB_ARMATURE) || - (ob->type == OB_CURVE) || (ob->type == OB_SURF) || - (ob->type == OB_FONT) || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) || - (input->value == OB_MODE_POSE && (ob->type == OB_ARMATURE)) || - (input->value == OB_MODE_PARTICLE_EDIT && ob->particlesystem.first) || - ((input->value == OB_MODE_SCULPT || input->value == OB_MODE_VERTEX_PAINT || - input->value == OB_MODE_WEIGHT_PAINT || input->value == OB_MODE_TEXTURE_PAINT) && (ob->type == OB_MESH)) || - (input->value == OB_MODE_OBJECT)) + (ob->type == OB_CURVE) || (ob->type == OB_SURF) || + (ob->type == OB_FONT) || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) || + (input->value == OB_MODE_POSE && (ob->type == OB_ARMATURE)) || + (input->value == OB_MODE_PARTICLE_EDIT && ob->particlesystem.first) || + ((input->value == OB_MODE_SCULPT || input->value == OB_MODE_VERTEX_PAINT || + input->value == OB_MODE_WEIGHT_PAINT || input->value == OB_MODE_TEXTURE_PAINT) && (ob->type == OB_MESH)) || + (input->value == OB_MODE_OBJECT)) + { RNA_enum_item_add(&item, &totitem, input); + } ++input; } @@ -1401,7 +1403,7 @@ static int object_mode_set_compat(bContext *UNUSED(C), wmOperator *op, Object *o if (mode == OB_MODE_OBJECT) return 1; - switch(ob->type) { + switch (ob->type) { case OB_MESH: if (mode & (OB_MODE_EDIT|OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_PARTICLE_EDIT)) return 1; diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index ef428b5b1b7..f4d8cd5ae11 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -301,7 +301,7 @@ static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int * *tot= 0; name[0]= 0; - switch(obedit->type) { + switch (obedit->type) { case OB_MESH: { Mesh *me= obedit->data; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index a666f04034b..40e852ebf7c 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1232,7 +1232,7 @@ enum { /* Return 1 if make link data is allow, zero otherwise */ static int allow_make_links_data(int ev, Object *ob, Object *obt) { - switch(ev) { + switch (ev) { case MAKE_LINKS_OBDATA: if (ob->type == obt->type && ob->type != OB_EMPTY) return 1; @@ -1268,7 +1268,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, obt, selected_editable_objects) { if (ob != obt) { if (allow_make_links_data(event, ob, obt)) { - switch(event) { + switch (event) { case MAKE_LINKS_OBDATA: /* obdata */ id= obt->data; id->us--; @@ -1464,7 +1464,7 @@ static void single_obdata_users(Main *bmain, Scene *scene, int flag) BKE_copy_animdata_id_action(id); - switch(ob->type) { + switch (ob->type) { case OB_LAMP: ob->data= la= copy_lamp(ob->data); for (a=0; arefkey) { /* apply new basis key on original data */ - switch(ob->type) { + switch (ob->type) { case OB_MESH: key_to_mesh(key->refkey, ob->data); break; diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index b5c34f1c750..e74819f10bf 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -184,7 +184,7 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to *dvert_arr = NULL; if (id) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_ME: { Mesh *me = (Mesh *)id; @@ -287,7 +287,7 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot) { if (id) { - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_ME: { Mesh *me = (Mesh *)id; @@ -412,7 +412,7 @@ static void ED_vgroup_nr_vert_add(Object *ob, dw= defvert_find_index(dv, def_nr); if (dw) { - switch(assignmode) { + switch (assignmode) { case WEIGHT_REPLACE: dw->weight = weight; break; @@ -437,7 +437,7 @@ static void ED_vgroup_nr_vert_add(Object *ob, * we must take a different form of action ... */ - switch(assignmode) { + switch (assignmode) { case WEIGHT_SUBTRACT: /* if we are subtracting then we don't * need to do anything @@ -1043,8 +1043,9 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in dm_deform_clear(dm, ob); dm = NULL; } } - } while (wasChange && (distToStart-distToBe)/fabsf(distToStart-distToBe) == - (dists[bestIndex]-distToBe)/fabsf(dists[bestIndex]-distToBe)); + } while (wasChange && ((distToStart - distToBe) / fabsf(distToStart - distToBe) == + (dists[bestIndex] - distToBe) / fabsf(dists[bestIndex] - distToBe))); + MEM_freeN(upDown); MEM_freeN(changes); MEM_freeN(dists); @@ -1193,7 +1194,7 @@ static void vgroup_lock_all(Object *ob, int action) } for (dg= ob->defbase.first; dg; dg= dg->next) { - switch(action) { + switch (action) { case SEL_SELECT: dg->flag |= DG_LOCK_WEIGHT; break; diff --git a/source/blender/editors/physics/dynamicpaint_ops.c b/source/blender/editors/physics/dynamicpaint_ops.c index 417cddb74fe..c82e0459218 100644 --- a/source/blender/editors/physics/dynamicpaint_ops.c +++ b/source/blender/editors/physics/dynamicpaint_ops.c @@ -291,8 +291,7 @@ static int dynamicPaint_bakeImageSequence(bContext *C, DynamicPaintSurface *surf if (!dynamicPaint_createUVSurface(surface)) return 0; /* Loop through selected frames */ - for (frame=surface->start_frame; frame<=surface->end_frame; frame++) - { + for (frame=surface->start_frame; frame<=surface->end_frame; frame++) { float progress = (frame - surface->start_frame) / (float)frames * 100; surface->current_frame = frame; diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 591015a7479..4f8f2ea3642 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -215,7 +215,7 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create) /* in the case of only one editable thing, set pset->edittype accordingly */ if (pidlist.first && pidlist.first == pidlist.last) { pid = pidlist.first; - switch(pid->type) { + switch (pid->type) { case PTCACHE_TYPE_PARTICLES: pset->edittype = PE_TYPE_PARTICLES; break; @@ -477,10 +477,12 @@ static int key_inside_rect(PEData *data, const float co[3]) if (sco[0] == IS_CLIPPED) return 0; - + if (sco[0] > data->rect->xmin && sco[0] < data->rect->xmax && - sco[1] > data->rect->ymin && sco[1] < data->rect->ymax) + sco[1] > data->rect->ymin && sco[1] < data->rect->ymax) + { return key_test_depth(data, co); + } return 0; } @@ -3493,7 +3495,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) mval[0] = bedit->lastmouse[0] + step*dx; mval[1] = bedit->lastmouse[1] + step*dy; - switch(pset->brushtype) { + switch (pset->brushtype) { case PE_BRUSH_COMB: { float mval_f[2]; @@ -3710,7 +3712,7 @@ static int brush_edit_invoke(bContext *C, wmOperator *op, wmEvent *event) static int brush_edit_modal(bContext *C, wmOperator *op, wmEvent *event) { - switch(event->type) { + switch (event->type) { case LEFTMOUSE: case MIDDLEMOUSE: case RIGHTMOUSE: // XXX hardcoded diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 20fa4c5753f..c0d3e505873 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -594,8 +594,7 @@ static int fluid_validate_scene(ReportList *reports, Scene *scene, Object *fsDom int channelObjCount = 0; int fluidInputCount = 0; - for (base=scene->base.first; base; base= base->next) - { + for (base=scene->base.first; base; base= base->next) { Object *ob = base->object; FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index bed17048ea1..eb1688a76e2 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -115,7 +115,7 @@ void ED_region_pixelspace(ARegion *ar) void ED_region_do_listen(ARegion *ar, wmNotifier *note) { /* generic notes first */ - switch(note->category) { + switch (note->category) { case NC_WM: if (note->data==ND_FILEREAD) ED_region_tag_redraw(ar); @@ -247,7 +247,7 @@ static void region_draw_azone_tab_plus(AZone *az) glEnable(GL_BLEND); /* add code to draw region hidden as 'too small' */ - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: uiSetRoundBox(UI_CNR_TOP_LEFT | UI_CNR_TOP_RIGHT); break; @@ -282,7 +282,7 @@ static void region_draw_azone_tab(AZone *az) glColor4f(col[0], col[1], col[2], 0.5f); /* add code to draw region hidden as 'too small' */ - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: uiSetRoundBox(UI_CNR_TOP_LEFT | UI_CNR_TOP_RIGHT | UI_RB_ALPHA); @@ -325,7 +325,7 @@ static void region_draw_azone_tria(AZone *az) glColor4f(0.0f, 0.0f, 0.0f, 0.35f); /* add code to draw region hidden as 'too small' */ - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: ui_draw_anti_tria((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y1, (float)(az->x1+az->x2)/2, (float)az->y2); break; @@ -623,7 +623,7 @@ static void area_azone_initialize(ScrArea *sa) #define AZONEPAD_ICON 9 static void region_azone_edge(AZone *az, ARegion *ar) { - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: az->x1= ar->winrct.xmin; az->y1= ar->winrct.ymax - AZONEPAD_EDGE; @@ -665,7 +665,7 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) if (azt->edge == az->edge) tot++; } - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: az->x1= ar->winrct.xmax - tot*2*AZONEPAD_ICON; az->y1= ar->winrct.ymax + AZONEPAD_ICON; @@ -725,7 +725,7 @@ static void region_azone_tab_plus(ScrArea *sa, AZone *az, ARegion *ar) if (azt->edge == az->edge) tot++; } - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: if (ar->winrct.ymax == sa->totrct.ymin) add= 1; else add= 0; az->x1= ar->winrct.xmax - 2.5*AZONEPAD_TAB_PLUSW; @@ -770,7 +770,7 @@ static void region_azone_tab(ScrArea *sa, AZone *az, ARegion *ar) if (azt->edge == az->edge) tot++; } - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: if (ar->winrct.ymax == sa->totrct.ymin) add= 1; else add= 0; az->x1= ar->winrct.xmax - 2*AZONEPAD_TABW; @@ -815,7 +815,7 @@ static void region_azone_tria(ScrArea *sa, AZone *az, ARegion *ar) if (azt->edge == az->edge) tot++; } - switch(az->edge) { + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: if (ar->winrct.ymax == sa->totrct.ymin) add= 1; else add= 0; az->x1= ar->winrct.xmax - 2*AZONEPAD_TRIAW; diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 5ba0e86e0c1..5b73645abde 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -825,7 +825,7 @@ int bglPointHack(void) void bglVertex3fv(const float vec[3]) { - switch(curmode) { + switch (curmode) { case GL_POINTS: if (pointhack) { glRasterPos3fv(vec); @@ -838,7 +838,7 @@ void bglVertex3fv(const float vec[3]) void bglVertex3f(float x, float y, float z) { - switch(curmode) { + switch (curmode) { case GL_POINTS: if (pointhack) { glRasterPos3f(x, y, z); @@ -851,7 +851,7 @@ void bglVertex3f(float x, float y, float z) void bglVertex2fv(const float vec[2]) { - switch(curmode) { + switch (curmode) { case GL_POINTS: if (pointhack) { glRasterPos2fv(vec); @@ -882,11 +882,15 @@ void bgl_get_mats(bglMats *mats) /* Very strange code here - it seems that certain bad values in the * modelview matrix can cause gluUnProject to give bad results. */ if (mats->modelview[0] < badvalue && - mats->modelview[0] > -badvalue) - mats->modelview[0]= 0; + mats->modelview[0] > -badvalue) + { + mats->modelview[0] = 0; + } if (mats->modelview[5] < badvalue && - mats->modelview[5] > -badvalue) - mats->modelview[5]= 0; + mats->modelview[5] > -badvalue) + { + mats->modelview[5] = 0; + } /* Set up viewport so that gluUnProject will give correct values */ mats->viewport[0] = 0; diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index cafa4527c20..512cd404273 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -963,7 +963,7 @@ void ED_screen_do_listen(bContext *C, wmNotifier *note) wmWindow *win= CTX_wm_window(C); /* generic notes */ - switch(note->category) { + switch (note->category) { case NC_WM: if (note->data==ND_FILEREAD) win->screen->do_draw= 1; @@ -1009,7 +1009,7 @@ void ED_screen_draw(wmWindow *win) if (sa1 && sa2) { dir = area_getorientation(sa1, sa2); if (dir >= 0) { - switch(dir) { + switch (dir) { case 0: /* W */ dir = 'r'; dira = 'l'; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index e427e1e21cf..3777547fa90 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -597,7 +597,7 @@ static int actionzone_modal(bContext *C, wmOperator *op, wmEvent *event) int deltax, deltay; int mindelta= sad->az->type==AZONE_REGION?1:12; - switch(event->type) { + switch (event->type) { case MOUSEMOVE: /* calculate gesture direction */ deltax= (event->x - sad->x); @@ -735,7 +735,7 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) { sActionzoneData *sad= op->customdata; - switch(event->type) { + switch (event->type) { case MOUSEMOVE: /* second area, for join */ sad->sa2= screen_areahascursor(CTX_wm_screen(C), event->x, event->y); @@ -1045,7 +1045,7 @@ static int area_move_modal(bContext *C, wmOperator *op, wmEvent *event) int delta, x, y; /* execute the events */ - switch(event->type) { + switch (event->type) { case MOUSEMOVE: x= RNA_int_get(op->ptr, "x"); @@ -1438,7 +1438,7 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event) int dir; /* execute the events */ - switch(event->type) { + switch (event->type) { case MOUSEMOVE: dir= RNA_enum_get(op->ptr, "direction"); @@ -1711,7 +1711,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) int delta; /* execute the events */ - switch(event->type) { + switch (event->type) { case MOUSEMOVE: if (rmd->edge==AE_LEFT_TO_TOPRIGHT || rmd->edge==AE_RIGHT_TO_TOPLEFT) { @@ -2262,7 +2262,7 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) sAreaJoinData *jd = (sAreaJoinData *)op->customdata; /* execute the events */ - switch(event->type) { + switch (event->type) { case MOUSEMOVE: { diff --git a/source/blender/editors/sculpt_paint/paint_cursor.c b/source/blender/editors/sculpt_paint/paint_cursor.c index 5d4710accad..553a9a335d7 100644 --- a/source/blender/editors/sculpt_paint/paint_cursor.c +++ b/source/blender/editors/sculpt_paint/paint_cursor.c @@ -377,7 +377,9 @@ static void paint_draw_alpha_overlay(Sculpt *sd, Brush *brush, /* check for overlay mode */ if (!(brush->flag & BRUSH_TEXTURE_OVERLAY) || !(ELEM(brush->mtex.brush_map_mode, MTEX_MAP_MODE_FIXED, MTEX_MAP_MODE_TILED))) + { return; + } /* save lots of GL state * TODO: check on whether all of these are needed? */ @@ -566,7 +568,9 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *UNUSED(unused)) ELEM5(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH, SCULPT_TOOL_CREASE)) + { outline_col = brush->sub_col; + } /* only do if brush is over the mesh */ if (hit) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 157be337823..507fbe0f4b8 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -2817,8 +2817,10 @@ static void sculpt_init_mirror_clipping(Object *ob, SculptSession *ss) /* update the clip tolerance */ if (mmd->tolerance > ss->cache->clip_tolerance[i]) + { ss->cache->clip_tolerance[i] = - mmd->tolerance; + mmd->tolerance; + } } } } @@ -2928,8 +2930,11 @@ static void sculpt_update_cache_invariants(bContext *C, Sculpt *sd, SculptSessio SCULPT_TOOL_DRAW, SCULPT_TOOL_CREASE, SCULPT_TOOL_BLOB, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_STRIPS, SCULPT_TOOL_ROTATE)) - if (!(brush->flag & BRUSH_ACCUMULATE)) + { + if (!(brush->flag & BRUSH_ACCUMULATE)) { cache->original = 1; + } + } cache->special_rotation = (brush->flag & BRUSH_RAKE) ? sd->last_angle : 0; diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 89a786d02a9..c08ed2e85b9 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -237,7 +237,9 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) else if (unode->maxgrid && dm->getGridData) { if ((dm->getNumGrids(dm) != unode->maxgrid) || (dm->getGridSize(dm) != unode->gridsize)) + { continue; + } } else { continue; diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index b50c3f11534..c238789446f 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -437,8 +437,7 @@ static void sound_mixdown_draw(bContext *C, wmOperator *op) RNA_def_property_flag(prop_codec, PROP_HIDDEN); RNA_def_property_flag(prop_format, PROP_HIDDEN); - switch(container) - { + switch (container) { case AUD_CONTAINER_AC3: RNA_def_property_clear_flag(prop_format, PROP_HIDDEN); RNA_def_property_enum_items(prop_format, ac3_format_items); @@ -460,8 +459,7 @@ static void sound_mixdown_draw(bContext *C, wmOperator *op) RNA_def_property_clear_flag(prop_codec, PROP_HIDDEN); RNA_def_property_enum_items(prop_codec, all_codec_items); - switch(codec) - { + switch (codec) { case AUD_CODEC_AAC: RNA_enum_set(op->ptr, "format", AUD_FORMAT_S16); break; diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 9d0dab7d34e..c1875eb3a9a 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -269,12 +269,12 @@ static void action_header_area_draw(const bContext *C, ARegion *ar) static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_OB_ACTIVE: case ND_FRAME: ED_region_tag_redraw(ar); @@ -282,7 +282,7 @@ static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: @@ -307,12 +307,12 @@ static void action_channel_area_listener(ARegion *ar, wmNotifier *wmn) static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_RENDER_OPTIONS: case ND_OB_ACTIVE: case ND_FRAME: @@ -322,7 +322,7 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_TRANSFORM: /* moving object shouldn't need to redraw action */ break; @@ -334,7 +334,7 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_NODE: - switch(wmn->action) { + switch (wmn->action) { case NA_EDITED: ED_region_tag_redraw(ar); break; diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index b698ec03668..20d5257a62f 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -535,7 +535,7 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma /* now for each buttons context type, we try to construct a path, * tracing back recursively */ - switch(mainb) { + switch (mainb) { case BCONTEXT_SCENE: case BCONTEXT_RENDER: found= buttons_context_path_scene(path); diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c index fcc5b488ca9..2385bfd75b7 100644 --- a/source/blender/editors/space_buttons/buttons_header.c +++ b/source/blender/editors/space_buttons/buttons_header.c @@ -56,7 +56,7 @@ static void set_texture_context(bContext *C, SpaceButs *sbuts) { - switch(sbuts->mainb) { + switch (sbuts->mainb) { case BCONTEXT_MATERIAL: sbuts->texture_context = SB_TEXC_MAT_OR_LAMP; break; @@ -83,7 +83,7 @@ static void do_buttons_buttons(bContext *C, void *UNUSED(arg), int event) if (!sbuts) /* editor type switch */ return; - switch(event) { + switch (event) { case B_CONTEXT_SWITCH: case B_BUTSPREVIEW: ED_area_tag_redraw(CTX_wm_area(C)); diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index f1f4fb37b6e..b2a58041832 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -234,9 +234,9 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) SpaceButs *sbuts= sa->spacedata.first; /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_RENDER_OPTIONS: buttons_area_redraw(sa, BCONTEXT_RENDER); break; @@ -262,7 +262,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_TRANSFORM: buttons_area_redraw(sa, BCONTEXT_OBJECT); buttons_area_redraw(sa, BCONTEXT_DATA); /* autotexpace flag */ @@ -307,7 +307,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_GEOM: - switch(wmn->data) { + switch (wmn->data) { case ND_SELECT: case ND_DATA: ED_area_tag_redraw(sa); @@ -316,7 +316,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_MATERIAL: ED_area_tag_redraw(sa); - switch(wmn->data) { + switch (wmn->data) { case ND_SHADING: case ND_SHADING_DRAW: case ND_NODES: @@ -350,7 +350,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); break; case NC_ANIMATION: - switch(wmn->data) { + switch (wmn->data) { case ND_KEYFRAME: if (wmn->action == NA_EDITED) ED_area_tag_redraw(sa); diff --git a/source/blender/editors/space_clip/clip_graph_ops.c b/source/blender/editors/space_clip/clip_graph_ops.c index f8c81c2944a..b569469d304 100644 --- a/source/blender/editors/space_clip/clip_graph_ops.c +++ b/source/blender/editors/space_clip/clip_graph_ops.c @@ -82,7 +82,7 @@ static void toggle_selection_cb(void *userdata, MovieTrackingMarker *marker) { SelectUserData *data = (SelectUserData *)userdata; - switch(data->action) { + switch (data->action) { case SEL_SELECT: marker->flag |= MARKER_GRAPH_SEL; break; diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c index 7e1bbc254e9..64ce529345c 100644 --- a/source/blender/editors/space_clip/clip_ops.c +++ b/source/blender/editors/space_clip/clip_ops.c @@ -361,7 +361,7 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event) ViewPanData *vpd = op->customdata; float offset[2]; - switch(event->type) { + switch (event->type) { case MOUSEMOVE: copy_v2_v2(vpd->vec, &vpd->xorig); offset[0] = (vpd->x - event->x) / sc->zoom; @@ -496,7 +496,7 @@ static int view_zoom_modal(bContext *C, wmOperator *op, wmEvent *event) ViewZoomData *vpd = op->customdata; float factor; - switch(event->type) { + switch (event->type) { case MOUSEMOVE: factor = 1.0f + (vpd->x-event->x + vpd->y - event->y) / 300.0f; RNA_float_set(op->ptr, "factor", factor); diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index 228c716e3b6..4de790bc00c 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -236,9 +236,9 @@ static SpaceLink *clip_duplicate(SpaceLink *sl) static void clip_listener(ScrArea *sa, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_FRAME: clip_scopes_tag_refresh(sa); /* no break! */ @@ -249,14 +249,14 @@ static void clip_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_MOVIECLIP: - switch(wmn->data) { + switch (wmn->data) { case ND_DISPLAY: case ND_SELECT: clip_scopes_tag_refresh(sa); ED_area_tag_redraw(sa); break; } - switch(wmn->action) { + switch (wmn->action) { case NA_REMOVED: case NA_EDITED: case NA_EVALUATED: @@ -270,7 +270,7 @@ static void clip_listener(ScrArea *sa, wmNotifier *wmn) } break; case NC_GEOM: - switch(wmn->data) { + switch (wmn->data) { case ND_SELECT: clip_scopes_tag_refresh(sa); ED_area_tag_redraw(sa); @@ -808,7 +808,7 @@ static void clip_main_area_draw(const bContext *C, ARegion *ar) static void clip_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCREEN: if (wmn->data == ND_GPENCIL) ED_region_tag_redraw(ar); @@ -896,7 +896,7 @@ static void clip_tools_area_draw(const bContext *C, ARegion *ar) static void clip_props_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_WM: if (wmn->data == ND_HISTORY) ED_region_tag_redraw(ar); @@ -941,7 +941,7 @@ static void clip_properties_area_draw(const bContext *C, ARegion *ar) static void clip_properties_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCREEN: if (wmn->data ==ND_GPENCIL) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index 35986fa2700..2b1b311b89d 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -526,7 +526,7 @@ static int slide_marker_modal(bContext *C, wmOperator *op, wmEvent *event) SlideMarkerData *data = (SlideMarkerData *)op->customdata; float dx, dy, mdelta[2]; - switch(event->type) { + switch (event->type) { case LEFTCTRLKEY: case RIGHTCTRLKEY: case LEFTSHIFTKEY: diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 193fa2d2c65..36b38661463 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -82,7 +82,7 @@ enum { static void do_file_buttons(bContext *C, void *UNUSED(arg), int event) { - switch(event) { + switch (event) { case B_FS_FILENAME: file_filename_exec(C, NULL); break; @@ -417,8 +417,7 @@ static void draw_background(FileLayout *layout, View2D *v2d) int sy; /* alternating flat shade background */ - for (i=0; (i <= layout->rows); i+=2) - { + for (i=0; (i <= layout->rows); i+=2) { sy = (int)v2d->cur.ymax - i*(layout->tile_h+2*layout->tile_border_y) - layout->tile_border_y; UI_ThemeColorShade(TH_BACK, -7); @@ -490,8 +489,7 @@ void file_draw_list(const bContext *C, ARegion *ar) align = ( FILE_IMGDISPLAY == params->display) ? UI_STYLE_TEXT_CENTER : UI_STYLE_TEXT_LEFT; - for (i=offset; (i < numfiles) && (itot.xmin+2.0f); sy = (int)(v2d->tot.ymax - sy); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 7d1981a5a3b..aa1ab823ee1 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -911,8 +911,7 @@ static int file_smoothscroll_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent numfiles = filelist_numfiles(sfile->files); /* check if we are editing a name */ - for (i=0; i < numfiles; ++i) - { + for (i=0; i < numfiles; ++i) { if (filelist_is_selected(sfile->files, i, CHECK_ALL) ) { edit_idx=i; break; diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 45a271cc7e9..a05eba2daeb 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -520,7 +520,7 @@ static void filelist_read_dir(struct FileList* filelist); struct FileList* filelist_new(short type) { FileList* p = MEM_callocN( sizeof(FileList), "filelist" ); - switch(type) { + switch (type) { case FILE_MAIN: p->readf = filelist_read_main; p->filterf = is_filtered_main; @@ -982,7 +982,7 @@ int filelist_is_selected(struct FileList* filelist, int index, FileCheckType che void filelist_sort(struct FileList* filelist, short sort) { - switch(sort) { + switch (sort) { case FILE_SORT_ALPHA: qsort(filelist->filelist, filelist->numfiles, sizeof(struct direntry), compare_name); break; diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index 31695ddd776..b17ca5ee319 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -447,8 +447,7 @@ static void column_widths(struct FileList* files, struct FileLayout* layout) layout->column_widths[i] = 0; } - for (i=0; (i < numfiles); ++i) - { + for (i=0; (i < numfiles); ++i) { struct direntry* file = filelist_file(files, i); if (file) { float len; diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index 48449ac8870..a4da1975c56 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -99,7 +99,7 @@ static FSMenuEntry *fsmenu_get_category(struct FSMenu* fsmenu, FSMenuCategory ca { FSMenuEntry *fsms = NULL; - switch(category) { + switch (category) { case FS_CATEGORY_SYSTEM: fsms = fsmenu->fsmenu_system; break; @@ -115,7 +115,7 @@ static FSMenuEntry *fsmenu_get_category(struct FSMenu* fsmenu, FSMenuCategory ca static void fsmenu_set_category(struct FSMenu* fsmenu, FSMenuCategory category, FSMenuEntry *fsms) { - switch(category) { + switch (category) { case FS_CATEGORY_SYSTEM: fsmenu->fsmenu_system = fsms; break; @@ -268,8 +268,7 @@ void fsmenu_read_bookmarks(struct FSMenu* fsmenu, const char *filename) fp = BLI_fopen(filename, "r"); if (!fp) return; - while ( fgets ( line, 256, fp ) != NULL ) /* read a line */ - { + while ( fgets ( line, 256, fp ) != NULL ) { /* read a line */ if (strncmp(line, "[Bookmarks]", 11)==0) { category = FS_CATEGORY_BOOKMARKS; } @@ -329,8 +328,7 @@ void fsmenu_read_system(struct FSMenu* fsmenu) const char *home; /* loop through all the OS X Volumes, and add them to the SYSTEM section */ - for (i=1; err!=nsvErr; i++) - { + for (i = 1; err != nsvErr; i++) { FSRef dir; unsigned char path[FILE_MAX]; @@ -389,8 +387,7 @@ void fsmenu_read_system(struct FSMenu* fsmenu) pathesArray = LSSharedFileListCopySnapshot(list, &seed); pathesCount = CFArrayGetCount(pathesArray); - for (i=0; ispacedata.first; */ /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SPACE: switch (wmn->data) { case ND_SPACE_FILE_LIST: @@ -287,7 +287,7 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar) static void file_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SPACE: switch (wmn->data) { case ND_SPACE_FILE_LIST: @@ -476,7 +476,7 @@ static void file_channel_area_draw(const bContext *C, ARegion *ar) static void file_channel_area_listener(ARegion *UNUSED(ar), wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { } } @@ -536,7 +536,7 @@ static void file_ui_area_draw(const bContext *C, ARegion *ar) static void file_ui_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SPACE: switch (wmn->data) { case ND_SPACE_FILE_LIST: diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 4d2fe2cd568..8bc2eda7e33 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -85,7 +85,7 @@ static void do_graph_region_buttons(bContext *UNUSED(C), void *UNUSED(arg), int { //Scene *scene= CTX_data_scene(C); - switch(event) { + switch (event) { } diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 37cdbd4963a..6214201a87d 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -374,12 +374,12 @@ static void graph_buttons_area_draw(const bContext *C, ARegion *ar) static void graph_region_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_RENDER_OPTIONS: case ND_OB_ACTIVE: case ND_FRAME: @@ -393,7 +393,7 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: @@ -406,7 +406,7 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_NODE: - switch(wmn->action) { + switch (wmn->action) { case NA_EDITED: case NA_SELECTED: ED_region_tag_redraw(ar); @@ -552,7 +552,7 @@ static void graph_refresh(const bContext *C, ScrArea *sa) */ float *col= fcu->color; - switch(fcu->array_index) { + switch (fcu->array_index) { case 0: col[0]= 1.0f; col[1]= 0.0f; col[2]= 0.0f; break; diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 08aa69fe499..447028b8bef 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -205,7 +205,9 @@ void ED_image_aspect(Image *ima, float *aspx, float *aspy) if ((ima == NULL) || (ima->type == IMA_TYPE_R_RESULT) || (ima->type == IMA_TYPE_COMPOSITE) || (ima->aspx == 0.0f || ima->aspy == 0.0f)) + { return; + } /* x is always 1 */ *aspy = ima->aspy / ima->aspx; diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c index dcead6c01db..16fe48f314a 100644 --- a/source/blender/editors/space_logic/logic_buttons.c +++ b/source/blender/editors/space_logic/logic_buttons.c @@ -119,8 +119,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) uiBlock *block; uiLinkLine *line, *nline; uiBut *but; - for (block= ar->uiblocks.first; block; block= block->next) - { + for (block= ar->uiblocks.first; block; block= block->next) { but= block->buttons.first; while (but) { if (but->type==LINK && but->link) { diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index f7c69c80067..9f5ae19d92c 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -371,7 +371,7 @@ static void do_logic_buts(bContext *C, void *UNUSED(arg), int event) ob= CTX_data_active_object(C); if (ob==NULL) return; - switch(event) { + switch (event) { case B_SETPROP: /* check for inconsistent types */ @@ -551,13 +551,10 @@ static void do_logic_buts(bContext *C, void *UNUSED(arg), int event) didit= 0; for (ob=bmain->object.first; ob; ob=ob->id.next) { act= ob->actuators.first; - while (act) - { - if (act->type==ACT_SOUND) - { + while (act) { + if (act->type==ACT_SOUND) { bSoundActuator *sa= act->data; - if (sa->sndnr) - { + if (sa->sndnr) { ID *sound= bmain->sound.first; int nr= 1; @@ -567,8 +564,7 @@ static void do_logic_buts(bContext *C, void *UNUSED(arg), int event) break; } - while (sound) - { + while (sound) { if (nr==sa->sndnr) break; nr++; @@ -727,8 +723,7 @@ static const char *actuator_name(int type) static const char *actuator_pup(Object *owner) { - switch (owner->type) - { + switch (owner->type) { case OB_ARMATURE: return "Actuators %t|Action %x15|Armature %x23|Motion %x0|Constraint %x9|Ipo %x1" "|Camera %x3|Sound %x5|Property %x6|Edit Object %x10" @@ -945,7 +940,7 @@ static int get_col_sensor(int type) { /* XXX themecolors not here */ - switch(type) { + switch (type) { case SENS_ALWAYS: return TH_PANEL; case SENS_DELAY: return TH_PANEL; case SENS_TOUCH: return TH_PANEL; @@ -1161,8 +1156,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short set_col_sensor(sens->type, 0); - switch (sens->type) - { + switch (sens->type) { case SENS_ALWAYS: { ysize= 24; @@ -1347,14 +1341,12 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short uiDefButI(block, MENU, B_REDR, str, xco+30,yco-44,width-60, 19, &ps->type, 0, 31, 0, 0, "Type"); - if (ps->type != SENS_PROP_EXPRESSION) - { + if (ps->type != SENS_PROP_EXPRESSION) { uiDefBut(block, TEX, 1, "Prop: ", xco+30,yco-68,width-60, 19, ps->name, 0, MAX_NAME, 0, 0, "Property name"); } - if (ps->type == SENS_PROP_INTERVAL) - { + if (ps->type == SENS_PROP_INTERVAL) { uiDefBut(block, TEX, 1, "Min: ", xco,yco-92,width/2, 19, ps->value, 0, MAX_NAME, 0, 0, "check for min value"); uiDefBut(block, TEX, 1, "Max: ", xco+width/2,yco-92,width/2, 19, @@ -1401,8 +1393,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short uiDefButI(block, MENU, B_REDR, str, xco+10,yco-66,0.4*(width-20), 19, &arm->type, 0, 31, 0, 0, "Type"); - if (arm->type != SENS_ARM_STATE_CHANGED) - { + if (arm->type != SENS_ARM_STATE_CHANGED) { uiDefButF(block, NUM, 1, "Value: ", xco+10+0.4*(width-20),yco-66,0.6*(width-20), 19, &arm->value, -10000.0, 10000.0, 100, 0, "Test the error against this value"); } @@ -1489,8 +1480,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short draw_default_sensor_header(sens, block, xco, yco, width); randomSensor = sens->data; /* some files were wrongly written, avoid crash now */ - if (randomSensor) - { + if (randomSensor) { uiDefButI(block, NUM, 1, "Seed: ", xco+10,yco-44,(width-20), 19, &randomSensor->seed, 0, 1000, 0, 0, "Initial seed of the generator. (Choose 0 for not random)"); @@ -1610,8 +1600,7 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short &joy->flag, 0, 0, 0, 0, "Triggered by all events on this joysticks current type (axis/button/hat)"); } - if (joy->type == SENS_JOY_BUTTON) - { + if (joy->type == SENS_JOY_BUTTON) { if ((joy->flag & SENS_JOY_ANY_EVENT)==0) { uiDefButI(block, NUM, 1, "Number:", xco+10 + 0.6 * (width-20), yco-68, 0.4 * (width-20), 19, &joy->button, 0, 18, 100, 0, @@ -1727,7 +1716,7 @@ static short draw_controllerbuttons(bController *cont, uiBlock *block, short xco static int get_col_actuator(int type) { - switch(type) { + switch (type) { case ACT_ACTION: return TH_PANEL; case ACT_SHAPEACTION: return TH_PANEL; case ACT_OBJECT: return TH_PANEL; @@ -1869,14 +1858,12 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo /* yco is at the top of the rect, draw downwards */ set_col_actuator(act->type, 0); - switch (act->type) - { + switch (act->type) { case ACT_OBJECT: { oa = act->data; wval = (width-100)/3; - if (oa->type == ACT_OBJECT_NORMAL) - { + if (oa->type == ACT_OBJECT_NORMAL) { if (ob->gameflag & OB_DYNAMIC) { ysize= 175; } @@ -1904,8 +1891,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo uiDefButBitS(block, TOG, ACT_DLOC_LOCAL, 0, "L", xco+45+3*wval, yco-45, 15, 19, &oa->flag, 0.0, 0.0, 0, 0, "Local transformation"); uiDefButBitS(block, TOG, ACT_DROT_LOCAL, 0, "L", xco+45+3*wval, yco-64, 15, 19, &oa->flag, 0.0, 0.0, 0, 0, "Local transformation"); - if ( ob->gameflag & OB_DYNAMIC ) - { + if (ob->gameflag & OB_DYNAMIC) { uiDefBut(block, LABEL, 0, "Force", xco, yco-87, 55, 19, NULL, 0, 0, 0, 0, "Sets the force"); uiBlockBeginAlign(block); uiDefButF(block, NUM, 0, "", xco+45, yco-87, wval, 19, oa->forceloc, -10000.0, 10000.0, 10, 0, ""); @@ -1921,8 +1907,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo uiBlockEndAlign(block); } - if ( ob->gameflag & OB_DYNAMIC ) - { + if (ob->gameflag & OB_DYNAMIC) { uiDefBut(block, LABEL, 0, "LinV", xco, yco-129, 45, 19, NULL, 0, 0, 0, 0, "Sets the linear velocity"); uiBlockBeginAlign(block); uiDefButF(block, NUM, 0, "", xco+45, yco-129, wval, 19, oa->linearvelocity, -10000.0, 10000.0, 10, 0, ""); @@ -1948,8 +1933,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo uiDefButBitS(block, TOG, ACT_ADD_LIN_VEL, 0, "use_additive",xco+45+3*wval+15, yco-129, 35, 19, &oa->flag, 0.0, 0.0, 0, 0, "Toggles between ADD and SET linV"); } } - else if (oa->type == ACT_OBJECT_SERVO) - { + else if (oa->type == ACT_OBJECT_SERVO) { ysize= 195; glRects(xco, yco-ysize, xco+width, yco); @@ -2824,8 +2808,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo glRects( xco, yco-ysize, xco+width, yco ); uiEmboss( (float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1 ); - switch(tdfa->type) - { + switch (tdfa->type) { case ACT_2DFILTER_MOTIONBLUR: if (!tdfa->flag) { uiDefButS(block, TOG, B_REDR, "D", xco+30,yco-44,19, 19, &tdfa->flag, 0.0, 0.0, 0.0, 0.0, "Disable Motion Blur"); @@ -3759,8 +3742,7 @@ static void draw_actuator_armature(uiLayout *layout, PointerRNA *ptr) uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE); - switch (RNA_enum_get(ptr, "mode")) - { + switch (RNA_enum_get(ptr, "mode")) { case ACT_ARM_RUN: break; case ACT_ARM_ENABLE: @@ -3835,8 +3817,7 @@ static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext RNA_main_pointer_create(CTX_data_main(C), &main_ptr); uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE); - switch (RNA_enum_get(ptr, "mode")) - { + switch (RNA_enum_get(ptr, "mode")) { case ACT_CONST_TYPE_LOC: uiItemR(layout, ptr, "limit", 0, NULL, ICON_NONE); @@ -3934,8 +3915,7 @@ static void draw_actuator_edit_object(uiLayout *layout, PointerRNA *ptr) uiLayout *row, *split, *sub; uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE); - switch (RNA_enum_get(ptr, "mode")) - { + switch (RNA_enum_get(ptr, "mode")) { case ACT_EDOB_ADD_OBJECT: row = uiLayoutRow(layout, 0); uiItemR(row, ptr, "object", 0, NULL, ICON_NONE); @@ -3988,8 +3968,7 @@ static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr) uiLayout *row, *split; uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE); - switch (RNA_enum_get(ptr, "mode")) - { + switch (RNA_enum_get(ptr, "mode")) { case ACT_2DFILTER_CUSTOMFILTER: uiItemR(layout, ptr, "filter_pass", 0, NULL, ICON_NONE); uiItemR(layout, ptr, "glsl_shader", 0, NULL, ICON_NONE); @@ -4163,8 +4142,7 @@ static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr) uiItemR(layout, ptr, "mode", 0, NULL, ICON_NONE); uiItemPointerR(layout, ptr, "property", &settings_ptr, "properties", NULL, ICON_NONE); - switch(RNA_enum_get(ptr, "mode")) - { + switch (RNA_enum_get(ptr, "mode")) { case ACT_PROP_TOGGLE: break; case ACT_PROP_ADD: diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index 82175f83d39..93105c39f39 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -195,12 +195,12 @@ static void logic_refresh(const bContext *UNUSED(C), ScrArea *UNUSED(sa)) static void logic_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_LOGIC: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_FRAME: ED_region_tag_redraw(ar); break; diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index de42e4a783d..a133d370d99 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -76,7 +76,7 @@ static void do_nla_region_buttons(bContext *C, void *UNUSED(arg), int event) { //Scene *scene= CTX_data_scene(C); - switch(event) { + switch (event) { } diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 4dc3aef7d2c..27c48d2232f 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -348,12 +348,12 @@ static void nla_buttons_area_draw(const bContext *C, ARegion *ar) static void nla_region_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_OB_ACTIVE: case ND_FRAME: case ND_MARKERS: @@ -362,7 +362,7 @@ static void nla_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: @@ -381,12 +381,12 @@ static void nla_region_listener(ARegion *ar, wmNotifier *wmn) static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_RENDER_OPTIONS: case ND_OB_ACTIVE: case ND_FRAME: @@ -396,7 +396,7 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: @@ -406,7 +406,7 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_NODE: - switch(wmn->action) { + switch (wmn->action) { case NA_EDITED: ED_region_tag_redraw(ar); break; @@ -425,19 +425,19 @@ static void nla_main_area_listener(ARegion *ar, wmNotifier *wmn) static void nla_channel_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_ANIMATION: ED_region_tag_redraw(ar); break; case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_OB_ACTIVE: ED_region_tag_redraw(ar); break; } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 42aea32b7f6..e00abff30f2 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -963,7 +963,7 @@ static void node_update_frame(const bContext *UNUSED(C), bNodeTree *UNUSED(ntree static void node_common_set_butfunc(bNodeType *ntype) { - switch(ntype->type) { + switch (ntype->type) { case NODE_GROUP: ntype->uifunc= node_uifunc_group; ntype->drawfunc= node_draw_group; @@ -1176,7 +1176,7 @@ static void node_shader_buts_dynamic(uiLayout *layout, bContext *C, PointerRNA * static void node_shader_set_butfunc(bNodeType *ntype) { ntype->uifuncbut = NULL; - switch(ntype->type) { + switch (ntype->type) { /* case NODE_GROUP: note, typeinfo for group is generated... see "XXX ugly hack" */ case SH_NODE_MATERIAL: @@ -1941,7 +1941,7 @@ static void node_composit_buts_moviedistortion(uiLayout *layout, bContext *C, Po static void node_composit_set_butfunc(bNodeType *ntype) { ntype->uifuncbut = NULL; - switch(ntype->type) { + switch (ntype->type) { /* case NODE_GROUP: note, typeinfo for group is generated... see "XXX ugly hack" */ case CMP_NODE_IMAGE: @@ -2137,7 +2137,7 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *UNUSED(C), Pointe col= uiLayoutColumn(layout, 0); - switch( tex->type ) { + switch ( tex->type ) { case TEX_BLEND: uiItemR(col, &tex_ptr, "progression", 0, "", ICON_NONE); row= uiLayoutRow(col, 0); @@ -2222,45 +2222,50 @@ static void node_texture_set_butfunc(bNodeType *ntype) if ( ntype->type >= TEX_NODE_PROC && ntype->type < TEX_NODE_PROC_MAX ) { ntype->uifunc = node_texture_buts_proc; } - else switch(ntype->type) { - + else { + switch (ntype->type) { + case TEX_NODE_MATH: ntype->uifunc = node_buts_math; break; - + case TEX_NODE_MIX_RGB: ntype->uifunc = node_buts_mix_rgb; break; - + case TEX_NODE_VALTORGB: ntype->uifunc = node_buts_colorramp; break; - + case TEX_NODE_CURVE_RGB: ntype->uifunc= node_buts_curvecol; break; - + case TEX_NODE_CURVE_TIME: ntype->uifunc = node_buts_time; break; - + case TEX_NODE_TEXTURE: ntype->uifunc = node_buts_texture; break; - + case TEX_NODE_BRICKS: ntype->uifunc = node_texture_buts_bricks; break; - + case TEX_NODE_IMAGE: ntype->uifunc = node_texture_buts_image; break; - + case TEX_NODE_OUTPUT: ntype->uifunc = node_texture_buts_output; break; + } + } + + if (ntype->uifuncbut == NULL) { + ntype->uifuncbut = ntype->uifunc; } - if (ntype->uifuncbut == NULL) ntype->uifuncbut = ntype->uifunc; } /* ******* init draw callbacks for all tree types, only called in usiblender.c, once ************* */ @@ -2305,7 +2310,7 @@ void ED_init_node_butfuncs(void) for (i=0; i < NUM_SOCKET_TYPES; ++i) { stype = ntreeGetSocketType(i); if (stype) { - switch(stype->type) { + switch (stype->type) { case SOCK_FLOAT: case SOCK_INT: case SOCK_BOOLEAN: diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index dda06267237..247dd0c1fa7 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -284,7 +284,7 @@ void ED_node_shader_default(Scene *scene, ID *id) ntree= ntreeAddTree("Shader Nodetree", NTREE_SHADER, 0); - switch(GS(id->name)) { + switch (GS(id->name)) { case ID_MA: { Material *ma= (Material*)id; ma->nodetree = ntree; @@ -1458,7 +1458,7 @@ static int sample_invoke(bContext *C, wmOperator *op, wmEvent *event) static int sample_modal(bContext *C, wmOperator *op, wmEvent *event) { - switch(event->type) { + switch (event->type) { case LEFTMOUSE: case RIGHTMOUSE: // XXX hardcoded sample_exit(C, op); diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c index 049886b1d66..13e85c7f74d 100644 --- a/source/blender/editors/space_node/node_templates.c +++ b/source/blender/editors/space_node/node_templates.c @@ -220,8 +220,10 @@ static void node_socket_add_replace(Main *bmain, bNodeTree *ntree, bNode *node_t /* also preserve mapping for texture nodes */ if (node_from->typeinfo->nclass == NODE_CLASS_TEXTURE && - node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE) + node_prev->typeinfo->nclass == NODE_CLASS_TEXTURE) + { memcpy(node_from->storage, node_prev->storage, sizeof(NodeTexBase)); + } /* remove node */ node_remove_linked(ntree, node_prev); @@ -295,11 +297,14 @@ static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR]) BLI_strncpy(node_name, node->typeinfo->name, UI_MAX_NAME_STR); if (node->inputs.first == NULL && - node->outputs.first != node->outputs.last && - !(node->typeinfo->flag & NODE_OPTIONS)) + node->outputs.first != node->outputs.last && + !(node->typeinfo->flag & NODE_OPTIONS)) + { BLI_snprintf(name, UI_MAX_NAME_STR, "%s | %s", node_name, sock->link->fromsock->name); - else + } + else { BLI_strncpy(name, node_name, UI_MAX_NAME_STR); + } } else if (sock->type == SOCK_SHADER) BLI_strncpy(name, "None", UI_MAX_NAME_STR); diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index fca9927b0f5..3540c20e515 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -172,7 +172,7 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) short shader_type = snode->shaderfrom; /* preview renders */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCENE: switch (wmn->data) { case ND_NODES: @@ -244,7 +244,7 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); break; case NC_SCREEN: - switch(wmn->data) { + switch (wmn->data) { case ND_ANIMPLAY: ED_area_tag_refresh(sa); break; @@ -429,7 +429,7 @@ static void node_header_area_draw(const bContext *C, ARegion *ar) static void node_region_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SPACE: if (wmn->data==ND_SPACE_NODE) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 779475943dd..7b2bbf3e285 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -278,7 +278,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) if (tselem->type==0) { test_idbutton(tselem->id->name+2); // library.c, unique name and alpha sort - switch(GS(tselem->id->name)) { + switch (GS(tselem->id->name)) { case ID_MA: WM_event_add_notifier(C, NC_MATERIAL, NULL); break; case ID_TE: @@ -305,7 +305,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) } } else { - switch(tselem->type) { + switch (tselem->type) { case TSE_DEFGROUP: defgroup_unique_name(te->directdata, (Object *)tselem->id); // id = object break; @@ -719,7 +719,7 @@ static void keymap_type_cb(bContext *C, void *kmi_v, void *UNUSED(arg_v)) short maptype= keymap_menu_type(kmi->type); if (maptype!=kmi->maptype) { - switch(kmi->maptype) { + switch (kmi->maptype) { case OL_KM_KEYBOARD: kmi->type= AKEY; kmi->val= KM_PRESS; @@ -776,7 +776,7 @@ static void outliner_draw_keymapbuts(uiBlock *block, ARegion *ar, SpaceOops *soo xstart+= butw2+5; /* edit actual event */ - switch(kmi->maptype) { + switch (kmi->maptype) { case OL_KM_KEYBOARD: uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw2, UI_UNIT_Y-1, &kmi->type, "Key code"); xstart+= butw2+5; @@ -904,7 +904,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto arg.alpha= alpha; if (tselem->type) { - switch( tselem->type) { + switch ( tselem->type) { case TSE_ANIM_DATA: UI_icon_draw(x, y, ICON_ANIM_DATA); break; // xxx case TSE_NLA: @@ -932,7 +932,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto { Object *ob= (Object *)tselem->id; ModifierData *md= BLI_findlink(&ob->modifiers, tselem->nr); - switch(md->type) { + switch (md->type) { case eModifierType_Subsurf: UI_icon_draw(x, y, ICON_MOD_SUBSURF); break; case eModifierType_Armature: @@ -1093,7 +1093,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto } } else { - switch( GS(tselem->id->name)) { + switch ( GS(tselem->id->name)) { case ID_SCE: tselem_draw_icon_uibut(&arg, ICON_SCENE_DATA); break; case ID_ME: @@ -1108,7 +1108,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto { Lamp *la= (Lamp *)tselem->id; - switch(la->type) { + switch (la->type) { case LA_LOCAL: tselem_draw_icon_uibut(&arg, ICON_LAMP_POINT); break; case LA_SUN: diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index c06576e48a6..5515ec45269 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -629,7 +629,7 @@ static int tree_element_active_keymap_item(bContext *UNUSED(C), TreeElement *te, int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, int set) { - switch(te->idcode) { + switch (te->idcode) { /* Note: no ID_OB: objects are handled specially to allow multiple * selection. See do_outliner_item_activate. */ case ID_MA: @@ -652,7 +652,7 @@ int tree_element_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement /* Context can be NULL when set==0 */ int tree_element_type_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set) { - switch(tselem->type) { + switch (tselem->type) { case TSE_DEFGROUP: return tree_element_active_defgroup(C, scene, te, tselem, set); case TSE_BONE: diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c index 5c527face83..13e86209f3a 100644 --- a/source/blender/editors/space_outliner/outliner_tools.c +++ b/source/blender/editors/space_outliner/outliner_tools.c @@ -96,7 +96,7 @@ static void set_operation_types(SpaceOops *soops, ListBase *lb, } else { int idcode= GS(tselem->id->name); - switch(idcode) { + switch (idcode) { case ID_SCE: *scenelevel= 1; break; diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index ed050b7f93d..c2a3affa1b6 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -182,9 +182,9 @@ static void outliner_main_area_free(ARegion *UNUSED(ar)) static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCENE: - switch(wmn->data) { + switch (wmn->data) { case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_OB_VISIBLE: @@ -200,7 +200,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_OBJECT: - switch(wmn->data) { + switch (wmn->data) { case ND_TRANSFORM: /* transform doesn't change outliner data */ break; @@ -212,7 +212,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case ND_CONSTRAINT: - switch(wmn->action) { + switch (wmn->action) { case NA_ADDED: case NA_REMOVED: case NA_RENAME: @@ -244,7 +244,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_MATERIAL: - switch(wmn->data) { + switch (wmn->data) { case ND_SHADING: case ND_SHADING_DRAW: ED_region_tag_redraw(ar); @@ -255,7 +255,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; case NC_GEOM: - switch(wmn->data) { + switch (wmn->data) { case ND_DATA: /* needed for vertex groups only, no special notifier atm so use NC_GEOM|ND_DATA */ ED_region_tag_redraw(ar); @@ -263,7 +263,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_ANIMATION: - switch(wmn->data) { + switch (wmn->data) { case ND_NLA_ACTCHANGE: case ND_KEYFRAME: ED_region_tag_redraw(ar); @@ -299,7 +299,7 @@ static void outliner_header_area_free(ARegion *UNUSED(ar)) static void outliner_header_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCENE: if (wmn->data == ND_KEYINGSET) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index cd0c8779c39..5431156de45 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -206,14 +206,12 @@ static void drawseqwave(Scene *scene, Sequence *seq, float x1, float y1, float x length = floor((waveform->length - startsample) / samplestep); glBegin(GL_LINE_STRIP); - for (i = 0; i < length; i++) - { + for (i = 0; i < length; i++) { pos = startsample + i * samplestep; value = waveform->data[pos * 3]; - for (j = pos + 1; (j < waveform->length) && (j < pos + samplestep); j++) - { + for (j = pos + 1; (j < waveform->length) && (j < pos + samplestep); j++) { if (value > waveform->data[j * 3]) value = waveform->data[j * 3]; } @@ -223,14 +221,12 @@ static void drawseqwave(Scene *scene, Sequence *seq, float x1, float y1, float x glEnd(); glBegin(GL_LINE_STRIP); - for (i = 0; i < length; i++) - { + for (i = 0; i < length; i++) { pos = startsample + i * samplestep; value = waveform->data[pos * 3 + 1]; - for (j = pos + 1; (j < waveform->length) && (j < pos + samplestep); j++) - { + for (j = pos + 1; (j < waveform->length) && (j < pos + samplestep); j++) { if (value < waveform->data[j * 3 + 1]) value = waveform->data[j * 3 + 1]; } diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 84f960ecf2a..ffb686b6810 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -130,8 +130,7 @@ static void flatten_string_append(FlattenString *fs, const char *c, int accum, i fs->accum = naccum; } - for (i = 0; i < len; i++) - { + for (i = 0; i < len; i++) { fs->buf[fs->pos + i] = c[i]; fs->accum[fs->pos + i] = accum; } diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 5e56dfa728e..fbb3f3c609f 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -111,7 +111,7 @@ static void time_draw_cache(SpaceTime *stime, Object *ob) int i, sta = pid->cache->startframe, end = pid->cache->endframe; int len = (end - sta + 1)*4; - switch(pid->type) { + switch (pid->type) { case PTCACHE_TYPE_SOFTBODY: if (!(stime->cache_display & TIME_CACHE_SOFTBODY)) continue; break; @@ -171,7 +171,7 @@ static void time_draw_cache(SpaceTime *stime, Object *ob) glTranslatef(0.0, (float)V2D_SCROLL_HEIGHT+yoffs, 0.0); glScalef(1.0, CACHE_DRAW_HEIGHT, 0.0); - switch(pid->type) { + switch (pid->type) { case PTCACHE_TYPE_SOFTBODY: col[0] = 1.0; col[1] = 0.4; col[2] = 0.02; col[3] = 0.1; @@ -509,7 +509,7 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) static void time_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SPACE: if (wmn->data == ND_SPACE_TIME) ED_region_tag_redraw(ar); @@ -549,7 +549,7 @@ static void time_header_area_draw(const bContext *C, ARegion *ar) static void time_header_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ - switch(wmn->category) { + switch (wmn->category) { case NC_SCREEN: if (wmn->data==ND_ANIMPLAY) ED_region_tag_redraw(ar); diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index e9bf9345b5c..6c683eba085 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -145,7 +145,7 @@ static void userpref_header_listener(ARegion *UNUSED(ar), wmNotifier *UNUSED(wmn { /* context changes */ #if 0 - switch(wmn->category) { + switch (wmn->category) { default: break; } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 6f637afd293..2f66fdf8cd4 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -700,11 +700,12 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) fac = fac * fac; interp_v3_v3v3(xaxis, xaxis, m_inv[0], fac); } - else -#endif - { + else { copy_v3_v3(xaxis, m_inv[0]); } +#else + copy_v3_v3(xaxis, m_inv[0]); +#endif /* Determine the direction of the x vector (for rotating up and down) */ /* This can likely be computed directly from the quaternion. */ @@ -1554,7 +1555,9 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y, const short viewzoom, if (!use_cam_zoom) { if (zfac != 1.0f && zfac * vod->rv3d->dist > 0.001f * vod->grid && zfac * vod->rv3d->dist < 10.0f * vod->far) + { view_zoom_mouseloc(vod->ar, zfac, vod->oldx, vod->oldy); + } } /* these limits were in old code too */ diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index f3819a1b83c..233719033c7 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -298,8 +298,7 @@ void removeAspectRatio(TransInfo *t, float *vec) static void viewRedrawForce(const bContext *C, TransInfo *t) { - if (t->spacetype == SPACE_VIEW3D) - { + if (t->spacetype == SPACE_VIEW3D) { /* Do we need more refined tags? */ if (t->flag & T_POSE) WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); @@ -415,7 +414,7 @@ static void view_editmove(unsigned short UNUSED(event)) if (Trans.flag & T_2D_EDIT) return; - switch(event) { + switch (event) { case WHEELUPMOUSE: if ( G.qual & LR_SHIFTKEY ) { @@ -586,8 +585,7 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw |= handleMouseInput(t, &t->mouse, event); - if (event->type == MOUSEMOVE) - { + if (event->type == MOUSEMOVE) { if (t->modifiers & MOD_CONSTRAINT_SELECT) t->con.mode |= CON_SELECT; @@ -802,7 +800,7 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw |= handleNumInput(&(t->num), event); } /* else do non-mapped events */ - else if (event->val==KM_PRESS) { + else if (event->val == KM_PRESS) { switch (event->type) { case RIGHTMOUSE: t->state = TRANS_CANCEL; @@ -1088,11 +1086,9 @@ int transformEvent(TransInfo *t, wmEvent *event) } /* confirm transform if launch key is released after mouse move */ - if (t->flag & T_RELEASE_CONFIRM) - { + if (t->flag & T_RELEASE_CONFIRM) { /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */ - if (event->type == t->launch_event && (t->launch_event == LEFTMOUSE || t->launch_event == RIGHTMOUSE)) - { + if (event->type == t->launch_event && (t->launch_event == LEFTMOUSE || t->launch_event == RIGHTMOUSE)) { t->state = TRANS_CONFIRM; } } @@ -1156,8 +1152,7 @@ typedef enum { } ArrowDirection; static void drawArrow(ArrowDirection d, short offset, short length, short size) { - switch(d) - { + switch (d) { case LEFT: offset = -offset; length = -length; @@ -1191,8 +1186,7 @@ static void drawArrow(ArrowDirection d, short offset, short length, short size) static void drawArrowHead(ArrowDirection d, short size) { - switch(d) - { + switch (d) { case LEFT: size = -size; case RIGHT: @@ -1223,8 +1217,7 @@ static void drawArc(float size, float angle_start, float angle_end, int segments glBegin(GL_LINE_STRIP); - for ( angle = angle_start; angle < angle_end; angle += delta) - { + for ( angle = angle_start; angle < angle_end; angle += delta) { glVertex2f( cosf(angle) * size, sinf(angle) * size); } glVertex2f( cosf(angle_end) * size, sinf(angle_end) * size); @@ -1245,8 +1238,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata) { TransInfo *t = (TransInfo*)customdata; - if (t->helpline != HLP_NONE && !(t->flag & T_USES_MANIPULATOR)) - { + if (t->helpline != HLP_NONE && !(t->flag & T_USES_MANIPULATOR)) { float vecrot[3], cent[2]; int mval[2]; @@ -1267,8 +1259,7 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata) glPushMatrix(); - switch(t->helpline) - { + switch (t->helpline) { case HLP_SPRING: UI_ThemeColor(TH_WIRE); @@ -1417,23 +1408,23 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } /* convert flag to enum */ - switch(t->flag & (T_PROP_EDIT|T_PROP_CONNECTED)) - { - case (T_PROP_EDIT|T_PROP_CONNECTED): - proportional = PROP_EDIT_CONNECTED; - break; - case T_PROP_EDIT: - proportional = PROP_EDIT_ON; - break; - default: - proportional = PROP_EDIT_OFF; + switch (t->flag & (T_PROP_EDIT|T_PROP_CONNECTED)) { + case (T_PROP_EDIT|T_PROP_CONNECTED): + proportional = PROP_EDIT_CONNECTED; + break; + case T_PROP_EDIT: + proportional = PROP_EDIT_ON; + break; + default: + proportional = PROP_EDIT_OFF; } // If modal, save settings back in scene if not set as operator argument if (t->flag & T_MODAL) { /* save settings if not set in operator */ - if ( (prop = RNA_struct_find_property(op->ptr, "proportional")) && !RNA_property_is_set(op->ptr, prop)) + if ((prop = RNA_struct_find_property(op->ptr, "proportional")) && + !RNA_property_is_set(op->ptr, prop)) { if (t->obedit) ts->proportional = proportional; @@ -1441,12 +1432,14 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) ts->proportional_objects = (proportional != PROP_EDIT_OFF); } - if ( (prop = RNA_struct_find_property(op->ptr, "proportional_size")) && !RNA_property_is_set(op->ptr, prop)) + if ((prop = RNA_struct_find_property(op->ptr, "proportional_size")) && + !RNA_property_is_set(op->ptr, prop)) { ts->proportional_size = t->prop_size; } - if ( (prop = RNA_struct_find_property(op->ptr, "proportional_edit_falloff")) && !RNA_property_is_set(op->ptr, prop)) + if ((prop = RNA_struct_find_property(op->ptr, "proportional_edit_falloff")) && + !RNA_property_is_set(op->ptr, prop)) { ts->prop_mode = t->prop_mode; } @@ -1460,34 +1453,31 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) } if (t->spacetype == SPACE_VIEW3D) { - if ( (prop = RNA_struct_find_property(op->ptr, "constraint_orientation")) && !RNA_property_is_set(op->ptr, prop)) + if ((prop = RNA_struct_find_property(op->ptr, "constraint_orientation")) && + !RNA_property_is_set(op->ptr, prop)) { View3D *v3d = t->view; - + v3d->twmode = t->current_orientation; } } } - if (RNA_struct_find_property(op->ptr, "proportional")) - { + if (RNA_struct_find_property(op->ptr, "proportional")) { RNA_enum_set(op->ptr, "proportional", proportional); RNA_enum_set(op->ptr, "proportional_edit_falloff", t->prop_mode); RNA_float_set(op->ptr, "proportional_size", t->prop_size); } - if ((prop = RNA_struct_find_property(op->ptr, "axis"))) - { + if ((prop = RNA_struct_find_property(op->ptr, "axis"))) { RNA_property_float_set_array(op->ptr, prop, t->axis); } - if ((prop = RNA_struct_find_property(op->ptr, "mirror"))) - { + if ((prop = RNA_struct_find_property(op->ptr, "mirror"))) { RNA_property_boolean_set(op->ptr, prop, t->flag & T_MIRROR); } - if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis"))) - { + if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis"))) { /* constraint orientation can be global, event if user selects something else * so use the orientation in the constraint if set * */ @@ -1498,8 +1488,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) RNA_enum_set(op->ptr, "constraint_orientation", t->current_orientation); } - if (t->con.mode & CON_APPLY) - { + if (t->con.mode & CON_APPLY) { if (t->con.mode & CON_AXIS0) { constraint_axis[0] = 1; } @@ -1527,8 +1516,7 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int t->state = TRANS_STARTING; - if ( (prop = RNA_struct_find_property(op->ptr, "texture_space")) && RNA_property_is_set(op->ptr, prop)) - { + if ( (prop = RNA_struct_find_property(op->ptr, "texture_space")) && RNA_property_is_set(op->ptr, prop)) { if (RNA_property_boolean_get(op->ptr, prop)) { options |= CTX_TEXTURE; } @@ -1540,8 +1528,7 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int t->launch_event = event ? event->type : -1; - if (t->launch_event == EVT_TWEAK_R) - { + if (t->launch_event == EVT_TWEAK_R) { t->launch_event = RIGHTMOUSE; } else if (t->launch_event == EVT_TWEAK_L) { @@ -1550,18 +1537,15 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int // XXX Remove this when wm_operator_call_internal doesn't use window->eventstate (which can have type = 0) // For manipulator only, so assume LEFTMOUSE - if (t->launch_event == 0) - { + if (t->launch_event == 0) { t->launch_event = LEFTMOUSE; } - if (!initTransInfo(C, t, op, event)) // internal data, mouse, vectors - { + if (!initTransInfo(C, t, op, event)) { /* internal data, mouse, vectors */ return 0; } - if (t->spacetype == SPACE_VIEW3D) - { + if (t->spacetype == SPACE_VIEW3D) { //calc_manipulator_stats(curarea); initTransformOrientation(C, t); @@ -1592,15 +1576,12 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int } /* Stupid code to have Ctrl-Click on manipulator work ok */ - if (event) - { + if (event) { wmKeyMap *keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap); wmKeyMapItem *kmi; - for (kmi = keymap->items.first; kmi; kmi = kmi->next) - { - if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) - { + for (kmi = keymap->items.first; kmi; kmi = kmi->next) { + if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) { if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) || (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) || (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) || @@ -1731,16 +1712,14 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int break; } - if (t->state == TRANS_CANCEL) - { + if (t->state == TRANS_CANCEL) { postTrans(C, t); return 0; } /* overwrite initial values if operator supplied a non-null vector */ - if ( (prop = RNA_struct_find_property(op->ptr, "value")) && RNA_property_is_set(op->ptr, prop)) - { + if ((prop = RNA_struct_find_property(op->ptr, "value")) && RNA_property_is_set(op->ptr, prop)) { float values[4]= {0}; /* in case value isn't length 4, avoid uninitialized memory */ if (RNA_property_array_check(prop)) { @@ -1756,22 +1735,19 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int } /* Transformation axis from operator */ - if ((prop = RNA_struct_find_property(op->ptr, "axis")) && RNA_property_is_set(op->ptr, prop)) - { + if ((prop = RNA_struct_find_property(op->ptr, "axis")) && RNA_property_is_set(op->ptr, prop)) { RNA_property_float_get_array(op->ptr, prop, t->axis); normalize_v3(t->axis); copy_v3_v3(t->axis_orig, t->axis); } /* Constraint init from operator */ - if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis")) && RNA_property_is_set(op->ptr, prop)) - { + if ((prop = RNA_struct_find_property(op->ptr, "constraint_axis")) && RNA_property_is_set(op->ptr, prop)) { int constraint_axis[3]; RNA_property_boolean_get_array(op->ptr, prop, constraint_axis); - if (constraint_axis[0] || constraint_axis[1] || constraint_axis[2]) - { + if (constraint_axis[0] || constraint_axis[1] || constraint_axis[2]) { t->con.mode |= CON_APPLY; if (constraint_axis[0]) { @@ -1797,8 +1773,7 @@ void transformApply(bContext *C, TransInfo *t) { t->context = C; - if ((t->redraw & TREDRAW_HARD) || (t->draw_handle_apply == NULL && (t->redraw & TREDRAW_SOFT))) - { + if ((t->redraw & TREDRAW_HARD) || (t->draw_handle_apply == NULL && (t->redraw & TREDRAW_SOFT))) { selectConstraint(t); if (t->transform) { t->transform(t, t->mval); // calls recalcData() @@ -1811,13 +1786,11 @@ void transformApply(bContext *C, TransInfo *t) } /* If auto confirm is on, break after one pass */ - if (t->options & CTX_AUTOCONFIRM) - { + if (t->options & CTX_AUTOCONFIRM) { t->state = TRANS_CONFIRM; } - if (BKE_ptcache_get_continue_physics()) - { + if (BKE_ptcache_get_continue_physics()) { // TRANSFORM_FIX_ME //do_screenhandlers(G.curscreen); t->redraw |= TREDRAW_HARD; @@ -1842,11 +1815,9 @@ int transformEnd(bContext *C, TransInfo *t) t->context = C; - if (t->state != TRANS_STARTING && t->state != TRANS_RUNNING) - { + if (t->state != TRANS_STARTING && t->state != TRANS_RUNNING) { /* handle restoring objects */ - if (t->state == TRANS_CANCEL) - { + if (t->state == TRANS_CANCEL) { /* exception, edge slide transformed UVs too */ if (t->mode==TFM_EDGE_SLIDE) doEdgeSlide(t, 0.0f); @@ -2097,8 +2068,7 @@ static void constraintob_from_transdata(bConstraintOb *cob, TransData *td) * - current space should be local */ memset(cob, 0, sizeof(bConstraintOb)); - if (td->ext) - { + if (td->ext) { if (td->ext->rotOrder == ROT_MODE_QUAT) { /* quats */ /* objects and bones do normalization first too, otherwise @@ -2271,8 +2241,7 @@ static void postInputWarp(TransInfo *t, float values[3]) { mul_v3_fl(values, (float)(M_PI * 2)); - if (t->customData) /* non-null value indicates reversed input */ - { + if (t->customData) { /* non-null value indicates reversed input */ negate_v3(values); } } @@ -2324,8 +2293,7 @@ int handleEventWarp(TransInfo *t, wmEvent *event) { int status = 0; - if (event->type == MIDDLEMOUSE && event->val==KM_PRESS) - { + if (event->type == MIDDLEMOUSE && event->val == KM_PRESS) { // Use customData pointer to signal warp direction if (t->customData == NULL) t->customData = (void*)1; @@ -2465,11 +2433,9 @@ int handleEventShear(TransInfo *t, wmEvent *event) { int status = 0; - if (event->type == MIDDLEMOUSE && event->val==KM_PRESS) - { + if (event->type == MIDDLEMOUSE && event->val == KM_PRESS) { // Use customData pointer to signal Shear direction - if (t->customData == NULL) - { + if (t->customData == NULL) { initMouseInputMode(t, &t->mouse, INPUT_VERTICAL_ABSOLUTE); t->customData = (void*)1; } @@ -2603,7 +2569,7 @@ static void headerResize(TransInfo *t, float vec[3], char *str) } if (t->con.mode & CON_APPLY) { - switch(t->num.idx_max) { + switch (t->num.idx_max) { case 0: spos += sprintf(spos, "Scale: %s%s %s", &tvec[0], t->con.text, t->proptext); break; @@ -2755,8 +2721,7 @@ int Resize(TransInfo *t, const int mval[2]) char str[200]; /* for manipulator, center handle, the scaling can't be done relative to center */ - if ( (t->flag & T_USES_MANIPULATOR) && t->con.mode==0) - { + if ( (t->flag & T_USES_MANIPULATOR) && t->con.mode==0) { ratio = 1.0f - ((t->imval[0] - mval[0]) + (t->imval[1] - mval[1]))/100.0f; } else { @@ -2774,8 +2739,7 @@ int Resize(TransInfo *t, const int mval[2]) applySnapping(t, size); - if (t->flag & T_AUTOVALUES) - { + if (t->flag & T_AUTOVALUES) { copy_v3_v3(size, t->auto_values); } @@ -3008,8 +2972,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short copy_m3_m4(pmtx, t->poseobj->obmat); invert_m3_m3(imtx, pmtx); - if ((td->flag & TD_NO_LOC) == 0) - { + if ((td->flag & TD_NO_LOC) == 0) { sub_v3_v3v3(vec, td->center, center); mul_m3_v3(pmtx, vec); // To Global space @@ -3093,8 +3056,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short } } else { - if ((td->flag & TD_NO_LOC) == 0) - { + if ((td->flag & TD_NO_LOC) == 0) { /* translation */ sub_v3_v3v3(vec, td->center, center); mul_m3_v3(mat, vec); @@ -3440,7 +3402,7 @@ static void headerTranslation(TransInfo *t, float vec[3], char *str) autoik[0]= '\0'; if (t->con.mode & CON_APPLY) { - switch(t->num.idx_max) { + switch (t->num.idx_max) { case 0: spos += sprintf(spos, "D: %s (%s)%s %s %s", &tvec[0], distvec, t->con.text, t->proptext, &autoik[0]); break; @@ -3899,7 +3861,7 @@ void initBevel(TransInfo *t) int handleEventBevel(TransInfo *t, wmEvent *event) { - if (event->val==KM_PRESS) { + if (event->val == KM_PRESS) { if (!G.editBMesh) return 0; switch (event->type) { @@ -5243,8 +5205,7 @@ int Align(TransInfo *t, const int UNUSED(mval[2])) /* saving original center */ copy_v3_v3(center, t->center); - for (i = 0 ; i < t->total; i++, td++) - { + for (i = 0 ; i < t->total; i++, td++) { float mat[3][3], invmat[3][3]; if (td->flag & TD_NOACTION) diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index 18e9c1a47b8..ebded7b0a6e 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -76,8 +76,7 @@ static void drawObjectConstraint(TransInfo *t); static void constraintAutoValues(TransInfo *t, float vec[3]) { int mode = t->con.mode; - if (mode & CON_APPLY) - { + if (mode & CON_APPLY) { float nval = (t->flag & T_NULL_ONE)?1.0f:0.0f; if ((mode & CON_AXIS0) == 0) { @@ -478,7 +477,7 @@ static void applyAxisConstraintRot(TransInfo *t, TransData *td, float vec[3], fl if (!td && t->con.mode & CON_APPLY) { int mode = t->con.mode & (CON_AXIS0|CON_AXIS1|CON_AXIS2); - switch(mode) { + switch (mode) { case CON_AXIS0: case (CON_AXIS1|CON_AXIS2): copy_v3_v3(vec, t->con.mtx[0]); @@ -525,7 +524,7 @@ static void applyObjectConstraintRot(TransInfo *t, TransData *td, float vec[3], td= t->data; } - switch(mode) { + switch (mode) { case CON_AXIS0: case (CON_AXIS1|CON_AXIS2): copy_v3_v3(vec, td->axismtx[0]); @@ -604,7 +603,7 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte { char text[40]; - switch(orientation) { + switch (orientation) { case V3D_MANIP_GLOBAL: { float mtx[3][3]= MAT3_UNITY; diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 062f88f8837..d33b8787121 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -127,8 +127,7 @@ static void qsort_trans_data(TransInfo *t, TransData *head, TransData *tail, Tra TransData *itail = tail; *temp = *head; - while (head < tail) - { + while (head < tail) { if (t->flag & T_PROP_CONNECTED) { while ((tail->dist >= temp->dist) && (head < tail)) tail--; @@ -138,8 +137,7 @@ static void qsort_trans_data(TransInfo *t, TransData *head, TransData *tail, Tra tail--; } - if (head != tail) - { + if (head != tail) { *head = *tail; head++; } @@ -153,8 +151,7 @@ static void qsort_trans_data(TransInfo *t, TransData *head, TransData *tail, Tra head++; } - if (head != tail) - { + if (head != tail) { *tail = *head; tail--; } @@ -535,13 +532,11 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr td->ob = ob; td->flag = TD_SELECTED; - if (bone->flag & BONE_HINGE_CHILD_TRANSFORM) - { + if (bone->flag & BONE_HINGE_CHILD_TRANSFORM) { td->flag |= TD_NOCENTER; } - if (bone->flag & BONE_TRANSFORM_CHILD) - { + if (bone->flag & BONE_TRANSFORM_CHILD) { td->flag |= TD_NOCENTER; td->flag |= TD_NO_LOC; } @@ -2707,8 +2702,7 @@ static void createTransNlaData(bContext *C, TransInfo *t) center[2]= 0.0f; /* set td's based on which handles are applicable */ - if (FrameOnMouseSide(t->frame_side, strip->start, (float)CFRA)) - { + if (FrameOnMouseSide(t->frame_side, strip->start, (float)CFRA)) { /* just set tdn to assume that it only has one handle for now */ tdn->handle= -1; @@ -2739,8 +2733,7 @@ static void createTransNlaData(bContext *C, TransInfo *t) td->extra= tdn; td++; } - if (FrameOnMouseSide(t->frame_side, strip->end, (float)CFRA)) - { + if (FrameOnMouseSide(t->frame_side, strip->end, (float)CFRA)) { /* if tdn is already holding the start handle, then we're doing both, otherwise, only end */ tdn->handle= (tdn->handle) ? 2 : 1; @@ -3993,7 +3986,7 @@ static TransData *SeqToTransData(TransData *td, TransData2D *td2d, TransDataSeq { int start_left; - switch(sel_flag) { + switch (sel_flag) { case SELECT: /* Use seq_tx_get_final_left() and an offset here * so transform has the left hand location of the strip. @@ -4447,8 +4440,7 @@ static void ObjectToTransData(TransInfo *t, TransData *td, Object *ob) } /* set active flag */ - if (ob == OBACT) - { + if (ob == OBACT) { td->flag |= TD_ACTIVE; } } @@ -4500,8 +4492,7 @@ static void set_trans_object_base_flags(TransInfo *t) parsel= parsel->parent; } - if (parsel) - { + if (parsel) { /* rotation around local centers are allowed to propagate */ if ((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL) { base->flag |= BA_TRANSFORM_CHILD; @@ -4534,10 +4525,8 @@ static int mark_children(Object *ob) if (ob->flag & (SELECT|BA_TRANSFORM_CHILD)) return 1; - if (ob->parent) - { - if (mark_children(ob->parent)) - { + if (ob->parent) { + if (mark_children(ob->parent)) { ob->flag |= BA_TRANSFORM_CHILD; return 1; } @@ -4554,8 +4543,7 @@ static int count_proportional_objects(TransInfo *t) Base *base; /* rotations around local centers are allowed to propagate, so we take all objects */ - if (!((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL)) - { + if (!((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL)) { /* mark all parents */ for (base= scene->base.first; base; base= base->next) { if (TESTBASELIB_BGMODE(v3d, scene, base)) { @@ -4616,8 +4604,7 @@ static void clear_trans_object_base_flags(TransInfo *t) Scene *sce = t->scene; Base *base; - for (base= sce->base.first; base; base = base->next) - { + for (base= sce->base.first; base; base = base->next) { if (base->flag & BA_WAS_SEL) base->flag |= SELECT; @@ -5070,8 +5057,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) if (ANIM_animdata_get_context(C, &ac) == 0) return; - if (ac.datatype) - { + if (ac.datatype) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; short filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVE_VISIBLE); @@ -5120,8 +5106,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) if (ANIM_animdata_get_context(C, &ac) == 0) return; - if (ac.datatype) - { + if (ac.datatype) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; short filter= (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_FOREDIT); @@ -5147,8 +5132,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) } } else if (t->obedit) { - if (t->obedit->type == OB_MESH) - { + if (t->obedit->type == OB_MESH) { BMEditMesh *em = BMEdit_FromObject(t->obedit); /* table needs to be created for each edit command, since vertices can move etc */ mesh_octree_table(t->obedit, em, NULL, 'e'); @@ -5298,8 +5282,7 @@ static void createTransObject(bContext *C, TransInfo *t) return; } - if (propmode) - { + if (propmode) { t->total += count_proportional_objects(t); } @@ -5315,8 +5298,7 @@ static void createTransObject(bContext *C, TransInfo *t) td->ext = tx; td->ext->rotOrder= ob->rotmode; - if (base->flag & BA_TRANSFORM_CHILD) - { + if (base->flag & BA_TRANSFORM_CHILD) { td->flag |= TD_NOCENTER; td->flag |= TD_NO_LOC; } @@ -5333,8 +5315,7 @@ static void createTransObject(bContext *C, TransInfo *t) } CTX_DATA_END; - if (propmode) - { + if (propmode) { Scene *scene = t->scene; View3D *v3d = t->view; Base *base; @@ -5343,7 +5324,8 @@ static void createTransObject(bContext *C, TransInfo *t) Object *ob= base->object; /* if base is not selected, not a parent of selection or not a child of selection and it is editable */ - if ((ob->flag & (SELECT|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT)) == 0 && BASE_EDITABLE_BGMODE(v3d, scene, base)) + if ((ob->flag & (SELECT | BA_TRANSFORM_CHILD | BA_TRANSFORM_PARENT)) == 0 && + BASE_EDITABLE_BGMODE(v3d, scene, base)) { td->protectflag= ob->protectflag; td->ext = tx; @@ -6032,12 +6014,10 @@ void createTransData(bContext *C, TransInfo *t) sort_trans_data_dist(t); } - if ((t->spacetype == SPACE_VIEW3D) && (t->ar->regiontype == RGN_TYPE_WINDOW)) - { + if ((t->spacetype == SPACE_VIEW3D) && (t->ar->regiontype == RGN_TYPE_WINDOW)) { View3D *v3d = t->view; RegionView3D *rv3d = CTX_wm_region_view3d(C); - if (rv3d && (t->flag & T_OBJECT) && v3d->camera == OBACT && rv3d->persp==RV3D_CAMOB) - { + if (rv3d && (t->flag & T_OBJECT) && v3d->camera == OBACT && rv3d->persp==RV3D_CAMOB) { t->flag |= T_CAMERA; } } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index b500398dd76..2c5d074e2cf 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -111,8 +111,7 @@ void getViewVector(TransInfo *t, float coord[3], float vec[3]) { - if (t->persp != RV3D_ORTHO) - { + if (t->persp != RV3D_ORTHO) { float p1[4], p2[4]; copy_v3_v3(p1, coord); @@ -256,8 +255,7 @@ static void editbmesh_apply_to_mirror(TransInfo *t) eve->co[2]= td->loc[2]; } - if (td->flag & TD_MIRROR_EDGE) - { + if (td->flag & TD_MIRROR_EDGE) { td->loc[0] = 0; } } @@ -775,21 +773,17 @@ static void recalcData_view3d(TransInfo *t) } - if (t->mode != TFM_BONE_ROLL) - { + if (t->mode != TFM_BONE_ROLL) { /* fix roll */ - for (i = 0; i < t->total; i++, td++) - { - if (td->extra) - { + for (i = 0; i < t->total; i++, td++) { + if (td->extra) { float vec[3], up_axis[3]; float qrot[4]; ebo = td->extra; copy_v3_v3(up_axis, td->axismtx[2]); - if (t->mode != TFM_ROTATION) - { + if (t->mode != TFM_ROTATION) { sub_v3_v3v3(vec, ebo->tail, ebo->head); normalize_v3(vec); rotation_between_vecs_to_quat(qrot, td->axismtx[1], vec); @@ -915,8 +909,7 @@ void drawLine(TransInfo *t, float *center, float *dir, char axis, short options) float v1[3], v2[3], v3[3]; unsigned char col[3], col2[3]; - if (t->spacetype == SPACE_VIEW3D) - { + if (t->spacetype == SPACE_VIEW3D) { View3D *v3d = t->view; glPushMatrix(); @@ -984,8 +977,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->redraw = 1; /* redraw first time */ - if (event) - { + if (event) { copy_v2_v2_int(t->imval, event->mval); t->event_type = event->type; } @@ -1043,8 +1035,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } - if (t->spacetype == SPACE_VIEW3D) - { + if (t->spacetype == SPACE_VIEW3D) { View3D *v3d = sa->spacedata.first; t->view = v3d; @@ -1060,12 +1051,12 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) if (v3d->flag & V3D_ALIGN) t->flag |= T_V3D_ALIGN; t->around = v3d->around; - if (op && RNA_struct_find_property(op->ptr, "constraint_orientation") && RNA_struct_property_is_set(op->ptr, "constraint_orientation")) + if (op && (RNA_struct_find_property(op->ptr, "constraint_orientation") && + RNA_struct_property_is_set(op->ptr, "constraint_orientation"))) { t->current_orientation = RNA_enum_get(op->ptr, "constraint_orientation"); - - if (t->current_orientation >= V3D_MANIP_CUSTOM + BIF_countTransformOrientation(C)) - { + + if (t->current_orientation >= V3D_MANIP_CUSTOM + BIF_countTransformOrientation(C)) { t->current_orientation = V3D_MANIP_GLOBAL; } } @@ -1124,10 +1115,8 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->around = V3D_CENTER; } - if (op && RNA_struct_property_is_set(op->ptr, "release_confirm")) - { - if (RNA_boolean_get(op->ptr, "release_confirm")) - { + if (op && RNA_struct_property_is_set(op->ptr, "release_confirm")) { + if (RNA_boolean_get(op->ptr, "release_confirm")) { t->flag |= T_RELEASE_CONFIRM; } } @@ -1137,35 +1126,31 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } } - if (op && RNA_struct_find_property(op->ptr, "mirror") && RNA_struct_property_is_set(op->ptr, "mirror")) + if (op && (RNA_struct_find_property(op->ptr, "mirror") && + RNA_struct_property_is_set(op->ptr, "mirror"))) { - if (RNA_boolean_get(op->ptr, "mirror")) - { + if (RNA_boolean_get(op->ptr, "mirror")) { t->flag |= T_MIRROR; t->mirror = 1; } } // Need stuff to take it from edit mesh or whatnot here else if (t->spacetype == SPACE_VIEW3D) { - if (t->obedit && t->obedit->type == OB_MESH && (((Mesh *)t->obedit->data)->editflag & ME_EDIT_MIRROR_X)) - { + if (t->obedit && t->obedit->type == OB_MESH && (((Mesh *)t->obedit->data)->editflag & ME_EDIT_MIRROR_X)) { t->flag |= T_MIRROR; t->mirror = 1; } } /* setting PET flag only if property exist in operator. Otherwise, assume it's not supported */ - if (op && RNA_struct_find_property(op->ptr, "proportional")) - { - if (RNA_struct_property_is_set(op->ptr, "proportional")) - { - switch(RNA_enum_get(op->ptr, "proportional")) - { - case PROP_EDIT_CONNECTED: - t->flag |= T_PROP_CONNECTED; - case PROP_EDIT_ON: - t->flag |= T_PROP_EDIT; - break; + if (op && RNA_struct_find_property(op->ptr, "proportional")) { + if (RNA_struct_property_is_set(op->ptr, "proportional")) { + switch (RNA_enum_get(op->ptr, "proportional")) { + case PROP_EDIT_CONNECTED: + t->flag |= T_PROP_CONNECTED; + case PROP_EDIT_ON: + t->flag |= T_PROP_EDIT; + break; } } else { @@ -1186,7 +1171,8 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) } } - if (op && RNA_struct_find_property(op->ptr, "proportional_size") && RNA_struct_property_is_set(op->ptr, "proportional_size")) + if (op && (RNA_struct_find_property(op->ptr, "proportional_size") && + RNA_struct_property_is_set(op->ptr, "proportional_size"))) { t->prop_size = RNA_float_get(op->ptr, "proportional_size"); } @@ -1196,13 +1182,13 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) /* TRANSFORM_FIX_ME rna restrictions */ - if (t->prop_size <= 0.00001f) - { + if (t->prop_size <= 0.00001f) { printf("Proportional size (%f) under 0.00001, reseting to 1!\n", t->prop_size); t->prop_size = 1.0f; } - if (op && RNA_struct_find_property(op->ptr, "proportional_edit_falloff") && RNA_struct_property_is_set(op->ptr, "proportional_edit_falloff")) + if (op && (RNA_struct_find_property(op->ptr, "proportional_edit_falloff") && + RNA_struct_property_is_set(op->ptr, "proportional_edit_falloff"))) { t->prop_mode = RNA_enum_get(op->ptr, "proportional_edit_falloff"); } @@ -1210,14 +1196,12 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->prop_mode = ts->prop_mode; } } - else /* add not pet option to context when not available */ - { + else { /* add not pet option to context when not available */ t->options |= CTX_NO_PET; } // Mirror is not supported with PET, turn it off. - if (t->flag & T_PROP_EDIT) - { + if (t->flag & T_PROP_EDIT) { t->flag &= ~T_MIRROR; } @@ -1282,8 +1266,7 @@ void postTrans (bContext *C, TransInfo *t) } } - if (t->mouse.data) - { + if (t->mouse.data) { MEM_freeN(t->mouse.data); } } @@ -1440,8 +1423,7 @@ void calculateCenterMedian(TransInfo *t) for (i = 0; i < t->total; i++) { if (t->data[i].flag & TD_SELECTED) { - if (!(t->data[i].flag & TD_NOCENTER)) - { + if (!(t->data[i].flag & TD_NOCENTER)) { add_v3_v3(partial, t->data[i].center); total++; } @@ -1493,7 +1475,7 @@ void calculateCenterBound(TransInfo *t) void calculateCenter(TransInfo *t) { - switch(t->around) { + switch (t->around) { case V3D_CENTER: calculateCenterBound(t); break; @@ -1542,8 +1524,7 @@ void calculateCenter(TransInfo *t) } /* END EDIT MODE ACTIVE ELEMENT */ calculateCenterMedian(t); - if ((t->flag & (T_EDIT|T_POSE))==0) - { + if ((t->flag & (T_EDIT|T_POSE))==0) { Scene *scene = t->scene; Object *ob= OBACT; if (ob) { @@ -1583,8 +1564,7 @@ void calculateCenter(TransInfo *t) projectIntView(t, axis, t->center2d); /* rotate only needs correct 2d center, grab needs initgrabz() value */ - if (t->mode==TFM_TRANSLATION) - { + if (t->mode==TFM_TRANSLATION) { copy_v3_v3(t->center, axis); copy_v3_v3(t->con.center, t->center); } @@ -1625,11 +1605,8 @@ void calculatePropRatio(TransInfo *t) td->factor = 0.0f; restoreElement(td); } - else if ((connected && - (td->flag & TD_NOTCONNECTED || td->dist > t->prop_size)) - || - (connected == 0 && - td->rdist > t->prop_size)) + else if ((connected && (td->flag & TD_NOTCONNECTED || td->dist > t->prop_size)) || + (connected == 0 && td->rdist > t->prop_size)) { /* * The elements are sorted according to their dist member in the array, @@ -1656,7 +1633,7 @@ void calculatePropRatio(TransInfo *t) if (dist < 0.0f) dist = 0.0f; - switch(t->prop_mode) { + switch (t->prop_mode) { case PROP_SHARP: td->factor= dist*dist; break; @@ -1684,7 +1661,7 @@ void calculatePropRatio(TransInfo *t) } } } - switch(t->prop_mode) { + switch (t->prop_mode) { case PROP_SHARP: strcpy(t->proptext, "(Sharp)"); break; diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c index bd3fb20f77f..467e3dc600e 100644 --- a/source/blender/editors/transform/transform_input.c +++ b/source/blender/editors/transform/transform_input.c @@ -313,8 +313,7 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode) } #endif - switch(mode) - { + switch (mode) { case INPUT_VECTOR: mi->apply = InputVector; t->helpline = HLP_NONE; @@ -391,8 +390,7 @@ int handleMouseInput(TransInfo *t, MouseInput *mi, wmEvent *event) { int redraw = TREDRAW_NOTHING; - switch (event->type) - { + switch (event->type) { case LEFTSHIFTKEY: case RIGHTSHIFTKEY: if (event->val == KM_PRESS) { diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 5b70b25c894..c043be0c7f8 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -549,7 +549,7 @@ int calc_manipulator_stats(const bContext *C) /* global, local or normal orientation? */ if (ob && totsel) { - switch(v3d->twmode) { + switch (v3d->twmode) { case V3D_MANIP_GLOBAL: break; /* nothing to do */ @@ -761,7 +761,7 @@ static void manipulator_setcolor(View3D *v3d, char axis, int colcode, unsigned c UI_GetThemeColor3ubv(TH_TRANSFORM, col); } else { - switch(axis) { + switch (axis) { case 'C': UI_GetThemeColor3ubv(TH_TRANSFORM, col); if (v3d->twmode == V3D_MANIP_LOCAL) { @@ -1483,7 +1483,7 @@ void BIF_draw_manipulator(const bContext *C) v3d->twflag |= V3D_DRAW_MANIPULATOR; /* now we can define center */ - switch(v3d->around) { + switch (v3d->around) { case V3D_CENTER: case V3D_ACTIVE: rv3d->twmat[3][0]= (scene->twmin[0] + scene->twmax[0])/2.0f; @@ -1639,7 +1639,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) if (drawflags==0) drawflags= val; if (drawflags & MAN_TRANS_C) { - switch(drawflags) { + switch (drawflags) { case MAN_TRANS_C: break; case MAN_TRANS_X: @@ -1672,7 +1672,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_translate", 0), event, op->ptr, NULL, FALSE); } else if (drawflags & MAN_SCALE_C) { - switch(drawflags) { + switch (drawflags) { case MAN_SCALE_X: if (shift) { constraint_axis[1] = 1; @@ -1707,7 +1707,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_trackball", 0), event, op->ptr, NULL, FALSE); } else if (drawflags & MAN_ROT_C) { - switch(drawflags) { + switch (drawflags) { case MAN_ROT_X: constraint_axis[0] = 1; break; diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 09078c199c4..b9ae3180591 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -317,23 +317,19 @@ static void transformops_exit(bContext *C, wmOperator *op) static int transformops_data(bContext *C, wmOperator *op, wmEvent *event) { int retval = 1; - if (op->customdata == NULL) - { + if (op->customdata == NULL) { TransInfo *t = MEM_callocN(sizeof(TransInfo), "TransInfo data2"); TransformModeItem *tmode; int mode = -1; - for (tmode = transform_modes; tmode->idname; tmode++) - { - if (op->type->idname == tmode->idname) - { + for (tmode = transform_modes; tmode->idname; tmode++) { + if (op->type->idname == tmode->idname) { mode = tmode->mode; break; } } - if (mode == -1) - { + if (mode == -1) { mode = RNA_enum_get(op->ptr, "mode"); } @@ -376,8 +372,7 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event) exit_code |= transformEnd(C, t); - if ((exit_code & OPERATOR_RUNNING_MODAL) == 0) - { + if ((exit_code & OPERATOR_RUNNING_MODAL) == 0) { transformops_exit(C, op); exit_code &= ~OPERATOR_PASS_THROUGH; /* preventively remove passthrough */ } @@ -400,8 +395,7 @@ static int transform_exec(bContext *C, wmOperator *op) { TransInfo *t; - if (!transformops_data(C, op, NULL)) - { + if (!transformops_data(C, op, NULL)) { G.moving = 0; return OPERATOR_CANCELLED; } @@ -423,8 +417,7 @@ static int transform_exec(bContext *C, wmOperator *op) static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event) { - if (!transformops_data(C, op, event)) - { + if (!transformops_data(C, op, event)) { G.moving = 0; return OPERATOR_CANCELLED; } @@ -445,8 +438,7 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) { PropertyRNA *prop; - if (flags & P_AXIS) - { + if (flags & P_AXIS) { prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION); RNA_def_property_array(prop, 3); /* Make this not hidden when there's a nice axis selection widget */ @@ -455,8 +447,7 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) } - if (flags & P_CONSTRAINT) - { + if (flags & P_CONSTRAINT) { RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE); RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation"); @@ -465,21 +456,18 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) } - if (flags & P_MIRROR) - { + if (flags & P_MIRROR) { RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } - if (flags & P_PROPORTIONAL) - { + if (flags & P_PROPORTIONAL) { RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", ""); RNA_def_enum(ot->srna, "proportional_edit_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode"); RNA_def_float(ot->srna, "proportional_size", 1, 0.00001f, FLT_MAX, "Proportional Size", "", 0.001, 100); } - if (flags & P_SNAP) - { + if (flags & P_SNAP) { prop= RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); RNA_def_property_flag(prop, PROP_HIDDEN); @@ -497,14 +485,12 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) } } } - - if (flags & P_OPTIONS) - { + + if (flags & P_OPTIONS) { RNA_def_boolean(ot->srna, "texture_space", 0, "Edit Texture Space", "Edit Object data texture space"); } - if (flags & P_CORRECT_UV) - { + if (flags & P_CORRECT_UV) { RNA_def_boolean(ot->srna, "correct_uv", 0, "Correct UVs", "Correct UV coordinates when transforming"); } @@ -827,8 +813,7 @@ void transform_operatortypes(void) { TransformModeItem *tmode; - for (tmode = transform_modes; tmode->idname; tmode++) - { + for (tmode = transform_modes; tmode->idname; tmode++) { WM_operatortype_append(tmode->opfunc); } @@ -853,15 +838,13 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac if (modalmap) { TransformModeItem *tmode; - for (tmode = transform_modes; tmode->idname; tmode++) - { + for (tmode = transform_modes; tmode->idname; tmode++) { WM_modalkeymap_assign(modalmap, tmode->idname); } WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); } - switch(spaceid) - { + switch (spaceid) { case SPACE_VIEW3D: WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 0f929003e8f..0f9f90819d0 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -176,8 +176,7 @@ TransformOrientation *createMeshSpace(bContext *C, ReportList *reports, char *na type = getTransformOrientation(C, normal, plane, 0); - switch (type) - { + switch (type) { case ORIENTATION_VERT: if (createSpaceNormal(mat, normal) == 0) { BKE_reports_prepend(reports, "Cannot use vertex with zero-length normal"); @@ -493,7 +492,7 @@ void initTransformOrientation(bContext *C, TransInfo *t) Object *ob = CTX_data_active_object(C); Object *obedit = CTX_data_active_object(C); - switch(t->current_orientation) { + switch (t->current_orientation) { case V3D_MANIP_GLOBAL: unit_m3(t->spacemtx); strcpy(t->spacename, "global"); @@ -581,8 +580,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], BM_editselection_normal(&ese, normal); BM_editselection_plane(&ese, plane); - switch (ese.htype) - { + switch (ese.htype) { case BM_VERT: result = ORIENTATION_VERT; break; @@ -724,8 +722,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], if (nu->type == CU_BEZIER) { bezt= nu->bezt; a= nu->pntsu; - while (a--) - { + while (a--) { /* exception */ if ((bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT) { sub_v3_v3v3(normal, bezt->vec[0], bezt->vec[2]); @@ -886,8 +883,7 @@ void ED_getTransformOrientationMatrix(const bContext *C, float orientation_mat[] type = getTransformOrientation(C, normal, plane, activeOnly); - switch (type) - { + switch (type) { case ORIENTATION_NORMAL: if (createSpaceNormalTangent(orientation_mat, normal, plane) == 0) { type = ORIENTATION_NONE; diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 7bdd3ddc069..0a5613bca22 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -140,8 +140,7 @@ int activeSnap(TransInfo *t) void drawSnapping(const struct bContext *C, TransInfo *t) { - if (validSnap(t) && activeSnap(t)) - { + if (validSnap(t) && activeSnap(t)) { unsigned char col[4], selectedCol[4], activeCol[4]; UI_GetThemeColor3ubv(TH_TRANSFORM, col); @@ -184,8 +183,7 @@ void drawSnapping(const struct bContext *C, TransInfo *t) } /* draw normal if needed */ - if (usingSnappingNormal(t) && validSnappingNormal(t)) - { + if (usingSnappingNormal(t) && validSnappingNormal(t)) { glColor4ubv(activeCol); glBegin(GL_LINES); @@ -240,16 +238,14 @@ int handleSnapping(TransInfo *t, wmEvent *event) int status = 0; #if 0 // XXX need a proper selector for all snap mode - if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) - { + if (BIF_snappingSupported(t->obedit) && event->type == TABKEY && event->shift) { /* toggle snap and reinit */ t->settings->snap_flag ^= SCE_SNAP; initSnapping(t, NULL); status = 1; } #endif - if (event->type == MOUSEMOVE) - { + if (event->type == MOUSEMOVE) { status |= updateSelectedSnapPoint(t); } @@ -259,8 +255,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) void applyProject(TransInfo *t) { /* XXX FLICKER IN OBJECT MODE */ - if ((t->tsnap.project) && activeSnap(t) && (t->flag & T_NO_PROJECT) == 0) - { + if ((t->tsnap.project) && activeSnap(t) && (t->flag & T_NO_PROJECT) == 0) { TransData *td = t->data; float tvec[3]; float imat[4][4]; @@ -283,8 +278,7 @@ void applyProject(TransInfo *t) continue; copy_v3_v3(iloc, td->loc); - if (t->flag & (T_EDIT|T_POSE)) - { + if (t->flag & (T_EDIT|T_POSE)) { Object *ob = t->obedit?t->obedit:t->poseobj; mul_m4_v3(ob->obmat, iloc); } @@ -296,8 +290,7 @@ void applyProject(TransInfo *t) project_float(t->ar, iloc, mval); - if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect)) - { + if (snapObjectsTransform(t, mval, &dist, loc, no, t->tsnap.modeSelect)) { // if (t->flag & (T_EDIT|T_POSE)) { // mul_m4_v3(imat, loc); // } @@ -320,8 +313,7 @@ void applySnapping(TransInfo *t, float *vec) if (t->tsnap.project) return; - if (t->tsnap.status & SNAP_FORCED) - { + if (t->tsnap.status & SNAP_FORCED) { t->tsnap.targetSnap(t); t->tsnap.applySnap(t, vec); @@ -331,15 +323,13 @@ void applySnapping(TransInfo *t, float *vec) // Time base quirky code to go around findnearest slowness /* !TODO! add exception for object mode, no need to slow it down then */ - if (current - t->tsnap.last >= 0.01) - { + if (current - t->tsnap.last >= 0.01) { t->tsnap.calcSnap(t, vec); t->tsnap.targetSnap(t); t->tsnap.last = current; } - if (validSnap(t)) - { + if (validSnap(t)) { t->tsnap.applySnap(t, vec); } } @@ -368,10 +358,8 @@ int usingSnappingNormal(TransInfo *t) int validSnappingNormal(TransInfo *t) { - if (validSnap(t)) - { - if (dot_v3v3(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0) - { + if (validSnap(t)) { + if (dot_v3v3(t->tsnap.snapNormal, t->tsnap.snapNormal) > 0) { return 1; } } @@ -439,38 +427,31 @@ void initSnapping(TransInfo *t, wmOperator *op) resetSnapping(t); /* if snap property exists */ - if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_struct_property_is_set(op->ptr, "snap")) - { - if (RNA_boolean_get(op->ptr, "snap")) - { + if (op && RNA_struct_find_property(op->ptr, "snap") && RNA_struct_property_is_set(op->ptr, "snap")) { + if (RNA_boolean_get(op->ptr, "snap")) { t->modifiers |= MOD_SNAP; - if (RNA_struct_property_is_set(op->ptr, "snap_target")) - { + if (RNA_struct_property_is_set(op->ptr, "snap_target")) { snap_target = RNA_enum_get(op->ptr, "snap_target"); } - if (RNA_struct_property_is_set(op->ptr, "snap_point")) - { + if (RNA_struct_property_is_set(op->ptr, "snap_point")) { RNA_float_get_array(op->ptr, "snap_point", t->tsnap.snapPoint); t->tsnap.status |= SNAP_FORCED|POINT_INIT; } /* snap align only defined in specific cases */ - if (RNA_struct_find_property(op->ptr, "snap_align")) - { + if (RNA_struct_find_property(op->ptr, "snap_align")) { t->tsnap.align = RNA_boolean_get(op->ptr, "snap_align"); RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal); normalize_v3(t->tsnap.snapNormal); } - if (RNA_struct_find_property(op->ptr, "use_snap_project")) - { + if (RNA_struct_find_property(op->ptr, "use_snap_project")) { t->tsnap.project = RNA_boolean_get(op->ptr, "use_snap_project"); } - if (RNA_struct_find_property(op->ptr, "use_snap_self")) - { + if (RNA_struct_find_property(op->ptr, "use_snap_self")) { t->tsnap.snap_self = RNA_boolean_get(op->ptr, "use_snap_self"); } } @@ -498,8 +479,7 @@ static void setSnappingCallback(TransInfo *t) { t->tsnap.calcSnap = CalcSnapGeometry; - switch(t->tsnap.target) - { + switch (t->tsnap.target) { case SCE_SNAP_TARGET_CLOSEST: t->tsnap.targetSnap = TargetSnapClosest; break; @@ -515,8 +495,7 @@ static void setSnappingCallback(TransInfo *t) } - switch (t->mode) - { + switch (t->mode) { case TFM_TRANSLATION: t->tsnap.applySnap = ApplySnapTranslation; t->tsnap.distance = TranslationBetween; @@ -766,8 +745,7 @@ static void UNUSED_FUNCTION(CalcSnapGrid)(TransInfo *t, float *UNUSED(vec)) static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) { - if (t->spacetype == SPACE_VIEW3D) - { + if (t->spacetype == SPACE_VIEW3D) { float loc[3]; float no[3]; float mval[2]; @@ -777,8 +755,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) mval[0] = t->mval[0]; mval[1] = t->mval[1]; - if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME) - { + if (t->tsnap.mode == SCE_SNAP_MODE_VOLUME) { ListBase depth_peels; DepthPeel *p1, *p2; float *last_p = NULL; @@ -799,10 +776,8 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) // } - for (p1 = depth_peels.first; p1; p1 = p1->next) - { - if (p1->flag == 0) - { + for (p1 = depth_peels.first; p1; p1 = p1->next) { + if (p1->flag == 0) { float vec[3]; float new_dist; @@ -810,13 +785,10 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) p1->flag = 1; /* if peeling objects, take the first and last from each object */ - if (t->settings->snap_flag & SCE_SNAP_PEEL_OBJECT) - { + if (t->settings->snap_flag & SCE_SNAP_PEEL_OBJECT) { DepthPeel *peel; - for (peel = p1->next; peel; peel = peel->next) - { - if (peel->ob == p1->ob) - { + for (peel = p1->next; peel; peel = peel->next) { + if (peel->ob == p1->ob) { peel->flag = 1; p2 = peel; } @@ -824,8 +796,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) } /* otherwise, pair first with second and so on */ else { - for (p2 = p1->next; p2 && p2->ob != p1->ob; p2 = p2->next) - { + for (p2 = p1->next; p2 && p2->ob != p1->ob; p2 = p2->next) { /* nothing to do here */ } } @@ -839,9 +810,8 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) else { copy_v3_v3(vec, p1->p); } - - if (last_p == NULL) - { + + if (last_p == NULL) { copy_v3_v3(p, vec); max_dist = 0; break; @@ -856,8 +826,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) } } - if (max_dist != FLT_MAX) - { + if (max_dist != FLT_MAX) { copy_v3_v3(loc, p); /* XXX, is there a correct normal in this case ???, for now just z up */ no[0]= 0.0; @@ -878,8 +847,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) sub_v3_v3v3(tangent, loc, t->tsnap.snapPoint); tangent[2] = 0; - if (dot_v3v3(tangent, tangent) > 0) - { + if (dot_v3v3(tangent, tangent) > 0) { copy_v3_v3(t->tsnap.snapTangent, tangent); } @@ -899,8 +867,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) UI_view2d_region_to_view(&t->ar->v2d, t->mval[0], t->mval[1], co, co+1); - if (ED_uvedit_nearest_uv(t->scene, t->obedit, ima, co, t->tsnap.snapPoint)) - { + if (ED_uvedit_nearest_uv(t->scene, t->obedit, ima, co, t->tsnap.snapPoint)) { ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy); t->tsnap.snapPoint[0] *= aspx; t->tsnap.snapPoint[1] *= aspy; @@ -917,9 +884,8 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec)) static void TargetSnapCenter(TransInfo *t) { - // Only need to calculate once - if ((t->tsnap.status & TARGET_INIT) == 0) - { + /* Only need to calculate once */ + if ((t->tsnap.status & TARGET_INIT) == 0) { copy_v3_v3(t->tsnap.snapTarget, t->center); if (t->flag & (T_EDIT|T_POSE)) { Object *ob= t->obedit?t->obedit:t->poseobj; @@ -932,24 +898,20 @@ static void TargetSnapCenter(TransInfo *t) static void TargetSnapActive(TransInfo *t) { - // Only need to calculate once - if ((t->tsnap.status & TARGET_INIT) == 0) - { + /* Only need to calculate once */ + if ((t->tsnap.status & TARGET_INIT) == 0) { TransData *td = NULL; TransData *active_td = NULL; int i; - for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) - { - if (td->flag & TD_ACTIVE) - { + for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) { + if (td->flag & TD_ACTIVE) { active_td = td; break; } } - if (active_td) - { + if (active_td) { copy_v3_v3(t->tsnap.snapTarget, active_td->center); if (t->flag & (T_EDIT|T_POSE)) { @@ -971,8 +933,7 @@ static void TargetSnapActive(TransInfo *t) static void TargetSnapMedian(TransInfo *t) { // Only need to calculate once - if ((t->tsnap.status & TARGET_INIT) == 0) - { + if ((t->tsnap.status & TARGET_INIT) == 0) { TransData *td = NULL; int i; @@ -980,8 +941,7 @@ static void TargetSnapMedian(TransInfo *t) t->tsnap.snapTarget[1] = 0; t->tsnap.snapTarget[2] = 0; - for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) - { + for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) { add_v3_v3(t->tsnap.snapTarget, td->center); } @@ -999,21 +959,17 @@ static void TargetSnapMedian(TransInfo *t) static void TargetSnapClosest(TransInfo *t) { // Only valid if a snap point has been selected - if (t->tsnap.status & POINT_INIT) - { + if (t->tsnap.status & POINT_INIT) { TransData *closest = NULL, *td = NULL; /* Object mode */ - if (t->flag & T_OBJECT) - { + if (t->flag & T_OBJECT) { int i; - for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) - { + for (td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) { struct BoundBox *bb = object_get_boundbox(td->ob); /* use boundbox if possible */ - if (bb) - { + if (bb) { int j; for (j = 0; j < 8; j++) { @@ -1041,8 +997,7 @@ static void TargetSnapClosest(TransInfo *t) dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint); - if (closest == NULL || fabs(dist) < fabs(t->tsnap.dist)) - { + if (closest == NULL || fabs(dist) < fabs(t->tsnap.dist)) { copy_v3_v3(t->tsnap.snapTarget, loc); closest = td; t->tsnap.dist = dist; @@ -1065,8 +1020,7 @@ static void TargetSnapClosest(TransInfo *t) dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint); - if (closest == NULL || fabs(dist) < fabs(t->tsnap.dist)) - { + if (closest == NULL || fabs(dist) < fabs(t->tsnap.dist)) { copy_v3_v3(t->tsnap.snapTarget, loc); closest = td; t->tsnap.dist = dist; @@ -1112,8 +1066,7 @@ static int snapFace(ARegion *ar, float v1co[3], float v2co[3], float v3co[3], fl project_int(ar, location, screen_loc); new_dist = abs(screen_loc[0] - (int)mval[0]) + abs(screen_loc[1] - (int)mval[1]); - if (new_dist <= *dist && new_depth < *depth) - { + if (new_dist <= *dist && new_depth < *depth) { *depth = new_depth; retval = 1; @@ -1145,8 +1098,7 @@ static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], sh result = isect_line_line_v3(v1co, v2co, ray_start_local, ray_end, intersect, dvec); /* dvec used but we don't care about result */ - if (result) - { + if (result) { float edge_loc[3], vec[3]; float mul; @@ -1167,8 +1119,7 @@ static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], sh copy_v3_v3(intersect, v2co); } - if (dot_v3v3(ray_normal_local, dvec) > 0) - { + if (dot_v3v3(ray_normal_local, dvec) > 0) { float location[3]; float new_depth; int screen_loc[2]; @@ -1187,8 +1138,7 @@ static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], sh * this takes care of series of connected edges a bit slanted w.r.t the viewport * otherwise, it would stick to the verts of the closest edge and not slide along merrily * */ - if (new_dist <= *r_dist && new_depth < *r_depth * 1.001f) - { + if (new_dist <= *r_dist && new_depth < *r_depth * 1.001f) { float n1[3], n2[3]; *r_depth = new_depth; @@ -1199,8 +1149,7 @@ static int snapEdge(ARegion *ar, float v1co[3], short v1no[3], float v2co[3], sh mul = dot_v3v3(vec, edge_loc) / dot_v3v3(edge_loc, edge_loc); - if (r_no) - { + if (r_no) { normal_short_to_float_v3(n1, v1no); normal_short_to_float_v3(n2, v2no); interp_v3_v3v3(r_no, n2, n1, mul); @@ -1227,8 +1176,7 @@ static int snapVertex(ARegion *ar, float vco[3], short vno[3], float obmat[][4], sub_v3_v3v3(dvec, vco, ray_start_local); - if (dot_v3v3(ray_normal_local, dvec) > 0) - { + if (dot_v3v3(ray_normal_local, dvec) > 0) { float location[3]; float new_depth; int screen_loc[2]; @@ -1243,15 +1191,13 @@ static int snapVertex(ARegion *ar, float vco[3], short vno[3], float obmat[][4], project_int(ar, location, screen_loc); new_dist = abs(screen_loc[0] - (int)mval[0]) + abs(screen_loc[1] - (int)mval[1]); - if (new_dist <= *r_dist && new_depth < *r_depth) - { + if (new_dist <= *r_dist && new_depth < *r_depth) { *r_depth = new_depth; retval = 1; copy_v3_v3(r_loc, location); - if (r_no) - { + if (r_no) { normal_short_to_float_v3(r_no, vno); mul_m3_v3(timat, r_no); normalize_v3(r_no); @@ -1280,16 +1226,14 @@ static int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm mul_m4_v3(imat, ray_start_local); mul_mat3_m4_v3(imat, ray_normal_local); - if (arm->edbo) - { + if (arm->edbo) { EditBone *eBone; for (eBone=arm->edbo->first; eBone; eBone=eBone->next) { if (eBone->layer & arm->layer) { /* skip hidden or moving (selected) bones */ if ((eBone->flag & (BONE_HIDDEN_A|BONE_ROOTSEL|BONE_TIPSEL))==0) { - switch (snap_mode) - { + switch (snap_mode) { case SCE_SNAP_MODE_VERTEX: retval |= snapVertex(ar, eBone->head, NULL, obmat, NULL, ray_start, ray_start_local, ray_normal_local, mval, r_loc, NULL, r_dist, r_depth); retval |= snapVertex(ar, eBone->tail, NULL, obmat, NULL, ray_start, ray_start_local, ray_normal_local, mval, r_loc, NULL, r_dist, r_depth); @@ -1313,8 +1257,7 @@ static int snapArmature(short snap_mode, ARegion *ar, Object *ob, bArmature *arm float *head_vec = pchan->pose_head; float *tail_vec = pchan->pose_tail; - switch (snap_mode) - { + switch (snap_mode) { case SCE_SNAP_MODE_VERTEX: retval |= snapVertex(ar, head_vec, NULL, obmat, NULL, ray_start, ray_start_local, ray_normal_local, mval, r_loc, NULL, r_dist, r_depth); retval |= snapVertex(ar, tail_vec, NULL, obmat, NULL, ray_start, ray_start_local, ray_normal_local, mval, r_loc, NULL, r_dist, r_depth); @@ -1366,8 +1309,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh if (test == 1) { - switch (snap_mode) - { + switch (snap_mode) { case SCE_SNAP_MODE_FACE: { #ifdef USE_BVH_FACE_SNAP // Added for durian @@ -1383,8 +1325,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh hit.index = -1; hit.dist = *r_depth * (*r_depth == FLT_MAX ? 1.0f : local_scale); - if (treeData.tree && BLI_bvhtree_ray_cast(treeData.tree, ray_start_local, ray_normal_local, 0.0f, &hit, treeData.raycast_callback, &treeData) != -1) - { + if (treeData.tree && BLI_bvhtree_ray_cast(treeData.tree, ray_start_local, ray_normal_local, 0.0f, &hit, treeData.raycast_callback, &treeData) != -1) { if (hit.dist/local_scale <= *r_depth) { *r_depth= hit.dist/local_scale; copy_v3_v3(r_loc, hit.co); @@ -1409,8 +1350,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh int index = 0; int i; - if (em != NULL) - { + if (em != NULL) { index_array = dm->getTessFaceDataArray(dm, CD_ORIGINDEX); EDBM_index_arrays_init(em, 0, 0, 1); } @@ -1421,8 +1361,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh test = 1; /* reset for every face */ - if (em != NULL) - { + if (em != NULL) { if (index_array) { index = index_array[i]; } @@ -1436,8 +1375,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh else { efa = EDBM_face_at_index(em, index); - if (efa && BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) - { + if (efa && BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) { test = 0; } else if (efa) { @@ -1456,28 +1394,24 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh } - if (test) - { + if (test) { int result; float *v4co = NULL; - if (f->v4) - { + if (f->v4) { v4co = verts[f->v4].co; } result = snapFace(ar, verts[f->v1].co, verts[f->v2].co, verts[f->v3].co, v4co, mval, ray_start, ray_start_local, ray_normal_local, obmat, timat, loc, no, dist, depth); retval |= result; - if (f->v4 && result == 0) - { + if (f->v4 && result == 0) { retval |= snapFace(ar, verts[f->v3].co, verts[f->v4].co, verts[f->v1].co, verts[f->v2].co, mval, ray_start, ray_start_local, ray_normal_local, obmat, timat, loc, no, dist, depth); } } } - if (em != NULL) - { + if (em != NULL) { EDBM_index_arrays_free(em); } #endif @@ -1490,8 +1424,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh int index = 0; int i; - if (em != NULL) - { + if (em != NULL) { index_array = dm->getVertDataArray(dm, CD_ORIGINDEX); EDBM_index_arrays_init(em, 1, 0, 0); } @@ -1516,22 +1449,19 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh else { eve = EDBM_vert_at_index(em, index); - if (eve && (BM_elem_flag_test(eve, BM_ELEM_HIDDEN) || BM_elem_flag_test(eve, BM_ELEM_SELECT))) - { + if (eve && (BM_elem_flag_test(eve, BM_ELEM_HIDDEN) || BM_elem_flag_test(eve, BM_ELEM_SELECT))) { test = 0; } } } - if (test) - { + if (test) { retval |= snapVertex(ar, v->co, v->no, obmat, timat, ray_start, ray_start_local, ray_normal_local, mval, r_loc, r_no, r_dist, r_depth); } } - if (em != NULL) - { + if (em != NULL) { EDBM_index_arrays_free(em); } break; @@ -1545,8 +1475,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh int index = 0; int i; - if (em != NULL) - { + if (em != NULL) { index_array = dm->getEdgeDataArray(dm, CD_ORIGINDEX); EDBM_index_arrays_init(em, 0, 1, 0); } @@ -1557,8 +1486,7 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh test = 1; /* reset for every vert */ - if (em != NULL) - { + if (em != NULL) { if (index_array) { index = index_array[i]; } @@ -1580,16 +1508,13 @@ static int snapDerivedMesh(short snap_mode, ARegion *ar, Object *ob, DerivedMesh } } } - - - if (test) - { + + if (test) { retval |= snapEdge(ar, verts[e->v1].co, verts[e->v1].no, verts[e->v2].co, verts[e->v2].no, obmat, timat, ray_start, ray_start_local, ray_normal_local, mval, r_loc, r_no, r_dist, r_depth); } } - if (em != NULL) - { + if (em != NULL) { EDBM_index_arrays_free(em); } break; @@ -1673,8 +1598,7 @@ static int snapObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, c DupliObject *dupli_ob; ListBase *lb = object_duplilist(scene, ob); - for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) - { + for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) { Object *dob = dupli_ob->ob; retval |= snapObject(scene, ar, dob, 0, dupli_ob->mat, ray_start, ray_normal, mval, r_loc, r_no, r_dist, &depth); @@ -1726,8 +1650,7 @@ static void removeDoublesPeel(ListBase *depth_peels) { DepthPeel *peel; - for (peel = depth_peels->first; peel; peel = peel->next) - { + for (peel = depth_peels->first; peel; peel = peel->next) { DepthPeel *next_peel = peel->next; if (next_peel && ABS(peel->depth - next_peel->depth) < 0.0015f) { @@ -1881,8 +1804,7 @@ static int peelObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, L DupliObject *dupli_ob; ListBase *lb = object_duplilist(scene, ob); - for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) - { + for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) { Object *dob = dupli_ob->ob; if (dob->type == OB_MESH) { diff --git a/source/blender/editors/util/numinput.c b/source/blender/editors/util/numinput.c index c037508687b..1f1d5a0c0c0 100644 --- a/source/blender/editors/util/numinput.c +++ b/source/blender/editors/util/numinput.c @@ -207,8 +207,7 @@ char handleNumInput(NumInput *n, wmEvent *event) if (n->flag & NUM_NO_FRACTION) return 0; - switch (n->ctrl[idx]) - { + switch (n->ctrl[idx]) { case 0: case 1: n->ctrl[idx] = 10; diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 1dee327a066..980aed64ed9 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -861,7 +861,7 @@ const GPUBufferTypeSettings gpu_buffer_type_settings[] = { /* get the GPUDrawObject buffer associated with a type */ static GPUBuffer **gpu_drawobject_buffer_from_type(GPUDrawObject *gdo, GPUBufferType type) { - switch(type) { + switch (type) { case GPU_BUFFER_VERTEX: return &gdo->points; case GPU_BUFFER_NORMAL: @@ -882,7 +882,7 @@ static GPUBuffer **gpu_drawobject_buffer_from_type(GPUDrawObject *gdo, GPUBuffer /* get the amount of space to allocate for a buffer of a particular type */ static int gpu_buffer_size_from_type(DerivedMesh *dm, GPUBufferType type) { - switch(type) { + switch (type) { case GPU_BUFFER_VERTEX: return sizeof(float)*3 * (dm->drawObject->tot_triangle_point + dm->drawObject->tot_loose_point); case GPU_BUFFER_NORMAL: @@ -1059,7 +1059,7 @@ void GPU_uvedge_setup(DerivedMesh *dm) static int GPU_typesize(int type) { - switch(type) { + switch (type) { case GL_FLOAT: return sizeof(float); case GL_INT: diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index fc3878e2532..4113344760b 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -710,8 +710,10 @@ static void GPU_nodes_extract_dynamic_inputs(GPUPass *pass, ListBase *nodes) /* attributes don't need to be bound, they already have * an id that the drawing functions will use */ if (input->source == GPU_SOURCE_ATTRIB || - input->source == GPU_SOURCE_BUILTIN) + input->source == GPU_SOURCE_BUILTIN) + { continue; + } if (input->ima || input->tex) BLI_snprintf(input->shadername, sizeof(input->shadername), "samp%d", input->texid); @@ -1034,8 +1036,10 @@ static void gpu_nodes_get_vertex_attributes(ListBase *nodes, GPUVertexAttribs *a if (input->source == GPU_SOURCE_ATTRIB) { for (a=0; atotlayer; a++) { if (attribs->layer[a].type == input->attribtype && - strcmp(attribs->layer[a].name, input->attribname) == 0) + strcmp(attribs->layer[a].name, input->attribname) == 0) + { break; + } } if (a == attribs->totlayer && a < GPU_MAX_ATTRIB) { diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 01f000e3314..c830971dcbd 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -441,9 +441,11 @@ int GPU_verify_image(Image *ima, ImageUser *iuser, int tftile, int compare, int /* if same image & tile, we're done */ if (compare && ima == GTS.curima && GTS.curtile == GTS.tile && - GTS.tilemode == GTS.curtilemode && GTS.curtileXRep == GTS.tileXRep && - GTS.curtileYRep == GTS.tileYRep) + GTS.tilemode == GTS.curtilemode && GTS.curtileXRep == GTS.tileXRep && + GTS.curtileYRep == GTS.tileYRep) + { return (ima != NULL); + } /* if tiling mode or repeat changed, change texture matrix to fit */ if (GTS.tilemode!=GTS.curtilemode || GTS.curtileXRep!=GTS.tileXRep || diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 6c30c95f355..83d9619f217 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -171,14 +171,16 @@ void GPU_extensions_init(void) * New IDs from MESA's src/gallium/drivers/r300/r300_screen.c */ if (strstr(renderer, "R3") || strstr(renderer, "RV3") || - strstr(renderer, "R4") || strstr(renderer, "RV4") || - strstr(renderer, "RS4") || strstr(renderer, "RC4") || - strstr(renderer, "R5") || strstr(renderer, "RV5") || - strstr(renderer, "RS600") || strstr(renderer, "RS690") || - strstr(renderer, "RS740") || strstr(renderer, "X1") || - strstr(renderer, "X2") || strstr(renderer, "Radeon 9") || - strstr(renderer, "RADEON 9")) + strstr(renderer, "R4") || strstr(renderer, "RV4") || + strstr(renderer, "RS4") || strstr(renderer, "RC4") || + strstr(renderer, "R5") || strstr(renderer, "RV5") || + strstr(renderer, "RS600") || strstr(renderer, "RS690") || + strstr(renderer, "RS740") || strstr(renderer, "X1") || + strstr(renderer, "X2") || strstr(renderer, "Radeon 9") || + strstr(renderer, "RADEON 9")) + { GG.npotdisabled = 1; + } } /* make sure double side isn't used by default and only getting enabled in places where it's @@ -236,7 +238,7 @@ static void GPU_print_framebuffer_error(GLenum status, char err_out[256]) { const char *err= "unknown"; - switch(status) { + switch (status) { case GL_FRAMEBUFFER_COMPLETE_EXT: break; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index ab5f2040175..e14e4dce405 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -397,8 +397,7 @@ static GPUNodeLink *lamp_get_visibility(GPUMaterial *mat, GPULamp *lamp, GPUNode if (lamp->type==LA_AREA) return visifac; - switch(lamp->falloff_type) - { + switch (lamp->falloff_type) { case LA_FALLOFF_CONSTANT: break; case LA_FALLOFF_INVLINEAR: @@ -535,7 +534,7 @@ static void add_to_diffuse(GPUMaterial *mat, Material *ma, GPUShadeInput *shi, G } else { /* input */ - switch(ma->rampin_col) { + switch (ma->rampin_col) { case MA_RAMP_IN_ENERGY: GPU_link(mat, "ramp_rgbtobw", rgb, &fac); break; @@ -588,7 +587,7 @@ static void do_specular_ramp(GPUShadeInput *shi, GPUNodeLink *is, GPUNodeLink *t if (ma->ramp_spec && (ma->rampin_spec!=MA_RAMP_IN_RESULT)) { /* input */ - switch(ma->rampin_spec) { + switch (ma->rampin_spec) { case MA_RAMP_IN_ENERGY: fac = t; break; @@ -807,7 +806,7 @@ static void material_lights(GPUShadeInput *shi, GPUShadeResult *shr) static void texture_rgb_blend(GPUMaterial *mat, GPUNodeLink *tex, GPUNodeLink *out, GPUNodeLink *fact, GPUNodeLink *facg, int blendtype, GPUNodeLink **in) { - switch(blendtype) { + switch (blendtype) { case MTEX_BLEND: GPU_link(mat, "mtex_rgb_blend", out, tex, fact, facg, in); break; @@ -858,7 +857,7 @@ static void texture_rgb_blend(GPUMaterial *mat, GPUNodeLink *tex, GPUNodeLink *o static void texture_value_blend(GPUMaterial *mat, GPUNodeLink *tex, GPUNodeLink *out, GPUNodeLink *fact, GPUNodeLink *facg, int blendtype, GPUNodeLink **in) { - switch(blendtype) { + switch (blendtype) { case MTEX_BLEND: GPU_link(mat, "mtex_value_blend", out, tex, fact, facg, in); break; @@ -1767,7 +1766,7 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma) uniform->datatype = GPU_DATA_1I; BLI_strncpy(uniform->varname, input->shadername, sizeof(uniform->varname)); - switch(input->textype) { + switch (input->textype) { case GPU_SHADOW2D: uniform->type = GPU_DYNAMIC_SAMPLER_2DSHADOW; uniform->lamp = input->dynamicdata; @@ -1788,7 +1787,7 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma) else { uniform->type = input->dynamictype; BLI_strncpy(uniform->varname, input->shadername, sizeof(uniform->varname)); - switch(input->type) { + switch (input->type) { case 1: uniform->datatype = GPU_DATA_1F; break; @@ -1847,7 +1846,7 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma) attribute->number = mat->attribs.layer[i].glindex; BLI_snprintf(attribute->varname, sizeof(attribute->varname), "att%d", mat->attribs.layer[i].attribid); - switch(attribute->type) { + switch (attribute->type) { case CD_TANGENT: attribute->datatype = GPU_DATA_4F; break; diff --git a/source/blender/ikplugin/intern/itasc_plugin.cpp b/source/blender/ikplugin/intern/itasc_plugin.cpp index ccfe2eaa862..a288f330224 100644 --- a/source/blender/ikplugin/intern/itasc_plugin.cpp +++ b/source/blender/ikplugin/intern/itasc_plugin.cpp @@ -502,8 +502,7 @@ static void GetEulerXYZ(const KDL::Rotation& R, double& X,double& Y,double& Z) static void GetJointRotation(KDL::Rotation& boneRot, int type, double* rot) { - switch (type & ~IK_TRANSY) - { + switch (type & ~IK_TRANSY) { default: // fixed bone, no joint break; @@ -825,8 +824,7 @@ static bool joint_callback(const iTaSC::Timestamp& timestamp, iTaSC::ConstraintV } // determine which part of jointValue is used for this joint // closely related to the way the joints are defined - switch (ikchan->jointType & ~IK_TRANSY) - { + switch (ikchan->jointType & ~IK_TRANSY) { case IK_XDOF: case IK_YDOF: case IK_ZDOF: @@ -881,15 +879,21 @@ static int convert_channels(IK_Scene *ikscene, PoseTree *tree) /* set DoF flag */ flag = 0; - if (!(pchan->ikflag & BONE_IK_NO_XDOF) && !(pchan->ikflag & BONE_IK_NO_XDOF_TEMP) && - (!(pchan->ikflag & BONE_IK_XLIMIT) || pchan->limitmin[0]<0.f || pchan->limitmax[0]>0.f)) + if (!(pchan->ikflag & BONE_IK_NO_XDOF) && !(pchan->ikflag & BONE_IK_NO_XDOF_TEMP) && + (!(pchan->ikflag & BONE_IK_XLIMIT) || pchan->limitmin[0]<0.f || pchan->limitmax[0]>0.f)) + { flag |= IK_XDOF; + } if (!(pchan->ikflag & BONE_IK_NO_YDOF) && !(pchan->ikflag & BONE_IK_NO_YDOF_TEMP) && - (!(pchan->ikflag & BONE_IK_YLIMIT) || pchan->limitmin[1]<0.f || pchan->limitmax[1]>0.f)) + (!(pchan->ikflag & BONE_IK_YLIMIT) || pchan->limitmin[1]<0.f || pchan->limitmax[1]>0.f)) + { flag |= IK_YDOF; + } if (!(pchan->ikflag & BONE_IK_NO_ZDOF) && !(pchan->ikflag & BONE_IK_NO_ZDOF_TEMP) && - (!(pchan->ikflag & BONE_IK_ZLIMIT) || pchan->limitmin[2]<0.f || pchan->limitmax[2]>0.f)) + (!(pchan->ikflag & BONE_IK_ZLIMIT) || pchan->limitmin[2]<0.f || pchan->limitmax[2]>0.f)) + { flag |= IK_ZDOF; + } if (tree->stretch && (pchan->ikstretch > 0.0)) { flag |= IK_TRANSY; @@ -921,8 +925,7 @@ static int convert_channels(IK_Scene *ikscene, PoseTree *tree) * bone length is computed from bone->length multiplied by the scaling factor of * the armature. Non-uniform scaling will give bad result! */ - switch (flag & (IK_XDOF|IK_YDOF|IK_ZDOF)) - { + switch (flag & (IK_XDOF|IK_YDOF|IK_ZDOF)) { default: ikchan->jointType = 0; ikchan->ndof = 0; @@ -1165,8 +1168,7 @@ static IK_Scene* convert_tree(Scene *blscene, Object *ob, bPoseChannel *pchan) weight[0] = (1.0-pchan->stiffness[0]); weight[1] = (1.0-pchan->stiffness[1]); weight[2] = (1.0-pchan->stiffness[2]); - switch (ikchan->jointType & ~IK_TRANSY) - { + switch (ikchan->jointType & ~IK_TRANSY) { case 0: // fixed bone if (!(ikchan->jointType & IK_TRANSY)) { @@ -1512,7 +1514,7 @@ static void create_scene(Scene *scene, Object *ob) ikdata->first = ikscene; } // delete the trees once we are done - while(tree) { + while (tree) { BLI_remlink(&pchan->iktree, tree); BLI_freelistN(&tree->targets); if (tree->pchan) MEM_freeN(tree->pchan); @@ -1610,10 +1612,12 @@ static void execute_scene(Scene* blscene, IK_Scene* ikscene, bItasc* ikparam, fl ikscene->scene->update(timestamp, timestep, numstep, false, !reiterate, simulation); if (reiterate) { // how many times do we reiterate? - for (i=0; inumiter; i++) { + for (i = 0; inumiter; i++) { if (ikscene->armature->getMaxJointChange() < ikparam->precision || - ikscene->armature->getMaxEndEffectorChange() < ikparam->precision) + ikscene->armature->getMaxEndEffectorChange() < ikparam->precision) + { break; + } ikscene->scene->update(timestamp, timestep, numstep, true, false, simulation); } if (simulation) { diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index 0c8f932db6a..d0d141a8ef8 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -1271,7 +1271,7 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position, } } - switch(anim->curtype) { + switch (anim->curtype) { case ANIM_SEQUENCE: pic = an_stringdec(anim->first, head, tail, &digits); pic += position; diff --git a/source/blender/imbuf/intern/dds/ColorBlock.cpp b/source/blender/imbuf/intern/dds/ColorBlock.cpp index 42ef799cf3e..42bec5874ca 100644 --- a/source/blender/imbuf/intern/dds/ColorBlock.cpp +++ b/source/blender/imbuf/intern/dds/ColorBlock.cpp @@ -93,12 +93,10 @@ void ColorBlock::init(uint w, uint h, const uint * data, uint x, uint y) // @@ Thats only correct when block size is 1, 2 or 4, but not with 3. :( // @@ Ideally we should zero the weights of the pixels out of range. - for (uint i = 0; i < 4; i++) - { + for (uint i = 0; i < 4; i++) { const int by = i % bh; - for (uint e = 0; e < 4; e++) - { + for (uint e = 0; e < 4; e++) { const int bx = e % bw; const uint idx = (y + by) * w + x + bx; @@ -118,12 +116,10 @@ void ColorBlock::init(uint w, uint h, const float * data, uint x, uint y) uint srcPlane = w * h; - for (uint i = 0; i < 4; i++) - { + for (uint i = 0; i < 4; i++) { const uint by = i % bh; - for (uint e = 0; e < 4; e++) - { + for (uint e = 0; e < 4; e++) { const uint bx = e % bw; const uint idx = ((y + by) * w + x + bx); @@ -148,8 +144,7 @@ static inline uint8 component(Color32 c, uint i) void ColorBlock::swizzle(uint x, uint y, uint z, uint w) { - for (int i = 0; i < 16; i++) - { + for (int i = 0; i < 16; i++) { Color32 c = m_color[i]; m_color[i].r = component(c, x); m_color[i].g = component(c, y); @@ -164,10 +159,8 @@ bool ColorBlock::isSingleColor(Color32 mask/*= Color32(0xFF, 0xFF, 0xFF, 0x00)*/ { uint u = m_color[0].u & mask.u; - for (int i = 1; i < 16; i++) - { - if (u != (m_color[i].u & mask.u)) - { + for (int i = 1; i < 16; i++) { + if (u != (m_color[i].u & mask.u)) { return false; } } @@ -243,8 +236,7 @@ Color32 ColorBlock::averageColor() const /// Return true if the block is not fully opaque. bool ColorBlock::hasAlpha() const { - for (uint i = 0; i < 16; i++) - { + for (uint i = 0; i < 16; i++) { if (m_color[i].a != 255) return true; } return false; diff --git a/source/blender/imbuf/intern/dds/DirectDrawSurface.cpp b/source/blender/imbuf/intern/dds/DirectDrawSurface.cpp index e2874652f02..3966135ea32 100644 --- a/source/blender/imbuf/intern/dds/DirectDrawSurface.cpp +++ b/source/blender/imbuf/intern/dds/DirectDrawSurface.cpp @@ -308,7 +308,7 @@ static const uint DDPF_SRGB = 0x40000000U; const char * getDxgiFormatString(DXGI_FORMAT dxgiFormat) { #define CASE(format) case DXGI_FORMAT_##format: return #format - switch(dxgiFormat) + switch (dxgiFormat) { CASE(UNKNOWN); @@ -431,7 +431,7 @@ static const uint DDPF_SRGB = 0x40000000U; const char * getD3d10ResourceDimensionString(D3D10_RESOURCE_DIMENSION resourceDimension) { - switch(resourceDimension) + switch (resourceDimension) { default: case D3D10_RESOURCE_DIMENSION_UNKNOWN: return "UNKNOWN"; @@ -1305,7 +1305,7 @@ void DirectDrawSurface::readBlock(ColorBlock * rgba) uint DirectDrawSurface::blockSize() const { - switch(header.pf.fourcc) + switch (header.pf.fourcc) { case FOURCC_DXT1: case FOURCC_ATI1: @@ -1318,7 +1318,7 @@ uint DirectDrawSurface::blockSize() const case FOURCC_ATI2: return 16; case FOURCC_DX10: - switch(header.header10.dxgiFormat) + switch (header.header10.dxgiFormat) { case DXGI_FORMAT_BC1_TYPELESS: case DXGI_FORMAT_BC1_UNORM: diff --git a/source/blender/imbuf/intern/dds/PixelFormat.h b/source/blender/imbuf/intern/dds/PixelFormat.h index 3c5cb34812c..308ea810f03 100644 --- a/source/blender/imbuf/intern/dds/PixelFormat.h +++ b/source/blender/imbuf/intern/dds/PixelFormat.h @@ -66,17 +66,14 @@ // Convert component \a c having \a inbits to the returned value having \a outbits. inline uint convert(uint c, uint inbits, uint outbits) { - if (inbits == 0) - { + if (inbits == 0) { return 0; } - else if (inbits >= outbits) - { + else if (inbits >= outbits) { // truncate return c >> (inbits - outbits); } - else - { + else { // bitexpand return (c << (outbits - inbits)) | convert(c, inbits, outbits - inbits); } @@ -85,21 +82,20 @@ // Get pixel component shift and size given its mask. inline void maskShiftAndSize(uint mask, uint * shift, uint * size) { - if (!mask) - { + if (!mask) { *shift = 0; *size = 0; return; } *shift = 0; - while((mask & 1) == 0) { + while ((mask & 1) == 0) { ++(*shift); mask >>= 1; } *size = 0; - while((mask & 1) == 1) { + while ((mask & 1) == 1) { ++(*size); mask >>= 1; } diff --git a/source/blender/imbuf/intern/jpeg.c b/source/blender/imbuf/intern/jpeg.c index 3f3ebc5872d..87e56bffb41 100644 --- a/source/blender/imbuf/intern/jpeg.c +++ b/source/blender/imbuf/intern/jpeg.c @@ -321,7 +321,7 @@ static ImBuf * ibJpegImageFromCinfo(struct jpeg_decompress_struct * cinfo, int f rect = (uchar *) (ibuf->rect + y * ibuf->x); buffer = row_pointer[0]; - switch(depth) { + switch (depth) { case 1: for (x=ibuf->x; x >0; x--) { rect[3] = 255; @@ -524,7 +524,7 @@ next_stamp_info: rect = (uchar *) (ibuf->rect + y * ibuf->x); buffer = row_pointer[0]; - switch(cinfo->in_color_space) { + switch (cinfo->in_color_space) { case JCS_RGB: for (x = 0; x < ibuf->x; x++) { *buffer++ = rect[0]; @@ -577,7 +577,7 @@ static int init_jpeg(FILE * outfile, struct jpeg_compress_struct * cinfo, struct if (ibuf->planes == 32) cinfo->in_color_space = JCS_UNKNOWN; #endif - switch(cinfo->in_color_space) { + switch (cinfo->in_color_space) { case JCS_RGB: cinfo->input_components = 3; break; diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index ff3a816f478..44b7472b910 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -117,8 +117,7 @@ private: bool Mem_IStream::read (char c[], int n) { - if (n + _exrpos <= _exrsize) - { + if (n + _exrpos <= _exrsize) { memcpy(c, (void *)(&_exrbuf[_exrpos]), n); _exrpos += n; return true; @@ -162,8 +161,7 @@ int imb_is_a_openexr(unsigned char *mem) static void openexr_header_compression(Header *header, int compression) { - switch(compression) - { + switch (compression) { case 0: header->compression() = NO_COMPRESSION; break; @@ -236,12 +234,10 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, const char *name, int flags if (ibuf->rect_float) { float *from; - for (int i = ibuf->y-1; i >= 0; i--) - { + for (int i = ibuf->y-1; i >= 0; i--) { from= ibuf->rect_float + channels*i*width; - for (int j = ibuf->x; j > 0; j--) - { + for (int j = ibuf->x; j > 0; j--) { to->r = from[0]; to->g = from[1]; to->b = from[2]; @@ -254,12 +250,10 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, const char *name, int flags unsigned char *from; if (ibuf->profile == IB_PROFILE_LINEAR_RGB) { - for (int i = ibuf->y-1; i >= 0; i--) - { + for (int i = ibuf->y-1; i >= 0; i--) { from= (unsigned char *)ibuf->rect + channels*i*width; - for (int j = ibuf->x; j > 0; j--) - { + for (int j = ibuf->x; j > 0; j--) { to->r = (float)(from[0])/255.0; to->g = (float)(from[1])/255.0; to->b = (float)(from[2])/255.0; @@ -269,12 +263,10 @@ static int imb_save_openexr_half(struct ImBuf *ibuf, const char *name, int flags } } else { - for (int i = ibuf->y-1; i >= 0; i--) - { + for (int i = ibuf->y-1; i >= 0; i--) { from= (unsigned char *)ibuf->rect + channels*i*width; - for (int j = ibuf->x; j > 0; j--) - { + for (int j = ibuf->x; j > 0; j--) { to->r = srgb_to_linearrgb((float)from[0] / 255.0); to->g = srgb_to_linearrgb((float)from[1] / 255.0); to->b = srgb_to_linearrgb((float)from[2] / 255.0); @@ -364,8 +356,7 @@ static int imb_save_openexr_float(struct ImBuf *ibuf, const char *name, int flag int imb_save_openexr(struct ImBuf *ibuf, const char *name, int flags) { - if (flags & IB_mem) - { + if (flags & IB_mem) { printf("OpenEXR-save: Create EXR in memory CURRENTLY NOT SUPPORTED !\n"); imb_addencodedbufferImBuf(ibuf); ibuf->encodedsize = 0; @@ -743,7 +734,7 @@ static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *pa echan->chan_id= echan->name[len-1]; len-= 3; - while(len>=0) { + while (len>=0) { if (echan->name[len]=='.') break; len--; @@ -913,8 +904,7 @@ static void exr_print_filecontents(InputFile *file) { const ChannelList &channels = file->header().channels(); - for (ChannelList::ConstIterator i = channels.begin(); i != channels.end(); ++i) - { + for (ChannelList::ConstIterator i = channels.begin(); i != channels.end(); ++i) { const Channel &channel = i.channel(); printf("OpenEXR-load: Found channel %s of type %d\n", i.name(), channel.type); } @@ -925,8 +915,7 @@ static const char *exr_rgba_channelname(InputFile *file, const char *chan) { const ChannelList &channels = file->header().channels(); - for (ChannelList::ConstIterator i = channels.begin(); i != channels.end(); ++i) - { + for (ChannelList::ConstIterator i = channels.begin(); i != channels.end(); ++i) { /* const Channel &channel = i.channel(); */ /* Not used yet */ const char *str= i.name(); int len= strlen(str); @@ -986,8 +975,7 @@ struct ImBuf *imb_load_openexr(unsigned char *mem, size_t size, int flags) is_multi= exr_is_multilayer(file); /* do not make an ibuf when */ - if (is_multi && !(flags & IB_test) && !(flags & IB_multilayer)) - { + if (is_multi && !(flags & IB_test) && !(flags & IB_multilayer)) { printf("Error: can't process EXR multilayer file\n"); } else { @@ -998,10 +986,8 @@ struct ImBuf *imb_load_openexr(unsigned char *mem, size_t size, int flags) /* openEXR is linear as per EXR spec */ ibuf->profile = IB_PROFILE_LINEAR_RGB; - if (!(flags & IB_test)) - { - if (is_multi) /* only enters with IB_multilayer flag set */ - { + if (!(flags & IB_test)) { + if (is_multi) { /* only enters with IB_multilayer flag set */ /* constructs channels for reading, allocates memory in channels */ ExrHandle *handle= imb_exr_begin_read_mem(file, width, height); if (handle) { @@ -1032,8 +1018,7 @@ struct ImBuf *imb_load_openexr(unsigned char *mem, size_t size, int flags) frameBuffer.insert ( exr_rgba_channelname(file, "A"), Slice (Imf::FLOAT, (char *) (first+3), xstride, ystride, 1, 1, 1.0f)); /* 1.0 is fill value */ - if (exr_has_zbuffer(file)) - { + if (exr_has_zbuffer(file)) { float *firstz; addzbuffloatImBuf(ibuf); diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c index 74e1a4084c2..513fcb9b6dc 100644 --- a/source/blender/imbuf/intern/png.c +++ b/source/blender/imbuf/intern/png.c @@ -358,7 +358,7 @@ struct ImBuf *imb_loadpng(unsigned char *mem, size_t size, int flags) bytesperpixel = png_get_channels(png_ptr, info_ptr); - switch(color_type) { + switch (color_type) { case PNG_COLOR_TYPE_RGB: case PNG_COLOR_TYPE_RGB_ALPHA: break; diff --git a/source/blender/imbuf/intern/radiance_hdr.c b/source/blender/imbuf/intern/radiance_hdr.c index 524f96b72af..66acd952ac0 100644 --- a/source/blender/imbuf/intern/radiance_hdr.c +++ b/source/blender/imbuf/intern/radiance_hdr.c @@ -192,8 +192,11 @@ struct ImBuf *imb_loadhdr(unsigned char *mem, size_t size, int flags) } } if (found && (x<(size + 2))) { - if (sscanf((char *)&mem[x+1], "%79s %d %79s %d", (char*)&oriY, &height, - (char*)&oriX, &width) != 4) return NULL; + if (sscanf((char *)&mem[x + 1], "%79s %d %79s %d", (char *)&oriY, &height, + (char*)&oriX, &width) != 4) + { + return NULL; + } /* find end of this line, data right behind it */ ptr = (unsigned char *)strchr((char*)&mem[x+1], '\n'); diff --git a/source/blender/imbuf/intern/targa.c b/source/blender/imbuf/intern/targa.c index 7aceb695d00..0ed9b99d0ee 100644 --- a/source/blender/imbuf/intern/targa.c +++ b/source/blender/imbuf/intern/targa.c @@ -288,7 +288,7 @@ int imb_savetarga(struct ImBuf * ibuf, const char *name, int flags) ok = dumptarga(ibuf, fildes); } else { - switch((ibuf->planes + 7) >> 3) { + switch ((ibuf->planes + 7) >> 3) { case 1: ok = makebody_tga(ibuf, fildes, tga_out1); break; @@ -617,7 +617,7 @@ struct ImBuf *imb_loadtarga(unsigned char *mem, size_t mem_size, int flags) } } - switch(tga.imgtyp) { + switch (tga.imgtyp) { case 1: case 2: case 3: diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c index 5d64e1b2aec..9aeed8002e1 100644 --- a/source/blender/imbuf/intern/thumbs.c +++ b/source/blender/imbuf/intern/thumbs.c @@ -83,7 +83,7 @@ static int get_thumb_dir( char* dir , ThumbSize size) if (!home) return 0; BLI_strncpy(dir, home, FILE_MAX); #endif - switch(size) { + switch (size) { case THB_NORMAL: strcat(dir, "/.thumbnails/normal/"); break; @@ -269,7 +269,7 @@ ImBuf* IMB_thumb_create(const char* path, ThumbSize size, ThumbSource source, Im float scaledx, scaledy; struct stat info; - switch(size) { + switch (size) { case THB_NORMAL: tsize = 128; break; diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c index b5fdb897d14..9e819e56da5 100644 --- a/source/blender/imbuf/intern/util.c +++ b/source/blender/imbuf/intern/util.c @@ -250,7 +250,7 @@ static int isffmpeg (const char *filename) do_init_ffmpeg(); - if ( BLI_testextensie(filename, ".swf") || + if (BLI_testextensie(filename, ".swf") || BLI_testextensie(filename, ".jpg") || BLI_testextensie(filename, ".png") || BLI_testextensie(filename, ".dds") || @@ -258,7 +258,10 @@ static int isffmpeg (const char *filename) BLI_testextensie(filename, ".bmp") || BLI_testextensie(filename, ".exr") || BLI_testextensie(filename, ".cin") || - BLI_testextensie(filename, ".wav")) return 0; + BLI_testextensie(filename, ".wav")) + { + return 0; + } if (av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0) { if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: av_open_input_file failed\n"); diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c index ef7a2746d37..41c04ca0899 100644 --- a/source/blender/makesdna/intern/dna_genfile.c +++ b/source/blender/makesdna/intern/dna_genfile.c @@ -692,7 +692,7 @@ static void cast_elem(const char *ctype, const char *otype, const char *name, ch curlen= DNA_elem_type_size(ctypenr); while (arrlen>0) { - switch(otypenr) { + switch (otypenr) { case SDNA_TYPE_CHAR: val= *olddata; break; case SDNA_TYPE_UCHAR: @@ -717,7 +717,7 @@ static void cast_elem(const char *ctype, const char *otype, const char *name, ch val= *( (uint64_t *)olddata); break; } - switch(ctypenr) { + switch (ctypenr) { case SDNA_TYPE_CHAR: *curdata= val; break; case SDNA_TYPE_UCHAR: diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index f67fff460f1..f9572e1313a 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -889,8 +889,7 @@ void dna_write(FILE *file, void *pntr, int size) data = (char *) pntr; - for (i = 0 ; i < size ; i++) - { + for (i = 0 ; i < size ; i++) { fprintf(file, "%d,", data[i]); linelength++; if (linelength >= MAX_DNA_LINE_LENGTH) { diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index e083a690fba..ca29dcd341d 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1359,8 +1359,10 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp) * array get/next function, we can be sure it is an actual array */ if (cprop->next && cprop->get) if (strcmp((const char*)cprop->next, "rna_iterator_array_next") == 0 && - strcmp((const char*)cprop->get, "rna_iterator_array_get") == 0) + strcmp((const char*)cprop->get, "rna_iterator_array_get") == 0) + { prop->flag |= PROP_RAW_ARRAY; + } cprop->get = (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)cprop->get); cprop->begin = (void*)rna_def_property_begin_func(f, srna, prop, dp, (const char*)cprop->begin); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 3200b271718..a0335402060 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -3122,9 +3122,10 @@ static int rna_raw_access(ReportList *reports, PointerRNA *ptr, PropertyRNA *pro if (((itemtype == PROP_BOOLEAN || itemtype == PROP_INT) && in.type == PROP_RAW_INT) || (itemtype == PROP_FLOAT && in.type == PROP_RAW_FLOAT)) + { /* avoid creating temporary buffer if the data type match */ needconv = 0; - + } /* no item property pointer, can still be id property, or * property of a type derived from the collection pointer type */ RNA_PROP_BEGIN(ptr, itemptr, prop) { diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index bf5f51374fa..122e42e29e7 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -482,12 +482,10 @@ static void rna_FModifier_active_update(Main *UNUSED(bmain), Scene *UNUSED(scene FModifier *fm, *fmo = (FModifier*)ptr->data; /* clear active state of other FModifiers in this list */ - for (fm = fmo->prev; fm; fm = fm->prev) - { + for (fm = fmo->prev; fm; fm = fm->prev) { fm->flag &= ~FMODIFIER_FLAG_ACTIVE; } - for (fm = fmo->next; fm; fm = fm->next) - { + for (fm = fmo->next; fm; fm = fm->next) { fm->flag &= ~FMODIFIER_FLAG_ACTIVE; } diff --git a/source/blender/makesrna/intern/rna_main.c b/source/blender/makesrna/intern/rna_main.c index e616a632147..cb4eea5c25b 100644 --- a/source/blender/makesrna/intern/rna_main.c +++ b/source/blender/makesrna/intern/rna_main.c @@ -347,8 +347,7 @@ void RNA_def_main(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, "rna_Main_is_saved_get", NULL); RNA_def_property_ui_text(prop, "File is Saved", "Has the current session been saved to disk as a .blend file"); - for (i = 0; lists[i].name; i++) - { + for (i = 0; lists[i].name; i++) { prop = RNA_def_property(srna, lists[i].identifier, PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, lists[i].type); RNA_def_property_collection_funcs(prop, lists[i].iter_begin, "rna_iterator_listbase_next", diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 8c4b7917cb8..0eb4ef1c5c9 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -665,13 +665,15 @@ static int rna_KeyMapItem_any_getf(PointerRNA *ptr) wmKeyMapItem *kmi = (wmKeyMapItem*)ptr->data; if (kmi->shift == KM_ANY && - kmi->ctrl == KM_ANY && - kmi->alt == KM_ANY && - kmi->oskey == KM_ANY) - + kmi->ctrl == KM_ANY && + kmi->alt == KM_ANY && + kmi->oskey == KM_ANY) + { return 1; - else + } + else { return 0; + } } static void rna_KeyMapItem_any_setf(PointerRNA *ptr, int value) diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index e4e89db403d..c11d6fc50af 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -97,7 +97,7 @@ static DerivedMesh *get_quick_derivedMesh(DerivedMesh *derivedData, DerivedMesh DerivedMesh *result = NULL; if (derivedData->getNumPolys(derivedData) == 0 || dm->getNumPolys(dm) == 0) { - switch(operation) { + switch (operation) { case eBooleanModifierOp_Intersect: result = CDDM_new(0, 0, 0, 0, 0); break; diff --git a/source/blender/modifiers/intern/MOD_cast.c b/source/blender/modifiers/intern/MOD_cast.c index 15940112527..8ad5b72204b 100644 --- a/source/blender/modifiers/intern/MOD_cast.c +++ b/source/blender/modifiers/intern/MOD_cast.c @@ -423,8 +423,11 @@ static void cuboid_do( if (has_radius) { if (fabsf(tmp_co[0]) > cmd->radius || - fabsf(tmp_co[1]) > cmd->radius || - fabsf(tmp_co[2]) > cmd->radius) continue; + fabsf(tmp_co[1]) > cmd->radius || + fabsf(tmp_co[2]) > cmd->radius) + { + continue; + } } for (j = 0; j < dvert[i].totweight; ++j) { @@ -521,8 +524,11 @@ static void cuboid_do( if (has_radius) { if (fabsf(tmp_co[0]) > cmd->radius || - fabsf(tmp_co[1]) > cmd->radius || - fabsf(tmp_co[2]) > cmd->radius) continue; + fabsf(tmp_co[1]) > cmd->radius || + fabsf(tmp_co[2]) > cmd->radius) + { + continue; + } } octant = 0; diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index b3faf6c140a..4c5ce184c22 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -71,8 +71,7 @@ static void freeData(ModifierData *md) { CollisionModifierData *collmd = (CollisionModifierData*) md; - if (collmd) - { + if (collmd) { if (collmd->bvhtree) BLI_bvhtree_free(collmd->bvhtree); if (collmd->x) @@ -120,14 +119,12 @@ static void deformVerts(ModifierData *md, Object *ob, if (derivedData) dm = CDDM_copy(derivedData); else if (ob->type==OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - if (!ob->pd) - { + if (!ob->pd) { printf("CollisionModifier deformVerts: Should not happen!\n"); return; } - if (dm) - { + if (dm) { float current_time = 0; unsigned int numverts = 0; @@ -141,20 +138,17 @@ static void deformVerts(ModifierData *md, Object *ob, numverts = dm->getNumVerts ( dm ); - if ((current_time > collmd->time_xnew)|| (BKE_ptcache_get_continue_physics())) - { + if ((current_time > collmd->time_xnew)|| (BKE_ptcache_get_continue_physics())) { unsigned int i; // check if mesh has changed if (collmd->x && (numverts != collmd->numverts)) freeData((ModifierData *)collmd); - if (collmd->time_xnew == -1000) // first time - { + if (collmd->time_xnew == -1000) { /* first time */ collmd->x = dm->dupVertArray(dm); // frame start position - for ( i = 0; i < numverts; i++ ) - { + for ( i = 0; i < numverts; i++ ) { // we save global positions mul_m4_v3( ob->obmat, collmd->x[i].co ); } diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index 293a8a8c686..70294588fd4 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -208,7 +208,7 @@ static void displaceModifier_do( delta *= strength; CLAMP(delta, -10000, 10000); - switch(dmd->direction) { + switch (dmd->direction) { case MOD_DISP_DIR_X: vertexCos[i][0] += delta; break; diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c index a1dc69918c2..11542dc4c1a 100644 --- a/source/blender/modifiers/intern/MOD_explode.c +++ b/source/blender/modifiers/intern/MOD_explode.c @@ -679,7 +679,7 @@ static DerivedMesh * cutEdges(ExplodeModifierData *emd, DerivedMesh *dm) for (i=0,fs=facesplit; igetTessFaceData(dm, i, CD_MFACE); - switch(*fs) { + switch (*fs) { case 3: case 10: case 11: @@ -711,7 +711,7 @@ static DerivedMesh * cutEdges(ExplodeModifierData *emd, DerivedMesh *dm) break; } - switch(*fs) { + switch (*fs) { case 3: case 6: case 9: diff --git a/source/blender/modifiers/intern/MOD_fluidsim_util.c b/source/blender/modifiers/intern/MOD_fluidsim_util.c index fe0cb2e650f..8d3b1871c51 100644 --- a/source/blender/modifiers/intern/MOD_fluidsim_util.c +++ b/source/blender/modifiers/intern/MOD_fluidsim_util.c @@ -66,8 +66,7 @@ void fluidsim_init(FluidsimModifierData *fluidmd) { #ifdef WITH_MOD_FLUID - if (fluidmd) - { + if (fluidmd) { FluidsimSettings *fss = MEM_callocN(sizeof(FluidsimSettings), "fluidsimsettings"); fluidmd->fss = fss; @@ -184,8 +183,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam // get numverts + numfaces first // ------------------------------------------------ gzf = BLI_gzopen(filename, "rb"); - if (!gzf) - { + if (!gzf) { return NULL; } @@ -216,15 +214,13 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam return NULL; gzf = BLI_gzopen(filename, "rb"); - if (!gzf) - { + if (!gzf) { return NULL; } dm = CDDM_new(numverts, 0, 0, numfaces * 3, numfaces); - if (!dm) - { + if (!dm) { gzclose(gzf); return NULL; } @@ -240,8 +236,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam // should be the same as numverts gotBytes = gzread(gzf, &wri, sizeof(wri)); - if (wri != numverts) - { + if (wri != numverts) { if (dm) dm->release(dm); gzclose(gzf); @@ -249,8 +244,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam } normals = MEM_callocN(sizeof(short) * numverts * 3, "fluid_tmp_normals" ); - if (!normals) - { + if (!normals) { if (dm) dm->release(dm); gzclose(gzf); @@ -258,8 +252,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam } // read normals from file (but don't save them yet) - for (i=numverts, no_s= normals; i>0; i--, no_s += 3) - { + for (i=numverts, no_s= normals; i>0; i--, no_s += 3) { gotBytes = gzread(gzf, no, sizeof(float) * 3); normal_float_to_short_v3(no_s, no); } @@ -279,8 +272,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly *mp_exam // read triangles from file mp = CDDM_get_polys(dm); ml = CDDM_get_loops(dm); - for (i=0; i < numfaces; i++, mp++, ml += 3) - { + for (i=0; i < numfaces; i++, mp++, ml += 3) { int face[3]; gotBytes = gzread(gzf, face, sizeof(int) * 3); @@ -390,8 +382,7 @@ static void fluidsim_read_vel_cache(FluidsimModifierData *fluidmd, DerivedMesh * if (fss->meshVelocities) MEM_freeN(fss->meshVelocities); - if (len<7) - { + if (len < 7) { return; } @@ -409,25 +400,21 @@ static void fluidsim_read_vel_cache(FluidsimModifierData *fluidmd, DerivedMesh * filename[len-4] = 'l'; gzf = BLI_gzopen(filename, "rb"); - if (!gzf) - { + if (!gzf) { MEM_freeN(fss->meshVelocities); fss->meshVelocities = NULL; return; } gzread(gzf, &wri, sizeof( wri )); - if (wri != totvert) - { + if (wri != totvert) { MEM_freeN(fss->meshVelocities); fss->meshVelocities = NULL; return; } - for (i=0; idw; int j; @@ -229,8 +228,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, BLI_ghash_free(vgroupHash, NULL, NULL); MEM_freeN(bone_select_array); } - else /* --- Using Nominated VertexGroup only --- */ - { + else { /* --- Using Nominated VertexGroup only --- */ int defgrp_index = defgroup_name_index(ob, mmd->vgroup); /* get dverts */ @@ -245,8 +243,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, vertHash= BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp, "mask vert2 bh"); /* add vertices which exist in vertexgroup into ghash for filtering */ - for (i= 0, dv= dvert; i < maxVerts; i++, dv++) - { + for (i= 0, dv= dvert; i < maxVerts; i++, dv++) { const int weight_set= defvert_find_weight(dv, defgrp_index) != 0.0f; /* check if include vert in vertHash */ @@ -277,8 +274,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, /* loop over edges and faces, and do the same thing to * ensure that they only reference existing verts */ - for (i = 0; i < maxEdges; i++) - { + for (i = 0; i < maxEdges; i++) { MEdge me; dm->getEdge(dm, i, &me); @@ -290,8 +286,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, numEdges++; } } - for (i = 0; i < maxPolys; i++) - { + for (i = 0; i < maxPolys; i++) { MPoly *mp = &mpoly[i]; MLoop *ml = mloop + mp->loopstart; int ok = TRUE; diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c index d408e5a3bee..56b6493eda6 100644 --- a/source/blender/modifiers/intern/MOD_remesh.c +++ b/source/blender/modifiers/intern/MOD_remesh.c @@ -103,8 +103,10 @@ static void *dualcon_alloc_output(int totvert, int totquad) DualConOutput *output; if (!(output = MEM_callocN(sizeof(DualConOutput), - "DualConOutput"))) + "DualConOutput"))) + { return NULL; + } output->dm = CDDM_new(totvert, 0, 0, 4*totquad, totquad); return output; @@ -164,7 +166,7 @@ static DerivedMesh *applyModifier(ModifierData *md, if (rmd->flag & MOD_REMESH_FLOOD_FILL) flags |= DUALCON_FLOOD_FILL; - switch(rmd->mode) { + switch (rmd->mode) { case MOD_REMESH_CENTROID: mode = DUALCON_CENTROID; break; diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c index ae21d3d66ad..60eed4abcb1 100644 --- a/source/blender/modifiers/intern/MOD_screw.c +++ b/source/blender/modifiers/intern/MOD_screw.c @@ -179,7 +179,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, if (!totvert) return CDDM_from_template(dm, 0, 0, 0, 0, 0); - switch(ltmd->axis) { + switch (ltmd->axis) { case 0: other_axis_1=1; other_axis_2=2; diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c index 6c1325b0bde..5ac52a97315 100644 --- a/source/blender/modifiers/intern/MOD_simpledeform.c +++ b/source/blender/modifiers/intern/MOD_simpledeform.c @@ -185,8 +185,7 @@ static void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object float lower = FLT_MAX; float upper = -FLT_MAX; - for (i=0; ivgroup_name, &dvert, &vgroup); - switch(smd->mode) - { + switch (smd->mode) { case MOD_SIMPLEDEFORM_MODE_TWIST: simpleDeform_callback = simpleDeform_twist; break; case MOD_SIMPLEDEFORM_MODE_BEND: simpleDeform_callback = simpleDeform_bend; break; case MOD_SIMPLEDEFORM_MODE_TAPER: simpleDeform_callback = simpleDeform_taper; break; @@ -216,8 +214,7 @@ static void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object return; //No simpledeform mode? } - for (i=0; ifalloff_type) { + switch (wmd->falloff_type) { case eWarp_Falloff_None: fac = 1.0f; break; diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index 78e76e27c02..5fa3090cd87 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -247,7 +247,7 @@ static void waveModifier_do(WaveModifierData *md, } } - switch(wmd_axis) { + switch (wmd_axis) { case MOD_WAVE_X|MOD_WAVE_Y: amplit = sqrtf(x*x + y*y); break; @@ -270,7 +270,7 @@ static void waveModifier_do(WaveModifierData *md, if (falloff != 0.0f) { float dist = 0.0f; - switch(wmd_axis) { + switch (wmd_axis) { case MOD_WAVE_X|MOD_WAVE_Y: dist = sqrtf(x*x + y*y); break; diff --git a/source/blender/modifiers/intern/MOD_weightvg_util.c b/source/blender/modifiers/intern/MOD_weightvg_util.c index 5ce435a7ca5..1f886812ab7 100644 --- a/source/blender/modifiers/intern/MOD_weightvg_util.c +++ b/source/blender/modifiers/intern/MOD_weightvg_util.c @@ -69,7 +69,9 @@ void weightvg_do_map(int num, float *new_w, short falloff_type, CurveMapping *cm !ELEM7(falloff_type, MOD_WVG_MAPPING_CURVE, MOD_WVG_MAPPING_SHARP, MOD_WVG_MAPPING_SMOOTH, MOD_WVG_MAPPING_ROOT, MOD_WVG_MAPPING_SPHERE, MOD_WVG_MAPPING_RANDOM, MOD_WVG_MAPPING_STEP)) + { return; + } /* Map each weight (vertex) to its new value, accordingly to the chosen mode. */ for (i = 0; i < num; ++i) { @@ -77,7 +79,7 @@ void weightvg_do_map(int num, float *new_w, short falloff_type, CurveMapping *cm /* Code borrowed from the warp modifier. */ /* Closely matches PROP_SMOOTH and similar. */ - switch(falloff_type) { + switch (falloff_type) { case MOD_WVG_MAPPING_CURVE: fac = curvemapping_evaluateF(cmap, 0, fac); break; @@ -157,7 +159,7 @@ void weightvg_do_mask(int num, const int *indices, float *org_w, const float *ne texres.nor = NULL; get_texture_value(texture, tex_co[idx], &texres); /* Get the good channel value... */ - switch(tex_use_channel) { + switch (tex_use_channel) { case MOD_WVG_MASK_TEX_USE_INT: org_w[i] = (new_w[i] * texres.tin * fact) + (org_w[i] * (1.0f - (texres.tin*fact))); break; diff --git a/source/blender/nodes/composite/node_composite_util.c b/source/blender/nodes/composite/node_composite_util.c index ab3a363e703..8012057b393 100644 --- a/source/blender/nodes/composite/node_composite_util.c +++ b/source/blender/nodes/composite/node_composite_util.c @@ -884,8 +884,9 @@ static void FHT2D(fREAL *data, unsigned int Mx, unsigned int My, #define PRED(k) (((k & Nym) << Mx) + (k >> My)) for (j=PRED(i); j>i; j=PRED(j)); if (j < i) continue; - for (k=i, j=PRED(i); j!=i; k=j, j=PRED(j), stm--) - { t=data[j], data[j]=data[k], data[k]=t; } + for (k=i, j=PRED(i); j!=i; k=j, j=PRED(j), stm--) { + t=data[j], data[j]=data[k], data[k]=t; + } #undef PRED stm--; } @@ -1108,7 +1109,7 @@ void qd_getPixel(CompBuf* src, int x, int y, float* col) float bc[4]; src->rect_procedural(src, bc, (float)x/(float)src->xrad, (float)y/(float)src->yrad); - switch(src->type) { + switch (src->type) { /* these fallthrough to get all the channels */ case CB_RGBA: col[3]=bc[3]; case CB_VEC3: col[2]=bc[2]; @@ -1118,7 +1119,7 @@ void qd_getPixel(CompBuf* src, int x, int y, float* col) } else if ((x >= 0) && (x < src->x) && (y >= 0) && (y < src->y)) { float* bc = &src->rect[(x + y*src->x)*src->type]; - switch(src->type) { + switch (src->type) { /* these fallthrough to get all the channels */ case CB_RGBA: col[3]=bc[3]; case CB_VEC3: col[2]=bc[2]; @@ -1127,7 +1128,7 @@ void qd_getPixel(CompBuf* src, int x, int y, float* col) } } else { - switch(src->type) { + switch (src->type) { /* these fallthrough to get all the channels */ case CB_RGBA: col[3]=0.0; case CB_VEC3: col[2]=0.0; @@ -1142,7 +1143,7 @@ void qd_setPixel(CompBuf* src, int x, int y, float* col) { if ((x >= 0) && (x < src->x) && (y >= 0) && (y < src->y)) { float* bc = &src->rect[(x + y*src->x)*src->type]; - switch(src->type) { + switch (src->type) { /* these fallthrough to get all the channels */ case CB_RGBA: bc[3]=col[3]; case CB_VEC3: bc[2]=col[2]; diff --git a/source/blender/nodes/composite/nodes/node_composite_channelMatte.c b/source/blender/nodes/composite/nodes/node_composite_channelMatte.c index 132b1659fa5..b3690b5d20f 100644 --- a/source/blender/nodes/composite/nodes/node_composite_channelMatte.c +++ b/source/blender/nodes/composite/nodes/node_composite_channelMatte.c @@ -71,7 +71,7 @@ static void do_channel_matte(bNode *node, float *out, float *in) NodeChroma *c=(NodeChroma *)node->storage; float alpha=0.0; - switch(c->algorithm) { + switch (c->algorithm) { case 0: { /* Alpha=key_channel-limit channel */ int key_channel=node->custom2-1; int limit_channel=c->channel-1; @@ -79,7 +79,7 @@ static void do_channel_matte(bNode *node, float *out, float *in) break; } case 1: { /* Alpha=G-MAX(R, B) */ - switch(node->custom2) { + switch (node->custom2) { case 1: { alpha=in[0]-MAX2(in[1],in[2]); break; @@ -139,7 +139,7 @@ static void node_composit_exec_channel_matte(void *data, bNode *node, bNodeStack outbuf=dupalloc_compbuf(cbuf); /*convert to colorspace*/ - switch(node->custom1) { + switch (node->custom1) { case CMP_NODE_CHANNEL_MATTE_CS_RGB: break; case CMP_NODE_CHANNEL_MATTE_CS_HSV: /*HSV*/ @@ -159,7 +159,7 @@ static void node_composit_exec_channel_matte(void *data, bNode *node, bNodeStack composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_channel_matte, CB_RGBA); /*convert back to RGB colorspace in place*/ - switch(node->custom1) { + switch (node->custom1) { case CMP_NODE_CHANNEL_MATTE_CS_RGB: /*RGB*/ break; case CMP_NODE_CHANNEL_MATTE_CS_HSV: /*HSV*/ diff --git a/source/blender/nodes/composite/nodes/node_composite_colorSpill.c b/source/blender/nodes/composite/nodes/node_composite_colorSpill.c index 46d7c620aa8..0153a2bce34 100644 --- a/source/blender/nodes/composite/nodes/node_composite_colorSpill.c +++ b/source/blender/nodes/composite/nodes/node_composite_colorSpill.c @@ -206,12 +206,10 @@ static void node_composit_exec_color_spill(void *UNUSED(data), bNode *node, bNod spillmap=alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1); rgbbuf=dupalloc_compbuf(cbuf); - switch(node->custom1) - { + switch (node->custom1) { case 1: /*red spill*/ { - switch(node->custom2) - { + switch (node->custom2) { case 0: /* simple limit */ { if ((in[1]->data==NULL) && (in[1]->vec[0] >= 1.f)) { @@ -243,8 +241,7 @@ static void node_composit_exec_color_spill(void *UNUSED(data), bNode *node, bNod } case 2: /*green spill*/ { - switch(node->custom2) - { + switch (node->custom2) { case 0: /* simple limit */ { if ((in[1]->data==NULL) && (in[1]->vec[0] >= 1.f)) { @@ -276,8 +273,7 @@ static void node_composit_exec_color_spill(void *UNUSED(data), bNode *node, bNod } case 3: /*blue spill*/ { - switch(node->custom2) - { + switch (node->custom2) { case 0: /* simple limit */ { if ((in[1]->data==NULL) && (in[1]->vec[0] >= 1.f)) { diff --git a/source/blender/nodes/composite/nodes/node_composite_filter.c b/source/blender/nodes/composite/nodes/node_composite_filter.c index 6d470467cb0..d6cb54eb944 100644 --- a/source/blender/nodes/composite/nodes/node_composite_filter.c +++ b/source/blender/nodes/composite/nodes/node_composite_filter.c @@ -189,7 +189,7 @@ static void node_composit_exec_filter(void *data, bNode *node, bNodeStack **in, stackbuf->xof= cbuf->xof; stackbuf->yof= cbuf->yof; - switch(node->custom1) { + switch (node->custom1) { case CMP_FILT_SOFT: do_filter3(stackbuf, cbuf, soft, in[0]->vec[0]); break; diff --git a/source/blender/nodes/composite/nodes/node_composite_image.c b/source/blender/nodes/composite/nodes/node_composite_image.c index 6a156c390a7..62179cfa471 100644 --- a/source/blender/nodes/composite/nodes/node_composite_image.c +++ b/source/blender/nodes/composite/nodes/node_composite_image.c @@ -442,11 +442,14 @@ static void node_composit_exec_image(void *data, bNode *node, bNodeStack **UNUSE /* preview policy: take first 'Combined' pass if available, * otherwise just use the first layer. */ - if (!firstbuf) + if (!firstbuf) { firstbuf = stackbuf; + } if (!combinedbuf && - (strcmp(sock->name, "Combined")==0 || strcmp(sock->name, "Image")==0)) + (strcmp(sock->name, "Combined") == 0 || strcmp(sock->name, "Image") == 0)) + { combinedbuf = stackbuf; + } } } } diff --git a/source/blender/nodes/composite/nodes/node_composite_levels.c b/source/blender/nodes/composite/nodes/node_composite_levels.c index ec6d2006296..32b07582140 100644 --- a/source/blender/nodes/composite/nodes/node_composite_levels.c +++ b/source/blender/nodes/composite/nodes/node_composite_levels.c @@ -64,7 +64,7 @@ static void fill_bins(bNode* node, CompBuf* in, int* bins) qd_getPixel(in, x, y, value); if (value[3] > 0.0f) { /* don't count transparent pixels */ - switch(node->custom1) { + switch (node->custom1) { case 1: { /* all colors */ rgb_tobw(value[0],value[1],value[2], &value[0]); value[0]=value[0]*255; /* scale to 0-255 range */ @@ -122,8 +122,7 @@ static float brightness_mean(bNode* node, CompBuf* in) if (value[3] > 0.0f) { /* don't count transparent pixels */ numPixels++; - switch(node->custom1) - { + switch (node->custom1) { case 1: { rgb_tobw(value[0],value[1],value[2], &value[0]); @@ -174,8 +173,7 @@ static float brightness_standard_deviation(bNode* node, CompBuf* in, float mean) if (value[3] > 0.0f) { /* don't count transparent pixels */ numPixels++; - switch(node->custom1) - { + switch (node->custom1) { case 1: { rgb_tobw(value[0],value[1],value[2], &value[0]); diff --git a/source/blender/nodes/composite/nodes/node_composite_math.c b/source/blender/nodes/composite/nodes/node_composite_math.c index 8362df1b691..4c9d1a66fb0 100644 --- a/source/blender/nodes/composite/nodes/node_composite_math.c +++ b/source/blender/nodes/composite/nodes/node_composite_math.c @@ -46,8 +46,7 @@ static bNodeSocketTemplate cmp_node_math_out[]= { static void do_math(bNode *node, float *out, float *in, float *in2) { - switch(node->custom1) - { + switch (node->custom1) { case 0: /* Add */ out[0]= in[0] + in2[0]; break; diff --git a/source/blender/nodes/composite/nodes/node_composite_rotate.c b/source/blender/nodes/composite/nodes/node_composite_rotate.c index 6952817248d..8268977658d 100644 --- a/source/blender/nodes/composite/nodes/node_composite_rotate.c +++ b/source/blender/nodes/composite/nodes/node_composite_rotate.c @@ -87,7 +87,7 @@ static void node_composit_exec_rotate(void *UNUSED(data), bNode *node, bNodeStac v=-s*x + c*y + centy; xo= x+(int)centx; - switch(node->custom1) { + switch (node->custom1) { case 0: neareast_interpolation(ibuf, obuf, u, v, xo, yo); break; diff --git a/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c b/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c index b12f08bb13d..6eff3dcd95b 100644 --- a/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c +++ b/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c @@ -91,8 +91,7 @@ static void node_composit_exec_sepycca(void *UNUSED(data), bNode *node, bNodeSta if (in[0]->data==NULL) { float y, cb, cr; - switch(node->custom1) - { + switch (node->custom1) { case 1: rgb_to_ycc(in[0]->vec[0], in[0]->vec[1], in[0]->vec[2], &y, &cb, &cr, BLI_YCC_ITU_BT709); break; @@ -117,8 +116,7 @@ static void node_composit_exec_sepycca(void *UNUSED(data), bNode *node, bNodeSta CompBuf *cbuf2=typecheck_compbuf(cbuf, CB_RGBA); /* convert the RGB stackbuf to an HSV representation */ - switch(node->custom1) - { + switch (node->custom1) { case 1: composit1_pixel_processor(node, cbuf2, cbuf2, in[0]->vec, do_sepycca_709, CB_RGBA); break; @@ -240,8 +238,7 @@ static void node_composit_exec_combycca(void *UNUSED(data), bNode *node, bNodeSt float cb = in[1]->vec[0] * 255; float cr = in[2]->vec[0] * 255; - switch(node->custom1) - { + switch (node->custom1) { case 1: ycc_to_rgb(y, cb, cr, &out[0]->vec[0], &out[0]->vec[1], &out[0]->vec[2], BLI_YCC_ITU_BT709); break; @@ -270,8 +267,7 @@ static void node_composit_exec_combycca(void *UNUSED(data), bNode *node, bNodeSt stackbuf = alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */ - switch(node->custom1) - { + switch (node->custom1) { case 1: composit4_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, in[1]->data, in[1]->vec, in[2]->data, in[2]->vec, in[3]->data, in[3]->vec, diff --git a/source/blender/nodes/composite/nodes/node_composite_transform.c b/source/blender/nodes/composite/nodes/node_composite_transform.c index a610d8a66c4..a7906cf3e46 100644 --- a/source/blender/nodes/composite/nodes/node_composite_transform.c +++ b/source/blender/nodes/composite/nodes/node_composite_transform.c @@ -89,7 +89,7 @@ CompBuf* node_composit_transform(CompBuf *cbuf, float x, float y, float angle, f mul_v3_m4v3(vec, mat, vec); - switch(filter_type) { + switch (filter_type) { case 0: neareast_interpolation(ibuf, obuf, vec[0], vec[1], i, j); break; diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c index 90c62bc47ac..9a9a27603dc 100644 --- a/source/blender/nodes/shader/node_shader_util.c +++ b/source/blender/nodes/shader/node_shader_util.c @@ -101,7 +101,7 @@ void ntreeShaderGetTexcoMode(bNodeTree *ntree, int r_mode, short *texco, int *mo /* note; sockets always exist for the given type! */ for (a=0, sock= node->outputs.first; sock; sock= sock->next, a++) { if (sock->flag & SOCK_IN_USE) { - switch(a) { + switch (a) { case GEOM_OUT_GLOB: *texco |= TEXCO_GLOB|NEED_UV; break; case GEOM_OUT_VIEW: @@ -137,7 +137,7 @@ void nodeShaderSynchronizeID(bNode *node, int copyto) for (a=0, sock= node->inputs.first; sock; sock= sock->next, a++) { if (!nodeSocketIsHidden(sock)) { if (copyto) { - switch(a) { + switch (a) { case MAT_IN_COLOR: copy_v3_v3(&ma->r, ((bNodeSocketValueRGBA*)sock->default_value)->value); break; case MAT_IN_SPEC: @@ -161,7 +161,7 @@ void nodeShaderSynchronizeID(bNode *node, int copyto) } } else { - switch(a) { + switch (a) { case MAT_IN_COLOR: copy_v3_v3(((bNodeSocketValueRGBA*)sock->default_value)->value, &ma->r); break; case MAT_IN_SPEC: diff --git a/source/blender/nodes/shader/nodes/node_shader_math.c b/source/blender/nodes/shader/nodes/node_shader_math.c index 44df496f5d6..db2b57ab51b 100644 --- a/source/blender/nodes/shader/nodes/node_shader_math.c +++ b/source/blender/nodes/shader/nodes/node_shader_math.c @@ -48,7 +48,7 @@ static bNodeSocketTemplate sh_node_math_out[]= { static void node_shader_exec_math(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) { - switch(node->custom1) { + switch (node->custom1) { case 0: /* Add */ out[0]->vec[0]= in[0]->vec[0] + in[1]->vec[0]; diff --git a/source/blender/nodes/texture/nodes/node_texture_math.c b/source/blender/nodes/texture/nodes/node_texture_math.c index 29d154df884..54c9645fac3 100644 --- a/source/blender/nodes/texture/nodes/node_texture_math.c +++ b/source/blender/nodes/texture/nodes/node_texture_math.c @@ -51,7 +51,7 @@ static void valuefn(float *out, TexParams *p, bNode *node, bNodeStack **in, shor float in0 = tex_input_value(in[0], p, thread); float in1 = tex_input_value(in[1], p, thread); - switch(node->custom1) { + switch (node->custom1) { case 0: /* Add */ *out= in0 + in1; diff --git a/source/blender/nodes/texture/nodes/node_texture_output.c b/source/blender/nodes/texture/nodes/node_texture_output.c index 2b899fde593..19ba0e88639 100644 --- a/source/blender/nodes/texture/nodes/node_texture_output.c +++ b/source/blender/nodes/texture/nodes/node_texture_output.c @@ -88,14 +88,14 @@ static void unique_name(bNode *node) i = node; while (i->prev) i = i->prev; - for (; i; i=i->next) { - if ( - i == node || - i->type != TEX_NODE_OUTPUT || - strcmp(name, ((TexNodeOutput*)(i->storage))->name) - ) + for ( ; i; i = i->next) { + if (i == node || + i->type != TEX_NODE_OUTPUT || + strcmp(name, ((TexNodeOutput*)(i->storage))->name)) + { continue; - + } + if (!new_name) { int len = strlen(name); if (len >= 4 && sscanf(name + len - 4, ".%03d", &suffix) == 1) { diff --git a/source/blender/quicktime/apple/quicktime_import.c b/source/blender/quicktime/apple/quicktime_import.c index a1f35935877..197c8cebca3 100644 --- a/source/blender/quicktime/apple/quicktime_import.c +++ b/source/blender/quicktime/apple/quicktime_import.c @@ -195,16 +195,19 @@ int anim_is_quicktime (const char *name) // don't let quicktime movie import handle these if ( BLI_testextensie(name, ".swf") || - BLI_testextensie(name, ".txt") || - BLI_testextensie(name, ".mpg") || - BLI_testextensie(name, ".avi") || // wouldnt be appropriate ;) - BLI_testextensie(name, ".tga") || - BLI_testextensie(name, ".png") || - BLI_testextensie(name, ".bmp") || - BLI_testextensie(name, ".jpg") || - BLI_testextensie(name, ".wav") || - BLI_testextensie(name, ".zip") || - BLI_testextensie(name, ".mp3")) return 0; + BLI_testextensie(name, ".txt") || + BLI_testextensie(name, ".mpg") || + BLI_testextensie(name, ".avi") || // wouldnt be appropriate ;) + BLI_testextensie(name, ".tga") || + BLI_testextensie(name, ".png") || + BLI_testextensie(name, ".bmp") || + BLI_testextensie(name, ".jpg") || + BLI_testextensie(name, ".wav") || + BLI_testextensie(name, ".zip") || + BLI_testextensie(name, ".mp3")) + { + return 0; + } if (QTIME_DEBUG) printf("qt: checking as movie: %s\n", name); @@ -582,13 +585,16 @@ int imb_is_a_quicktime (char *name) if (QTIME_DEBUG) printf("qt: checking as image %s\n", name); // don't let quicktime image import handle these - if ( BLI_testextensie(name, ".swf") || - BLI_testextensie(name, ".txt") || - BLI_testextensie(name, ".mpg") || - BLI_testextensie(name, ".wav") || - BLI_testextensie(name, ".mov") || // not as image, doesn't work - BLI_testextensie(name, ".avi") || - BLI_testextensie(name, ".mp3")) return 0; + if (BLI_testextensie(name, ".swf") || + BLI_testextensie(name, ".txt") || + BLI_testextensie(name, ".mpg") || + BLI_testextensie(name, ".wav") || + BLI_testextensie(name, ".mov") || // not as image, doesn't work + BLI_testextensie(name, ".avi") || + BLI_testextensie(name, ".mp3")) + { + return 0; + } sprintf(theFullPath, "%s", name); #ifdef __APPLE__ diff --git a/source/blender/render/intern/raytrace/bvh.h b/source/blender/render/intern/raytrace/bvh.h index ac86a65ff0b..946b64e98e5 100644 --- a/source/blender/render/intern/raytrace/bvh.h +++ b/source/blender/render/intern/raytrace/bvh.h @@ -88,9 +88,9 @@ static int rayobject_bb_intersect_test(const Isect *isec, const float *_bb) RE_RC_COUNT(isec->raycounter->bb.test); - if(t1x > t2y || t2x < t1y || t1x > t2z || t2x < t1z || t1y > t2z || t2y < t1z) return 0; - if(t2x < 0.0 || t2y < 0.0 || t2z < 0.0) return 0; - if(t1x > isec->dist || t1y > isec->dist || t1z > isec->dist) return 0; + if (t1x > t2y || t2x < t1y || t1x > t2z || t2x < t1z || t1y > t2z || t2y < t1z) return 0; + if (t2x < 0.0 || t2y < 0.0 || t2z < 0.0) return 0; + if (t1x > isec->dist || t1y > isec->dist || t1z > isec->dist) return 0; RE_RC_COUNT(isec->raycounter->bb.hit); return 1; @@ -113,10 +113,10 @@ template static void bvh_done(Tree *obj); template static void bvh_free(Tree *obj) { - if(obj->builder) + if (obj->builder) rtbuild_free(obj->builder); - if(obj->node_arena) + if (obj->node_arena) BLI_memarena_free(obj->node_arena); MEM_freeN(obj); @@ -125,7 +125,7 @@ static void bvh_free(Tree *obj) template static void bvh_bb(Tree *obj, float *min, float *max) { - if(obj->root) + if (obj->root) bvh_node_merge_bb(obj->root, min, max); } @@ -149,12 +149,10 @@ template static inline int bvh_node_hit_test(Node *node, Isect *isec template static inline void bvh_node_merge_bb(Node *node, float *min, float *max) { - if(is_leaf(node)) - { + if (is_leaf(node)) { RE_rayobject_merge_bb( (RayObject*)node, min, max); } - else - { + else { DO_MIN(node->bb , min); DO_MAX(node->bb+3, max); } @@ -173,26 +171,22 @@ static int bvh_node_stack_raycast(Node *root, Isect *isec) Node *stack[MAX_STACK_SIZE]; int hit = 0, stack_pos = 0; - if(!TEST_ROOT && !is_leaf(root)) + if (!TEST_ROOT && !is_leaf(root)) bvh_node_push_childs(root, isec, stack, stack_pos); else stack[stack_pos++] = root; - while(stack_pos) - { + while (stack_pos) { Node *node = stack[--stack_pos]; - if(!is_leaf(node)) - { - if(bvh_node_hit_test(node,isec)) - { + if (!is_leaf(node)) { + if (bvh_node_hit_test(node,isec)) { bvh_node_push_childs(node, isec, stack, stack_pos); assert(stack_pos <= MAX_STACK_SIZE); } } - else - { + else { hit |= RE_rayobject_intersect( (RayObject*)node, isec); - if(SHADOW && hit) return hit; + if (SHADOW && hit) return hit; } } return hit; @@ -212,11 +206,9 @@ static int bvh_node_stack_raycast_simd(Node *root, Isect *isec) int hit = 0, stack_pos = 0; - if(!TEST_ROOT) - { - if(!is_leaf(root)) - { - if(!is_leaf(root->child)) + if (!TEST_ROOT) { + if (!is_leaf(root)) { + if (!is_leaf(root->child)) bvh_node_push_childs(root, isec, stack, stack_pos); else return RE_rayobject_intersect( (RayObject*)root->child, isec); @@ -224,19 +216,16 @@ static int bvh_node_stack_raycast_simd(Node *root, Isect *isec) else return RE_rayobject_intersect( (RayObject*)root, isec); } - else - { - if(!is_leaf(root)) + else { + if (!is_leaf(root)) stack[stack_pos++] = root; else return RE_rayobject_intersect( (RayObject*)root, isec); } - while(true) - { + while (true) { //Use SIMD 4 - if(stack_pos >= 4) - { + if (stack_pos >= 4) { __m128 t_bb[6]; Node * t_node[4]; @@ -286,41 +275,33 @@ static int bvh_node_stack_raycast_simd(Node *root, Isect *isec) RE_RC_COUNT(isec->raycounter->simd_bb.test); int res = test_bb_group4( t_bb, isec ); - for(int i=0; i<4; i++) - if(res & (1<raycounter->simd_bb.hit); - if(!is_leaf(t_node[i])) - { - for(Node *t=t_node[i]; t; t=t->sibling) - { + if (!is_leaf(t_node[i])) { + for (Node *t = t_node[i]; t; t = t->sibling) { assert(stack_pos < MAX_STACK_SIZE); stack[stack_pos++] = t; } } - else - { + else { hit |= RE_rayobject_intersect( (RayObject*)t_node[i], isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } } } - else if(stack_pos > 0) - { + else if (stack_pos > 0) { Node *node = stack[--stack_pos]; assert(!is_leaf(node)); - if(bvh_node_hit_test(node,isec)) - { - if(!is_leaf(node->child)) - { + if (bvh_node_hit_test(node,isec)) { + if (!is_leaf(node->child)) { bvh_node_push_childs(node, isec, stack, stack_pos); assert(stack_pos <= MAX_STACK_SIZE); } - else - { + else { hit |= RE_rayobject_intersect( (RayObject*)node->child, isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } } } @@ -338,41 +319,41 @@ template static int bvh_node_raycast(Node *node, Isect *isec) { int hit = 0; - if(bvh_test_node(node, isec)) + if (bvh_test_node(node, isec)) { - if(isec->idot_axis[node->split_axis] > 0.0f) + if (isec->idot_axis[node->split_axis] > 0.0f) { int i; for(i=0; ichild[i])) + if (!is_leaf(node->child[i])) { - if(node->child[i] == 0) break; + if (node->child[i] == 0) break; hit |= bvh_node_raycast(node->child[i], isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } else { hit |= RE_rayobject_intersect( (RayObject*)node->child[i], isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } } else { int i; for(i=BVH_NCHILDS-1; i>=0; i--) - if(!is_leaf(node->child[i])) + if (!is_leaf(node->child[i])) { - if(node->child[i]) + if (node->child[i]) { hit |= dfs_raycast(node->child[i], isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } } else { hit |= RE_rayobject_intersect( (RayObject*)node->child[i], isec); - if(hit && isec->mode == RE_RAY_SHADOW) return hit; + if (hit && isec->mode == RE_RAY_SHADOW) return hit; } } } @@ -385,28 +366,22 @@ void bvh_dfs_make_hint(Node *node, LCTSHint *hint, int reserve_space, HintObject { assert( hint->size + reserve_space + 1 <= RE_RAY_LCTS_MAX_SIZE ); - if(is_leaf(node)) - { + if (is_leaf(node)) { hint->stack[hint->size++] = (RayObject*)node; } - else - { + else { int childs = count_childs(node); - if(hint->size + reserve_space + childs <= RE_RAY_LCTS_MAX_SIZE) - { + if (hint->size + reserve_space + childs <= RE_RAY_LCTS_MAX_SIZE) { int result = hint_test_bb(hintObject, node->bb, node->bb+3); - if(result == HINT_RECURSE) - { + if (result == HINT_RECURSE) { /* We are 100% sure the ray will be pass inside this node */ bvh_dfs_make_hint_push_siblings(node->child, hint, reserve_space, hintObject); } - else if(result == HINT_ACCEPT) - { + else if (result == HINT_ACCEPT) { hint->stack[hint->size++] = (RayObject*)node; } } - else - { + else { hint->stack[hint->size++] = (RayObject*)node; } } diff --git a/source/blender/render/intern/raytrace/rayobject.cpp b/source/blender/render/intern/raytrace/rayobject.cpp index b2f85e8429d..a2773ba218d 100644 --- a/source/blender/render/intern/raytrace/rayobject.cpp +++ b/source/blender/render/intern/raytrace/rayobject.cpp @@ -60,13 +60,11 @@ MALWAYS_INLINE RayObject* rayface_from_coords(RayFace *rayface, void *ob, void * copy_v3_v3(rayface->v2, v2); copy_v3_v3(rayface->v3, v3); - if (v4) - { + if (v4) { copy_v3_v3(rayface->v4, v4); rayface->quad = 1; } - else - { + else { rayface->quad = 0; } @@ -77,8 +75,7 @@ MALWAYS_INLINE void rayface_from_vlak(RayFace *rayface, ObjectInstanceRen *obi, { rayface_from_coords(rayface, obi, vlr, vlr->v1->co, vlr->v2->co, vlr->v3->co, vlr->v4 ? vlr->v4->co : NULL); - if (obi->transform_primitives) - { + if (obi->transform_primitives) { mul_m4_v3(obi->mat, rayface->v1); mul_m4_v3(obi->mat, rayface->v2); mul_m4_v3(obi->mat, rayface->v3); @@ -295,13 +292,11 @@ MALWAYS_INLINE int intersect_rayface(RayObject *hit_obj, RayFace *face, Isect *i return 0; /* check if we should intersect this face */ - if (is->check == RE_CHECK_VLR_RENDER) - { + if (is->check == RE_CHECK_VLR_RENDER) { if (vlr_check_intersect(is, (ObjectInstanceRen*)face->ob, (VlakRen*)face->face) == 0) return 0; } - else if (is->check == RE_CHECK_VLR_NON_SOLID_MATERIAL) - { + else if (is->check == RE_CHECK_VLR_NON_SOLID_MATERIAL) { if (vlr_check_intersect(is, (ObjectInstanceRen*)face->ob, (VlakRen*)face->face) == 0) return 0; if (vlr_check_intersect_solid(is, (ObjectInstanceRen*)face->ob, (VlakRen*)face->face) == 0) @@ -322,27 +317,25 @@ MALWAYS_INLINE int intersect_rayface(RayObject *hit_obj, RayFace *face, Isect *i /* when a shadow ray leaves a face, it can be little outside the edges * of it, causing intersection to be detected in its neighbor face */ - if (is->skip & RE_SKIP_VLR_NEIGHBOUR) - { - if (dist < 0.1f && is->orig.ob == face->ob) - { + if (is->skip & RE_SKIP_VLR_NEIGHBOUR) { + if (dist < 0.1f && is->orig.ob == face->ob) { VlakRen * a = (VlakRen*)is->orig.face; VlakRen * b = (VlakRen*)face->face; /* so there's a shared edge or vertex, let's intersect ray with * face itself, if that's true we can safely return 1, otherwise * we assume the intersection is invalid, 0 */ - if (a->v1==b->v1 || a->v2==b->v1 || a->v3==b->v1 || a->v4==b->v1 - || a->v1==b->v2 || a->v2==b->v2 || a->v3==b->v2 || a->v4==b->v2 - || a->v1==b->v3 || a->v2==b->v3 || a->v3==b->v3 || a->v4==b->v3 - || (b->v4 && (a->v1==b->v4 || a->v2==b->v4 || a->v3==b->v4 || a->v4==b->v4))) { + if (a->v1==b->v1 || a->v2==b->v1 || a->v3==b->v1 || a->v4==b->v1 || + a->v1==b->v2 || a->v2==b->v2 || a->v3==b->v2 || a->v4==b->v2 || + a->v1==b->v3 || a->v2==b->v3 || a->v3==b->v3 || a->v4==b->v3 || + (b->v4 && (a->v1==b->v4 || a->v2==b->v4 || a->v3==b->v4 || a->v4==b->v4))) + { /* create RayFace from original face, transformed if necessary */ RayFace origface; ObjectInstanceRen *ob= (ObjectInstanceRen*)is->orig.ob; rayface_from_vlak(&origface, ob, (VlakRen*)is->orig.face); - if (!isec_tri_quad_neighbour(is->start, is->dir, &origface)) - { + if (!isec_tri_quad_neighbour(is->start, is->dir, &origface)) { return 0; } } @@ -375,8 +368,7 @@ int RE_rayobject_raycast(RayObject *r, Isect *isec) RE_RC_COUNT(isec->raycounter->raycast.test); /* setup vars used on raycast */ - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) { isec->idot_axis[i] = 1.0f / isec->dir[i]; isec->bv_index[2*i] = isec->idot_axis[i] < 0.0 ? 1 : 0; @@ -388,12 +380,10 @@ int RE_rayobject_raycast(RayObject *r, Isect *isec) #ifdef RT_USE_LAST_HIT /* last hit heuristic */ - if (isec->mode==RE_RAY_SHADOW && isec->last_hit) - { + if (isec->mode==RE_RAY_SHADOW && isec->last_hit) { RE_RC_COUNT(isec->raycounter->rayshadow_last_hit.test); - if (RE_rayobject_intersect(isec->last_hit, isec)) - { + if (RE_rayobject_intersect(isec->last_hit, isec)) { RE_RC_COUNT(isec->raycounter->raycast.hit); RE_RC_COUNT(isec->raycounter->rayshadow_last_hit.hit); return 1; @@ -405,8 +395,7 @@ int RE_rayobject_raycast(RayObject *r, Isect *isec) isec->hit_hint = 0; #endif - if (RE_rayobject_intersect(r, isec)) - { + if (RE_rayobject_intersect(r, isec)) { RE_RC_COUNT(isec->raycounter->raycast.hit); #ifdef RT_USE_HINT @@ -420,12 +409,10 @@ int RE_rayobject_raycast(RayObject *r, Isect *isec) int RE_rayobject_intersect(RayObject *r, Isect *i) { - if (RE_rayobject_isRayFace(r)) - { + if (RE_rayobject_isRayFace(r)) { return intersect_rayface(r, (RayFace*) RE_rayobject_align(r), i); } - else if (RE_rayobject_isVlakPrimitive(r)) - { + else if (RE_rayobject_isVlakPrimitive(r)) { //TODO optimize (useless copy to RayFace to avoid duplicate code) VlakPrimitive *face = (VlakPrimitive*) RE_rayobject_align(r); RayFace nface; @@ -433,8 +420,7 @@ int RE_rayobject_intersect(RayObject *r, Isect *i) return intersect_rayface(r, &nface, i); } - else if (RE_rayobject_isRayAPI(r)) - { + else if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align(r); return r->api->raycast(r, i); } @@ -466,12 +452,10 @@ void RE_rayobject_free(RayObject *r) float RE_rayobject_cost(RayObject *r) { - if (RE_rayobject_isRayFace(r) || RE_rayobject_isVlakPrimitive(r)) - { + if (RE_rayobject_isRayFace(r) || RE_rayobject_isVlakPrimitive(r)) { return 1.0f; } - else if (RE_rayobject_isRayAPI(r)) - { + else if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align(r); return r->api->cost(r); } @@ -485,8 +469,7 @@ float RE_rayobject_cost(RayObject *r) void RE_rayobject_merge_bb(RayObject *r, float *min, float *max) { - if (RE_rayobject_isRayFace(r)) - { + if (RE_rayobject_isRayFace(r)) { RayFace *face = (RayFace*) RE_rayobject_align(r); DO_MINMAX(face->v1, min, max); @@ -494,8 +477,7 @@ void RE_rayobject_merge_bb(RayObject *r, float *min, float *max) DO_MINMAX(face->v3, min, max); if (RE_rayface_isQuad(face)) DO_MINMAX(face->v4, min, max); } - else if (RE_rayobject_isVlakPrimitive(r)) - { + else if (RE_rayobject_isVlakPrimitive(r)) { VlakPrimitive *face = (VlakPrimitive*) RE_rayobject_align(r); RayFace nface; rayface_from_vlak(&nface, face->ob, face->face); @@ -505,8 +487,7 @@ void RE_rayobject_merge_bb(RayObject *r, float *min, float *max) DO_MINMAX(nface.v3, min, max); if (RE_rayface_isQuad(&nface)) DO_MINMAX(nface.v4, min, max); } - else if (RE_rayobject_isRayAPI(r)) - { + else if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align(r); r->api->bb(r, min, max); } @@ -518,12 +499,10 @@ void RE_rayobject_merge_bb(RayObject *r, float *min, float *max) void RE_rayobject_hint_bb(RayObject *r, RayHint *hint, float *min, float *max) { - if (RE_rayobject_isRayFace(r) || RE_rayobject_isVlakPrimitive(r)) - { + if (RE_rayobject_isRayFace(r) || RE_rayobject_isVlakPrimitive(r)) { return; } - else if (RE_rayobject_isRayAPI(r)) - { + else if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align(r); return r->api->hint_bb(r, hint, min, max); } @@ -543,8 +522,7 @@ int RE_rayobjectcontrol_test_break(RayObjectControl *control) void RE_rayobject_set_control(RayObject *r, void *data, RE_rayobjectcontrol_test_break_callback test_break) { - if (RE_rayobject_isRayAPI(r)) - { + if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align(r); r->control.data = data; r->control.test_break = test_break; diff --git a/source/blender/render/intern/raytrace/rayobject_blibvh.cpp b/source/blender/render/intern/raytrace/rayobject_blibvh.cpp index 165b62cfbe4..d0036fd8556 100644 --- a/source/blender/render/intern/raytrace/rayobject_blibvh.cpp +++ b/source/blender/render/intern/raytrace/rayobject_blibvh.cpp @@ -102,8 +102,7 @@ static void bvh_callback(void *userdata, int index, const BVHTreeRay *UNUSED(ray Isect *isec = data->isec; RayObject *face = data->leafs[index]; - if (RE_rayobject_intersect(face,isec)) - { + if (RE_rayobject_intersect(face, isec)) { hit->index = index; if (isec->mode == RE_RAY_SHADOW) diff --git a/source/blender/render/intern/raytrace/rayobject_hint.h b/source/blender/render/intern/raytrace/rayobject_hint.h index 3689aa8ac17..37d9edb035d 100644 --- a/source/blender/render/intern/raytrace/rayobject_hint.h +++ b/source/blender/render/intern/raytrace/rayobject_hint.h @@ -44,7 +44,7 @@ struct HintBB inline int hint_test_bb(HintBB *obj, float *Nmin, float *Nmax) { - if(bb_fits_inside( Nmin, Nmax, obj->bb, obj->bb+3 ) ) + if (bb_fits_inside( Nmin, Nmax, obj->bb, obj->bb+3 ) ) return HINT_RECURSE; else return HINT_ACCEPT; diff --git a/source/blender/render/intern/raytrace/rayobject_instance.cpp b/source/blender/render/intern/raytrace/rayobject_instance.cpp index 2e803ce0fd3..ce88bac1587 100644 --- a/source/blender/render/intern/raytrace/rayobject_instance.cpp +++ b/source/blender/render/intern/raytrace/rayobject_instance.cpp @@ -99,8 +99,7 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec) int changed = 0, i, res; // TODO - this is disabling self intersection on instances - if (isec->orig.ob == obj->ob && obj->ob) - { + if (isec->orig.ob == obj->ob && obj->ob) { changed = 1; isec->orig.ob = obj->target_ob; } @@ -117,8 +116,7 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec) isec->dist *= normalize_v3(isec->dir); // update idot_axis and bv_index - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) { isec->idot_axis[i] = 1.0f / isec->dir[i]; isec->bv_index[2*i] = isec->idot_axis[i] < 0.0 ? 1 : 0; @@ -132,12 +130,10 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec) res = RE_rayobject_intersect(obj->target, isec); // map dist into original coordinate space - if (res == 0) - { + if (res == 0) { isec->dist = dist; } - else - { + else { // note we don't just multiply dist, because of possible // non-uniform scaling in the transform matrix float vec[3]; @@ -165,8 +161,7 @@ static int RE_rayobject_instance_intersect(RayObject *o, Isect *isec) isec->orig.ob = obj->ob; // restore bv_index - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) { isec->bv_index[2*i] = isec->idot_axis[i] < 0.0 ? 1 : 0; isec->bv_index[2*i+1] = 1 - isec->bv_index[2*i]; @@ -202,8 +197,7 @@ static void RE_rayobject_instance_bb(RayObject *o, float *min, float *max) RE_rayobject_merge_bb(obj->target, m, M); //There must be a faster way than rotating all the 8 vertexs of the BB - for (i=0; i<8; i++) - { + for (i=0; i<8; i++) { for (j=0; j<3; j++) t[j] = i&(1<target2global, t); DO_MINMAX(t, min, max); diff --git a/source/blender/render/intern/raytrace/rayobject_octree.cpp b/source/blender/render/intern/raytrace/rayobject_octree.cpp index ea1d5c2573c..eef2fcc51c9 100644 --- a/source/blender/render/intern/raytrace/rayobject_octree.cpp +++ b/source/blender/render/intern/raytrace/rayobject_octree.cpp @@ -305,7 +305,7 @@ static void ocwrite(Octree *oc, RayFace *face, int quad, short x, short y, short no= (Node *)br->b[oc5]; if (no==NULL) br->b[oc5]= (Branch *)(no= addnode(oc)); - while(no->next) no= no->next; + while (no->next) no = no->next; a= 0; if (no->v[7]) { /* node full */ @@ -313,7 +313,7 @@ static void ocwrite(Octree *oc, RayFace *face, int quad, short x, short y, short no= no->next; } else { - while(no->v[a]!=NULL) a++; + while (no->v[a] != NULL) a++; } no->v[a]= (RayFace*) RE_rayobject_align(face); @@ -383,7 +383,7 @@ static void d2dda(Octree *oc, short b1, short b2, short c1, short c2, char *ocfa x=ocx1; y=ocy1; labda= MIN2(labdax, labday); - while(TRUE) { + while (TRUE) { if (x<0 || y<0 || x>=oc->ocres || y>=oc->ocres); else ocface[oc->ocres*x+y]= 1; @@ -421,7 +421,7 @@ static void filltriangle(Octree *oc, short c1, short c2, char *ocface, short *oc for (y=ocmin[c2];y<=ocmax[c2];y++) { if (ocface[a+y]) { y++; - while(ocface[a+y] && y!=ocmax[c2]) y++; + while (ocface[a+y] && y!=ocmax[c2]) y++; for (y1=ocmax[c2];y1>y;y1--) { if (ocface[a+y1]) { for (y2=y;y2<=y1;y2++) ocface[a+y2]=1; @@ -449,7 +449,7 @@ static void RE_rayobject_octree_free(RayObject *tree) if (oc->adrbranch) { int a= 0; - while(oc->adrbranch[a]) { + while (oc->adrbranch[a]) { MEM_freeN(oc->adrbranch[a]); oc->adrbranch[a]= NULL; a++; @@ -461,7 +461,7 @@ static void RE_rayobject_octree_free(RayObject *tree) if (oc->adrnode) { int a= 0; - while(oc->adrnode[a]) { + while (oc->adrnode[a]) { MEM_freeN(oc->adrnode[a]); oc->adrnode[a]= NULL; a++; @@ -658,8 +658,7 @@ static void RE_rayobject_octree_done(RayObject *tree) oc->ocsize= sqrt(t00*t00+t01*t01+t02*t02); /* global, max size octree */ - for (c=0; cro_nodes_used; c++) - { + for (c=0; cro_nodes_used; c++) { octree_fill_rayface(oc, oc->ro_nodes[c]); } @@ -683,42 +682,41 @@ static void RE_rayobject_octree_bb(RayObject *tree, float *min, float *max) /* check all faces in this node */ static int testnode(Octree *UNUSED(oc), Isect *is, Node *no, OcVal ocval) { - short nr=0; + short nr = 0; /* return on any first hit */ - if (is->mode==RE_RAY_SHADOW) { + if (is->mode == RE_RAY_SHADOW) { - for (; no; no = no->next) - for (nr=0; nr<8; nr++) - { - RayFace *face = no->v[nr]; - OcVal *ov = no->ov+nr; - - if (!face) break; - - if ( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) ) - { - if ( RE_rayobject_intersect( RE_rayobject_unalignRayFace(face),is) ) - return 1; + for ( ; no; no = no->next) { + for (nr = 0; nr < 8; nr++) { + RayFace *face = no->v[nr]; + OcVal *ov = no->ov + nr; + + if (!face) break; + + if ( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) ) { + if ( RE_rayobject_intersect( RE_rayobject_unalignRayFace(face),is) ) + return 1; + } } } } - else - { /* else mirror or glass or shadowtra, return closest face */ + else { + /* else mirror or glass or shadowtra, return closest face */ int found= 0; - for (; no; no = no->next) - for (nr=0; nr<8; nr++) - { - RayFace *face = no->v[nr]; - OcVal *ov = no->ov+nr; - - if (!face) break; - - if ( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) ) - { - if ( RE_rayobject_intersect( RE_rayobject_unalignRayFace(face),is) ) - found= 1; + for ( ; no; no = no->next) { + for (nr = 0; nr < 8; nr++) { + RayFace *face = no->v[nr]; + OcVal *ov = no->ov + nr; + + if (!face) break; + + if ( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) ) { + if ( RE_rayobject_intersect( RE_rayobject_unalignRayFace(face),is) ) { + found = 1; + } + } } } @@ -1003,7 +1001,7 @@ static int RE_rayobject_octree_intersect(RayObject *tree, Isect *is) /* this loop has been constructed to make sure the first and last node of ray * are always included, even when ddalabda==1.0f or larger */ - while(TRUE) { + while (TRUE) { no= ocread(oc, xo, yo, zo); if (no) { diff --git a/source/blender/render/intern/raytrace/rayobject_qbvh.cpp b/source/blender/render/intern/raytrace/rayobject_qbvh.cpp index 2edf1593e99..2d0abba9a75 100644 --- a/source/blender/render/intern/raytrace/rayobject_qbvh.cpp +++ b/source/blender/render/intern/raytrace/rayobject_qbvh.cpp @@ -71,8 +71,7 @@ void bvh_done(QBVHTree *obj) //TODO do this in 1 pass (half memory usage during building) VBVHNode *root = BuildBinaryVBVH(arena1, &obj->rayobj.control).transform(obj->builder); - if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) - { + if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) { BLI_memarena_free(arena1); BLI_memarena_free(arena2); return; diff --git a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp index 54901db8bdd..ad74159fd3b 100644 --- a/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp +++ b/source/blender/render/intern/raytrace/rayobject_rtbuild.cpp @@ -74,8 +74,7 @@ RTBuilder* rtbuild_create(int size) builder->primitives.begin = builder->primitives.end = memblock; builder->primitives.maxsize = size; - for (int i=0; i<3; i++) - { + for (int i=0; i<3; i++) { builder->sorted_begin[i] = (RTBuilder::Object**)MEM_mallocN( sizeof(RTBuilder::Object*)*size,"RTBuilder.sorted_objects"); builder->sorted_end[i] = builder->sorted_begin[i]; } @@ -124,8 +123,7 @@ void rtbuild_add(RTBuilder *b, RayObject *o) b->primitives.end->obj = o; b->primitives.end->cost = RE_rayobject_cost(o); - for (int i=0; i<3; i++) - { + for (int i=0; i<3; i++) { *(b->sorted_end[i]) = b->primitives.end; b->sorted_end[i]++; } @@ -158,8 +156,7 @@ static void object_sort(Item *begin, Item *end, int axis) void rtbuild_done(RTBuilder *b, RayObjectControl* ctrl) { for (int i=0; i<3; i++) - if (b->sorted_begin[i]) - { + if (b->sorted_begin[i]) { if (RE_rayobjectcontrol_test_break(ctrl)) break; object_sort( b->sorted_begin[i], b->sorted_end[i], i ); } @@ -175,13 +172,11 @@ RTBuilder* rtbuild_get_child(RTBuilder *b, int child, RTBuilder *tmp) rtbuild_init( tmp ); for (int i=0; i<3; i++) - if (b->sorted_begin[i]) - { + if (b->sorted_begin[i]) { tmp->sorted_begin[i] = b->sorted_begin[i] + b->child_offset[child ]; tmp->sorted_end [i] = b->sorted_begin[i] + b->child_offset[child+1]; } - else - { + else { tmp->sorted_begin[i] = 0; tmp->sorted_end [i] = 0; } @@ -191,8 +186,7 @@ RTBuilder* rtbuild_get_child(RTBuilder *b, int child, RTBuilder *tmp) void rtbuild_calc_bb(RTBuilder *b) { - if (b->bb[0] == 1.0e30f) - { + if (b->bb[0] == 1.0e30f) { for (RTBuilder::Object **index = b->sorted_begin[0]; index != b->sorted_end[0]; index++) RE_rayobject_merge_bb( (*index)->obj , b->bb, b->bb+3); } @@ -337,30 +331,25 @@ int rtbuild_heuristic_object_split(RTBuilder *b, int nchilds) assert(size > 1); int baxis = -1, boffset = 0; - if (size > nchilds) - { + if (size > nchilds) { float bcost = FLT_MAX; baxis = -1, boffset = size/2; SweepCost *sweep = (SweepCost*)MEM_mallocN( sizeof(SweepCost)*size, "RTBuilder.HeuristicSweep" ); - for (int axis=0; axis<3; axis++) - { + for (int axis=0; axis<3; axis++) { SweepCost sweep_left; RTBuilder::Object **obj = b->sorted_begin[axis]; // float right_cost = 0; - for (int i=size-1; i>=0; i--) - { - if (i == size-1) - { + for (int i=size-1; i>=0; i--) { + if (i == size-1) { copy_v3_v3(sweep[i].bb, obj[i]->bb); copy_v3_v3(sweep[i].bb+3, obj[i]->bb+3); sweep[i].cost = obj[i]->cost; } - else - { + else { sweep[i].bb[0] = MIN2(obj[i]->bb[0], sweep[i+1].bb[0]); sweep[i].bb[1] = MIN2(obj[i]->bb[1], sweep[i+1].bb[1]); sweep[i].bb[2] = MIN2(obj[i]->bb[2], sweep[i+1].bb[2]); @@ -382,8 +371,7 @@ int rtbuild_heuristic_object_split(RTBuilder *b, int nchilds) // right_cost -= obj[0]->cost; if (right_cost < 0) right_cost = 0; - for (int i=1; i bcost) break; //No way we can find a better heuristic in this axis assert(hcost >= 0); - if ( hcost < bcost - || (hcost == bcost && axis < baxis)) //this makes sure the tree built is the same whatever is the order of the sorting axis - { + // this makes sure the tree built is the same whatever is the order of the sorting axis + if ( hcost < bcost || (hcost == bcost && axis < baxis)) { bcost = hcost; baxis = axis; boffset = i; @@ -423,13 +410,11 @@ int rtbuild_heuristic_object_split(RTBuilder *b, int nchilds) MEM_freeN(sweep); } - else if (size == 2) - { + else if (size == 2) { baxis = 0; boffset = 1; } - else if (size == 1) - { + else if (size == 1) { b->child_offset[0] = 0; b->child_offset[1] = 1; return 1; @@ -500,15 +485,13 @@ int bb_largest_axis(float *min, float *max) sub[0] = max[0]-min[0]; sub[1] = max[1]-min[1]; sub[2] = max[2]-min[2]; - if (sub[0] > sub[1]) - { + if (sub[0] > sub[1]) { if (sub[0] > sub[2]) return 0; else return 2; } - else - { + else { if (sub[1] > sub[2]) return 1; else diff --git a/source/blender/render/intern/raytrace/rayobject_svbvh.cpp b/source/blender/render/intern/raytrace/rayobject_svbvh.cpp index 4c2099eb1e3..cbec02ab798 100644 --- a/source/blender/render/intern/raytrace/rayobject_svbvh.cpp +++ b/source/blender/render/intern/raytrace/rayobject_svbvh.cpp @@ -79,12 +79,10 @@ void bvh_done(SVBVHTree *obj) BLI_memarena_use_align(arena2, 16); //Build and optimize the tree - if (0) - { + if (0) { VBVHNode *root = BuildBinaryVBVH(arena1, &obj->rayobj.control).transform(obj->builder); - if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) - { + if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) { BLI_memarena_free(arena1); BLI_memarena_free(arena2); return; @@ -100,14 +98,12 @@ void bvh_done(SVBVHTree *obj) obj->root = Reorganize_SVBVH(arena2).transform(root); } - else - { + else { //Finds the optimal packing of this tree using a given cost model //TODO this uses quite a lot of memory, find ways to reduce memory usage during building OVBVHNode *root = BuildBinaryVBVH(arena1,&obj->rayobj.control).transform(obj->builder); - if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) - { + if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) { BLI_memarena_free(arena1); BLI_memarena_free(arena2); return; diff --git a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp index e82623f1da9..26a99794362 100644 --- a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp +++ b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp @@ -87,11 +87,9 @@ void bvh_done(VBVHTree *obj) BLI_memarena_use_malloc(arena1); //Build and optimize the tree - if (1) - { + if (1) { VBVHNode *root = BuildBinaryVBVH(arena1,&obj->rayobj.control).transform(obj->builder); - if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) - { + if (RE_rayobjectcontrol_test_break(&obj->rayobj.control)) { BLI_memarena_free(arena1); return; } @@ -108,8 +106,7 @@ void bvh_done(VBVHTree *obj) else obj->root = NULL; } - else - { + else { /* TODO MemArena *arena2 = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "vbvh arena2"); @@ -159,8 +156,7 @@ void bvh_hint_bb(Tree *tree, LCTSHint *hint, float *UNUSED(min), float *UNUSED(m void bfree(VBVHTree *tree) { - if (tot_pushup + tot_pushdown + tot_hints + tot_moves) - { + if (tot_pushup + tot_pushdown + tot_hints + tot_moves) { if (G.debug & G_DEBUG) { printf("tot pushups: %d\n", tot_pushup); printf("tot pushdowns: %d\n", tot_pushdown); diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h index 68b2b22ecdd..1930e5bb32b 100644 --- a/source/blender/render/intern/raytrace/reorganize.h +++ b/source/blender/render/intern/raytrace/reorganize.h @@ -66,17 +66,15 @@ void reorganize_find_fittest_parent(Node *tree, Node *node, std::pair q; q.push(tree); - while(!q.empty()) - { + while (!q.empty()) { Node *parent = q.front(); q.pop(); - if(parent == node) continue; - if(node_fits_inside(node, parent) && RE_rayobject_isAligned(parent->child) ) - { + if (parent == node) continue; + if (node_fits_inside(node, parent) && RE_rayobject_isAligned(parent->child) ) { float pcost = bb_area(parent->bb, parent->bb+3); cost = std::min( cost, std::make_pair(pcost,parent) ); - for(Node *child = parent->child; child; child = child->sibling) + for (Node *child = parent->child; child; child = child->sibling) q.push(child); } } @@ -89,28 +87,23 @@ void reorganize(Node *root) std::queue q; q.push(root); - while(!q.empty()) - { + while (!q.empty()) { Node * node = q.front(); q.pop(); - if( RE_rayobject_isAligned(node->child) ) - { - for(Node **prev = &node->child; *prev; ) - { + if (RE_rayobject_isAligned(node->child)) { + for (Node **prev = &node->child; *prev; ) { assert( RE_rayobject_isAligned(*prev) ); q.push(*prev); std::pair best(FLT_MAX, root); reorganize_find_fittest_parent( root, *prev, best ); - if(best.second == node) - { + if (best.second == node) { //Already inside the fitnest BB prev = &(*prev)->sibling; } - else - { + else { Node *tmp = *prev; *prev = (*prev)->sibling; @@ -123,8 +116,7 @@ void reorganize(Node *root) } } - if(node != root) - { + if (node != root) { } } } @@ -137,29 +129,24 @@ void reorganize(Node *root) template void remove_useless(Node *node, Node **new_node) { - if( RE_rayobject_isAligned(node->child) ) - { + if ( RE_rayobject_isAligned(node->child) ) { - for(Node **prev = &node->child; *prev; ) - { + for (Node **prev = &node->child; *prev; ) { Node *next = (*prev)->sibling; remove_useless(*prev, prev); - if(*prev == NULL) + if (*prev == NULL) *prev = next; - else - { + else { (*prev)->sibling = next; prev = &((*prev)->sibling); } } } - if(node->child) - { - if(RE_rayobject_isAligned(node->child) && node->child->sibling == 0) + if (node->child) { + if (RE_rayobject_isAligned(node->child) && node->child->sibling == 0) *new_node = node->child; } - else if(node->child == NULL) - { + else if (node->child == NULL) { *new_node = NULL; } } @@ -171,18 +158,16 @@ void remove_useless(Node *node, Node **new_node) template void pushup(Node *parent) { - if(is_leaf(parent)) return; + if (is_leaf(parent)) return; float p_area = bb_area(parent->bb, parent->bb+3); Node **prev = &parent->child; - for(Node *child = parent->child; RE_rayobject_isAligned(child) && child; ) - { + for (Node *child = parent->child; RE_rayobject_isAligned(child) && child; ) { const float c_area = bb_area(child->bb, child->bb + 3); const int nchilds = count_childs(child); float original_cost = ((p_area != 0.0f)? (c_area / p_area)*nchilds: 1.0f) + 1; float flatten_cost = nchilds; - if(flatten_cost < original_cost && nchilds >= 2) - { + if (flatten_cost < original_cost && nchilds >= 2) { append_sibling(child, child->child); child = child->sibling; *prev = child; @@ -192,15 +177,14 @@ void pushup(Node *parent) // child = *prev; tot_pushup++; } - else - { + else { *prev = child; prev = &(*prev)->sibling; child = *prev; } } - for(Node *child = parent->child; RE_rayobject_isAligned(child) && child; child = child->sibling) + for (Node *child = parent->child; RE_rayobject_isAligned(child) && child; child = child->sibling) pushup(child); } @@ -210,30 +194,27 @@ void pushup(Node *parent) template void pushup_simd(Node *parent) { - if(is_leaf(parent)) return; + if (is_leaf(parent)) return; int n = count_childs(parent); Node **prev = &parent->child; - for(Node *child = parent->child; RE_rayobject_isAligned(child) && child; ) - { + for (Node *child = parent->child; RE_rayobject_isAligned(child) && child; ) { int cn = count_childs(child); - if(cn-1 <= (SSize - (n%SSize) ) % SSize && RE_rayobject_isAligned(child->child) ) - { + if (cn-1 <= (SSize - (n%SSize) ) % SSize && RE_rayobject_isAligned(child->child) ) { n += (cn - 1); append_sibling(child, child->child); child = child->sibling; *prev = child; } - else - { + else { *prev = child; prev = &(*prev)->sibling; child = *prev; } } - for(Node *child = parent->child; RE_rayobject_isAligned(child) && child; child = child->sibling) + for (Node *child = parent->child; RE_rayobject_isAligned(child) && child; child = child->sibling) pushup_simd(child); } @@ -248,19 +229,17 @@ void pushdown(Node *parent) Node **s_child = &parent->child; Node * child = parent->child; - while(child && RE_rayobject_isAligned(child)) - { + while (child && RE_rayobject_isAligned(child)) { Node *next = child->sibling; Node **next_s_child = &child->sibling; //assert(bb_fits_inside(parent->bb, parent->bb+3, child->bb, child->bb+3)); - for(Node *i = parent->child; RE_rayobject_isAligned(i) && i; i = i->sibling) - if(child != i && bb_fits_inside(i->bb, i->bb+3, child->bb, child->bb+3) && RE_rayobject_isAligned(i->child)) - { + for (Node *i = parent->child; RE_rayobject_isAligned(i) && i; i = i->sibling) + if (child != i && bb_fits_inside(i->bb, i->bb+3, child->bb, child->bb+3) && RE_rayobject_isAligned(i->child)) { // todo optimize (should the one with the smallest area?) // float ia = bb_area(i->bb, i->bb+3) -// if(child->i) +// if (child->i) *s_child = child->sibling; child->sibling = i->child; i->child = child; @@ -286,18 +265,17 @@ void pushdown(Node *parent) template float bvh_refit(Node *node) { - if(is_leaf(node)) return 0; - if(is_leaf(node->child)) return 0; + if (is_leaf(node)) return 0; + if (is_leaf(node->child)) return 0; float total = 0; - for(Node *child = node->child; child; child = child->sibling) + for (Node *child = node->child; child; child = child->sibling) total += bvh_refit(child); float old_area = bb_area(node->bb, node->bb+3); INIT_MINMAX(node->bb, node->bb+3); - for(Node *child = node->child; child; child = child->sibling) - { + for (Node *child = node->child; child; child = child->sibling) { DO_MIN(child->bb, node->bb); DO_MAX(child->bb+3, node->bb+3); } @@ -347,32 +325,27 @@ struct OVBVHNode int best_cutsize; void set_cut(int cutsize, OVBVHNode ***cut) { - if(cutsize == 1) - { + if (cutsize == 1) { **cut = this; *cut = &(**cut)->sibling; } - else - { - if(cutsize > MAX_CUT_SIZE) - { - for(OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) - { + else { + if (cutsize > MAX_CUT_SIZE) { + for (OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) { child->set_cut( 1, cut ); cutsize--; } assert(cutsize == 0); } else - for(OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) + for (OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) child->set_cut( child->get_cut_size( cutsize ), cut ); } } void optimize() { - if(RE_rayobject_isAligned(this->child)) - { + if (RE_rayobject_isAligned(this->child)) { //Calc new childs { OVBVHNode **cut = &(this->child); @@ -381,7 +354,7 @@ struct OVBVHNode } //Optimize new childs - for(OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) + for (OVBVHNode *child = this->child; child && RE_rayobject_isAligned(child); child = child->sibling) child->optimize(); } } @@ -415,8 +388,7 @@ struct VBVH_optimalPackSIMD //Fetch childs and needed data { float parent_area = bb_area(node->bb, node->bb+3); - for(Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) - { + for (Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) { this->child[nchilds] = child; this->child_hit_prob[nchilds] = (parent_area != 0.0f)? bb_area(child->bb, child->bb+3) / parent_area: 1.0f; nchilds++; @@ -427,36 +399,35 @@ struct VBVH_optimalPackSIMD //Build DP table to find minimum cost to represent this node with a given cutsize - int bt [MAX_OPTIMIZE_CHILDS+1][MAX_CUT_SIZE+1]; //backtrace table - float cost[MAX_OPTIMIZE_CHILDS+1][MAX_CUT_SIZE+1]; //cost table (can be reduced to float[2][MAX_CUT_COST]) + int bt [MAX_OPTIMIZE_CHILDS + 1][MAX_CUT_SIZE + 1]; //backtrace table + float cost[MAX_OPTIMIZE_CHILDS + 1][MAX_CUT_SIZE + 1]; //cost table (can be reduced to float[2][MAX_CUT_COST]) - for(int i=0; i<=nchilds; i++) - for(int j=0; j<=MAX_CUT_SIZE; j++) - cost[i][j] = INFINITY; + for (int i = 0; i <= nchilds; i++) { + for (int j = 0; j <= MAX_CUT_SIZE; j++) { + cost[i][j] = INFINITY; + } + } cost[0][0] = 0; - for(int i=1; i<=nchilds; i++) - for(int size=i-1; size/*+(nchilds-i)*/<=MAX_CUT_SIZE; size++) - for(int cut=1; cut+size/*+(nchilds-i)*/<=MAX_CUT_SIZE; cut++) - { - float new_cost = cost[i-1][size] + child_hit_prob[i-1]*child[i-1]->get_cost(cut); - if(new_cost < cost[i][size+cut]) - { - cost[i][size+cut] = new_cost; - bt[i][size+cut] = cut; + for (int i = 1; i<=nchilds; i++) { + for (int size = i - 1; size/*+(nchilds-i)*/<=MAX_CUT_SIZE; size++) { + for (int cut = 1; cut+size/*+(nchilds-i)*/<=MAX_CUT_SIZE; cut++) { + float new_cost = cost[i - 1][size] + child_hit_prob[i - 1] * child[i - 1]->get_cost(cut); + if (new_cost < cost[i][size+cut]) { + cost[i][size+cut] = new_cost; + bt[i][size+cut] = cut; + } + } } } //Save the ways to archieve the minimum cost with a given cutsize - for(int i = nchilds; i <= MAX_CUT_SIZE; i++) - { + for (int i = nchilds; i <= MAX_CUT_SIZE; i++) { node->cut_cost[i-1] = cost[nchilds][i]; - if(cost[nchilds][i] < INFINITY) - { + if (cost[nchilds][i] < INFINITY) { int current_size = i; - for(int j=nchilds; j>0; j--) - { + for (int j=nchilds; j>0; j--) { child[j-1]->cut_size[i-1] = bt[j][current_size]; current_size -= bt[j][current_size]; } @@ -468,26 +439,22 @@ struct VBVH_optimalPackSIMD void calc_costs(Node *node) { - if( RE_rayobject_isAligned(node->child) ) - { + if ( RE_rayobject_isAligned(node->child) ) { int nchilds = 0; - for(Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) - { + for (Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) { calc_costs(child); nchilds++; } - for(int i=0; icut_cost[i] = INFINITY; //We are not allowed to look on nodes with with so many childs - if(nchilds > MAX_CUT_SIZE) - { + if (nchilds > MAX_CUT_SIZE) { float cost = 0; float parent_area = bb_area(node->bb, node->bb+3); - for(Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) - { + for (Node *child = node->child; child && RE_rayobject_isAligned(child); child = child->sibling) { cost += ((parent_area != 0.0f)? ( bb_area(child->bb, child->bb+3) / parent_area ): 1.0f) * child->get_cost(1); } @@ -495,16 +462,13 @@ struct VBVH_optimalPackSIMD node->cut_cost[0] = cost; node->best_cutsize = nchilds; } - else - { + else { calc_best calc(node); //calc expected cost if we optimaly pack this node - for(int cutsize=nchilds; cutsize<=MAX_CUT_SIZE; cutsize++) - { + for (int cutsize=nchilds; cutsize<=MAX_CUT_SIZE; cutsize++) { float m = node->get_cost(cutsize) + testcost(cutsize); - if(m < node->cut_cost[0]) - { + if (m < node->cut_cost[0]) { node->cut_cost[0] = m; node->best_cutsize = cutsize; } @@ -512,24 +476,22 @@ struct VBVH_optimalPackSIMD } assert(node->cut_cost[0] != INFINITY); } - else - { + else { node->cut_cost[0] = 1.0f; - for(int i=1; icut_cost[i] = INFINITY; } } Node *transform(Node *node) { - if(RE_rayobject_isAligned(node->child)) - { + if (RE_rayobject_isAligned(node->child)) { static int num = 0; bool first = false; - if(num == 0) { num++; first = true; } + if (num == 0) { num++; first = true; } calc_costs(node); - if((G.debug & G_DEBUG) && first) printf("expected cost = %f (%d)\n", node->cut_cost[0], node->best_cutsize ); + if ((G.debug & G_DEBUG) && first) printf("expected cost = %f (%d)\n", node->cut_cost[0], node->best_cutsize ); node->optimize(); } return node; diff --git a/source/blender/render/intern/raytrace/svbvh.h b/source/blender/render/intern/raytrace/svbvh.h index e0e96781f36..a4044db8208 100644 --- a/source/blender/render/intern/raytrace/svbvh.h +++ b/source/blender/render/intern/raytrace/svbvh.h @@ -94,9 +94,9 @@ static int svbvh_bb_intersect_test(const Isect *isec, const float *_bb) RE_RC_COUNT(isec->raycounter->bb.test); - if(t1x > t2y || t2x < t1y || t1x > t2z || t2x < t1z || t1y > t2z || t2y < t1z) return 0; - if(t2x < 0.0 || t2y < 0.0 || t2z < 0.0) return 0; - if(t1x > isec->dist || t1y > isec->dist || t1z > isec->dist) return 0; + if (t1x > t2y || t2x < t1y || t1x > t2z || t2x < t1z || t1y > t2z || t2y < t1z) return 0; + if (t2x < 0.0 || t2y < 0.0 || t2z < 0.0) return 0; + if (t1x > isec->dist || t1y > isec->dist || t1z > isec->dist) return 0; RE_RC_COUNT(isec->raycounter->bb.hit); @@ -116,40 +116,39 @@ static int svbvh_node_stack_raycast(SVBVHNode *root, Isect *isec) stack[stack_pos++] = root; - while(stack_pos) - { + while (stack_pos) { node = stack[--stack_pos]; - if(!svbvh_node_is_leaf(node)) - { + if (!svbvh_node_is_leaf(node)) { int nchilds= node->nchilds; - if(nchilds == 4) { + if (nchilds == 4) { float *child_bb= node->child_bb; int res = svbvh_bb_intersect_test_simd4(isec, ((__m128*) (child_bb))); SVBVHNode **child= node->child; RE_RC_COUNT(isec->raycounter->simd_bb.test); - if(res & 1) { stack[stack_pos++] = child[0]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } - if(res & 2) { stack[stack_pos++] = child[1]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } - if(res & 4) { stack[stack_pos++] = child[2]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } - if(res & 8) { stack[stack_pos++] = child[3]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } + if (res & 1) { stack[stack_pos++] = child[0]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } + if (res & 2) { stack[stack_pos++] = child[1]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } + if (res & 4) { stack[stack_pos++] = child[2]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } + if (res & 8) { stack[stack_pos++] = child[3]; RE_RC_COUNT(isec->raycounter->simd_bb.hit); } } else { float *child_bb= node->child_bb; SVBVHNode **child= node->child; int i; - for(i=0; i inline void bvh_node_merge_bb(SVBVHNode *node, float *min, float *max) { - if(is_leaf(node)) - { + if (is_leaf(node)) { RE_rayobject_merge_bb((RayObject*)node, min, max); } - else - { + else { int i=0; - while(i+4 <= node->nchilds) - { + while (i+4 <= node->nchilds) { float *res = node->child_bb + 6*i; - for(int j=0; j<3; j++) - { + for (int j = 0; j < 3; j++) { min[j] = MIN2(min[j], res[4*j+0]); min[j] = MIN2(min[j], res[4*j+1]); min[j] = MIN2(min[j], res[4*j+2]); min[j] = MIN2(min[j], res[4*j+3]); } - for(int j=0; j<3; j++) - { + for (int j = 0; j < 3; j++) { max[j] = MAX2(max[j], res[4*(j+3)+0]); max[j] = MAX2(max[j], res[4*(j+3)+1]); max[j] = MAX2(max[j], res[4*(j+3)+2]); @@ -188,10 +182,9 @@ inline void bvh_node_merge_bb(SVBVHNode *node, float *min, float *max i += 4; } - for(; inchilds; i++) - { - DO_MIN(node->child_bb+6*i , min); - DO_MAX(node->child_bb+3+6*i, max); + for ( ; i < node->nchilds; i++) { + DO_MIN(node->child_bb + 6 * i, min); + DO_MAX(node->child_bb + 3 + 6 * i, max); } } } @@ -218,17 +211,19 @@ struct Reorganize_SVBVH childs_per_node = 0; useless_bb = 0; - for(int i=0; i<16; i++) + for (int i = 0; i < 16; i++) { nodes_with_childs[i] = 0; + } } ~Reorganize_SVBVH() { - if(G.debug & G_DEBUG) { + if (G.debug & G_DEBUG) { printf("%f childs per node\n", childs_per_node / nodes); printf("%d childs BB are useless\n", useless_bb); - for(int i=0; i<16; i++) + for (int i = 0; i < 16; i++) { printf("%i childs per node: %d/%d = %f\n", i, nodes_with_childs[i], nodes, nodes_with_childs[i]/float(nodes)); + } } } @@ -248,14 +243,12 @@ struct Reorganize_SVBVH void prepare_for_simd(SVBVHNode *node) { int i=0; - while(i+4 <= node->nchilds) - { + while (i + 4 <= node->nchilds) { float vec_tmp[4*6]; float *res = node->child_bb+6*i; std::copy(res, res+6*4, vec_tmp); - for(int j=0; j<6; j++) - { + for (int j=0; j<6; j++) { res[4*j+0] = vec_tmp[6*0+j]; res[4*j+1] = vec_tmp[6*1+j]; res[4*j+2] = vec_tmp[6*2+j]; @@ -274,26 +267,25 @@ struct Reorganize_SVBVH SVBVHNode *transform(OldNode *old) { - if(is_leaf(old)) + if (is_leaf(old)) return (SVBVHNode*)old; - if(is_leaf(old->child)) + if (is_leaf(old->child)) return (SVBVHNode*)old->child; int nchilds = count_childs(old); int alloc_childs = nchilds; - if(nchilds % 4 > 2) + if (nchilds % 4 > 2) alloc_childs = padup(nchilds, 4); SVBVHNode *node = create_node(alloc_childs); childs_per_node += nchilds; nodes++; - if(nchilds < 16) + if (nchilds < 16) nodes_with_childs[nchilds]++; useless_bb += alloc_childs-nchilds; - while(alloc_childs > nchilds) - { + while (alloc_childs > nchilds) { const static float def_bb[6] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MIN, FLT_MIN, FLT_MIN }; alloc_childs--; node->child[alloc_childs] = NULL; @@ -301,20 +293,17 @@ struct Reorganize_SVBVH } int i=nchilds; - for(OldNode *o_child = old->child; o_child; o_child = o_child->sibling) - { + for (OldNode *o_child = old->child; o_child; o_child = o_child->sibling) { i--; node->child[i] = transform(o_child); - if(is_leaf(o_child)) - { + if (is_leaf(o_child)) { float bb[6]; INIT_MINMAX(bb, bb+3); RE_rayobject_merge_bb((RayObject*)o_child, bb, bb+3); copy_bb(node->child_bb+i*6, bb); break; } - else - { + else { copy_bb(node->child_bb+i*6, o_child->bb); } } diff --git a/source/blender/render/intern/raytrace/vbvh.h b/source/blender/render/intern/raytrace/vbvh.h index 1c84cd23510..f916dd412f7 100644 --- a/source/blender/render/intern/raytrace/vbvh.h +++ b/source/blender/render/intern/raytrace/vbvh.h @@ -57,17 +57,14 @@ inline static void bvh_node_push_childs(Node *node, Isect *UNUSED(isec), Node ** { Node *child = node->child; - if(is_leaf(child)) - { + if (is_leaf(child)) { stack[stack_pos++] = child; } - else - { - while(child) - { + else { + while (child) { /* Skips BB tests on primitives */ #if 0 - if(is_leaf(child->child)) { + if (is_leaf(child->child)) { stack[stack_pos++] = child->child; } else @@ -86,10 +83,9 @@ template int count_childs(Node *parent) { int n = 0; - for(Node *i = parent->child; i; i = i->sibling) - { + for (Node *i = parent->child; i; i = i->sibling) { n++; - if(is_leaf(i)) + if (is_leaf(i)) break; } @@ -100,7 +96,7 @@ int count_childs(Node *parent) template void append_sibling(Node *node, Node *sibling) { - while(node->sibling) + while (node->sibling) node = node->sibling; node->sibling = sibling; @@ -118,7 +114,7 @@ struct BuildBinaryVBVH void test_break() { - if(RE_rayobjectcontrol_test_break(control)) + if (RE_rayobjectcontrol_test_break(control)) throw "Stop"; } @@ -160,19 +156,17 @@ struct BuildBinaryVBVH { int size = rtbuild_size(builder); - if(size == 0) { + if (size == 0) { return NULL; } - else if(size == 1) - { + else if (size == 1) { Node *node = create_node(); INIT_MINMAX(node->bb, node->bb+3); rtbuild_merge_bb(builder, node->bb, node->bb+3); node->child = (Node *) rtbuild_get_primitive(builder, 0); return node; } - else - { + else { test_break(); Node *node = create_node(); @@ -183,8 +177,7 @@ struct BuildBinaryVBVH INIT_MINMAX(node->bb, node->bb+3); assert(nc == 2); - for(int i=0; isibling; } *child_ptr = 0; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 66ed0bd85a9..404901f2bb7 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1472,7 +1472,7 @@ static void particle_normal_ren(short ren_as, ParticleSettings *part, Render *re if (ren_as != PART_DRAW_BB) mul_m4_v3(re->viewmat, loc); - switch(ren_as) { + switch (ren_as) { case PART_DRAW_LINE: sd->line = 1; sd->time = 0.0f; @@ -2630,8 +2630,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar, sizeu--; sizev--; /* dec size for face array */ if (dl->flag & DL_CYCL_V) { - for (v = 0; v < sizev; v++) - { + for (v = 0; v < sizev; v++) { /* optimize! :*/ vlr= RE_findOrAddVlak(obr, UVTOINDEX(sizeu - 1, v)); vlr1= RE_findOrAddVlak(obr, UVTOINDEX(0, v)); @@ -2643,8 +2642,7 @@ static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar, } if (dl->flag & DL_CYCL_U) { - for (u = 0; u < sizeu; u++) - { + for (u = 0; u < sizeu; u++) { /* optimize! :*/ vlr= RE_findOrAddVlak(obr, UVTOINDEX(u, 0)); vlr1= RE_findOrAddVlak(obr, UVTOINDEX(u, sizev-1)); @@ -3486,8 +3484,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) if (need_nmap_tangent != 0) { const float * tangent = (const float *) layer->data; float * ftang = RE_vlakren_get_nmap_tangent(obr, vlr, 1); - for (vindex=0; vindexarea_sizey= lar->area_size; } else if (lar->type==LA_AREA) { - switch(lar->area_shape) { + switch (lar->area_shape) { case LA_AREA_SQUARE: lar->ray_totsamp= lar->ray_samp*lar->ray_samp; lar->ray_sampy= lar->ray_samp; diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c index f7f592c9407..3e82bec7e52 100644 --- a/source/blender/render/intern/source/initrender.c +++ b/source/blender/render/intern/source/initrender.c @@ -167,7 +167,7 @@ float RE_filter_value(int type, float x) x= ABS(x); - switch(type) { + switch (type) { case R_FILTER_BOX: if (x>1.0f) return 0.0f; return 1.0f; @@ -208,7 +208,7 @@ static float calc_weight(Render *re, float *weight, int i, int j) weight[a]= 0.0; /* Weighting choices */ - switch(re->r.filtertype) { + switch (re->r.filtertype) { case R_FILTER_BOX: if (i==0 && j==0) weight[a]= 1.0; break; diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 5d4f9db9a02..54474891810 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -221,7 +221,7 @@ static void pointdensity_cache_object(Render *re, PointDensity *pd, Object *ob) copy_v3_v3(co, mvert->co); - switch(pd->ob_cache_space) { + switch (pd->ob_cache_space) { case TEX_PD_OBJECTSPACE: break; case TEX_PD_OBJECTLOC: diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index 0c735c18c57..bb08911a1eb 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -87,8 +87,7 @@ static int test_break(void *data) static void RE_rayobject_config_control(RayObject *r, Render *re) { - if (RE_rayobject_isRayAPI(r)) - { + if (RE_rayobject_isRayAPI(r)) { r = RE_rayobject_align( r ); r->control.data = re; r->control.test_break = test_break; @@ -99,8 +98,7 @@ static RayObject* RE_rayobject_create(Render *re, int type, int size) { RayObject * res = NULL; - if (type == R_RAYSTRUCTURE_AUTO) - { + if (type == R_RAYSTRUCTURE_AUTO) { //TODO //if (detect_simd()) #ifdef __SSE__ @@ -111,8 +109,7 @@ static RayObject* RE_rayobject_create(Render *re, int type, int size) } #ifndef __SSE__ - if (type == R_RAYSTRUCTURE_SIMD_SVBVH || type == R_RAYSTRUCTURE_SIMD_QBVH) - { + if (type == R_RAYSTRUCTURE_SIMD_SVBVH || type == R_RAYSTRUCTURE_SIMD_QBVH) { puts("Warning: Using VBVH (SSE was disabled at compile time)"); type = R_RAYSTRUCTURE_VBVH; } @@ -148,37 +145,30 @@ void freeraytree(Render *re) { ObjectInstanceRen *obi; - if (re->raytree) - { + if (re->raytree) { RE_rayobject_free(re->raytree); re->raytree = NULL; } - if (re->rayfaces) - { + if (re->rayfaces) { MEM_freeN(re->rayfaces); re->rayfaces = NULL; } - if (re->rayprimitives) - { + if (re->rayprimitives) { MEM_freeN(re->rayprimitives); re->rayprimitives = NULL; } - for (obi=re->instancetable.first; obi; obi=obi->next) - { + for (obi=re->instancetable.first; obi; obi=obi->next) { ObjectRen *obr = obi->obr; - if (obr->raytree) - { + if (obr->raytree) { RE_rayobject_free(obr->raytree); obr->raytree = NULL; } - if (obr->rayfaces) - { + if (obr->rayfaces) { MEM_freeN(obr->rayfaces); obr->rayfaces = NULL; } - if (obi->raytree) - { + if (obi->raytree) { RE_rayobject_free(obi->raytree); obi->raytree = NULL; } @@ -232,8 +222,7 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) // update render stats ObjectRen *obr = obi->obr; - if (obr->raytree == NULL) - { + if (obr->raytree == NULL) { RayObject *raytree; RayFace *face = NULL; VlakPrimitive *vlakprimitive = NULL; @@ -241,8 +230,7 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) //Count faces int faces = 0; - for (v=0;vtotvlak;v++) - { + for (v=0;vtotvlak;v++) { VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255); if (is_raytraceable_vlr(re, vlr)) faces++; @@ -260,11 +248,9 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) obr->rayobi = obi; - for (v=0;vtotvlak;v++) - { + for (v=0;vtotvlak;v++) { VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255); - if (is_raytraceable_vlr(re, vlr)) - { + if (is_raytraceable_vlr(re, vlr)) { if ((re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS)) { RE_rayobject_add( raytree, RE_vlakprimitive_from_vlak( vlakprimitive, obi, vlr ) ); vlakprimitive++; @@ -286,8 +272,7 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) } if (obr->raytree) { - if ((obi->flag & R_TRANSFORMED) && obi->raytree == NULL) - { + if ((obi->flag & R_TRANSFORMED) && obi->raytree == NULL) { obi->transform_primitives = 0; obi->raytree = RE_rayobject_instance_create( obr->raytree, obi->mat, obi, obi->obr->rayobi ); } @@ -299,16 +284,13 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi) static int has_special_rayobject(Render *re, ObjectInstanceRen *obi) { - if ( (obi->flag & R_TRANSFORMED) && (re->r.raytrace_options & R_RAYTRACE_USE_INSTANCES) ) - { + if ( (obi->flag & R_TRANSFORMED) && (re->r.raytrace_options & R_RAYTRACE_USE_INSTANCES) ) { ObjectRen *obr = obi->obr; int v, faces = 0; - for (v=0;vtotvlak;v++) - { + for (v=0;vtotvlak;v++) { VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255); - if (is_raytraceable_vlr(re, vlr)) - { + if (is_raytraceable_vlr(re, vlr)) { faces++; if (faces > 4) return 1; @@ -329,8 +311,7 @@ static void makeraytree_single(Render *re) int faces = 0, obs = 0, special = 0; for (obi=re->instancetable.first; obi; obi=obi->next) - if (is_raytraceable(re, obi)) - { + if (is_raytraceable(re, obi)) { ObjectRen *obr = obi->obr; obs++; @@ -339,8 +320,7 @@ static void makeraytree_single(Render *re) } else { int v; - for (v=0;vtotvlak;v++) - { + for (v=0;vtotvlak;v++) { VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255); if (is_raytraceable_vlr(re, vlr)) faces++; @@ -348,8 +328,7 @@ static void makeraytree_single(Render *re) } } - if (faces + special == 0) - { + if (faces + special == 0) { re->raytree = RE_rayobject_empty_create(); return; } @@ -357,8 +336,7 @@ static void makeraytree_single(Render *re) //Create raytree raytree = re->raytree = RE_rayobject_create( re, re->r.raytrace_structure, faces+special ); - if ( (re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS) ) - { + if ( (re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS) ) { vlakprimitive = re->rayprimitives = (VlakPrimitive*)MEM_callocN(faces*sizeof(VlakPrimitive), "Raytrace vlak-primitives"); } else { @@ -366,8 +344,7 @@ static void makeraytree_single(Render *re) } for (obi=re->instancetable.first; obi; obi=obi->next) - if (is_raytraceable(re, obi)) - { + if (is_raytraceable(re, obi)) { if (test_break(re)) break; @@ -384,13 +361,11 @@ static void makeraytree_single(Render *re) int v; ObjectRen *obr = obi->obr; - if (obi->flag & R_TRANSFORMED) - { + if (obi->flag & R_TRANSFORMED) { obi->transform_primitives = 1; } - for (v=0;vtotvlak;v++) - { + for (v=0;vtotvlak;v++) { VlakRen *vlr = obr->vlaknodes[v>>8].vlak + (v&255); if (is_raytraceable_vlr(re, vlr)) { if ((re->r.raytrace_options & R_RAYTRACE_USE_LOCAL_COORDS)) { @@ -400,8 +375,7 @@ static void makeraytree_single(Render *re) } else { RE_rayface_from_vlak(face, obi, vlr); - if ((obi->flag & R_TRANSFORMED)) - { + if ((obi->flag & R_TRANSFORMED)) { mul_m4_v3(obi->mat, face->v1); mul_m4_v3(obi->mat, face->v2); mul_m4_v3(obi->mat, face->v3); @@ -417,8 +391,7 @@ static void makeraytree_single(Render *re) } } - if (!test_break(re)) - { + if (!test_break(re)) { re->i.infostr= "Raytree.. building"; re->stats_draw(re->sdh, &re->i); @@ -452,8 +425,7 @@ void makeraytree(Render *re) //This is ONLY needed to kept a bogus behavior of SUN and HEMI lights INIT_MINMAX(min, max); RE_rayobject_merge_bb( re->raytree, min, max ); - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) { min[i] += 0.01f; max[i] += 0.01f; sub[i] = max[i]-min[i]; @@ -1006,12 +978,10 @@ static void halton_sample(double *ht_invprimes, double *ht_nums, double *v) // "Instant Radiosity", Keller A. unsigned int i; - for (i = 0; i < 2; i++) - { + for (i = 0; i < 2; i++) { double r = fabs((1.0 - ht_nums[i]) - 1e-10); - if (ht_invprimes[i] >= r) - { + if (ht_invprimes[i] >= r) { double lasth; double h = ht_invprimes[i]; @@ -1065,8 +1035,7 @@ static struct QMCSampler *QMC_initSampler(int type, int tot) static void QMC_initPixel(QMCSampler *qsa, int thread) { - if (qsa->type==SAMP_TYPE_HAMMERSLEY) - { + if (qsa->type==SAMP_TYPE_HAMMERSLEY) { /* hammersley sequence is fixed, already created in QMCSampler init. * per pixel, gets a random offset. We create separate offsets per thread, for write-safety */ qsa->offs[thread][0] = 0.5f * BLI_thread_frand(thread); @@ -1377,8 +1346,7 @@ static void trace_refract(float col[4], ShadeInput *shi, ShadeResult *shr) samples++; /* adaptive sampling */ - if (adapt_thresh < 1.0f && samples > max_samples/2) - { + if (adapt_thresh < 1.0f && samples > max_samples/2) { if (adaptive_sample_variance(samples, col, colsq, adapt_thresh)) break; @@ -1479,8 +1447,7 @@ static void trace_reflect(float col[3], ShadeInput *shi, ShadeResult *shr, float samples++; /* adaptive sampling */ - if (adapt_thresh > 0.0f && samples > max_samples/3) - { + if (adapt_thresh > 0.0f && samples > max_samples/3) { if (adaptive_sample_variance(samples, col, colsq, adapt_thresh)) break; @@ -2267,8 +2234,7 @@ static void ray_shadow_qmc(ShadeInput *shi, LampRen *lar, const float lampco[3], QMC_initPixel(qsa, shi->thread); INIT_MINMAX(min, max); - for (i=0; itype) { + switch (tex->type) { case 0: texres->tin= 0.0f; @@ -1231,7 +1231,7 @@ static int multitex(Tex *tex, float *texvec, float *dxt, float *dyt, int osatex, copy_v3_v3(tmpvec, texvec); mul_v3_fl(tmpvec, 1.0f/tex->noisesize); - switch(tex->stype) { + switch (tex->stype) { case TEX_MFRACTAL: case TEX_FBM: retval= mg_mFractalOrfBmTex(tex, tmpvec, texres); @@ -1389,7 +1389,7 @@ void texture_rgb_blend(float in[3], const float tex[3], const float out[3], floa { float facm, col; - switch(blendtype) { + switch (blendtype) { case MTEX_BLEND: fact*= facg; facm= 1.0f-fact; @@ -1530,7 +1530,7 @@ float texture_value_blend(float tex, float out, float fact, float facg, int blen facm= 1.0f-fact; if (flip) SWAP(float, fact, facm); - switch(blendtype) { + switch (blendtype) { case MTEX_BLEND: in= fact*tex + facm*out; break; @@ -3054,7 +3054,7 @@ void do_sky_tex(const float rco[3], float lo[3], const float dxyview[2], float h } /* Grab the mapping settings for this texture */ - switch(mtex->texco) { + switch (mtex->texco) { case TEXCO_ANGMAP: /* only works with texture being "real" */ /* use saacos(), fixes bug [#22398], float precision caused lo[2] to be slightly less then -1.0 */ diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index f5e36125299..c0267a3b44d 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -457,7 +457,7 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, float *fp, *col= NULL; int pixsize= 3; - switch(rpass->passtype) { + switch (rpass->passtype) { case SCE_PASS_Z: fp= rpass->rect + offset; *fp= shr->z; @@ -569,7 +569,7 @@ static void add_passes(RenderLayer *rl, int offset, ShadeInput *shi, ShadeResult float *col= NULL, uvcol[3]; int a, pixsize= 3; - switch(rpass->passtype) { + switch (rpass->passtype) { case SCE_PASS_Z: fp= rpass->rect + offset; *fp= shr->z; diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c index 6a0c8e3526f..f3b6bfb80ea 100644 --- a/source/blender/render/intern/source/renderdatabase.c +++ b/source/blender/render/intern/source/renderdatabase.c @@ -871,8 +871,7 @@ void free_renderdata_tables(Render *re) } if (re->objectinstance) { - for (obi=re->instancetable.first; obi; obi=obi->next) - { + for (obi=re->instancetable.first; obi; obi=obi->next) { if (obi->vectors) MEM_freeN(obi->vectors); @@ -1274,8 +1273,7 @@ void project_renderdata(Render *re, void (*projectfunc)(const float *, float mat else if (hoco[3]<0.0f) { har->miny= har->maxy= -10000; /* render clips it */ } - else /* do the projection...*/ - { + else { /* do the projection...*/ /* bring back hocos */ hoco[0]*= 2.0f; hoco[1]*= 2.0f; diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index cf688982eda..e74041c9006 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -931,7 +931,7 @@ static void add_to_diffuse(float *diff, ShadeInput *shi, float is, float r, floa float fac; /* input */ - switch(ma->rampin_col) { + switch (ma->rampin_col) { case MA_RAMP_IN_ENERGY: /* should use 'rgb_to_grayscale' but we only have a vector version */ fac= 0.3f*r + 0.58f*g + 0.12f*b; @@ -1003,7 +1003,7 @@ static void do_specular_ramp(ShadeInput *shi, float is, float t, float spec[3]) float col[4]; /* input */ - switch(ma->rampin_spec) { + switch (ma->rampin_spec) { case MA_RAMP_IN_ENERGY: fac= t; break; @@ -1158,8 +1158,7 @@ float lamp_get_visibility(LampRen *lar, const float co[3], float lv[3], float *d // visifac= 0.0f; } else { - switch(lar->falloff_type) - { + switch (lar->falloff_type) { case LA_FALLOFF_CONSTANT: visifac = 1.0f; break; diff --git a/source/blender/render/intern/source/sunsky.c b/source/blender/render/intern/source/sunsky.c index 8097628e575..8aabfbfed09 100644 --- a/source/blender/render/intern/source/sunsky.c +++ b/source/blender/render/intern/source/sunsky.c @@ -338,8 +338,7 @@ static void ComputeAttenuatedSunlight(float theta, int turbidity, float fTau[3]) m = 1.0f/(cosf(theta) + 0.15f*powf(93.885f-theta/(float)M_PI*180.0f,-1.253f)); - for (i = 0; i < 3; i++) - { + for (i = 0; i < 3; i++) { // Rayleigh Scattering fTauR = expf( -m * 0.008735f * powf(fLambda[i], (float)(-4.08f))); @@ -393,8 +392,7 @@ void InitAtmosphere(struct SunSky *sunSky, float sun_intens, float mief, float r fLambda[0] = 1/650e-9f; fLambda[1] = 1/570e-9f; fLambda[2] = 1/475e-9f; - for (i=0; i < 3; i++) - { + for (i=0; i < 3; i++) { fLambda2[i] = fLambda[i]*fLambda[i]; fLambda4[i] = fLambda2[i]*fLambda2[i]; } diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index 8b059d4a564..1f5ada9b113 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -334,14 +334,10 @@ static void ms_diffuse(Render *re, int do_test_break, float *x0, float *x, float size_t size = n[0]*n[1]*n[2]; const float a = dt*diff*size; - for (l=0; l<20; l++) - { - for (k=1; k<=n[2]; k++) - { - for (j=1; j<=n[1]; j++) - { - for (i=1; i<=n[0]; i++) - { + for (l=0; l<20; l++) { + for (k=1; k<=n[2]; k++) { + for (j=1; j<=n[1]; j++) { + for (i=1; i<=n[0]; i++) { x[v_I_pad(i,j,k,n)] = (x0[v_I_pad(i,j,k,n)]) + a*( x0[v_I_pad(i-1,j,k,n)]+ x0[v_I_pad(i+1,j,k,n)]+ x0[v_I_pad(i,j-1,k,n)]+ x0[v_I_pad(i,j+1,k,n)]+ x0[v_I_pad(i,j,k-1,n)]+x0[v_I_pad(i,j,k+1,n)] ) / (1+6*a); @@ -384,15 +380,11 @@ static void multiple_scattering_diffusion(Render *re, VolumePrecache *vp, Materi energy_ss = total_ss_energy(re, do_test_break, vp); /* Scattering as diffusion pass */ - for (m=0; mfirst; go; go= go->next) - { + for (go=lights->first; go; go= go->next) { float lacol[3] = {0.f, 0.f, 0.f}; lar= go->lampren; diff --git a/source/blender/render/intern/source/voxeldata.c b/source/blender/render/intern/source/voxeldata.c index 1f49b654ef8..817e51f2020 100644 --- a/source/blender/render/intern/source/voxeldata.c +++ b/source/blender/render/intern/source/voxeldata.c @@ -171,8 +171,7 @@ static void load_frame_image_sequence(VoxelData *vd, Tex *tex) vd->resol[2] = iuser.frames; vd->dataset = MEM_mapallocN(sizeof(float)*vd_resol_size(vd), "voxel dataset"); - for (z=0; z < iuser.frames; z++) - { + for (z=0; z < iuser.frames; z++) { /* get a new ibuf for each frame */ if (z > 0) { iuser.framenr++; @@ -182,10 +181,8 @@ static void load_frame_image_sequence(VoxelData *vd, Tex *tex) } rf = ibuf->rect_float; - for (y=0; y < ibuf->y; y++) - { - for (x=0; x < ibuf->x; x++) - { + for (y=0; y < ibuf->y; y++) { + for (x=0; x < ibuf->x; x++) { /* currently averaged to monchrome */ vd->dataset[ V_I(x, y, z, vd->resol) ] = (rf[0] + rf[1] + rf[2])*0.333f; rf +=4; @@ -249,8 +246,7 @@ static void init_frame_smoke(VoxelData *vd, float cfra) heat = smoke_get_heat(smd->domain->fluid); - for (i=0; idataset[i] = (heat[i]+2.0f)/4.0f; } @@ -271,8 +267,7 @@ static void init_frame_smoke(VoxelData *vd, float cfra) yvel = smoke_get_velocity_y(smd->domain->fluid); zvel = smoke_get_velocity_z(smd->domain->fluid); - for (i=0; idataset[i] = sqrt(xvel[i]*xvel[i] + yvel[i]*yvel[i] + zvel[i]*zvel[i])*3.0f; } @@ -333,7 +328,7 @@ void cache_voxeldata(Tex *tex, int scene_frame) BLI_strncpy(path, vd->source_path, sizeof(path)); - switch(vd->file_format) { + switch (vd->file_format) { case TEX_VD_IMAGE_SEQUENCE: load_frame_image_sequence(vd, tex); return; diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index 74c4bf19faf..06fc323e8d7 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -3529,7 +3529,7 @@ void merge_transp_passes(RenderLayer *rl, ShadeResult *shr) float *col= NULL; int pixsize= 3; - switch(rpass->passtype) { + switch (rpass->passtype) { case SCE_PASS_RGBA: col= shr->col; pixsize= 4; @@ -3629,7 +3629,7 @@ void add_transp_passes(RenderLayer *rl, int offset, ShadeResult *shr, float alph float *fp, *col= NULL; int pixsize= 3; - switch(rpass->passtype) { + switch (rpass->passtype) { case SCE_PASS_Z: fp= rpass->rect + offset; if (shr->z < *fp) diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 48002029e56..cd7a8a93975 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -103,7 +103,9 @@ static int wm_keymap_item_equals_result(wmKeyMapItem *a, wmKeyMapItem *b) if (!((a->ptr == NULL && b->ptr == NULL) || (a->ptr && b->ptr && IDP_EqualsProperties(a->ptr->data, b->ptr->data)))) + { return 0; + } if ((a->flag & KMI_INACTIVE) != (b->flag & KMI_INACTIVE)) return 0; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 514c159c87b..52a73988039 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -3200,9 +3200,12 @@ static int radial_control_get_properties(bContext *C, wmOperator *op) else { if (use_secondary_prop && RNA_property_boolean_get(&use_secondary_ptr, use_secondary_prop)) + { data_path = "data_path_secondary"; - else + } + else { data_path = "data_path_primary"; + } } if (!radial_control_get_path(&ctx_ptr, op, data_path, &rc->ptr, &rc->prop, 0, 0)) @@ -3225,7 +3228,9 @@ static int radial_control_get_properties(bContext *C, wmOperator *op) if (!radial_control_get_path(&ctx_ptr, op, "zoom_path", &rc->zoom_ptr, &rc->zoom_prop, 2, RC_PROP_REQUIRE_FLOAT | RC_PROP_ALLOW_MISSING)) + { return 0; + } if (!radial_control_get_path(&ctx_ptr, op, "image_id", &rc->image_id_ptr, NULL, 0, 0)) return 0; From d95887d756a7d869ed7089506a38149cec64255d Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 28 Apr 2012 06:40:12 +0000 Subject: [PATCH 131/158] Release Cycles for 2.64 begins. * BCon1: Alpha. --- source/blender/blenkernel/BKE_blender.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 5afe27f7be3..14f5c27c3df 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -51,7 +51,7 @@ extern "C" { /* can be left blank, otherwise a,b,c... etc with no quotes */ #define BLENDER_VERSION_CHAR /* alpha/beta/rc/release, docs use this */ -#define BLENDER_VERSION_CYCLE release +#define BLENDER_VERSION_CYCLE alpha extern char versionstr[]; /* from blender.c */ From f1d680d4b5406b65518df5e29ea3b62229077219 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 07:00:53 +0000 Subject: [PATCH 132/158] fix for crash when multires subdividing a mesh with no faces (new bug in bmesh grr!) --- source/blender/blenkernel/intern/multires.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index e2142c393a5..d7212e5eaf9 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -835,7 +835,7 @@ static void multires_subdivide(MultiresModifierData *mmd, Object *ob, int totlvl MDisps *mdisps; int lvl= mmd->totlvl; - if (totlvl > multires_max_levels) + if ((totlvl > multires_max_levels) || (me->totpoly == 0)) return; multires_force_update(ob); From 3553bf6db02b5e625ea9ee28b624fa6d5cd6d306 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 07:02:44 +0000 Subject: [PATCH 133/158] fix for incorrect selection check in opencollada integration. --- source/blender/collada/GeometryExporter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/collada/GeometryExporter.h b/source/blender/collada/GeometryExporter.h index 0085e3755aa..5d79fabb713 100644 --- a/source/blender/collada/GeometryExporter.h +++ b/source/blender/collada/GeometryExporter.h @@ -112,7 +112,7 @@ struct GeometryFunctor { Object *ob = base->object; if (ob->type == OB_MESH && ob->data && - !(export_selected && !(ob->flag && SELECT)) && + !(export_selected && !(ob->flag & SELECT)) && ((sce->lay & ob->lay)!=0)) { f(ob); From f8f7523fb2f38ae03e029ee1d279d5dc3c91390d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 07:43:21 +0000 Subject: [PATCH 134/158] fix memory leak in BM_face_copy() note that this doesnt run when duplicating faces normally, only way to cause this bug I could find was to knife cut a 33+ sided ngon with multi-res applied. also small improvement not to grow the array but allocate at once if needed. --- source/blender/bmesh/intern/bmesh_core.c | 27 ++++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 756fd742fa6..f38c737b8ac 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -184,34 +184,32 @@ static BMLoop *bm_face_boundary_add(BMesh *bm, BMFace *f, BMVert *startv, BMEdge BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short copyedges) { - BMEdge **edges = NULL; BMVert **verts = NULL; - BLI_array_staticdeclare(edges, BM_NGON_STACK_SIZE); - BLI_array_staticdeclare(verts, BM_NGON_STACK_SIZE); + BMEdge **edges = NULL; + BLI_array_fixedstack_declare(verts, BM_NGON_STACK_SIZE, f->len, __func__); + BLI_array_fixedstack_declare(edges, BM_NGON_STACK_SIZE, f->len, __func__); BMLoop *l_iter; BMLoop *l_first; BMLoop *l_copy; BMFace *f_copy; int i; - /* BMESH_TODO - grow verts array in one go! (right here) */ l_iter = l_first = BM_FACE_FIRST_LOOP(f); + i = 0; do { if (copyverts) { - BMVert *v = BM_vert_create(bm, l_iter->v->co, l_iter->v); - BLI_array_append(verts, v); + verts[i] = BM_vert_create(bm, l_iter->v->co, l_iter->v); } else { - BLI_array_append(verts, l_iter->v); + verts[i] = l_iter->v; } + i++; } while ((l_iter = l_iter->next) != l_first); - /* BMESH_TODO - grow edges array in one go! (right here) */ l_iter = l_first = BM_FACE_FIRST_LOOP(f); i = 0; do { if (copyedges) { - BMEdge *e; BMVert *v1, *v2; if (l_iter->e->v1 == verts[i]) { @@ -223,13 +221,11 @@ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short co v1 = verts[(i + 1) % f->len]; } - e = BM_edge_create(bm, v1, v2, l_iter->e, FALSE); - BLI_array_append(edges, e); + edges[i] = BM_edge_create(bm, v1, v2, l_iter->e, FALSE); } else { - BLI_array_append(edges, l_iter->e); + edges[i] = l_iter->e; } - i++; } while ((l_iter = l_iter->next) != l_first); @@ -243,7 +239,10 @@ BMFace *BM_face_copy(BMesh *bm, BMFace *f, const short copyverts, const short co BM_elem_attrs_copy(bm, bm, l_iter, l_copy); l_copy = l_copy->next; } while ((l_iter = l_iter->next) != l_first); - + + BLI_array_fixedstack_free(verts); + BLI_array_fixedstack_free(edges); + return f_copy; } From 0281ff408d7cda003b086169ae66a61b4cf9a02c Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 28 Apr 2012 08:27:09 +0000 Subject: [PATCH 135/158] Plugin system: * Remove RNA, Operator and UI for Texture and Sequence plugins. Since 2.5x no effort has been done to bring that back, so there is simply no reason in keeping that code and the UI for that ;-) * Low Level code still exists and is unchanged. --- .../scripts/startup/bl_ui/space_sequencer.py | 5 +---- .../scripts/startup/bl_ui/space_userpref.py | 2 -- .../editors/space_sequencer/sequencer_edit.c | 1 - source/blender/makesrna/intern/rna_actuator.c | 16 -------------- .../blender/makesrna/intern/rna_sequencer.c | 22 ------------------- source/blender/makesrna/intern/rna_texture.c | 14 ------------ source/blender/makesrna/intern/rna_ui.c | 2 +- source/blender/makesrna/intern/rna_userdef.c | 15 ------------- 8 files changed, 2 insertions(+), 75 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index aae950519a4..43d675c1417 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -220,7 +220,6 @@ class SEQUENCER_MT_add_effect(Menu): layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS' layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY' layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP' - layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN' layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE' layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW' layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM' @@ -488,7 +487,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel): col = layout.column(align=True) if strip.type == 'SPEED': col.prop(strip, "multiply_speed") - elif strip.type in {'CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'}: + elif strip.type in {'CROSS', 'GAMMA_CROSS', 'WIPE'}: col.prop(strip, "use_default_fade", "Default fade") if not strip.use_default_fade: col.prop(strip, "effect_fader", text="Effect fader") @@ -553,7 +552,6 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel): return strip.type in {'MOVIE', 'IMAGE', 'SCENE', 'MOVIECLIP', 'META', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', - 'PLUGIN', 'WIPE', 'GLOW', 'TRANSFORM', 'MULTICAM', 'SPEED', 'ADJUSTMENT'} @@ -716,7 +714,6 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel): return strip.type in {'MOVIE', 'IMAGE', 'SCENE', 'MOVIECLIP', 'META', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', - 'PLUGIN', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'MULTICAM', 'SPEED', 'ADJUSTMENT'} diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 7010c4f07cf..3c279502b02 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -797,8 +797,6 @@ class USERPREF_PT_file(Panel): sub = col1.column() sub.prop(paths, "font_directory", text="") sub.prop(paths, "texture_directory", text="") - sub.prop(paths, "texture_plugin_directory", text="") - sub.prop(paths, "sequence_plugin_directory", text="") sub.prop(paths, "render_output_directory", text="") sub.prop(paths, "script_directory", text="") sub.prop(paths, "sound_directory", text="") diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index bd306f2d646..5bd1ba4dcf2 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -87,7 +87,6 @@ EnumPropertyItem sequencer_prop_effect_types[] = { {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", "Gamma Cross effect strip type"}, {SEQ_MUL, "MULTIPLY", 0, "Multiply", "Multiply effect strip type"}, {SEQ_OVERDROP, "OVER_DROP", 0, "Alpha Over Drop", "Alpha Over Drop effect strip type"}, - {SEQ_PLUGIN, "PLUGIN", 0, "Plugin", "Plugin effect strip type"}, {SEQ_WIPE, "WIPE", 0, "Wipe", "Wipe effect strip type"}, {SEQ_GLOW, "GLOW", 0, "Glow", "Glow effect strip type"}, {SEQ_TRANSFORM, "TRANSFORM", 0, "Transform", "Transform effect strip type"}, diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index e564c03df14..e8eed526a7c 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -1451,22 +1451,6 @@ static void rna_def_scene_actuator(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Scene", "Scene to be added/removed/paused/resumed"); RNA_def_property_update(prop, NC_LOGIC, NULL); - - /* XXX no need for those tooltips. to remove soon - * Originally we had different 'scene' tooltips for different values of 'type'. - * They were: - * ACT_SCENE_RESTART "" - * ACT_SCENE_CAMERA "" - * ACT_SCENE_SET "Set this Scene" - * ACT_SCENE_ADD_FRONT "Add an Overlay Scene" - * ACT_SCENE_ADD_BACK "Add a Background Scene" - * ACT_SCENE_REMOVE "Remove a Scene" - * ACT_SCENE_SUSPEND "Pause a Scene" - * ACT_SCENE_RESUME "Unpause a Scene" - * - * It can be done in the ui script if still needed. - */ - } static void rna_def_random_actuator(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index c94d420da8a..7fecbb83fa5 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -414,8 +414,6 @@ static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) return &RNA_MulticamSequence; case SEQ_ADJUSTMENT: return &RNA_AdjustmentSequence; - case SEQ_PLUGIN: - return &RNA_PluginSequence; case SEQ_WIPE: return &RNA_WipeSequence; case SEQ_GLOW: @@ -1588,25 +1586,6 @@ static void rna_def_adjustment(BlenderRNA *brna) rna_def_input(srna); } -static void rna_def_plugin(BlenderRNA *brna) -{ - StructRNA *srna; - PropertyRNA *prop; - - srna = RNA_def_struct(brna, "PluginSequence", "EffectSequence"); - RNA_def_struct_ui_text(srna, "Plugin Sequence", - "Sequence strip applying an effect, loaded from an external plugin"); - RNA_def_struct_sdna_from(srna, "PluginSeq", "plugin"); - - prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_FILENAME); - RNA_def_property_string_sdna(prop, NULL, "name"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Filename", ""); - RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); - - /* plugin properties need custom wrapping code like ID properties */ -} - static void rna_def_wipe(BlenderRNA *brna) { StructRNA *srna; @@ -1848,7 +1827,6 @@ void RNA_def_sequencer(BlenderRNA *brna) rna_def_effect(brna); rna_def_multicam(brna); rna_def_adjustment(brna); - rna_def_plugin(brna); rna_def_wipe(brna); rna_def_glow(brna); rna_def_transform(brna); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index fab80997d08..c314e9be0ba 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -134,8 +134,6 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr) return &RNA_MusgraveTexture; case TEX_NOISE: return &RNA_NoiseTexture; - case TEX_PLUGIN: - return &RNA_PluginTexture; case TEX_POINTDENSITY: return &RNA_PointDensityTexture; case TEX_STUCCI: @@ -1302,17 +1300,6 @@ static void rna_def_texture_image(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Texture_update"); } -static void rna_def_texture_plugin(BlenderRNA *brna) -{ - StructRNA *srna; - - srna = RNA_def_struct(brna, "PluginTexture", "Texture"); - RNA_def_struct_ui_text(srna, "Plugin", "External plugin texture"); - RNA_def_struct_sdna(srna, "Tex"); - - /* XXX: todo */ -} - static void rna_def_texture_environment_map(BlenderRNA *brna) { StructRNA *srna; @@ -2013,7 +2000,6 @@ static void rna_def_texture(BlenderRNA *brna) rna_def_texture_stucci(brna); rna_def_texture_noise(brna); rna_def_texture_image(brna); - rna_def_texture_plugin(brna); rna_def_texture_environment_map(brna); rna_def_texture_musgrave(brna); rna_def_texture_voronoi(brna); diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 635dfb48b27..44ece727912 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -723,7 +723,7 @@ static void rna_def_panel(BlenderRNA *brna) prop = RNA_def_property(srna, "bl_context", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->context"); - RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); /* should this be optional? - Campbell */ + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); /* Only used in Properties Editor and 3D View - Thomas */ RNA_def_property_ui_text(prop, "Context", "The context in which the panel belongs to. (TODO: explain the " "possible combinations bl_context/bl_region_type/bl_space_type)"); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index ae236da6952..2e56d1a2a4d 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -1769,12 +1769,6 @@ static void rna_def_userdef_theme_space_seq(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Effect Strip", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); - prop = RNA_def_property(srna, "plugin_strip", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, NULL, "plugin"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Plugin Strip", ""); - RNA_def_property_update(prop, 0, "rna_userdef_update"); - prop = RNA_def_property(srna, "transition_strip", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "transition"); RNA_def_property_array(prop, 3); @@ -3373,15 +3367,6 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) RNA_def_property_string_sdna(prop, NULL, "textudir"); RNA_def_property_ui_text(prop, "Textures Directory", "The default directory to search for textures"); - prop = RNA_def_property(srna, "texture_plugin_directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "plugtexdir"); - RNA_def_property_ui_text(prop, "Texture Plugin Directory", "The default directory to search for texture plugins"); - - prop = RNA_def_property(srna, "sequence_plugin_directory", PROP_STRING, PROP_DIRPATH); - RNA_def_property_string_sdna(prop, NULL, "plugseqdir"); - RNA_def_property_ui_text(prop, "Sequence Plugin Directory", - "The default directory to search for sequence plugins"); - prop = RNA_def_property(srna, "render_output_directory", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "renderdir"); RNA_def_property_ui_text(prop, "Render Output Directory", From 950ed6929792952044a57cad00833bddc8d39f45 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 08:29:20 +0000 Subject: [PATCH 136/158] code cleanup: - replace inline face UV center calc. - use const float[3] for mesh and uv functions. - remove unused define --- source/blender/blenkernel/BKE_lattice.h | 2 +- .../blender/blenkernel/intern/dynamicpaint.c | 2 +- source/blender/blenkernel/intern/lattice.c | 2 +- source/blender/blenlib/intern/math_rotation.c | 2 +- .../editors/animation/anim_channels_defines.c | 38 ++++++------- source/blender/editors/include/ED_anim_api.h | 2 +- source/blender/editors/include/ED_mesh.h | 8 +-- source/blender/editors/include/ED_uvedit.h | 5 +- source/blender/editors/mesh/editface.c | 8 +-- source/blender/editors/mesh/editmesh_bvh.c | 18 +++---- source/blender/editors/mesh/editmesh_bvh.h | 5 +- source/blender/editors/mesh/editmesh_knife.c | 2 +- source/blender/editors/mesh/editmesh_rip.c | 3 +- source/blender/editors/mesh/editmesh_utils.c | 2 +- source/blender/editors/mesh/meshtools.c | 10 ++-- source/blender/editors/sculpt_paint/sculpt.c | 2 +- source/blender/editors/uvedit/uvedit_intern.h | 11 ++-- source/blender/editors/uvedit/uvedit_ops.c | 53 ++++++++----------- source/blender/modifiers/intern/MOD_hook.c | 2 +- 19 files changed, 85 insertions(+), 92 deletions(-) diff --git a/source/blender/blenkernel/BKE_lattice.h b/source/blender/blenkernel/BKE_lattice.h index 29c78510fd8..a0075c4d6be 100644 --- a/source/blender/blenkernel/BKE_lattice.h +++ b/source/blender/blenkernel/BKE_lattice.h @@ -49,7 +49,7 @@ void make_local_lattice(struct Lattice *lt); void calc_lat_fudu(int flag, int res, float *fu, float *du); void init_latt_deform(struct Object *oblatt, struct Object *ob); -void calc_latt_deform(struct Object *, float *co, float weight); +void calc_latt_deform(struct Object *, float co[3], float weight); void end_latt_deform(struct Object *); int object_deform_mball(struct Object *ob, struct ListBase *dispbase); diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index 31544dd5ca0..e6f38a3a334 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -2791,7 +2791,7 @@ static void mesh_faces_spherecast_dp(void *userdata, int index, const BVHTreeRay * To optimize brush detection speed this doesn't calculate hit normal. * If ray hit the second half of a quad, no[0] is set to 1.0f, else 0.0f */ -static void mesh_faces_nearest_point_dp(void *userdata, int index, const float *co, BVHTreeNearest *nearest) +static void mesh_faces_nearest_point_dp(void *userdata, int index, const float co[3], BVHTreeNearest *nearest) { const BVHTreeFromMesh *data = (BVHTreeFromMesh*) userdata; MVert *vert = data->vert; diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index f182d7bcb7c..12f11a9dee1 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -342,7 +342,7 @@ void init_latt_deform(Object *oblatt, Object *ob) } } -void calc_latt_deform(Object *ob, float *co, float weight) +void calc_latt_deform(Object *ob, float co[3], float weight) { Lattice *lt= ob->data; float u, v, w, tu[4], tv[4], tw[4]; diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c index ec5fd39cd87..bb3265bdf33 100644 --- a/source/blender/blenlib/intern/math_rotation.c +++ b/source/blender/blenlib/intern/math_rotation.c @@ -1615,7 +1615,7 @@ void normalize_dq(DualQuat *dq, float totweight) } } -void mul_v3m3_dq(float *co, float mat[][3], DualQuat *dq) +void mul_v3m3_dq(float co[3], float mat[][3], DualQuat *dq) { float M[3][3], t[3], scalemat[3][3], len2; float w = dq->quat[0], x = dq->quat[1], y = dq->quat[2], z = dq->quat[3]; diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 01ab36133fd..fbed5cc539a 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -98,10 +98,10 @@ /* Draw Backdrop ---------------------------------- */ /* get backdrop color for top-level widgets (Scene and Object only) */ -static void acf_generic_root_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float *color) +static void acf_generic_root_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float r_color[3]) { /* darker blue for top-level widgets */ - UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELOB, color); + UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELOB, r_color); } /* backdrop for top-level widgets (Scene and Object only) */ @@ -124,10 +124,10 @@ static void acf_generic_root_backdrop(bAnimContext *ac, bAnimListElem *ale, floa /* get backdrop color for data expanders under top-level Scene/Object */ -static void acf_generic_dataexpand_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float *color) +static void acf_generic_dataexpand_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float r_color[3]) { /* lighter color than top-level widget */ - UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELSUBOB, color); + UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELSUBOB, r_color); } /* backdrop for data expanders under top-level Scene/Object */ @@ -147,7 +147,7 @@ static void acf_generic_dataexpand_backdrop(bAnimContext *ac, bAnimListElem *ale } /* get backdrop color for generic channels */ -static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float *color) +static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float r_color[3]) { bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); SpaceAction *saction = NULL; @@ -183,12 +183,12 @@ static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, floa } /* copy the colors over, transforming from bytes to floats */ - rgb_uchar_to_float(color, cp); + rgb_uchar_to_float(r_color, cp); } else { // FIXME: what happens when the indention is 1 greater than what it should be (due to grouping)? int colOfs= 20 - 20*indent; - UI_GetThemeColorShade3fv(TH_HEADER, colOfs, color); + UI_GetThemeColorShade3fv(TH_HEADER, colOfs, r_color); } } @@ -374,13 +374,13 @@ static short acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListEle /* Animation Summary ----------------------------------- */ /* get backdrop color for summary widget */ -static void acf_summary_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float *color) +static void acf_summary_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float r_color[3]) { // FIXME: hardcoded color - same as the 'action' line in NLA // reddish color - color[0] = 0.8f; - color[1] = 0.2f; - color[2] = 0.0f; + r_color[0] = 0.8f; + r_color[1] = 0.2f; + r_color[2] = 0.0f; } /* backdrop for summary widget */ @@ -730,13 +730,13 @@ static bAnimChannelType ACF_OBJECT = /* Group ------------------------------------------- */ /* get backdrop color for group widget */ -static void acf_group_color(bAnimContext *UNUSED(ac), bAnimListElem *ale, float *color) +static void acf_group_color(bAnimContext *UNUSED(ac), bAnimListElem *ale, float r_color[3]) { /* highlight only for action group channels */ if (ale->flag & AGRP_ACTIVE) - UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, color); + UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, r_color); else - UI_GetThemeColorShade3fv(TH_GROUP, 20, color); + UI_GetThemeColorShade3fv(TH_GROUP, 20, r_color); } /* backdrop for group widget */ @@ -2322,10 +2322,10 @@ static bAnimChannelType ACF_SHAPEKEY= /* GPencil Datablock ------------------------------------------- */ /* get backdrop color for gpencil datablock widget */ -static void acf_gpd_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float *color) +static void acf_gpd_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float r_color[3]) { /* these are ID-blocks, but not exactly standalone... */ - UI_GetThemeColorShade3fv(TH_DOPESHEET_CHANNELSUBOB, 20, color); + UI_GetThemeColorShade3fv(TH_DOPESHEET_CHANNELSUBOB, 20, r_color); } // TODO: just get this from RNA? @@ -3043,7 +3043,8 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi } /* Draw a widget for some setting */ -static void draw_setting_widget (bAnimContext *ac, bAnimListElem *ale, bAnimChannelType *acf, uiBlock *block, int xpos, int ypos, int setting) +static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, bAnimChannelType *acf, + uiBlock *block, int xpos, int ypos, int setting) { short negflag, ptrsize /* , enabled */ /* UNUSED */, butType; int flag, icon; @@ -3222,7 +3223,8 @@ void ANIM_channel_draw_widgets (bContext *C, bAnimContext *ac, bAnimListElem *al uiBlockSetEmboss(block, UI_EMBOSS); - but = uiDefButR(block, TEX, 1, "", offset+3, yminc, RENAME_TEXT_WIDTH, channel_height, &ptr, RNA_property_identifier(prop), -1, 0, 0, -1, -1, NULL); + but = uiDefButR(block, TEX, 1, "", offset+3, yminc, RENAME_TEXT_WIDTH, channel_height, + &ptr, RNA_property_identifier(prop), -1, 0, 0, -1, -1, NULL); uiButSetFunc(but, achannel_setting_rename_done_cb, ac->ads, NULL); uiButActiveOnly(C, block, but); diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index a9affbcd342..391286a2a88 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -366,7 +366,7 @@ typedef struct bAnimChannelType { /* drawing */ /* get RGB color that is used to draw the majority of the backdrop */ - void (*get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float *color); + void (*get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float r_color[3]); /* draw backdrop strip for channel */ void (*draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc); /* get depth of indention (relative to the depth channel is nested at) */ diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 4c503a2687c..71d37d5c6ea 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -71,7 +71,7 @@ struct Material; struct Object; struct rcti; -intptr_t mesh_octree_table(struct Object *ob, struct BMEditMesh *em, float *co, char mode); +intptr_t mesh_octree_table(struct Object *ob, struct BMEditMesh *em, const float co[3], char mode); int mesh_mirrtopo_table(struct Object *ob, char mode); /* editmesh_utils.c */ @@ -139,7 +139,7 @@ struct MTexPoly *EDBM_mtexpoly_active_get(struct BMEditMesh *em, struct BMFace * void EDBM_uv_vert_map_free(struct UvVertMap *vmap); struct UvMapVert *EDBM_uv_vert_map_at_index(struct UvVertMap *vmap, unsigned int v); -struct UvVertMap *EDBM_uv_vert_map_create(struct BMEditMesh *em, int selected, int do_face_idx_array, float *limit); +struct UvVertMap *EDBM_uv_vert_map_create(struct BMEditMesh *em, int selected, int do_face_idx_array, const float limit[2]); void EDBM_data_layer_add(struct BMEditMesh *em, struct CustomData *data, int type, const char *name); void EDBM_data_layer_free(struct BMEditMesh *em, struct CustomData *data, int type); @@ -158,7 +158,7 @@ extern unsigned int bm_vertoffs, bm_solidoffs, bm_wireoffs; int mouse_mesh(struct bContext *C, const int mval[2], short extend); -struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh *em, struct BMVert *eve, float *co, int index); +struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh *em, struct BMVert *eve, const float co[3], int index); int mesh_get_x_mirror_vert(struct Object *ob, int index); int *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh *em); @@ -188,7 +188,7 @@ int paintface_mouse_select(struct bContext *C, struct Object *ob, const int mval int do_paintface_box_select(struct ViewContext *vc, struct rcti *rect, int select, int extend); void paintface_deselect_all_visible(struct Object *ob, int action, short flush_flags); void paintface_select_linked(struct bContext *C, struct Object *ob, int mval[2], int mode); -int paintface_minmax(struct Object *ob, float *min, float *max); +int paintface_minmax(struct Object *ob, float r_min[3], float r_max[3]); void paintface_hide(struct Object *ob, const int unselected); void paintface_reveal(struct Object *ob); diff --git a/source/blender/editors/include/ED_uvedit.h b/source/blender/editors/include/ED_uvedit.h index 3569c0e8243..2427ed1a333 100644 --- a/source/blender/editors/include/ED_uvedit.h +++ b/source/blender/editors/include/ED_uvedit.h @@ -51,7 +51,7 @@ void ED_operatortypes_uvedit(void); void ED_keymap_uvedit(struct wmKeyConfig *keyconf); void ED_uvedit_assign_image(struct Main *bmain, struct Scene *scene, struct Object *obedit, struct Image *ima, struct Image *previma); -int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float *min, float *max); +int ED_uvedit_minmax(struct Scene *scene, struct Image *ima, struct Object *obedit, float min[2], float max[2]); int ED_object_get_active_image(struct Object *ob, int mat_nr, struct Image **ima, struct ImageUser **iuser, struct bNode **node); void ED_object_assign_active_image(struct Main *bmain, struct Object *ob, int mat_nr, struct Image *ima); @@ -71,7 +71,8 @@ void uvedit_edge_select_disable(struct BMEditMesh *em, struct Scene *scene, stru void uvedit_uv_select_enable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l, const short do_history); void uvedit_uv_select_disable(struct BMEditMesh *em, struct Scene *scene, struct BMLoop *l); -int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, float co[2], float uv[2]); +int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, + const float co[2], float r_uv[2]); /* uvedit_unwrap_ops.c */ void ED_uvedit_live_unwrap_begin(struct Scene *scene, struct Object *obedit); diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 294a39eddf8..cfc9e11879e 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -400,14 +400,14 @@ void paintface_deselect_all_visible(Object *ob, int action, short flush_flags) } } -int paintface_minmax(Object *ob, float *min, float *max) +int paintface_minmax(Object *ob, float r_min[3], float r_max[3]) { Mesh *me; MPoly *mp; MTexPoly *tf; MLoop *ml; MVert *mvert; - int a, b, ok = 0; + int a, b, ok = FALSE; float vec[3], bmat[3][3]; me = get_mesh(ob); @@ -427,10 +427,10 @@ int paintface_minmax(Object *ob, float *min, float *max) copy_v3_v3(vec, (mvert[ml->v].co)); mul_m3_v3(bmat, vec); add_v3_v3v3(vec, vec, ob->obmat[3]); - DO_MINMAX(vec, min, max); + DO_MINMAX(vec, r_min, r_max); } - ok = 1; + ok = TRUE; } return ok; diff --git a/source/blender/editors/mesh/editmesh_bvh.c b/source/blender/editors/mesh/editmesh_bvh.c index 6155ad1be1c..6d740812f27 100644 --- a/source/blender/editors/mesh/editmesh_bvh.c +++ b/source/blender/editors/mesh/editmesh_bvh.c @@ -239,7 +239,8 @@ static void raycallback(void *userdata, int index, const BVHTreeRay *ray, BVHTre } } -BMFace *BMBVH_RayCast(BMBVHTree *tree, float *co, float *dir, float *hitout, float *cagehit) +BMFace *BMBVH_RayCast(BMBVHTree *tree, const float co[3], const float dir[3], + float r_hitout[3], float r_cagehit[3]) { BVHTreeRayHit hit; @@ -250,10 +251,9 @@ BMFace *BMBVH_RayCast(BMBVHTree *tree, float *co, float *dir, float *hitout, flo BLI_bvhtree_ray_cast(tree->tree, co, dir, 0.0f, &hit, raycallback, tree); if (hit.dist != FLT_MAX && hit.index != -1) { - if (hitout) { + if (r_hitout) { if (tree->flag & BMBVH_RETURN_ORIG) { BMVert *v1, *v2, *v3; - float co[3]; int i; v1 = tree->em->looptris[hit.index][0]->v; @@ -261,17 +261,17 @@ BMFace *BMBVH_RayCast(BMBVHTree *tree, float *co, float *dir, float *hitout, flo v3 = tree->em->looptris[hit.index][2]->v; for (i = 0; i < 3; i++) { - co[i] = v1->co[i] + ((v2->co[i] - v1->co[i]) * tree->uv[0]) + - ((v3->co[i] - v1->co[i]) * tree->uv[1]); + r_hitout[i] = v1->co[i] + ((v2->co[i] - v1->co[i]) * tree->uv[0]) + + ((v3->co[i] - v1->co[i]) * tree->uv[1]); } - copy_v3_v3(hitout, co); } else { - copy_v3_v3(hitout, hit.co); + copy_v3_v3(r_hitout, hit.co); } - if (cagehit) - copy_v3_v3(cagehit, hit.co); + if (r_cagehit) { + copy_v3_v3(r_cagehit, hit.co); + } } return tree->em->looptris[hit.index][0]->f; diff --git a/source/blender/editors/mesh/editmesh_bvh.h b/source/blender/editors/mesh/editmesh_bvh.h index e2b45062e41..6512f054c1b 100644 --- a/source/blender/editors/mesh/editmesh_bvh.h +++ b/source/blender/editors/mesh/editmesh_bvh.h @@ -50,13 +50,12 @@ struct BMBVHTree *BMBVH_NewBVH(struct BMEditMesh *em, int flag, struct Scene *sc void BMBVH_FreeBVH(struct BMBVHTree *tree); struct BVHTree *BMBVH_BVHTree(struct BMBVHTree *tree); -struct BMFace *BMBVH_RayCast(struct BMBVHTree *tree, float *co, float *dir, float *hitout, float *cagehit); +struct BMFace *BMBVH_RayCast(struct BMBVHTree *tree, const float co[3], const float dir[3], + float r_hitout[3], float r_cagehit[3]); int BMBVH_EdgeVisible(struct BMBVHTree *tree, struct BMEdge *e, struct ARegion *ar, struct View3D *v3d, struct Object *obedit); -#define BM_SEARCH_MAXDIST 0.4f - /*find a vert closest to co in a sphere of radius maxdist*/ struct BMVert *BMBVH_FindClosestVert(struct BMBVHTree *tree, float *co, float maxdist); diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index b3bc0a1ffa9..6f33fcd05b7 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -277,7 +277,7 @@ static void knife_add_to_vert_edges(KnifeTool_OpData *kcd, KnifeEdge *kfe) knife_append_list(kcd, &kfe->v2->edges, kfe); } -static KnifeVert *new_knife_vert(KnifeTool_OpData *kcd, float *co, float *cageco) +static KnifeVert *new_knife_vert(KnifeTool_OpData *kcd, const float co[3], float *cageco) { KnifeVert *kfv = BLI_mempool_calloc(kcd->kverts); diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index e755df1f076..b5f486947b4 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -56,7 +56,8 @@ #include "mesh_intern.h" /* helper to find edge for edge_rip */ -static float edbm_rip_rip_edgedist(ARegion *ar, float mat[][4], float *co1, float *co2, const float mvalf[2]) +static float edbm_rip_rip_edgedist(ARegion *ar, float mat[][4], + const float co1[3], const float co2[2], const float mvalf[2]) { float vec1[3], vec2[3]; diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c index 4ec3c22d1df..2ebeb9ca224 100644 --- a/source/blender/editors/mesh/editmesh_utils.c +++ b/source/blender/editors/mesh/editmesh_utils.c @@ -567,7 +567,7 @@ void undo_push_mesh(bContext *C, const char *name) } /* write comment here */ -UvVertMap *EDBM_uv_vert_map_create(BMEditMesh *em, int selected, int do_face_idx_array, float *limit) +UvVertMap *EDBM_uv_vert_map_create(BMEditMesh *em, int selected, int do_face_idx_array, const float limit[2]) { BMVert *ev; BMFace *efa; diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 0a6368daf74..b3ac3069cd9 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -641,7 +641,7 @@ typedef struct MocNode { intptr_t index[MOC_NODE_RES]; } MocNode; -static int mesh_octree_get_base_offs(float *co, float *offs, float *div) +static int mesh_octree_get_base_offs(const float co[3], const float offs[3], const float div[3]) { int vx, vy, vz; @@ -736,7 +736,7 @@ static void mesh_octree_add_nodes(MocNode **basetable, float *co, float *offs, f } -static intptr_t mesh_octree_find_index(MocNode **bt, MVert *mvert, float *co) +static intptr_t mesh_octree_find_index(MocNode **bt, MVert *mvert, const float co[3]) { float *vec; int a; @@ -773,7 +773,7 @@ static struct { /* mode is 's' start, or 'e' end, or 'u' use */ /* if end, ob can be NULL */ -intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, float *co, char mode) +intptr_t mesh_octree_table(Object *ob, BMEditMesh *em, const float co[3], char mode) { MocNode **bt; @@ -920,7 +920,7 @@ int mesh_get_x_mirror_vert(Object *ob, int index) return 0; } -static BMVert *editbmesh_get_x_mirror_vert_spacial(Object *ob, BMEditMesh *em, float *co) +static BMVert *editbmesh_get_x_mirror_vert_spacial(Object *ob, BMEditMesh *em, const float co[3]) { float vec[3]; intptr_t poinval; @@ -972,7 +972,7 @@ static BMVert *editbmesh_get_x_mirror_vert_topo(Object *ob, struct BMEditMesh *e return NULL; } -BMVert *editbmesh_get_x_mirror_vert(Object *ob, struct BMEditMesh *em, BMVert *eve, float *co, int index) +BMVert *editbmesh_get_x_mirror_vert(Object *ob, struct BMEditMesh *em, BMVert *eve, const float co[3], int index) { if (((Mesh *)ob->data)->editflag & ME_EDIT_MIRROR_TOPO) { return editbmesh_get_x_mirror_vert_topo(ob, em, eve, index); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 507fbe0f4b8..8d2dfc8dbfa 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -766,7 +766,7 @@ static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) } /* Handles clipping against a mirror modifier and SCULPT_LOCK axis flags */ -static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float val[3]) +static void sculpt_clip(Sculpt *sd, SculptSession *ss, float co[3], const float val[3]) { int i; diff --git a/source/blender/editors/uvedit/uvedit_intern.h b/source/blender/editors/uvedit/uvedit_intern.h index 04d20b3ba09..d258d271833 100644 --- a/source/blender/editors/uvedit/uvedit_intern.h +++ b/source/blender/editors/uvedit/uvedit_intern.h @@ -55,8 +55,8 @@ int uvedit_face_visible_nolocal(struct Scene *scene, struct BMFace *efa); /* geometric utilities */ float uv_poly_area(float uv[][2], int len); -void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy, int len); -void uv_poly_center(struct BMEditMesh *em, struct BMFace *f, float cent[2]); +void uv_poly_copy_aspect(float uv_orig [][2], float uv[][2], float aspx, float aspy, int len); +void uv_poly_center(struct BMEditMesh *em, struct BMFace *f, float r_cent[2]); /* find nearest */ @@ -69,8 +69,10 @@ typedef struct NearestHit { int vert1, vert2; //index in mesh of edge vertices } NearestHit; -void uv_find_nearest_vert(struct Scene *scene, struct Image *ima, struct BMEditMesh *em, float co[2], float penalty[2], struct NearestHit *hit); -void uv_find_nearest_edge(struct Scene *scene, struct Image *ima, struct BMEditMesh *em, float co[2], struct NearestHit *hit); +void uv_find_nearest_vert(struct Scene *scene, struct Image *ima, struct BMEditMesh *em, + const float co[2], const float penalty[2], struct NearestHit *hit); +void uv_find_nearest_edge(struct Scene *scene, struct Image *ima, struct BMEditMesh *em, + const float co[2], struct NearestHit *hit); /* utility tool functions */ @@ -115,4 +117,3 @@ void UV_OT_unwrap(struct wmOperatorType *ot); void UV_OT_stitch(struct wmOperatorType *ot); #endif /* __UVEDIT_INTERN_H__ */ - diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 4a115465932..7883fac3ec2 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -523,20 +523,20 @@ void uvedit_live_unwrap_update(SpaceImage *sima, Scene *scene, Object *obedit) } /*********************** geometric utilities ***********************/ -void uv_poly_center(BMEditMesh *em, BMFace *f, float cent[2]) +void uv_poly_center(BMEditMesh *em, BMFace *f, float r_cent[2]) { BMLoop *l; MLoopUV *luv; BMIter liter; - zero_v2(cent); + zero_v2(r_cent); BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - add_v2_v2(cent, luv->uv); + add_v2_v2(r_cent, luv->uv); } - mul_v2_fl(cent, 1.0f / (float)f->len); + mul_v2_fl(r_cent, 1.0f / (float)f->len); } float uv_poly_area(float uv[][2], int len) @@ -561,7 +561,7 @@ void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float as } } -int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float *max) +int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float r_min[2], float r_max[2]) { BMEditMesh *em = BMEdit_FromObject(obedit); BMFace *efa; @@ -571,7 +571,7 @@ int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float MLoopUV *luv; int sel; - INIT_MINMAX2(min, max); + INIT_MINMAX2(r_min, r_max); sel = 0; BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { @@ -582,7 +582,7 @@ int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { if (uvedit_uv_select_test(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - DO_MINMAX2(luv->uv, min, max); + DO_MINMAX2(luv->uv, r_min, r_max); sel = 1; } } @@ -643,7 +643,7 @@ static int uvedit_center(Scene *scene, Image *ima, Object *obedit, float cent[2] /************************** find nearest ****************************/ -void uv_find_nearest_edge(Scene *scene, Image *ima, BMEditMesh *em, float co[2], NearestHit *hit) +void uv_find_nearest_edge(Scene *scene, Image *ima, BMEditMesh *em, const float co[2], NearestHit *hit) { MTexPoly *tf; BMFace *efa; @@ -690,13 +690,11 @@ void uv_find_nearest_edge(Scene *scene, Image *ima, BMEditMesh *em, float co[2], } } -static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, float co[2], NearestHit *hit) +static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, const float co[2], NearestHit *hit) { MTexPoly *tf; BMFace *efa; - BMLoop *l; - BMIter iter, liter; - MLoopUV *luv; + BMIter iter; float mindist, dist, cent[2]; mindist = 1e10f; @@ -711,16 +709,9 @@ static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, float tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); if (!uvedit_face_visible_test(scene, ima, efa, tf)) continue; - - cent[0] = cent[1] = 0.0f; - BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { - luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - add_v2_v2(cent, luv->uv); - } + uv_poly_center(em, efa, cent); - cent[0] /= efa->len; - cent[1] /= efa->len; dist = fabs(co[0] - cent[0]) + fabs(co[1] - cent[1]); if (dist < mindist) { @@ -732,7 +723,7 @@ static void find_nearest_uv_face(Scene *scene, Image *ima, BMEditMesh *em, float } static int nearest_uv_between(BMEditMesh *em, BMFace *efa, int UNUSED(nverts), int id, - float co[2], float uv[2]) + const float co[2], const float uv[2]) { BMLoop *l; MLoopUV *luv; @@ -778,7 +769,7 @@ static int nearest_uv_between(BMEditMesh *em, BMFace *efa, int UNUSED(nverts), i } void uv_find_nearest_vert(Scene *scene, Image *ima, BMEditMesh *em, - float co[2], float penalty[2], NearestHit *hit) + float const co[2], const float penalty[2], NearestHit *hit) { BMFace *efa; BMLoop *l; @@ -836,7 +827,7 @@ void uv_find_nearest_vert(Scene *scene, Image *ima, BMEditMesh *em, } } -int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], float uv[2]) +int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, const float co[2], float r_uv[2]) { BMEditMesh *em = BMEdit_FromObject(obedit); BMFace *efa; @@ -845,11 +836,10 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], MTexPoly *tf; MLoopUV *luv; float mindist, dist; - int found = 0; + int found = FALSE; mindist = 1e10f; - uv[0] = co[0]; - uv[1] = co[1]; + copy_v2_v2(r_uv, co); BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); @@ -863,9 +853,8 @@ int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], if (dist <= mindist) { mindist = dist; - uv[0] = luv->uv[0]; - uv[1] = luv->uv[1]; - found = 1; + copy_v2_v2(r_uv, luv->uv); + found = TRUE; } } } @@ -1085,7 +1074,7 @@ static int select_edgeloop(Scene *scene, Image *ima, BMEditMesh *em, NearestHit /*********************** linked select ***********************/ -static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, float limit[2], NearestHit *hit, int extend) +static void select_linked(Scene *scene, Image *ima, BMEditMesh *em, const float limit[2], NearestHit *hit, int extend) { BMFace *efa; BMLoop *l; @@ -1696,7 +1685,7 @@ static int sticky_select(float *limit, int hitv[4], int v, float *hituv[4], floa return 0; } -static int mouse_select(bContext *C, float co[2], int extend, int loop) +static int mouse_select(bContext *C, const float co[2], int extend, int loop) { SpaceImage *sima = CTX_wm_space_image(C); Scene *scene = CTX_data_scene(C); @@ -2768,7 +2757,7 @@ void UV_OT_select_lasso(wmOperatorType *ot) /* ******************** snap cursor operator **************** */ -static void snap_uv_to_pixel(float *uvco, float w, float h) +static void snap_uv_to_pixel(float uvco[2], float w, float h) { uvco[0] = ((float)((int)((uvco[0] * w) + 0.5f))) / w; uvco[1] = ((float)((int)((uvco[1] * h) + 0.5f))) / h; diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index d8fbb6f468f..b115e5bb244 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -128,7 +128,7 @@ static void updateDepgraph(ModifierData *md, DagForest *forest, } } -static float hook_falloff(float *co_1, float *co_2, const float falloff_squared, float fac) +static float hook_falloff(const float co_1[3], const float co_2[3], const float falloff_squared, float fac) { if (falloff_squared) { float len_squared = len_squared_v3v3(co_1, co_2); From de923eba57846e8a91b24347917f988cbfa97999 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 28 Apr 2012 08:32:00 +0000 Subject: [PATCH 137/158] * UI fix for last commit, forgot to remove the plugin text strings. --- release/scripts/startup/bl_ui/space_userpref.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 3c279502b02..6ae66481fa1 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -785,8 +785,6 @@ class USERPREF_PT_file(Panel): sub = col1.column() sub.label(text="Fonts:") sub.label(text="Textures:") - sub.label(text="Texture Plugins:") - sub.label(text="Sequence Plugins:") sub.label(text="Render Output:") sub.label(text="Scripts:") sub.label(text="Sounds:") From 3cceab304aaee5e5f11f224b39960f0c58f68727 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 08:43:24 +0000 Subject: [PATCH 138/158] Style cleanup in own compositor nodes --- .../nodes/node_composite_movieclip.c | 62 +++++++++---------- .../nodes/node_composite_moviedistortion.c | 50 +++++++-------- .../nodes/node_composite_stabilize2d.c | 12 ++-- .../nodes/node_composite_transform.c | 36 +++++------ 4 files changed, 80 insertions(+), 80 deletions(-) diff --git a/source/blender/nodes/composite/nodes/node_composite_movieclip.c b/source/blender/nodes/composite/nodes/node_composite_movieclip.c index dd2c169fe9a..2f017b52676 100644 --- a/source/blender/nodes/composite/nodes/node_composite_movieclip.c +++ b/source/blender/nodes/composite/nodes/node_composite_movieclip.c @@ -33,7 +33,7 @@ #include "node_composite_util.h" -static bNodeSocketTemplate cmp_node_movieclip_out[]= { +static bNodeSocketTemplate cmp_node_movieclip_out[] = { { SOCK_RGBA, 0, "Image"}, { SOCK_FLOAT, 1, "Offset X"}, { SOCK_FLOAT, 1, "Offset Y"}, @@ -49,50 +49,50 @@ static CompBuf *node_composit_get_movieclip(RenderData *rd, MovieClip *clip, Mov int type; float *rect; - int alloc= FALSE; + int alloc = FALSE; - orig_ibuf= BKE_movieclip_get_ibuf(clip, user); + orig_ibuf = BKE_movieclip_get_ibuf(clip, user); - if (orig_ibuf==NULL || (orig_ibuf->rect==NULL && orig_ibuf->rect_float==NULL)) { + if (orig_ibuf == NULL || (orig_ibuf->rect == NULL && orig_ibuf->rect_float == NULL)) { IMB_freeImBuf(orig_ibuf); return NULL; } - ibuf= IMB_dupImBuf(orig_ibuf); + ibuf = IMB_dupImBuf(orig_ibuf); IMB_freeImBuf(orig_ibuf); - if (ibuf->rect_float == NULL || ibuf->userflags&IB_RECT_INVALID) { + if (ibuf->rect_float == NULL || (ibuf->userflags & IB_RECT_INVALID)) { IMB_float_from_rect(ibuf); - ibuf->userflags&= ~IB_RECT_INVALID; + ibuf->userflags &= ~IB_RECT_INVALID; } /* now we need a float buffer from the image with matching color management */ if (ibuf->channels == 4) { - rect= node_composit_get_float_buffer(rd, ibuf, &alloc); + rect = node_composit_get_float_buffer(rd, ibuf, &alloc); } else { /* non-rgba passes can't use color profiles */ - rect= ibuf->rect_float; + rect = ibuf->rect_float; } /* done coercing into the correct color management */ if (!alloc) { - rect= MEM_dupallocN(rect); - alloc= 1; + rect = MEM_dupallocN(rect); + alloc = TRUE; } - type= ibuf->channels; + type = ibuf->channels; if (rd->scemode & R_COMP_CROP) { - stackbuf= get_cropped_compbuf(&rd->disprect, rect, ibuf->x, ibuf->y, type); + stackbuf = get_cropped_compbuf(&rd->disprect, rect, ibuf->x, ibuf->y, type); if (alloc) MEM_freeN(rect); } else { /* we put imbuf copy on stack, cbuf knows rect is from other ibuf when freed! */ - stackbuf= alloc_compbuf(ibuf->x, ibuf->y, type, FALSE); - stackbuf->rect= rect; - stackbuf->malloc= alloc; + stackbuf = alloc_compbuf(ibuf->x, ibuf->y, type, FALSE); + stackbuf->rect = rect; + stackbuf->malloc = alloc; } IMB_freeImBuf(ibuf); @@ -103,32 +103,32 @@ static CompBuf *node_composit_get_movieclip(RenderData *rd, MovieClip *clip, Mov static void node_composit_exec_movieclip(void *data, bNode *node, bNodeStack **UNUSED(in), bNodeStack **out) { if (node->id) { - RenderData *rd= data; - MovieClip *clip= (MovieClip *)node->id; - MovieClipUser *user= (MovieClipUser *)node->storage; - CompBuf *stackbuf= NULL; + RenderData *rd = data; + MovieClip *clip = (MovieClip *)node->id; + MovieClipUser *user = (MovieClipUser *)node->storage; + CompBuf *stackbuf = NULL; BKE_movieclip_user_set_frame(user, rd->cfra); - stackbuf= node_composit_get_movieclip(rd, clip, user); + stackbuf = node_composit_get_movieclip(rd, clip, user); if (stackbuf) { - MovieTrackingStabilization *stab= &clip->tracking.stabilization; + MovieTrackingStabilization *stab = &clip->tracking.stabilization; /* put image on stack */ - out[0]->data= stackbuf; + out[0]->data = stackbuf; - if (stab->flag&TRACKING_2D_STABILIZATION) { + if (stab->flag & TRACKING_2D_STABILIZATION) { float loc[2], scale, angle; BKE_tracking_stabilization_data(&clip->tracking, rd->cfra, stackbuf->x, stackbuf->y, loc, &scale, &angle); - out[1]->vec[0]= loc[0]; - out[2]->vec[0]= loc[1]; + out[1]->vec[0] = loc[0]; + out[2]->vec[0] = loc[1]; - out[3]->vec[0]= scale; - out[4]->vec[0]= angle; + out[3]->vec[0] = scale; + out[4]->vec[0] = angle; } /* generate preview */ @@ -139,10 +139,10 @@ static void node_composit_exec_movieclip(void *data, bNode *node, bNodeStack **U static void init(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) { - MovieClipUser *user= MEM_callocN(sizeof(MovieClipUser), "node movie clip user"); + MovieClipUser *user = MEM_callocN(sizeof(MovieClipUser), "node movie clip user"); - node->storage= user; - user->framenr= 1; + node->storage = user; + user->framenr = 1; } void register_node_type_cmp_movieclip(bNodeTreeType *ttype) diff --git a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c index d9f0da9b8aa..f6ffc783b08 100644 --- a/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c +++ b/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c @@ -4,7 +4,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -37,12 +37,12 @@ /* **************** Translate ******************** */ -static bNodeSocketTemplate cmp_node_moviedistortion_in[]= { +static bNodeSocketTemplate cmp_node_moviedistortion_in[] = { { SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_moviedistortion_out[]= { +static bNodeSocketTemplate cmp_node_moviedistortion_out[] = { { SOCK_RGBA, 0, "Image"}, { -1, 0, "" } }; @@ -51,63 +51,63 @@ static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { if (in[0]->data) { if (node->id) { - MovieClip *clip= (MovieClip *)node->id; - CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA); - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 0); + MovieClip *clip = (MovieClip *)node->id; + CompBuf *cbuf = typecheck_compbuf(in[0]->data, CB_RGBA); + CompBuf *stackbuf = alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 0); ImBuf *ibuf; - ibuf= IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0); + ibuf = IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0); if (ibuf) { - RenderData *rd= data; + RenderData *rd = data; ImBuf *obuf; - MovieTracking *tracking= &clip->tracking; + MovieTracking *tracking = &clip->tracking; int width, height; - float overscan= 0.0f; - MovieClipUser user= {0}; + float overscan = 0.0f; + MovieClipUser user = {0}; BKE_movieclip_user_set_frame(&user, rd->cfra); - ibuf->rect_float= cbuf->rect; + ibuf->rect_float = cbuf->rect; BKE_movieclip_get_size(clip, &user, &width, &height); if (!node->storage) - node->storage= BKE_tracking_distortion_create(); + node->storage = BKE_tracking_distortion_create(); - if (node->custom1==0) + if (node->custom1 == 0) obuf= BKE_tracking_distortion_exec(node->storage, tracking, ibuf, width, height, overscan, 1); else obuf= BKE_tracking_distortion_exec(node->storage, tracking, ibuf, width, height, overscan, 0); - stackbuf->rect= obuf->rect_float; - stackbuf->malloc= 1; + stackbuf->rect = obuf->rect_float; + stackbuf->malloc = TRUE; - obuf->mall&= ~IB_rectfloat; - obuf->rect_float= NULL; + obuf->mall &= ~IB_rectfloat; + obuf->rect_float = NULL; IMB_freeImBuf(ibuf); IMB_freeImBuf(obuf); } /* pass on output and free */ - out[0]->data= stackbuf; + out[0]->data = stackbuf; - if (cbuf!=in[0]->data) + if (cbuf != in[0]->data) free_compbuf(cbuf); } else { - CompBuf *cbuf= in[0]->data; - CompBuf *stackbuf= pass_on_compbuf(cbuf); + CompBuf *cbuf = in[0]->data; + CompBuf *stackbuf = pass_on_compbuf(cbuf); - out[0]->data= stackbuf; + out[0]->data = stackbuf; } } } static const char *label(bNode *node) { - if (node->custom1==0) + if (node->custom1 == 0) return IFACE_("Undistortion"); else return IFACE_("Distortion"); @@ -124,7 +124,7 @@ static void storage_free(bNode *node) static void storage_copy(bNode *orig_node, bNode *new_node) { if (orig_node->storage) - new_node->storage= BKE_tracking_distortion_copy(orig_node->storage); + new_node->storage = BKE_tracking_distortion_copy(orig_node->storage); } void register_node_type_cmp_moviedistortion(bNodeTreeType *ttype) diff --git a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c index 0eac85c4030..e5d8fe16d51 100644 --- a/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c +++ b/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c @@ -48,20 +48,20 @@ static bNodeSocketTemplate cmp_node_stabilize2d_out[]= { static void node_composit_exec_stabilize2d(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { if (in[0]->data && node->id) { - RenderData *rd= data; - MovieClip *clip= (MovieClip *)node->id; - CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA); + RenderData *rd = data; + MovieClip *clip = (MovieClip *)node->id; + CompBuf *cbuf = typecheck_compbuf(in[0]->data, CB_RGBA); CompBuf *stackbuf; float loc[2], scale, angle; BKE_tracking_stabilization_data(&clip->tracking, rd->cfra, cbuf->x, cbuf->y, loc, &scale, &angle); - stackbuf= node_composit_transform(cbuf, loc[0], loc[1], angle, scale, node->custom1); + stackbuf = node_composit_transform(cbuf, loc[0], loc[1], angle, scale, node->custom1); /* pass on output and free */ - out[0]->data= stackbuf; + out[0]->data = stackbuf; - if (cbuf!=in[0]->data) + if (cbuf != in[0]->data) free_compbuf(cbuf); } } diff --git a/source/blender/nodes/composite/nodes/node_composite_transform.c b/source/blender/nodes/composite/nodes/node_composite_transform.c index a7906cf3e46..2c2a352017a 100644 --- a/source/blender/nodes/composite/nodes/node_composite_transform.c +++ b/source/blender/nodes/composite/nodes/node_composite_transform.c @@ -4,7 +4,7 @@ * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -34,7 +34,7 @@ /* **************** Transform ******************** */ -static bNodeSocketTemplate cmp_node_transform_in[]= { +static bNodeSocketTemplate cmp_node_transform_in[] = { { SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, { SOCK_FLOAT, 1, "X", 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f}, { SOCK_FLOAT, 1, "Y", 0.0f, 0.0f, 0.0f, 0.0f, -10000.0f, 10000.0f}, @@ -43,17 +43,17 @@ static bNodeSocketTemplate cmp_node_transform_in[]= { { -1, 0, "" } }; -static bNodeSocketTemplate cmp_node_transform_out[]= { +static bNodeSocketTemplate cmp_node_transform_out[] = { { SOCK_RGBA, 0, "Image"}, { -1, 0, "" } }; CompBuf* node_composit_transform(CompBuf *cbuf, float x, float y, float angle, float scale, int filter_type) { - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); + CompBuf *stackbuf = alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, TRUE); ImBuf *ibuf, *obuf; float mat[4][4], lmat[4][4], rmat[4][4], smat[4][4], cmat[4][4], icmat[4][4]; - float svec[3]= {scale, scale, scale}, loc[2]= {x, y}; + float svec[3] = {scale, scale, scale}, loc[2] = {x, y}; unit_m4(rmat); unit_m4(lmat); @@ -61,8 +61,8 @@ CompBuf* node_composit_transform(CompBuf *cbuf, float x, float y, float angle, f unit_m4(cmat); /* image center as rotation center */ - cmat[3][0]= (float)cbuf->x/2.0f; - cmat[3][1]= (float)cbuf->y/2.0f; + cmat[3][0] = (float)cbuf->x/2.0f; + cmat[3][1] = (float)cbuf->y/2.0f; invert_m4_m4(icmat, cmat); size_to_mat4(smat, svec); /* scale matrix */ @@ -74,18 +74,18 @@ CompBuf* node_composit_transform(CompBuf *cbuf, float x, float y, float angle, f invert_m4(mat); - ibuf= IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0); - obuf= IMB_allocImBuf(stackbuf->x, stackbuf->y, 32, 0); + ibuf = IMB_allocImBuf(cbuf->x, cbuf->y, 32, 0); + obuf = IMB_allocImBuf(stackbuf->x, stackbuf->y, 32, 0); if (ibuf && obuf) { int i, j; - ibuf->rect_float= cbuf->rect; - obuf->rect_float= stackbuf->rect; + ibuf->rect_float = cbuf->rect; + obuf->rect_float = stackbuf->rect; - for (j=0; jy; j++) { - for (i=0; ix;i++) { - float vec[3]= {i, j, 0}; + for (j = 0; j < cbuf->y; j++) { + for (i = 0; i < cbuf->x; i++) { + float vec[3] = {i, j, 0}; mul_v3_m4v3(vec, mat, vec); @@ -114,15 +114,15 @@ CompBuf* node_composit_transform(CompBuf *cbuf, float x, float y, float angle, f static void node_composit_exec_transform(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) { if (in[0]->data) { - CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA); + CompBuf *cbuf = typecheck_compbuf(in[0]->data, CB_RGBA); CompBuf *stackbuf; - stackbuf= node_composit_transform(cbuf, in[1]->vec[0], in[2]->vec[0], in[3]->vec[0], in[4]->vec[0], node->custom1); + stackbuf = node_composit_transform(cbuf, in[1]->vec[0], in[2]->vec[0], in[3]->vec[0], in[4]->vec[0], node->custom1); /* pass on output and free */ - out[0]->data= stackbuf; + out[0]->data = stackbuf; - if (cbuf!=in[0]->data) + if (cbuf != in[0]->data) free_compbuf(cbuf); } } From 5d70a6aedfa246e6a6ac137cdc2be088950b7875 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 28 Apr 2012 08:45:55 +0000 Subject: [PATCH 139/158] Add MingW as "platform" --- build_files/buildbot/master_unpack.py | 3 ++- build_files/scons/tools/btools.py | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build_files/buildbot/master_unpack.py b/build_files/buildbot/master_unpack.py index 3df22ad8745..f67bd294496 100644 --- a/build_files/buildbot/master_unpack.py +++ b/build_files/buildbot/master_unpack.py @@ -48,7 +48,8 @@ def get_platform(filename): tokens = filename.split("-") platforms = ('osx', 'mac', 'bsd', 'win', 'linux', 'source', - 'solaris') + 'solaris', + 'mingw') platform_tokens = [] found = False diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index efc80fcd3c5..c9d31d75e18 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -622,7 +622,13 @@ def buildslave(target=None, source=None, env=None): else: extension = '.tar.bz2' - platform = env['OURPLATFORM'].split('-')[0] + if env['OURPLATFORM'] == 'win32-mingw': + platform = 'mingw32' + elif env['OURPLATFORM'] == 'win32-mingw': + platform = 'mingw64' + else: + platform = env['OURPLATFORM'].split('-')[0] + if platform == 'linux': import platform From fd2439f47aaaea00abb55e29b8eac39694d6ced8 Mon Sep 17 00:00:00 2001 From: Nathan Letwory Date: Sat, 28 Apr 2012 08:47:37 +0000 Subject: [PATCH 140/158] bump commit count, mingw32 -> mingw64 --- build_files/scons/tools/btools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index c9d31d75e18..65593d559ed 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -624,7 +624,7 @@ def buildslave(target=None, source=None, env=None): if env['OURPLATFORM'] == 'win32-mingw': platform = 'mingw32' - elif env['OURPLATFORM'] == 'win32-mingw': + elif env['OURPLATFORM'] == 'win64-mingw': platform = 'mingw64' else: platform = env['OURPLATFORM'].split('-')[0] From 07b2241fb12db6731ae1a54c6f98f4743e35fd2d Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Apr 2012 08:53:59 +0000 Subject: [PATCH 141/158] Cycles: merging features from tomato branch. === BVH build time optimizations === * BVH building was multithreaded. Not all building is multithreaded, packing and the initial bounding/splitting is still single threaded, but recursive splitting is, which was the main bottleneck. * Object splitting now uses binning rather than sorting of all elements, using code from the Embree raytracer from Intel. http://software.intel.com/en-us/articles/embree-photo-realistic-ray-tracing-kernels/ * Other small changes to avoid allocations, pack memory more tightly, avoid some unnecessary operations, ... These optimizations do not work yet when Spatial Splits are enabled, for that more work is needed. There's also other optimizations still needed, in particular for the case of many low poly objects, the packing step and node memory allocation. BVH raytracing time should remain about the same, but BVH build time should be significantly reduced, test here show speedup of about 5x to 10x on a dual core and 5x to 25x on an 8-core machine, depending on the scene. === Threads === Centralized task scheduler for multithreading, which is basically the CPU device threading code wrapped into something reusable. Basic idea is that there is a single TaskScheduler that keeps a pool of threads, one for each core. Other places in the code can then create a TaskPool that they can drop Tasks in to be executed by the scheduler, and wait for them to complete or cancel them early. === Normal ==== Added a Normal output to the texture coordinate node. This currently gives the object space normal, which is the same under object animation. In the future this might become a "generated" normal so it's also stable for deforming objects, but for now it's already useful for non-deforming objects. === Render Layers === Per render layer Samples control, leaving it to 0 will use the common scene setting. Environment pass will now render environment even if film is set to transparent. Exclude Layers" added. Scene layers (all object that influence the render, directly or indirectly) are shared between all render layers. However sometimes it's useful to leave out some object influence for a particular render layer. That's what this option allows you to do. === Filter Glossy === When using a value higher than 0.0, this will blur glossy reflections after blurry bounces, to reduce noise at the cost of accuracy. 1.0 is a good starting value to tweak. Some light paths have a low probability of being found while contributing much light to the pixel. As a result these light paths will be found in some pixels and not in others, causing fireflies. An example of such a difficult path might be a small light that is causing a small specular highlight on a sharp glossy material, which we are seeing through a rough glossy material. With path tracing it is difficult to find the specular highlight, but if we increase the roughness on the material the highlight gets bigger and softer, and so easier to find. Often this blurring will be hardly noticeable, because we are seeing it through a blurry material anyway, but there are also cases where this will lead to a loss of detail in lighting. --- intern/cycles/blender/addon/properties.py | 8 +- intern/cycles/blender/addon/ui.py | 23 +- intern/cycles/blender/blender_session.cpp | 7 +- intern/cycles/blender/blender_sync.cpp | 6 +- intern/cycles/blender/blender_sync.h | 5 +- intern/cycles/bvh/CMakeLists.txt | 4 + intern/cycles/bvh/bvh.cpp | 4 +- intern/cycles/bvh/bvh_binning.cpp | 223 ++ intern/cycles/bvh/bvh_binning.h | 86 + intern/cycles/bvh/bvh_build.cpp | 648 ++-- intern/cycles/bvh/bvh_build.h | 104 +- intern/cycles/bvh/bvh_node.cpp | 22 +- intern/cycles/bvh/bvh_node.h | 18 +- intern/cycles/bvh/bvh_params.h | 91 +- intern/cycles/bvh/bvh_sort.cpp | 16 +- intern/cycles/bvh/bvh_sort.h | 2 +- intern/cycles/bvh/bvh_split.cpp | 293 ++ intern/cycles/bvh/bvh_split.h | 110 + intern/cycles/device/device.cpp | 9 - intern/cycles/device/device.h | 4 +- intern/cycles/device/device_cpu.cpp | 61 +- intern/cycles/device/device_multi.cpp | 7 +- intern/cycles/kernel/kernel_accumulate.h | 9 +- intern/cycles/kernel/kernel_path.h | 33 +- intern/cycles/kernel/kernel_types.h | 4 +- intern/cycles/kernel/svm/svm_tex_coord.h | 27 + intern/cycles/kernel/svm/svm_types.h | 1 + intern/cycles/render/integrator.cpp | 4 + intern/cycles/render/integrator.h | 1 + intern/cycles/render/mesh.cpp | 7 +- intern/cycles/render/nodes.cpp | 7 + intern/cycles/render/object.cpp | 1 + intern/cycles/render/session.cpp | 5 + intern/cycles/subd/subd_patch.cpp | 12 +- intern/cycles/util/CMakeLists.txt | 2 + intern/cycles/util/util_boundbox.h | 88 +- intern/cycles/util/util_math.h | 497 ++- intern/cycles/util/util_task.cpp | 223 ++ intern/cycles/util/util_task.h | 122 + intern/cycles/util/util_thread.h | 127 - intern/cycles/util/util_transform.cpp | 23 +- intern/cycles/util/util_types.h | 268 +- .../gpu/intern/gpu_shader_material.glsl | 5 +- .../gpu/intern/gpu_shader_material.glsl.c | 2921 +++++++++-------- source/blender/makesdna/DNA_scene_types.h | 10 +- source/blender/makesrna/intern/rna_scene.c | 13 + .../render/extern/include/RE_pipeline.h | 2 +- .../render/intern/source/render_result.c | 1 + 48 files changed, 3808 insertions(+), 2356 deletions(-) create mode 100644 intern/cycles/bvh/bvh_binning.cpp create mode 100644 intern/cycles/bvh/bvh_binning.h create mode 100644 intern/cycles/bvh/bvh_split.cpp create mode 100644 intern/cycles/bvh/bvh_split.h create mode 100644 intern/cycles/util/util_task.cpp create mode 100644 intern/cycles/util/util_task.h diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index cb99ea3b499..35f97bf629f 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -85,10 +85,10 @@ class CyclesRenderSettings(bpy.types.PropertyGroup): description="Leave out caustics, resulting in a darker image with less noise", default=False, ) - cls.blur_caustics = FloatProperty( - name="Blur Caustics", - description="Blur caustics to reduce noise", - min=0.0, max=1.0, + cls.blur_glossy = FloatProperty( + name="Filter Glossy", + description="Adaptively blur glossy shaders after blurry bounces, to reduce noise at the cost of accuracy", + min=0.0, max=10.0, default=0.0, ) diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 624d00b377d..0ed08589327 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -87,11 +87,11 @@ class CyclesRender_PT_integrator(CyclesButtonsPanel, Panel): sub.prop(cscene, "diffuse_bounces", text="Diffuse") sub.prop(cscene, "glossy_bounces", text="Glossy") sub.prop(cscene, "transmission_bounces", text="Transmission") - sub.prop(cscene, "no_caustics") - #row = col.row() - #row.prop(cscene, "blur_caustics") - #row.active = not cscene.no_caustics + col.separator() + + col.prop(cscene, "no_caustics") + col.prop(cscene, "blur_glossy") class CyclesRender_PT_film(CyclesButtonsPanel, Panel): @@ -178,10 +178,7 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel): col = split.column() col.prop(scene, "layers", text="Scene") - col.label(text="Material:") - col.prop(rl, "material_override", text="") - - col.prop(rl, "use_sky", "Use Environment") + col.prop(rl, "layers_exclude", text="Exclude") col = split.column() col.prop(rl, "layers", text="Layer") @@ -190,6 +187,16 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel): split = layout.split() + col = split.column() + col.label(text="Material:") + col.prop(rl, "material_override", text="") + + col = split.column() + col.prop(rl, "samples") + col.prop(rl, "use_sky", "Use Environment") + + split = layout.split() + col = split.column() col.label(text="Passes:") col.prop(rl, "use_pass_combined") diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index dc6c69e2904..5ece7aa26e2 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -218,12 +218,13 @@ void BlenderSession::render() scene->film->passes = passes; scene->film->tag_update(scene); - /* update session */ - session->reset(buffer_params, session_params.samples); - /* update scene */ sync->sync_data(b_v3d, b_iter->name().c_str()); + /* update session */ + int samples = sync->get_layer_samples(); + session->reset(buffer_params, (samples == 0)? session_params.samples: samples); + /* render */ session->start(); session->wait(); diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 5a286298774..41cd200d003 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -153,6 +153,8 @@ void BlenderSync::sync_integrator() integrator->transparent_shadows = get_boolean(cscene, "use_transparent_shadows"); integrator->no_caustics = get_boolean(cscene, "no_caustics"); + integrator->filter_glossy = get_float(cscene, "blur_glossy"); + integrator->seed = get_int(cscene, "seed"); integrator->layer_flag = render_layer.layer; @@ -208,6 +210,7 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer) render_layer.holdout_layer = 0; render_layer.material_override = PointerRNA_NULL; render_layer.use_background = true; + render_layer.samples = 0; return; } } @@ -220,12 +223,13 @@ void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer) for(r.layers.begin(b_rlay); b_rlay != r.layers.end(); ++b_rlay) { if((!layer && first_layer) || (layer && b_rlay->name() == layer)) { render_layer.name = b_rlay->name(); - render_layer.scene_layer = get_layer(b_scene.layers()); + render_layer.scene_layer = get_layer(b_scene.layers()) & ~get_layer(b_rlay->layers_exclude()); render_layer.layer = get_layer(b_rlay->layers()); render_layer.holdout_layer = get_layer(b_rlay->layers_zmask()); render_layer.layer |= render_layer.holdout_layer; render_layer.material_override = b_rlay->material_override(); render_layer.use_background = b_rlay->use_sky(); + render_layer.samples = b_rlay->samples(); } first_layer = false; diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index d2550a1ffd7..ab8e4bd8d00 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -57,6 +57,7 @@ public: void sync_data(BL::SpaceView3D b_v3d, const char *layer = 0); void sync_camera(BL::Object b_override, int width, int height); void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height); + int get_layer_samples() { return render_layer.samples; } /* get parameters */ static SceneParams get_scene_params(BL::Scene b_scene, bool background); @@ -108,7 +109,8 @@ private: RenderLayerInfo() : scene_layer(0), layer(0), holdout_layer(0), material_override(PointerRNA_NULL), - use_background(true) + use_background(true), + samples(0) {} string name; @@ -117,6 +119,7 @@ private: uint holdout_layer; BL::Material material_override; bool use_background; + int samples; } render_layer; }; diff --git a/intern/cycles/bvh/CMakeLists.txt b/intern/cycles/bvh/CMakeLists.txt index decc576fe51..131a7a1f750 100644 --- a/intern/cycles/bvh/CMakeLists.txt +++ b/intern/cycles/bvh/CMakeLists.txt @@ -10,17 +10,21 @@ set(INC set(SRC bvh.cpp + bvh_binning.cpp bvh_build.cpp bvh_node.cpp bvh_sort.cpp + bvh_split.cpp ) set(SRC_HEADERS bvh.h + bvh_binning.h bvh_build.h bvh_node.h bvh_params.h bvh_sort.h + bvh_split.h ) include_directories(${INC}) diff --git a/intern/cycles/bvh/bvh.cpp b/intern/cycles/bvh/bvh.cpp index c9bfa964332..15695dddf45 100644 --- a/intern/cycles/bvh/bvh.cpp +++ b/intern/cycles/bvh/bvh.cpp @@ -530,7 +530,7 @@ void RegularBVH::refit_nodes() { assert(!params.top_level); - BoundBox bbox; + BoundBox bbox = BoundBox::empty; uint visibility = 0; refit_node(0, (pack.is_leaf[0])? true: false, bbox, visibility); } @@ -572,7 +572,7 @@ void RegularBVH::refit_node(int idx, bool leaf, BoundBox& bbox, uint& visibility } else { /* refit inner node, set bbox from children */ - BoundBox bbox0, bbox1; + BoundBox bbox0 = BoundBox::empty, bbox1 = BoundBox::empty; uint visibility0 = 0, visibility1 = 0; refit_node((c0 < 0)? -c0-1: c0, (c0 < 0), bbox0, visibility0); diff --git a/intern/cycles/bvh/bvh_binning.cpp b/intern/cycles/bvh/bvh_binning.cpp new file mode 100644 index 00000000000..661541a8d23 --- /dev/null +++ b/intern/cycles/bvh/bvh_binning.cpp @@ -0,0 +1,223 @@ +/* + * Adapted from code copyright 2009-2011 Intel Corporation + * Modifications Copyright 2012, Blender Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//#define __KERNEL_SSE__ + +#include + +#include "bvh_binning.h" + +#include "util_algorithm.h" +#include "util_boundbox.h" +#include "util_types.h" + +CCL_NAMESPACE_BEGIN + +/* SSE replacements */ + +__forceinline void prefetch_L1 (const void* ptr) { } +__forceinline void prefetch_L2 (const void* ptr) { } +__forceinline void prefetch_L3 (const void* ptr) { } +__forceinline void prefetch_NTA(const void* ptr) { } + +template __forceinline float extract(const int4& b) +{ return b[src]; } +template __forceinline const float4 insert(const float4& a, const float b) +{ float4 r = a; r[dst] = b; return r; } + +__forceinline int get_best_dimension(const float4& bestSAH) +{ + // return (int)__bsf(movemask(reduce_min(bestSAH) == bestSAH)); + + float minSAH = min(bestSAH.x, min(bestSAH.y, bestSAH.z)); + + if(bestSAH.x == minSAH) return 0; + else if(bestSAH.y == minSAH) return 1; + else return 2; +} + +/* BVH Object Binning */ + +BVHObjectBinning::BVHObjectBinning(const BVHRange& job, BVHReference *prims) +: BVHRange(job), splitSAH(FLT_MAX), dim(0), pos(0) +{ + /* compute number of bins to use and precompute scaling factor for binning */ + num_bins = min(size_t(MAX_BINS), size_t(4.0f + 0.05f*size())); + scale = rcp(cent_bounds().size()) * make_float3((float)num_bins); + + /* initialize binning counter and bounds */ + BoundBox bin_bounds[MAX_BINS][4]; /* bounds for every bin in every dimension */ + int4 bin_count[MAX_BINS]; /* number of primitives mapped to bin */ + + for(size_t i = 0; i < num_bins; i++) { + bin_count[i] = make_int4(0); + bin_bounds[i][0] = bin_bounds[i][1] = bin_bounds[i][2] = BoundBox::empty; + } + + /* map geometry to bins, unrolled once */ + { + ssize_t i; + + for(i = 0; i < ssize_t(size()) - 1; i += 2) { + prefetch_L2(&prims[start() + i + 8]); + + /* map even and odd primitive to bin */ + BVHReference prim0 = prims[start() + i + 0]; + BVHReference prim1 = prims[start() + i + 1]; + + int4 bin0 = get_bin(prim0.bounds()); + int4 bin1 = get_bin(prim1.bounds()); + + /* increase bounds for bins for even primitive */ + int b00 = extract<0>(bin0); bin_count[b00][0]++; bin_bounds[b00][0].grow(prim0.bounds()); + int b01 = extract<1>(bin0); bin_count[b01][1]++; bin_bounds[b01][1].grow(prim0.bounds()); + int b02 = extract<2>(bin0); bin_count[b02][2]++; bin_bounds[b02][2].grow(prim0.bounds()); + + /* increase bounds of bins for odd primitive */ + int b10 = extract<0>(bin1); bin_count[b10][0]++; bin_bounds[b10][0].grow(prim1.bounds()); + int b11 = extract<1>(bin1); bin_count[b11][1]++; bin_bounds[b11][1].grow(prim1.bounds()); + int b12 = extract<2>(bin1); bin_count[b12][2]++; bin_bounds[b12][2].grow(prim1.bounds()); + } + + /* for uneven number of primitives */ + if(i < ssize_t(size())) { + /* map primitive to bin */ + BVHReference prim0 = prims[start() + i]; + int4 bin0 = get_bin(prim0.bounds()); + + /* increase bounds of bins */ + int b00 = extract<0>(bin0); bin_count[b00][0]++; bin_bounds[b00][0].grow(prim0.bounds()); + int b01 = extract<1>(bin0); bin_count[b01][1]++; bin_bounds[b01][1].grow(prim0.bounds()); + int b02 = extract<2>(bin0); bin_count[b02][2]++; bin_bounds[b02][2].grow(prim0.bounds()); + } + } + + /* sweep from right to left and compute parallel prefix of merged bounds */ + float4 r_area[MAX_BINS]; /* area of bounds of primitives on the right */ + float4 r_count[MAX_BINS]; /* number of primitives on the right */ + int4 count = make_int4(0); + + BoundBox bx = BoundBox::empty; + BoundBox by = BoundBox::empty; + BoundBox bz = BoundBox::empty; + + for(size_t i = num_bins - 1; i > 0; i--) { + count = count + bin_count[i]; + r_count[i] = blocks(count); + + bx = merge(bx,bin_bounds[i][0]); r_area[i][0] = bx.half_area(); + by = merge(by,bin_bounds[i][1]); r_area[i][1] = by.half_area(); + bz = merge(bz,bin_bounds[i][2]); r_area[i][2] = bz.half_area(); + } + + /* sweep from left to right and compute SAH */ + int4 ii = make_int4(1); + float4 bestSAH = make_float4(FLT_MAX); + int4 bestSplit = make_int4(-1); + + count = make_int4(0); + + bx = BoundBox::empty; + by = BoundBox::empty; + bz = BoundBox::empty; + + for(size_t i = 1; i < num_bins; i++, ii += make_int4(1)) { + count = count + bin_count[i-1]; + + bx = merge(bx,bin_bounds[i-1][0]); float Ax = bx.half_area(); + by = merge(by,bin_bounds[i-1][1]); float Ay = by.half_area(); + bz = merge(bz,bin_bounds[i-1][2]); float Az = bz.half_area(); + + float4 lCount = blocks(count); + float4 lArea = make_float4(Ax,Ay,Az,Az); + float4 sah = lArea*lCount + r_area[i]*r_count[i]; + + bestSplit = select(sah < bestSAH,ii,bestSplit); + bestSAH = min(sah,bestSAH); + } + + int4 mask = float3_to_float4(cent_bounds().size()) <= make_float4(0.0f); + bestSAH = insert<3>(select(mask, make_float4(FLT_MAX), bestSAH), FLT_MAX); + + /* find best dimension */ + dim = get_best_dimension(bestSAH); + splitSAH = bestSAH[dim]; + pos = bestSplit[dim]; + leafSAH = bounds().half_area() * blocks(size()); +} + +void BVHObjectBinning::split(BVHReference* prims, BVHObjectBinning& left_o, BVHObjectBinning& right_o) const +{ + size_t N = size(); + + BoundBox lgeom_bounds = BoundBox::empty; + BoundBox rgeom_bounds = BoundBox::empty; + BoundBox lcent_bounds = BoundBox::empty; + BoundBox rcent_bounds = BoundBox::empty; + + ssize_t l = 0, r = N-1; + + while(l <= r) { + prefetch_L2(&prims[start() + l + 8]); + prefetch_L2(&prims[start() + r - 8]); + + BVHReference prim = prims[start() + l]; + float3 center = prim.bounds().center2(); + + if(get_bin(center)[dim] < pos) { + lgeom_bounds.grow(prim.bounds()); + lcent_bounds.grow(center); + l++; + } + else { + rgeom_bounds.grow(prim.bounds()); + rcent_bounds.grow(center); + swap(prims[start()+l],prims[start()+r]); + r--; + } + } + + /* finish */ + if(l != 0 && N-1-r != 0) { + right_o = BVHObjectBinning(BVHRange(rgeom_bounds, rcent_bounds, start() + l, N-1-r), prims); + left_o = BVHObjectBinning(BVHRange(lgeom_bounds, lcent_bounds, start(), l), prims); + return; + } + + /* object medium split if we did not make progress, can happen when all + primitives have same centroid */ + lgeom_bounds = BoundBox::empty; + rgeom_bounds = BoundBox::empty; + lcent_bounds = BoundBox::empty; + rcent_bounds = BoundBox::empty; + + for(size_t i = 0; i < N/2; i++) { + lgeom_bounds.grow(prims[start()+i].bounds()); + lcent_bounds.grow(prims[start()+i].bounds().center2()); + } + + for(size_t i = N/2; i < N; i++) { + rgeom_bounds.grow(prims[start()+i].bounds()); + rcent_bounds.grow(prims[start()+i].bounds().center2()); + } + + right_o = BVHObjectBinning(BVHRange(rgeom_bounds, rcent_bounds, start() + N/2, N/2 + N%2), prims); + left_o = BVHObjectBinning(BVHRange(lgeom_bounds, lcent_bounds, start(), N/2), prims); +} + +CCL_NAMESPACE_END + diff --git a/intern/cycles/bvh/bvh_binning.h b/intern/cycles/bvh/bvh_binning.h new file mode 100644 index 00000000000..60742157055 --- /dev/null +++ b/intern/cycles/bvh/bvh_binning.h @@ -0,0 +1,86 @@ +/* + * Adapted from code copyright 2009-2011 Intel Corporation + * Modifications Copyright 2012, Blender Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BVH_BINNING_H__ +#define __BVH_BINNING_H__ + +#include "bvh_params.h" + +#include "util_types.h" + +CCL_NAMESPACE_BEGIN + +/* Single threaded object binner. Finds the split with the best SAH heuristic + * by testing for each dimension multiple partitionings for regular spaced + * partition locations. A partitioning for a partition location is computed, + * by putting primitives whose centroid is on the left and right of the split + * location to different sets. The SAH is evaluated by computing the number of + * blocks occupied by the primitives in the partitions. */ + +class BVHObjectBinning : public BVHRange +{ +public: + __forceinline BVHObjectBinning() {} + BVHObjectBinning(const BVHRange& job, BVHReference *prims); + + void split(BVHReference *prims, BVHObjectBinning& left_o, BVHObjectBinning& right_o) const; + + float splitSAH; /* SAH cost of the best split */ + float leafSAH; /* SAH cost of creating a leaf */ + +protected: + int dim; /* best split dimension */ + int pos; /* best split position */ + size_t num_bins; /* actual number of bins to use */ + float3 scale; /* scaling factor to compute bin */ + + enum { MAX_BINS = 32 }; + enum { LOG_BLOCK_SIZE = 2 }; + + /* computes the bin numbers for each dimension for a box. */ + __forceinline int4 get_bin(const BoundBox& box) const + { + int4 a = make_int4((box.center2() - cent_bounds().min)*scale - make_float3(0.5f)); + int4 mn = make_int4(0); + int4 mx = make_int4((int)num_bins-1); + + return clamp(a, mn, mx); + } + + /* computes the bin numbers for each dimension for a point. */ + __forceinline int4 get_bin(const float3& c) const + { + return make_int4((c - cent_bounds().min)*scale - make_float3(0.5f)); + } + + /* compute the number of blocks occupied for each dimension. */ + __forceinline float4 blocks(const int4& a) const + { + return make_float4((a + make_int4((1 << LOG_BLOCK_SIZE)-1)) >> LOG_BLOCK_SIZE); + } + + /* compute the number of blocks occupied in one dimension. */ + __forceinline int blocks(size_t a) const + { + return (int)((a+((1LL << LOG_BLOCK_SIZE)-1)) >> LOG_BLOCK_SIZE); + } +}; + +CCL_NAMESPACE_END + +#endif + diff --git a/intern/cycles/bvh/bvh_build.cpp b/intern/cycles/bvh/bvh_build.cpp index 38674c2c561..c5b4f1d01ae 100644 --- a/intern/cycles/bvh/bvh_build.cpp +++ b/intern/cycles/bvh/bvh_build.cpp @@ -15,22 +15,36 @@ * limitations under the License. */ +#include "bvh_binning.h" #include "bvh_build.h" #include "bvh_node.h" #include "bvh_params.h" -#include "bvh_sort.h" +#include "bvh_split.h" #include "mesh.h" #include "object.h" #include "scene.h" -#include "util_algorithm.h" +#include "util_debug.h" #include "util_foreach.h" #include "util_progress.h" #include "util_time.h" CCL_NAMESPACE_BEGIN +/* BVH Build Task */ + +class BVHBuildTask : public Task { +public: + BVHBuildTask(InnerNode *node_, int child_, BVHObjectBinning& range_, int level_) + : node(node_), child(child_), level(level_), range(range_) {} + + InnerNode *node; + int child; + int level; + BVHObjectBinning range; +}; + /* Constructor / Destructor */ BVHBuild::BVHBuild(const vector& objects_, @@ -41,10 +55,10 @@ BVHBuild::BVHBuild(const vector& objects_, prim_object(prim_object_), params(params_), progress(progress_), - progress_start_time(0.0) + progress_start_time(0.0), + task_pool(function_bind(&BVHBuild::thread_build_node, this, _1, _2)) { spatial_min_overlap = 0.0f; - progress_num_duplicates = 0; } BVHBuild::~BVHBuild() @@ -53,57 +67,63 @@ BVHBuild::~BVHBuild() /* Adding References */ -void BVHBuild::add_reference_mesh(NodeSpec& root, Mesh *mesh, int i) +void BVHBuild::add_reference_mesh(BoundBox& root, BoundBox& center, Mesh *mesh, int i) { for(uint j = 0; j < mesh->triangles.size(); j++) { Mesh::Triangle t = mesh->triangles[j]; - Reference ref; + BoundBox bounds = BoundBox::empty; for(int k = 0; k < 3; k++) { float3 pt = mesh->verts[t.v[k]]; - ref.bounds.grow(pt); + bounds.grow(pt); } - if(ref.bounds.valid()) { - ref.prim_index = j; - ref.prim_object = i; - - references.push_back(ref); - root.bounds.grow(ref.bounds); + if(bounds.valid()) { + references.push_back(BVHReference(bounds, j, i)); + root.grow(bounds); + center.grow(bounds.center2()); } } } -void BVHBuild::add_reference_object(NodeSpec& root, Object *ob, int i) +void BVHBuild::add_reference_object(BoundBox& root, BoundBox& center, Object *ob, int i) { - Reference ref; - - ref.prim_index = -1; - ref.prim_object = i; - ref.bounds = ob->bounds; - - references.push_back(ref); - root.bounds.grow(ref.bounds); + references.push_back(BVHReference(ob->bounds, -1, i)); + root.grow(ob->bounds); + center.grow(ob->bounds.center2()); } -void BVHBuild::add_references(NodeSpec& root) +void BVHBuild::add_references(BVHRange& root) { - /* init root spec */ - root.num = 0; - root.bounds = BoundBox(); + /* reserve space for references */ + size_t num_alloc_references = 0; - /* add objects */ + foreach(Object *ob, objects) { + if(params.top_level) { + if(ob->mesh->transform_applied) + num_alloc_references += ob->mesh->triangles.size(); + else + num_alloc_references++; + } + else + num_alloc_references += ob->mesh->triangles.size(); + } + + references.reserve(num_alloc_references); + + /* add references from objects */ + BoundBox bounds = BoundBox::empty, center = BoundBox::empty; int i = 0; foreach(Object *ob, objects) { if(params.top_level) { if(ob->mesh->transform_applied) - add_reference_mesh(root, ob->mesh, i); + add_reference_mesh(bounds, center, ob->mesh, i); else - add_reference_object(root, ob, i); + add_reference_object(bounds, center, ob, i); } else - add_reference_mesh(root, ob->mesh, i); + add_reference_mesh(bounds, center, ob->mesh, i); i++; @@ -111,129 +131,213 @@ void BVHBuild::add_references(NodeSpec& root) } /* happens mostly on empty meshes */ - if(!root.bounds.valid()) - root.bounds.grow(make_float3(0.0f, 0.0f, 0.0f)); + if(!bounds.valid()) + bounds.grow(make_float3(0.0f, 0.0f, 0.0f)); - root.num = references.size(); + root = BVHRange(bounds, center, 0, references.size()); } /* Build */ BVHNode* BVHBuild::run() { - NodeSpec root; + BVHRange root; /* add references */ add_references(root); - if(progress.get_cancel()) return NULL; + if(progress.get_cancel()) + return NULL; /* init spatial splits */ if(params.top_level) /* todo: get rid of this */ params.use_spatial_split = false; - spatial_min_overlap = root.bounds.area() * params.spatial_split_alpha; + spatial_min_overlap = root.bounds().safe_area() * params.spatial_split_alpha; spatial_right_bounds.clear(); - spatial_right_bounds.resize(max(root.num, (int)BVHParams::NUM_SPATIAL_BINS) - 1); + spatial_right_bounds.resize(max(root.size(), (int)BVHParams::NUM_SPATIAL_BINS) - 1); /* init progress updates */ - progress_num_duplicates = 0; progress_start_time = time_dt(); + progress_count = 0; + progress_total = references.size(); + progress_original_total = progress_total; + + prim_index.resize(references.size()); + prim_object.resize(references.size()); /* build recursively */ - return build_node(root, 0, 0.0f, 1.0f); + BVHNode *rootnode; + + if(params.use_spatial_split) { + /* singlethreaded spatial split build */ + rootnode = build_node(root, 0); + } + else { + /* multithreaded binning build */ + BVHObjectBinning rootbin(root, &references[0]); + rootnode = build_node(rootbin, 0); + task_pool.wait(); + } + + /* delete if we cancelled */ + if(rootnode) { + if(progress.get_cancel()) { + rootnode->deleteSubtree(); + rootnode = NULL; + } + else if(!params.use_spatial_split) { + /*rotate(rootnode, 4, 5);*/ + rootnode->update_visibility(); + } + } + + return rootnode; } -void BVHBuild::progress_update(float progress_start, float progress_end) +void BVHBuild::progress_update() { if(time_dt() - progress_start_time < 0.25f) return; + + double progress_start = (double)progress_count/(double)progress_total; + double duplicates = (double)(progress_total - progress_original_total)/(double)progress_total; - float duplicates = (float)progress_num_duplicates/(float)references.size(); string msg = string_printf("Building BVH %.0f%%, duplicates %.0f%%", progress_start*100.0f, duplicates*100.0f); progress.set_substatus(msg); - progress_start_time = time_dt(); + progress_start_time = time_dt(); } -BVHNode* BVHBuild::build_node(const NodeSpec& spec, int level, float progress_start, float progress_end) +void BVHBuild::thread_build_node(Task *task_, int thread_id) { - /* progress update */ - progress_update(progress_start, progress_end); - if(progress.get_cancel()) return NULL; + if(progress.get_cancel()) + return; - /* small enough or too deep => create leaf. */ - if(spec.num <= params.min_leaf_size || level >= BVHParams::MAX_DEPTH) - return create_leaf_node(spec); + /* build nodes */ + BVHBuildTask *task = (BVHBuildTask*)task_; + BVHNode *node = build_node(task->range, task->level); - /* find split candidates. */ - float area = spec.bounds.area(); - float leafSAH = area * params.triangle_cost(spec.num); - float nodeSAH = area * params.node_cost(2); - ObjectSplit object = find_object_split(spec, nodeSAH); - SpatialSplit spatial; + /* set child in inner node */ + task->node->children[task->child] = node; - if(params.use_spatial_split && level < BVHParams::MAX_SPATIAL_DEPTH) { - BoundBox overlap = object.left_bounds; - overlap.intersect(object.right_bounds); + /* update progress */ + if(task->range.size() < THREAD_TASK_SIZE) { + /*rotate(node, INT_MAX, 5);*/ - if(overlap.area() >= spatial_min_overlap) - spatial = find_spatial_split(spec, nodeSAH); + thread_scoped_lock lock(build_mutex); + + progress_count += task->range.size(); + progress_update(); } +} - /* leaf SAH is the lowest => create leaf. */ - float minSAH = min(min(leafSAH, object.sah), spatial.sah); +/* multithreaded binning builder */ +BVHNode* BVHBuild::build_node(const BVHObjectBinning& range, int level) +{ + size_t size = range.size(); + float leafSAH = params.sah_triangle_cost * range.leafSAH; + float splitSAH = params.sah_node_cost * range.bounds().half_area() + params.sah_triangle_cost * range.splitSAH; - if(minSAH == leafSAH && spec.num <= params.max_leaf_size) - return create_leaf_node(spec); + /* make leaf node when threshold reached or SAH tells us */ + if(params.small_enough_for_leaf(size, level) || (size <= params.max_leaf_size && leafSAH < splitSAH)) + return create_leaf_node(range); - /* perform split. */ - NodeSpec left, right; - - if(params.use_spatial_split && minSAH == spatial.sah) - do_spatial_split(left, right, spec, spatial); - if(!left.num || !right.num) - do_object_split(left, right, spec, object); + /* perform split */ + BVHObjectBinning left, right; + range.split(&references[0], left, right); /* create inner node. */ - progress_num_duplicates += left.num + right.num - spec.num; + InnerNode *inner; - float progress_mid = lerp(progress_start, progress_end, (float)right.num / (float)(left.num + right.num)); + if(range.size() < THREAD_TASK_SIZE) { + /* local build */ + BVHNode *leftnode = build_node(left, level + 1); + BVHNode *rightnode = build_node(right, level + 1); - BVHNode* rightNode = build_node(right, level + 1, progress_start, progress_mid); - if(progress.get_cancel()) { - if(rightNode) rightNode->deleteSubtree(); - return NULL; + inner = new InnerNode(range.bounds(), leftnode, rightnode); + } + else { + /* threaded build */ + inner = new InnerNode(range.bounds()); + + task_pool.push(new BVHBuildTask(inner, 0, left, level + 1), true); + task_pool.push(new BVHBuildTask(inner, 1, right, level + 1), true); } - BVHNode* leftNode = build_node(left, level + 1, progress_mid, progress_end); - if(progress.get_cancel()) { - if(leftNode) leftNode->deleteSubtree(); - return NULL; - } - - return new InnerNode(spec.bounds, leftNode, rightNode); + return inner; } -BVHNode *BVHBuild::create_object_leaf_nodes(const Reference *ref, int num) +/* single threaded spatial split builder */ +BVHNode* BVHBuild::build_node(const BVHRange& range, int level) +{ + /* progress update */ + progress_update(); + if(progress.get_cancel()) + return NULL; + + /* small enough or too deep => create leaf. */ + if(params.small_enough_for_leaf(range.size(), level)) { + progress_count += range.size(); + return create_leaf_node(range); + } + + /* splitting test */ + BVHMixedSplit split(this, range, level); + + if(split.no_split) { + progress_count += range.size(); + return create_leaf_node(range); + } + + /* do split */ + BVHRange left, right; + split.split(this, left, right, range); + + progress_total += left.size() + right.size() - range.size(); + size_t total = progress_total; + + /* leaft node */ + BVHNode *leftnode = build_node(left, level + 1); + + /* right node (modify start for splits) */ + right.set_start(right.start() + progress_total - total); + BVHNode *rightnode = build_node(right, level + 1); + + /* inner node */ + return new InnerNode(range.bounds(), leftnode, rightnode); +} + +/* Create Nodes */ + +BVHNode *BVHBuild::create_object_leaf_nodes(const BVHReference *ref, int start, int num) { if(num == 0) { - BoundBox bounds; + BoundBox bounds = BoundBox::empty; return new LeafNode(bounds, 0, 0, 0); } else if(num == 1) { - prim_index.push_back(ref[0].prim_index); - prim_object.push_back(ref[0].prim_object); - uint visibility = objects[ref[0].prim_object]->visibility; - return new LeafNode(ref[0].bounds, visibility, prim_index.size()-1, prim_index.size()); + if(start == prim_index.size()) { + assert(params.use_spatial_split); + + prim_index.push_back(ref->prim_index()); + prim_object.push_back(ref->prim_object()); + } + else { + prim_index[start] = ref->prim_index(); + prim_object[start] = ref->prim_object(); + } + + uint visibility = objects[ref->prim_object()]->visibility; + return new LeafNode(ref->bounds(), visibility, start, start+1); } else { int mid = num/2; - BVHNode *leaf0 = create_object_leaf_nodes(ref, mid); - BVHNode *leaf1 = create_object_leaf_nodes(ref+mid, num-mid); + BVHNode *leaf0 = create_object_leaf_nodes(ref, start, mid); + BVHNode *leaf1 = create_object_leaf_nodes(ref+mid, start+mid, num-mid); - BoundBox bounds; + BoundBox bounds = BoundBox::empty; bounds.grow(leaf0->m_bounds); bounds.grow(leaf1->m_bounds); @@ -241,310 +345,136 @@ BVHNode *BVHBuild::create_object_leaf_nodes(const Reference *ref, int num) } } -BVHNode* BVHBuild::create_leaf_node(const NodeSpec& spec) +BVHNode* BVHBuild::create_leaf_node(const BVHRange& range) { vector& p_index = prim_index; vector& p_object = prim_object; - BoundBox bounds; - int num = 0; + BoundBox bounds = BoundBox::empty; + int num = 0, ob_num = 0; uint visibility = 0; - for(int i = 0; i < spec.num; i++) { - if(references.back().prim_index != -1) { - p_index.push_back(references.back().prim_index); - p_object.push_back(references.back().prim_object); - bounds.grow(references.back().bounds); - visibility |= objects[references.back().prim_object]->visibility; - references.pop_back(); + for(int i = 0; i < range.size(); i++) { + BVHReference& ref = references[range.start() + i]; + + if(ref.prim_index() != -1) { + if(range.start() + num == prim_index.size()) { + assert(params.use_spatial_split); + + p_index.push_back(ref.prim_index()); + p_object.push_back(ref.prim_object()); + } + else { + p_index[range.start() + num] = ref.prim_index(); + p_object[range.start() + num] = ref.prim_object(); + } + + bounds.grow(ref.bounds()); + visibility |= objects[ref.prim_object()]->visibility; num++; } + else { + if(ob_num < i) + references[range.start() + ob_num] = ref; + ob_num++; + } } BVHNode *leaf = NULL; if(num > 0) { - leaf = new LeafNode(bounds, visibility, p_index.size() - num, p_index.size()); + leaf = new LeafNode(bounds, visibility, range.start(), range.start() + num); - if(num == spec.num) + if(num == range.size()) return leaf; } /* while there may be multiple triangles in a leaf, for object primitives - * we want them to be the only one, so we */ - int ob_num = spec.num - num; - const Reference *ref = (ob_num)? &references.back() - (ob_num - 1): NULL; - BVHNode *oleaf = create_object_leaf_nodes(ref, ob_num); - for(int i = 0; i < ob_num; i++) - references.pop_back(); + * we want there to be the only one, so we keep splitting */ + const BVHReference *ref = (ob_num)? &references[range.start()]: NULL; + BVHNode *oleaf = create_object_leaf_nodes(ref, range.start() + num, ob_num); if(leaf) - return new InnerNode(spec.bounds, leaf, oleaf); + return new InnerNode(range.bounds(), leaf, oleaf); else return oleaf; } -/* Object Split */ +/* Tree Rotations */ -BVHBuild::ObjectSplit BVHBuild::find_object_split(const NodeSpec& spec, float nodeSAH) +void BVHBuild::rotate(BVHNode *node, int max_depth, int iterations) { - ObjectSplit split; - const Reference *ref_ptr = &references[references.size() - spec.num]; + /* in tested scenes, this resulted in slightly slower raytracing, so disabled + * it for now. could be implementation bug, or depend on the scene */ + if(node) + for(int i = 0; i < iterations; i++) + rotate(node, max_depth); +} - for(int dim = 0; dim < 3; dim++) { - /* sort references */ - bvh_reference_sort(references.size() - spec.num, references.size(), &references[0], dim); +void BVHBuild::rotate(BVHNode *node, int max_depth) +{ + /* nothing to rotate if we reached a leaf node. */ + if(node->is_leaf() || max_depth < 0) + return; + + InnerNode *parent = (InnerNode*)node; - /* sweep right to left and determine bounds. */ - BoundBox right_bounds; + /* rotate all children first */ + for(size_t c = 0; c < 2; c++) + rotate(parent->children[c], max_depth-1); - for(int i = spec.num - 1; i > 0; i--) { - right_bounds.grow(ref_ptr[i].bounds); - spatial_right_bounds[i - 1] = right_bounds; - } + /* compute current area of all children */ + BoundBox bounds0 = parent->children[0]->m_bounds; + BoundBox bounds1 = parent->children[1]->m_bounds; - /* sweep left to right and select lowest SAH. */ - BoundBox left_bounds; + float area0 = bounds0.half_area(); + float area1 = bounds1.half_area(); + float4 child_area = make_float4(area0, area1, 0.0f, 0.0f); - for(int i = 1; i < spec.num; i++) { - left_bounds.grow(ref_ptr[i - 1].bounds); - right_bounds = spatial_right_bounds[i - 1]; + /* find best rotation. we pick a target child of a first child, and swap + * this with an other child. we perform the best such swap. */ + float best_cost = FLT_MAX; + int best_child = -1, bets_target = -1, best_other = -1; - float sah = nodeSAH + - left_bounds.area() * params.triangle_cost(i) + - right_bounds.area() * params.triangle_cost(spec.num - i); + for(size_t c = 0; c < 2; c++) { + /* ignore leaf nodes as we cannot descent into */ + if(parent->children[c]->is_leaf()) + continue; - if(sah < split.sah) { - split.sah = sah; - split.dim = dim; - split.num_left = i; - split.left_bounds = left_bounds; - split.right_bounds = right_bounds; + InnerNode *child = (InnerNode*)parent->children[c]; + BoundBox& other = (c == 0)? bounds1: bounds0; + + /* transpose child bounds */ + BoundBox target0 = child->children[0]->m_bounds; + BoundBox target1 = child->children[1]->m_bounds; + + /* compute cost for both possible swaps */ + float cost0 = merge(other, target1).half_area() - child_area[c]; + float cost1 = merge(target0, other).half_area() - child_area[c]; + + if(min(cost0,cost1) < best_cost) { + best_child = (int)c; + best_other = (int)(1-c); + + if(cost0 < cost1) { + best_cost = cost0; + bets_target = 0; + } + else { + best_cost = cost0; + bets_target = 1; } } } - return split; -} + /* if we did not find a swap that improves the SAH then do nothing */ + if(best_cost >= 0) + return; -void BVHBuild::do_object_split(NodeSpec& left, NodeSpec& right, const NodeSpec& spec, const ObjectSplit& split) -{ - /* sort references according to split */ - int start = references.size() - spec.num; - int end = references.size(); /* todo: is this right? */ + /* perform the best found tree rotation */ + InnerNode *child = (InnerNode*)parent->children[best_child]; - bvh_reference_sort(start, end, &references[0], split.dim); - - /* split node specs */ - left.num = split.num_left; - left.bounds = split.left_bounds; - right.num = spec.num - split.num_left; - right.bounds = split.right_bounds; -} - -/* Spatial Split */ - -BVHBuild::SpatialSplit BVHBuild::find_spatial_split(const NodeSpec& spec, float nodeSAH) -{ - /* initialize bins. */ - float3 origin = spec.bounds.min; - float3 binSize = (spec.bounds.max - origin) * (1.0f / (float)BVHParams::NUM_SPATIAL_BINS); - float3 invBinSize = 1.0f / binSize; - - for(int dim = 0; dim < 3; dim++) { - for(int i = 0; i < BVHParams::NUM_SPATIAL_BINS; i++) { - SpatialBin& bin = spatial_bins[dim][i]; - - bin.bounds = BoundBox(); - bin.enter = 0; - bin.exit = 0; - } - } - - /* chop references into bins. */ - for(unsigned int refIdx = references.size() - spec.num; refIdx < references.size(); refIdx++) { - const Reference& ref = references[refIdx]; - float3 firstBinf = (ref.bounds.min - origin) * invBinSize; - float3 lastBinf = (ref.bounds.max - origin) * invBinSize; - int3 firstBin = make_int3((int)firstBinf.x, (int)firstBinf.y, (int)firstBinf.z); - int3 lastBin = make_int3((int)lastBinf.x, (int)lastBinf.y, (int)lastBinf.z); - - firstBin = clamp(firstBin, 0, BVHParams::NUM_SPATIAL_BINS - 1); - lastBin = clamp(lastBin, firstBin, BVHParams::NUM_SPATIAL_BINS - 1); - - for(int dim = 0; dim < 3; dim++) { - Reference currRef = ref; - - for(int i = firstBin[dim]; i < lastBin[dim]; i++) { - Reference leftRef, rightRef; - - split_reference(leftRef, rightRef, currRef, dim, origin[dim] + binSize[dim] * (float)(i + 1)); - spatial_bins[dim][i].bounds.grow(leftRef.bounds); - currRef = rightRef; - } - - spatial_bins[dim][lastBin[dim]].bounds.grow(currRef.bounds); - spatial_bins[dim][firstBin[dim]].enter++; - spatial_bins[dim][lastBin[dim]].exit++; - } - } - - /* select best split plane. */ - SpatialSplit split; - - for(int dim = 0; dim < 3; dim++) { - /* sweep right to left and determine bounds. */ - BoundBox right_bounds; - - for(int i = BVHParams::NUM_SPATIAL_BINS - 1; i > 0; i--) { - right_bounds.grow(spatial_bins[dim][i].bounds); - spatial_right_bounds[i - 1] = right_bounds; - } - - /* sweep left to right and select lowest SAH. */ - BoundBox left_bounds; - int leftNum = 0; - int rightNum = spec.num; - - for(int i = 1; i < BVHParams::NUM_SPATIAL_BINS; i++) { - left_bounds.grow(spatial_bins[dim][i - 1].bounds); - leftNum += spatial_bins[dim][i - 1].enter; - rightNum -= spatial_bins[dim][i - 1].exit; - - float sah = nodeSAH + - left_bounds.area() * params.triangle_cost(leftNum) + - spatial_right_bounds[i - 1].area() * params.triangle_cost(rightNum); - - if(sah < split.sah) { - split.sah = sah; - split.dim = dim; - split.pos = origin[dim] + binSize[dim] * (float)i; - } - } - } - - return split; -} - -void BVHBuild::do_spatial_split(NodeSpec& left, NodeSpec& right, const NodeSpec& spec, const SpatialSplit& split) -{ - /* Categorize references and compute bounds. - * - * Left-hand side: [left_start, left_end[ - * Uncategorized/split: [left_end, right_start[ - * Right-hand side: [right_start, refs.size()[ */ - - vector& refs = references; - int left_start = refs.size() - spec.num; - int left_end = left_start; - int right_start = refs.size(); - - left.bounds = right.bounds = BoundBox(); - - for(int i = left_end; i < right_start; i++) { - if(refs[i].bounds.max[split.dim] <= split.pos) { - /* entirely on the left-hand side */ - left.bounds.grow(refs[i].bounds); - swap(refs[i], refs[left_end++]); - } - else if(refs[i].bounds.min[split.dim] >= split.pos) { - /* entirely on the right-hand side */ - right.bounds.grow(refs[i].bounds); - swap(refs[i--], refs[--right_start]); - } - } - - /* duplicate or unsplit references intersecting both sides. */ - while(left_end < right_start) { - /* split reference. */ - Reference lref, rref; - - split_reference(lref, rref, refs[left_end], split.dim, split.pos); - - /* compute SAH for duplicate/unsplit candidates. */ - BoundBox lub = left.bounds; // Unsplit to left: new left-hand bounds. - BoundBox rub = right.bounds; // Unsplit to right: new right-hand bounds. - BoundBox ldb = left.bounds; // Duplicate: new left-hand bounds. - BoundBox rdb = right.bounds; // Duplicate: new right-hand bounds. - - lub.grow(refs[left_end].bounds); - rub.grow(refs[left_end].bounds); - ldb.grow(lref.bounds); - rdb.grow(rref.bounds); - - float lac = params.triangle_cost(left_end - left_start); - float rac = params.triangle_cost(refs.size() - right_start); - float lbc = params.triangle_cost(left_end - left_start + 1); - float rbc = params.triangle_cost(refs.size() - right_start + 1); - - float unsplitLeftSAH = lub.area() * lbc + right.bounds.area() * rac; - float unsplitRightSAH = left.bounds.area() * lac + rub.area() * rbc; - float duplicateSAH = ldb.area() * lbc + rdb.area() * rbc; - float minSAH = min(min(unsplitLeftSAH, unsplitRightSAH), duplicateSAH); - - if(minSAH == unsplitLeftSAH) { - /* unsplit to left */ - left.bounds = lub; - left_end++; - } - else if(minSAH == unsplitRightSAH) { - /* unsplit to right */ - right.bounds = rub; - swap(refs[left_end], refs[--right_start]); - } - else { - /* duplicate */ - left.bounds = ldb; - right.bounds = rdb; - refs[left_end++] = lref; - refs.push_back(rref); - } - } - - left.num = left_end - left_start; - right.num = refs.size() - right_start; -} - -void BVHBuild::split_reference(Reference& left, Reference& right, const Reference& ref, int dim, float pos) -{ - /* initialize references. */ - left.prim_index = right.prim_index = ref.prim_index; - left.prim_object = right.prim_object = ref.prim_object; - left.bounds = right.bounds = BoundBox(); - - /* loop over vertices/edges. */ - Object *ob = objects[ref.prim_object]; - const Mesh *mesh = ob->mesh; - const int *inds = mesh->triangles[ref.prim_index].v; - const float3 *verts = &mesh->verts[0]; - const float3* v1 = &verts[inds[2]]; - - for(int i = 0; i < 3; i++) { - const float3* v0 = v1; - int vindex = inds[i]; - v1 = &verts[vindex]; - float v0p = (*v0)[dim]; - float v1p = (*v1)[dim]; - - /* insert vertex to the boxes it belongs to. */ - if(v0p <= pos) - left.bounds.grow(*v0); - - if(v0p >= pos) - right.bounds.grow(*v0); - - /* edge intersects the plane => insert intersection to both boxes. */ - if((v0p < pos && v1p > pos) || (v0p > pos && v1p < pos)) { - float3 t = lerp(*v0, *v1, clamp((pos - v0p) / (v1p - v0p), 0.0f, 1.0f)); - left.bounds.grow(t); - right.bounds.grow(t); - } - } - - /* intersect with original bounds. */ - left.bounds.max[dim] = pos; - right.bounds.min[dim] = pos; - left.bounds.intersect(ref.bounds); - right.bounds.intersect(ref.bounds); + swap(parent->children[best_other], child->children[bets_target]); + child->m_bounds = merge(child->children[0]->m_bounds, child->children[1]->m_bounds); } CCL_NAMESPACE_END diff --git a/intern/cycles/bvh/bvh_build.h b/intern/cycles/bvh/bvh_build.h index 1fa1951d7f2..84e14632b4b 100644 --- a/intern/cycles/bvh/bvh_build.h +++ b/intern/cycles/bvh/bvh_build.h @@ -21,8 +21,10 @@ #include #include "bvh.h" +#include "bvh_binning.h" #include "util_boundbox.h" +#include "util_task.h" #include "util_vector.h" CCL_NAMESPACE_BEGIN @@ -37,28 +39,7 @@ class Progress; class BVHBuild { public: - struct Reference - { - int prim_index; - int prim_object; - BoundBox bounds; - - Reference() - { - } - }; - - struct NodeSpec - { - int num; - BoundBox bounds; - - NodeSpec() - { - num = 0; - } - }; - + /* Constructor/Destructor */ BVHBuild( const vector& objects, vector& prim_index, @@ -70,63 +51,37 @@ public: BVHNode *run(); protected: + friend class BVHMixedSplit; + friend class BVHObjectSplit; + friend class BVHSpatialSplit; + /* adding references */ - void add_reference_mesh(NodeSpec& root, Mesh *mesh, int i); - void add_reference_object(NodeSpec& root, Object *ob, int i); - void add_references(NodeSpec& root); + void add_reference_mesh(BoundBox& root, BoundBox& center, Mesh *mesh, int i); + void add_reference_object(BoundBox& root, BoundBox& center, Object *ob, int i); + void add_references(BVHRange& root); /* building */ - BVHNode *build_node(const NodeSpec& spec, int level, float progress_start, float progress_end); - BVHNode *create_leaf_node(const NodeSpec& spec); - BVHNode *create_object_leaf_nodes(const Reference *ref, int num); + BVHNode *build_node(const BVHRange& range, int level); + BVHNode *build_node(const BVHObjectBinning& range, int level); + BVHNode *create_leaf_node(const BVHRange& range); + BVHNode *create_object_leaf_nodes(const BVHReference *ref, int start, int num); - void progress_update(float progress_start, float progress_end); + /* threads */ + enum { THREAD_TASK_SIZE = 4096 }; + void thread_build_node(Task *task_, int thread_id); + thread_mutex build_mutex; - /* object splits */ - struct ObjectSplit - { - float sah; - int dim; - int num_left; - BoundBox left_bounds; - BoundBox right_bounds; + /* progress */ + void progress_update(); - ObjectSplit() - : sah(FLT_MAX), dim(0), num_left(0) - { - } - }; - - ObjectSplit find_object_split(const NodeSpec& spec, float nodeSAH); - void do_object_split(NodeSpec& left, NodeSpec& right, const NodeSpec& spec, const ObjectSplit& split); - - /* spatial splits */ - struct SpatialSplit - { - float sah; - int dim; - float pos; - - SpatialSplit() - : sah(FLT_MAX), dim(0), pos(0.0f) - { - } - }; - - struct SpatialBin - { - BoundBox bounds; - int enter; - int exit; - }; - - SpatialSplit find_spatial_split(const NodeSpec& spec, float nodeSAH); - void do_spatial_split(NodeSpec& left, NodeSpec& right, const NodeSpec& spec, const SpatialSplit& split); - void split_reference(Reference& left, Reference& right, const Reference& ref, int dim, float pos); + /* tree rotations */ + void rotate(BVHNode *node, int max_depth); + void rotate(BVHNode *node, int max_depth, int iterations); /* objects and primitive references */ vector objects; - vector references; + vector references; + int num_original_references; /* output primitive indexes and objects */ vector& prim_index; @@ -138,12 +93,17 @@ protected: /* progress reporting */ Progress& progress; double progress_start_time; - int progress_num_duplicates; + size_t progress_count; + size_t progress_total; + size_t progress_original_total; /* spatial splitting */ float spatial_min_overlap; vector spatial_right_bounds; - SpatialBin spatial_bins[3][BVHParams::NUM_SPATIAL_BINS]; + BVHSpatialBin spatial_bins[3][BVHParams::NUM_SPATIAL_BINS]; + + /* threads */ + TaskPool task_pool; }; CCL_NAMESPACE_END diff --git a/intern/cycles/bvh/bvh_node.cpp b/intern/cycles/bvh/bvh_node.cpp index 63683bae4a3..4edfb4b70a4 100644 --- a/intern/cycles/bvh/bvh_node.cpp +++ b/intern/cycles/bvh/bvh_node.cpp @@ -24,6 +24,8 @@ CCL_NAMESPACE_BEGIN +/* BVH Node */ + int BVHNode::getSubtreeSize(BVH_STAT stat) const { int cnt = 0; @@ -59,7 +61,8 @@ int BVHNode::getSubtreeSize(BVH_STAT stat) const void BVHNode::deleteSubtree() { for(int i=0;ideleteSubtree(); + if(get_child(i)) + get_child(i)->deleteSubtree(); delete this; } @@ -70,12 +73,27 @@ float BVHNode::computeSubtreeSAHCost(const BVHParams& p, float probability) cons for(int i=0;icomputeSubtreeSAHCost(p, probability * child->m_bounds.area()/m_bounds.area()); + SAH += child->computeSubtreeSAHCost(p, probability * child->m_bounds.safe_area()/m_bounds.safe_area()); } return SAH; } +uint BVHNode::update_visibility() +{ + if(!is_leaf() && m_visibility == 0) { + InnerNode *inner = (InnerNode*)this; + BVHNode *child0 = inner->children[0]; + BVHNode *child1 = inner->children[1]; + + m_visibility = child0->update_visibility()|child1->update_visibility(); + } + + return m_visibility; +} + +/* Inner Node */ + void InnerNode::print(int depth) const { for(int i = 0; i < depth; i++) diff --git a/intern/cycles/bvh/bvh_node.h b/intern/cycles/bvh/bvh_node.h index 5e0a17a1193..5c00f7b7a38 100644 --- a/intern/cycles/bvh/bvh_node.h +++ b/intern/cycles/bvh/bvh_node.h @@ -49,8 +49,6 @@ public: virtual int num_triangles() const { return 0; } virtual void print(int depth = 0) const = 0; - float getArea() const { return m_bounds.area(); } - BoundBox m_bounds; uint m_visibility; @@ -58,6 +56,8 @@ public: int getSubtreeSize(BVH_STAT stat=BVH_STAT_NODE_COUNT) const; float computeSubtreeSAHCost(const BVHParams& p, float probability = 1.0f) const; void deleteSubtree(); + + uint update_visibility(); }; class InnerNode : public BVHNode @@ -66,9 +66,21 @@ public: InnerNode(const BoundBox& bounds, BVHNode* child0, BVHNode* child1) { m_bounds = bounds; - m_visibility = child0->m_visibility|child1->m_visibility; children[0] = child0; children[1] = child1; + + if(child0 && child1) + m_visibility = child0->m_visibility|child1->m_visibility; + else + m_visibility = 0; /* happens on build cancel */ + } + + InnerNode(const BoundBox& bounds) + { + m_bounds = bounds; + m_visibility = 0; + children[0] = NULL; + children[1] = NULL; } bool is_leaf() const { return false; } diff --git a/intern/cycles/bvh/bvh_params.h b/intern/cycles/bvh/bvh_params.h index 38093438500..0cf5e905fea 100644 --- a/intern/cycles/bvh/bvh_params.h +++ b/intern/cycles/bvh/bvh_params.h @@ -18,6 +18,8 @@ #ifndef __BVH_PARAMS_H__ #define __BVH_PARAMS_H__ +#include "util_boundbox.h" + CCL_NAMESPACE_BEGIN /* BVH Parameters */ @@ -73,14 +75,97 @@ public: } /* SAH costs */ - float cost(int num_nodes, int num_tris) const + __forceinline float cost(int num_nodes, int num_tris) const { return node_cost(num_nodes) + triangle_cost(num_tris); } - float triangle_cost(int n) const + __forceinline float triangle_cost(int n) const { return n*sah_triangle_cost; } - float node_cost(int n) const + __forceinline float node_cost(int n) const { return n*sah_node_cost; } + + __forceinline bool small_enough_for_leaf(int size, int level) + { return (size <= min_leaf_size || level >= MAX_DEPTH); } +}; + +/* BVH Reference + * + * Reference to a primitive. Primitive index and object are sneakily packed + * into BoundBox to reduce memory usage and align nicely */ + +class BVHReference +{ +public: + __forceinline BVHReference() {} + + __forceinline BVHReference(const BoundBox& bounds_, int prim_index, int prim_object) + : rbounds(bounds_) + { + rbounds.min.w = __int_as_float(prim_index); + rbounds.max.w = __int_as_float(prim_object); + } + + __forceinline const BoundBox& bounds() const { return rbounds; } + __forceinline int prim_index() const { return __float_as_int(rbounds.min.w); } + __forceinline int prim_object() const { return __float_as_int(rbounds.max.w); } + +protected: + BoundBox rbounds; +}; + +/* BVH Range + * + * Build range used during construction, to indicate the bounds and place in + * the reference array of a subset of pirmitives Again uses trickery to pack + * integers into BoundBox for alignment purposes. */ + +class BVHRange +{ +public: + __forceinline BVHRange() + { + rbounds.min.w = __int_as_float(0); + rbounds.max.w = __int_as_float(0); + } + + __forceinline BVHRange(const BoundBox& bounds_, int start_, int size_) + : rbounds(bounds_) + { + rbounds.min.w = __int_as_float(start_); + rbounds.max.w = __int_as_float(size_); + } + + __forceinline BVHRange(const BoundBox& bounds_, const BoundBox& cbounds_, int start_, int size_) + : rbounds(bounds_), cbounds(cbounds_) + { + rbounds.min.w = __int_as_float(start_); + rbounds.max.w = __int_as_float(size_); + } + + __forceinline void set_start(int start_) { rbounds.min.w = __int_as_float(start_); } + + __forceinline const BoundBox& bounds() const { return rbounds; } + __forceinline const BoundBox& cent_bounds() const { return cbounds; } + __forceinline int start() const { return __float_as_int(rbounds.min.w); } + __forceinline int size() const { return __float_as_int(rbounds.max.w); } + __forceinline int end() const { return start() + size(); } + +protected: + BoundBox rbounds; + BoundBox cbounds; +}; + +/* BVH Spatial Bin */ + +struct BVHSpatialBin +{ + BoundBox bounds; + int enter; + int exit; + + __forceinline BVHSpatialBin() + { + } }; CCL_NAMESPACE_END diff --git a/intern/cycles/bvh/bvh_sort.cpp b/intern/cycles/bvh/bvh_sort.cpp index ee4531a4843..bef384be592 100644 --- a/intern/cycles/bvh/bvh_sort.cpp +++ b/intern/cycles/bvh/bvh_sort.cpp @@ -32,23 +32,23 @@ public: dim = dim_; } - bool operator()(const BVHBuild::Reference& ra, const BVHBuild::Reference& rb) + bool operator()(const BVHReference& ra, const BVHReference& rb) { - float ca = ra.bounds.min[dim] + ra.bounds.max[dim]; - float cb = rb.bounds.min[dim] + rb.bounds.max[dim]; + float ca = ra.bounds().min[dim] + ra.bounds().max[dim]; + float cb = rb.bounds().min[dim] + rb.bounds().max[dim]; if(ca < cb) return true; else if(ca > cb) return false; - else if(ra.prim_object < rb.prim_object) return true; - else if(ra.prim_object > rb.prim_object) return false; - else if(ra.prim_index < rb.prim_index) return true; - else if(ra.prim_index > rb.prim_index) return false; + else if(ra.prim_object() < rb.prim_object()) return true; + else if(ra.prim_object() > rb.prim_object()) return false; + else if(ra.prim_index() < rb.prim_index()) return true; + else if(ra.prim_index() > rb.prim_index()) return false; return false; } }; -void bvh_reference_sort(int start, int end, BVHBuild::Reference *data, int dim) +void bvh_reference_sort(int start, int end, BVHReference *data, int dim) { sort(data+start, data+end, BVHReferenceCompare(dim)); } diff --git a/intern/cycles/bvh/bvh_sort.h b/intern/cycles/bvh/bvh_sort.h index f0676948146..ba35ba3fae7 100644 --- a/intern/cycles/bvh/bvh_sort.h +++ b/intern/cycles/bvh/bvh_sort.h @@ -20,7 +20,7 @@ CCL_NAMESPACE_BEGIN -void bvh_reference_sort(int start, int end, BVHBuild::Reference *data, int dim); +void bvh_reference_sort(int start, int end, BVHReference *data, int dim); CCL_NAMESPACE_END diff --git a/intern/cycles/bvh/bvh_split.cpp b/intern/cycles/bvh/bvh_split.cpp new file mode 100644 index 00000000000..263c5834428 --- /dev/null +++ b/intern/cycles/bvh/bvh_split.cpp @@ -0,0 +1,293 @@ +/* + * Adapted from code copyright 2009-2010 NVIDIA Corporation + * Modifications Copyright 2011, Blender Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "bvh_build.h" +#include "bvh_split.h" +#include "bvh_sort.h" + +#include "mesh.h" +#include "object.h" + +#include "util_algorithm.h" + +CCL_NAMESPACE_BEGIN + +/* Object Split */ + +BVHObjectSplit::BVHObjectSplit(BVHBuild *builder, const BVHRange& range, float nodeSAH) +: sah(FLT_MAX), dim(0), num_left(0), left_bounds(BoundBox::empty), right_bounds(BoundBox::empty) +{ + const BVHReference *ref_ptr = &builder->references[range.start()]; + float min_sah = FLT_MAX; + + for(int dim = 0; dim < 3; dim++) { + /* sort references */ + bvh_reference_sort(range.start(), range.end(), &builder->references[0], dim); + + /* sweep right to left and determine bounds. */ + BoundBox right_bounds = BoundBox::empty; + + for(int i = range.size() - 1; i > 0; i--) { + right_bounds.grow(ref_ptr[i].bounds()); + builder->spatial_right_bounds[i - 1] = right_bounds; + } + + /* sweep left to right and select lowest SAH. */ + BoundBox left_bounds = BoundBox::empty; + + for(int i = 1; i < range.size(); i++) { + left_bounds.grow(ref_ptr[i - 1].bounds()); + right_bounds = builder->spatial_right_bounds[i - 1]; + + float sah = nodeSAH + + left_bounds.safe_area() * builder->params.triangle_cost(i) + + right_bounds.safe_area() * builder->params.triangle_cost(range.size() - i); + + if(sah < min_sah) { + min_sah = sah; + + this->sah = sah; + this->dim = dim; + this->num_left = i; + this->left_bounds = left_bounds; + this->right_bounds = right_bounds; + } + } + } +} + +void BVHObjectSplit::split(BVHBuild *builder, BVHRange& left, BVHRange& right, const BVHRange& range) +{ + /* sort references according to split */ + bvh_reference_sort(range.start(), range.end(), &builder->references[0], this->dim); + + /* split node ranges */ + left = BVHRange(this->left_bounds, range.start(), this->num_left); + right = BVHRange(this->right_bounds, left.end(), range.size() - this->num_left); + +} + +/* Spatial Split */ + +BVHSpatialSplit::BVHSpatialSplit(BVHBuild *builder, const BVHRange& range, float nodeSAH) +: sah(FLT_MAX), dim(0), pos(0.0f) +{ + /* initialize bins. */ + float3 origin = range.bounds().min; + float3 binSize = (range.bounds().max - origin) * (1.0f / (float)BVHParams::NUM_SPATIAL_BINS); + float3 invBinSize = 1.0f / binSize; + + for(int dim = 0; dim < 3; dim++) { + for(int i = 0; i < BVHParams::NUM_SPATIAL_BINS; i++) { + BVHSpatialBin& bin = builder->spatial_bins[dim][i]; + + bin.bounds = BoundBox::empty; + bin.enter = 0; + bin.exit = 0; + } + } + + /* chop references into bins. */ + for(unsigned int refIdx = range.start(); refIdx < range.end(); refIdx++) { + const BVHReference& ref = builder->references[refIdx]; + float3 firstBinf = (ref.bounds().min - origin) * invBinSize; + float3 lastBinf = (ref.bounds().max - origin) * invBinSize; + int3 firstBin = make_int3((int)firstBinf.x, (int)firstBinf.y, (int)firstBinf.z); + int3 lastBin = make_int3((int)lastBinf.x, (int)lastBinf.y, (int)lastBinf.z); + + firstBin = clamp(firstBin, 0, BVHParams::NUM_SPATIAL_BINS - 1); + lastBin = clamp(lastBin, firstBin, BVHParams::NUM_SPATIAL_BINS - 1); + + for(int dim = 0; dim < 3; dim++) { + BVHReference currRef = ref; + + for(int i = firstBin[dim]; i < lastBin[dim]; i++) { + BVHReference leftRef, rightRef; + + split_reference(builder, leftRef, rightRef, currRef, dim, origin[dim] + binSize[dim] * (float)(i + 1)); + builder->spatial_bins[dim][i].bounds.grow(leftRef.bounds()); + currRef = rightRef; + } + + builder->spatial_bins[dim][lastBin[dim]].bounds.grow(currRef.bounds()); + builder->spatial_bins[dim][firstBin[dim]].enter++; + builder->spatial_bins[dim][lastBin[dim]].exit++; + } + } + + /* select best split plane. */ + for(int dim = 0; dim < 3; dim++) { + /* sweep right to left and determine bounds. */ + BoundBox right_bounds = BoundBox::empty; + + for(int i = BVHParams::NUM_SPATIAL_BINS - 1; i > 0; i--) { + right_bounds.grow(builder->spatial_bins[dim][i].bounds); + builder->spatial_right_bounds[i - 1] = right_bounds; + } + + /* sweep left to right and select lowest SAH. */ + BoundBox left_bounds = BoundBox::empty; + int leftNum = 0; + int rightNum = range.size(); + + for(int i = 1; i < BVHParams::NUM_SPATIAL_BINS; i++) { + left_bounds.grow(builder->spatial_bins[dim][i - 1].bounds); + leftNum += builder->spatial_bins[dim][i - 1].enter; + rightNum -= builder->spatial_bins[dim][i - 1].exit; + + float sah = nodeSAH + + left_bounds.safe_area() * builder->params.triangle_cost(leftNum) + + builder->spatial_right_bounds[i - 1].safe_area() * builder->params.triangle_cost(rightNum); + + if(sah < this->sah) { + this->sah = sah; + this->dim = dim; + this->pos = origin[dim] + binSize[dim] * (float)i; + } + } + } +} + +void BVHSpatialSplit::split(BVHBuild *builder, BVHRange& left, BVHRange& right, const BVHRange& range) +{ + /* Categorize references and compute bounds. + * + * Left-hand side: [left_start, left_end[ + * Uncategorized/split: [left_end, right_start[ + * Right-hand side: [right_start, refs.size()[ */ + + vector& refs = builder->references; + int left_start = range.start(); + int left_end = left_start; + int right_start = range.end(); + int right_end = range.end(); + BoundBox left_bounds = BoundBox::empty; + BoundBox right_bounds = BoundBox::empty; + + for(int i = left_end; i < right_start; i++) { + if(refs[i].bounds().max[this->dim] <= this->pos) { + /* entirely on the left-hand side */ + left_bounds.grow(refs[i].bounds()); + swap(refs[i], refs[left_end++]); + } + else if(refs[i].bounds().min[this->dim] >= this->pos) { + /* entirely on the right-hand side */ + right_bounds.grow(refs[i].bounds()); + swap(refs[i--], refs[--right_start]); + } + } + + /* duplicate or unsplit references intersecting both sides. */ + while(left_end < right_start) { + /* split reference. */ + BVHReference lref, rref; + + split_reference(builder, lref, rref, refs[left_end], this->dim, this->pos); + + /* compute SAH for duplicate/unsplit candidates. */ + BoundBox lub = left_bounds; // Unsplit to left: new left-hand bounds. + BoundBox rub = right_bounds; // Unsplit to right: new right-hand bounds. + BoundBox ldb = left_bounds; // Duplicate: new left-hand bounds. + BoundBox rdb = right_bounds; // Duplicate: new right-hand bounds. + + lub.grow(refs[left_end].bounds()); + rub.grow(refs[left_end].bounds()); + ldb.grow(lref.bounds()); + rdb.grow(rref.bounds()); + + float lac = builder->params.triangle_cost(left_end - left_start); + float rac = builder->params.triangle_cost(right_end - right_start); + float lbc = builder->params.triangle_cost(left_end - left_start + 1); + float rbc = builder->params.triangle_cost(right_end - right_start + 1); + + float unsplitLeftSAH = lub.safe_area() * lbc + right_bounds.safe_area() * rac; + float unsplitRightSAH = left_bounds.safe_area() * lac + rub.safe_area() * rbc; + float duplicateSAH = ldb.safe_area() * lbc + rdb.safe_area() * rbc; + float minSAH = min(min(unsplitLeftSAH, unsplitRightSAH), duplicateSAH); + + if(minSAH == unsplitLeftSAH) { + /* unsplit to left */ + left_bounds = lub; + left_end++; + } + else if(minSAH == unsplitRightSAH) { + /* unsplit to right */ + right_bounds = rub; + swap(refs[left_end], refs[--right_start]); + } + else { + /* duplicate */ + left_bounds = ldb; + right_bounds = rdb; + refs[left_end++] = lref; + refs.insert(refs.begin() + right_end, rref); + right_end++; + } + } + + left = BVHRange(left_bounds, left_start, left_end - left_start); + right = BVHRange(right_bounds, right_start, right_end - right_start); +} + +void BVHSpatialSplit::split_reference(BVHBuild *builder, BVHReference& left, BVHReference& right, const BVHReference& ref, int dim, float pos) +{ + /* initialize boundboxes */ + BoundBox left_bounds = BoundBox::empty; + BoundBox right_bounds = BoundBox::empty; + + /* loop over vertices/edges. */ + Object *ob = builder->objects[ref.prim_object()]; + const Mesh *mesh = ob->mesh; + const int *inds = mesh->triangles[ref.prim_index()].v; + const float3 *verts = &mesh->verts[0]; + const float3* v1 = &verts[inds[2]]; + + for(int i = 0; i < 3; i++) { + const float3* v0 = v1; + int vindex = inds[i]; + v1 = &verts[vindex]; + float v0p = (*v0)[dim]; + float v1p = (*v1)[dim]; + + /* insert vertex to the boxes it belongs to. */ + if(v0p <= pos) + left_bounds.grow(*v0); + + if(v0p >= pos) + right_bounds.grow(*v0); + + /* edge intersects the plane => insert intersection to both boxes. */ + if((v0p < pos && v1p > pos) || (v0p > pos && v1p < pos)) { + float3 t = lerp(*v0, *v1, clamp((pos - v0p) / (v1p - v0p), 0.0f, 1.0f)); + left_bounds.grow(t); + right_bounds.grow(t); + } + } + + /* intersect with original bounds. */ + left_bounds.max[dim] = pos; + right_bounds.min[dim] = pos; + left_bounds.intersect(ref.bounds()); + right_bounds.intersect(ref.bounds()); + + /* set referecnes */ + left = BVHReference(left_bounds, ref.prim_index(), ref.prim_object()); + right = BVHReference(right_bounds, ref.prim_index(), ref.prim_object()); +} + +CCL_NAMESPACE_END + diff --git a/intern/cycles/bvh/bvh_split.h b/intern/cycles/bvh/bvh_split.h new file mode 100644 index 00000000000..1f4befbe8e2 --- /dev/null +++ b/intern/cycles/bvh/bvh_split.h @@ -0,0 +1,110 @@ +/* + * Adapted from code copyright 2009-2010 NVIDIA Corporation + * Modifications Copyright 2011, Blender Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __BVH_SPLIT_H__ +#define __BVH_SPLIT_H__ + +#include "bvh_build.h" +#include "bvh_params.h" + +CCL_NAMESPACE_BEGIN + +class BVHBuild; + +/* Object Split */ + +class BVHObjectSplit +{ +public: + float sah; + int dim; + int num_left; + BoundBox left_bounds; + BoundBox right_bounds; + + BVHObjectSplit() {} + BVHObjectSplit(BVHBuild *builder, const BVHRange& range, float nodeSAH); + + void split(BVHBuild *builder, BVHRange& left, BVHRange& right, const BVHRange& range); +}; + +/* Spatial Split */ + +class BVHSpatialSplit +{ +public: + float sah; + int dim; + float pos; + + BVHSpatialSplit() : sah(FLT_MAX), dim(0), pos(0.0f) {} + BVHSpatialSplit(BVHBuild *builder, const BVHRange& range, float nodeSAH); + + void split(BVHBuild *builder, BVHRange& left, BVHRange& right, const BVHRange& range); + void split_reference(BVHBuild *builder, BVHReference& left, BVHReference& right, const BVHReference& ref, int dim, float pos); +}; + +/* Mixed Object-Spatial Split */ + +class BVHMixedSplit +{ +public: + BVHObjectSplit object; + BVHSpatialSplit spatial; + + float leafSAH; + float nodeSAH; + float minSAH; + + bool no_split; + + __forceinline BVHMixedSplit(BVHBuild *builder, const BVHRange& range, int level) + { + /* find split candidates. */ + float area = range.bounds().safe_area(); + + leafSAH = area * builder->params.triangle_cost(range.size()); + nodeSAH = area * builder->params.node_cost(2); + + object = BVHObjectSplit(builder, range, nodeSAH); + + if(builder->params.use_spatial_split && level < BVHParams::MAX_SPATIAL_DEPTH) { + BoundBox overlap = object.left_bounds; + overlap.intersect(object.right_bounds); + + if(overlap.safe_area() >= builder->spatial_min_overlap) + spatial = BVHSpatialSplit(builder, range, nodeSAH); + } + + /* leaf SAH is the lowest => create leaf. */ + minSAH = min(min(leafSAH, object.sah), spatial.sah); + no_split = (minSAH == leafSAH && range.size() <= builder->params.max_leaf_size); + } + + __forceinline void split(BVHBuild *builder, BVHRange& left, BVHRange& right, const BVHRange& range) + { + if(builder->params.use_spatial_split && minSAH == spatial.sah) + spatial.split(builder, left, right, range); + if(!left.size() || !right.size()) + object.split(builder, left, right, range); + } +}; + +CCL_NAMESPACE_END + +#endif /* __BVH_SPLIT_H__ */ + diff --git a/intern/cycles/device/device.cpp b/intern/cycles/device/device.cpp index cceec8b8e5c..42dda1180c7 100644 --- a/intern/cycles/device/device.cpp +++ b/intern/cycles/device/device.cpp @@ -58,15 +58,6 @@ void DeviceTask::split_max_size(list& tasks, int max_size) split(tasks, num); } -void DeviceTask::split(ThreadQueue& queue, int num) -{ - list tasks; - split(tasks, num); - - foreach(DeviceTask& task, tasks) - queue.push(task); -} - void DeviceTask::split(list& tasks, int num) { if(type == SHADER) { diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h index af2567498d9..87f255e54e7 100644 --- a/intern/cycles/device/device.h +++ b/intern/cycles/device/device.h @@ -25,6 +25,7 @@ #include "util_list.h" #include "util_string.h" +#include "util_task.h" #include "util_thread.h" #include "util_types.h" #include "util_vector.h" @@ -66,7 +67,7 @@ public: /* Device Task */ -class DeviceTask { +class DeviceTask : public Task { public: typedef enum { PATH_TRACE, TONEMAP, SHADER } Type; Type type; @@ -87,7 +88,6 @@ public: DeviceTask(Type type = PATH_TRACE); void split(list& tasks, int num); - void split(ThreadQueue& tasks, int num); void split_max_size(list& tasks, int max_size); }; diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp index da977ed8472..ec84047c44f 100644 --- a/intern/cycles/device/device_cpu.cpp +++ b/intern/cycles/device/device_cpu.cpp @@ -40,35 +40,21 @@ CCL_NAMESPACE_BEGIN class CPUDevice : public Device { public: - vector threads; - ThreadQueue tasks; + TaskPool task_pool; KernelGlobals *kg; CPUDevice(int threads_num) + : task_pool(function_bind(&CPUDevice::thread_run, this, _1, _2)) { kg = kernel_globals_create(); /* do now to avoid thread issues */ system_cpu_support_optimized(); - - if(threads_num == 0) - threads_num = system_cpu_thread_count(); - - threads.resize(threads_num); - - for(size_t i = 0; i < threads.size(); i++) - threads[i] = new thread(function_bind(&CPUDevice::thread_run, this, i)); } ~CPUDevice() { - tasks.stop(); - - foreach(thread *t, threads) { - t->join(); - delete t; - } - + task_pool.stop(); kernel_globals_free(kg); } @@ -127,25 +113,21 @@ public: #endif } - void thread_run(int t) + void thread_run(Task *task_, int thread_id) { - DeviceTask task; + DeviceTask *task = (DeviceTask*)task_; - while(tasks.worker_wait_pop(task)) { - if(task.type == DeviceTask::PATH_TRACE) - thread_path_trace(task); - else if(task.type == DeviceTask::TONEMAP) - thread_tonemap(task); - else if(task.type == DeviceTask::SHADER) - thread_shader(task); - - tasks.worker_done(); - } + if(task->type == DeviceTask::PATH_TRACE) + thread_path_trace(*task); + else if(task->type == DeviceTask::TONEMAP) + thread_tonemap(*task); + else if(task->type == DeviceTask::SHADER) + thread_shader(*task); } void thread_path_trace(DeviceTask& task) { - if(tasks.worker_cancel()) + if(task_pool.cancelled()) return; #ifdef WITH_OSL @@ -160,7 +142,7 @@ public: kernel_cpu_optimized_path_trace(kg, (float*)task.buffer, (unsigned int*)task.rng_state, task.sample, x, y, task.offset, task.stride); - if(tasks.worker_cancel()) + if(task_pool.cancelled()) break; } } @@ -172,7 +154,7 @@ public: kernel_cpu_path_trace(kg, (float*)task.buffer, (unsigned int*)task.rng_state, task.sample, x, y, task.offset, task.stride); - if(tasks.worker_cancel()) + if(task_pool.cancelled()) break; } } @@ -214,7 +196,7 @@ public: for(int x = task.shader_x; x < task.shader_x + task.shader_w; x++) { kernel_cpu_optimized_shader(kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x); - if(tasks.worker_cancel()) + if(task_pool.cancelled()) break; } } @@ -224,7 +206,7 @@ public: for(int x = task.shader_x; x < task.shader_x + task.shader_w; x++) { kernel_cpu_shader(kg, (uint4*)task.shader_input, (float4*)task.shader_output, task.shader_eval_type, x); - if(tasks.worker_cancel()) + if(task_pool.cancelled()) break; } } @@ -239,17 +221,22 @@ public: { /* split task into smaller ones, more than number of threads for uneven workloads where some parts of the image render slower than others */ - task.split(tasks, threads.size()*10); + list tasks; + + task.split(tasks, TaskScheduler::num_threads()*10); + + foreach(DeviceTask& task, tasks) + task_pool.push(new DeviceTask(task)); } void task_wait() { - tasks.wait_done(); + task_pool.wait(); } void task_cancel() { - tasks.cancel(); + task_pool.cancel(); } }; diff --git a/intern/cycles/device/device_multi.cpp b/intern/cycles/device/device_multi.cpp index 1f69f2c53fa..9f7d65e640b 100644 --- a/intern/cycles/device/device_multi.cpp +++ b/intern/cycles/device/device_multi.cpp @@ -257,13 +257,14 @@ public: void task_add(DeviceTask& task) { - ThreadQueue tasks; + list tasks; task.split(tasks, devices.size()); foreach(SubDevice& sub, devices) { - DeviceTask subtask; + if(!tasks.empty()) { + DeviceTask subtask = tasks.front(); + tasks.pop_front(); - if(tasks.worker_wait_pop(subtask)) { if(task.buffer) subtask.buffer = sub.ptr_map[task.buffer]; if(task.rng_state) subtask.rng_state = sub.ptr_map[task.rng_state]; if(task.rgba) subtask.rgba = sub.ptr_map[task.rgba]; diff --git a/intern/cycles/kernel/kernel_accumulate.h b/intern/cycles/kernel/kernel_accumulate.h index 9a52531eec0..6c3ade1c531 100644 --- a/intern/cycles/kernel/kernel_accumulate.h +++ b/intern/cycles/kernel/kernel_accumulate.h @@ -266,7 +266,7 @@ __device_inline void path_radiance_accum_background(PathRadiance *L, float3 thro #endif } -__device_inline float3 path_radiance_sum(PathRadiance *L) +__device_inline float3 path_radiance_sum(KernelGlobals *kg, PathRadiance *L) { #ifdef __PASSES__ if(L->use_light_pass) { @@ -283,9 +283,14 @@ __device_inline float3 path_radiance_sum(PathRadiance *L) L->indirect_glossy *= L->indirect; L->indirect_transmission *= L->indirect; - return L->emission + L->background + float3 L_sum = L->emission + L->direct_diffuse + L->direct_glossy + L->direct_transmission + L->indirect_diffuse + L->indirect_glossy + L->indirect_transmission; + + if(!kernel_data.background.transparent) + L_sum += L->background; + + return L_sum; } else return L->emission; diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h index ff12e85375c..8ebac177277 100644 --- a/intern/cycles/kernel/kernel_path.h +++ b/intern/cycles/kernel/kernel_path.h @@ -223,6 +223,7 @@ __device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample, R path_radiance_init(&L, kernel_data.film.use_light_pass); + float min_ray_pdf = FLT_MAX; float ray_pdf = 0.0f; PathState state; int rng_offset = PRNG_BASE_NUM; @@ -239,13 +240,17 @@ __device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample, R /* eval background shader if nothing hit */ if(kernel_data.background.transparent && (state.flag & PATH_RAY_CAMERA)) { L_transparent += average(throughput); + +#ifdef __PASSES__ + if(!(kernel_data.film.pass_flag & PASS_BACKGROUND)) +#endif + break; } + #ifdef __BACKGROUND__ - else { - /* sample background shader */ - float3 L_background = indirect_background(kg, &ray, state.flag, ray_pdf); - path_radiance_accum_background(&L, throughput, L_background, state.bounce); - } + /* sample background shader */ + float3 L_background = indirect_background(kg, &ray, state.flag, ray_pdf); + path_radiance_accum_background(&L, throughput, L_background, state.bounce); #endif break; @@ -259,6 +264,18 @@ __device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample, R kernel_write_data_passes(kg, buffer, &L, &sd, sample, state.flag, throughput); + /* blurring of bsdf after bounces, for rays that have a small likelihood + of following this particular path (diffuse, rough glossy) */ + if(kernel_data.integrator.filter_glossy != FLT_MAX) { + float blur_pdf = kernel_data.integrator.filter_glossy*min_ray_pdf; + + if(blur_pdf < 1.0f) { + float blur_roughness = sqrtf(1.0f - blur_pdf)*0.5f; + shader_bsdf_blur(kg, &sd, blur_roughness); + } + } + + /* holdout */ #ifdef __HOLDOUT__ if((sd.flag & SD_HOLDOUT) && (state.flag & PATH_RAY_CAMERA)) { float3 holdout_weight = shader_holdout_eval(kg, &sd); @@ -378,8 +395,10 @@ __device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample, R path_radiance_bsdf_bounce(&L, &throughput, &bsdf_eval, bsdf_pdf, state.bounce, label); /* set labels */ - if(!(label & LABEL_TRANSPARENT)) + if(!(label & LABEL_TRANSPARENT)) { ray_pdf = bsdf_pdf; + min_ray_pdf = fminf(bsdf_pdf, min_ray_pdf); + } /* update path state */ path_state_next(kg, &state, label); @@ -394,7 +413,7 @@ __device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample, R #endif } - float3 L_sum = path_radiance_sum(&L); + float3 L_sum = path_radiance_sum(kg, &L); #ifdef __CLAMP_SAMPLE__ path_radiance_clamp(&L, &L_sum, kernel_data.integrator.sample_clamp); diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 391dcd12dad..102a2bb036d 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -516,6 +516,7 @@ typedef struct KernelIntegrator { /* caustics */ int no_caustics; + float filter_glossy; /* seed */ int seed; @@ -525,9 +526,6 @@ typedef struct KernelIntegrator { /* clamp */ float sample_clamp; - - /* padding */ - int pad; } KernelIntegrator; typedef struct KernelBVH { diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h index f494b6d66e1..98f8734aed2 100644 --- a/intern/cycles/kernel/svm/svm_tex_coord.h +++ b/intern/cycles/kernel/svm/svm_tex_coord.h @@ -40,6 +40,15 @@ __device void svm_node_tex_coord(KernelGlobals *kg, ShaderData *sd, float *stack data = sd->P; break; } + case NODE_TEXCO_NORMAL: { + if(sd->object != ~0) { + Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM); + data = transform_direction(&tfm, sd->N); + } + else + data = sd->N; + break; + } case NODE_TEXCO_CAMERA: { Transform tfm = kernel_data.cam.worldtocamera; @@ -85,6 +94,15 @@ __device void svm_node_tex_coord_bump_dx(KernelGlobals *kg, ShaderData *sd, floa data = sd->P + sd->dP.dx; break; } + case NODE_TEXCO_NORMAL: { + if(sd->object != ~0) { + Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM); + data = transform_direction(&tfm, sd->N); + } + else + data = sd->N; + break; + } case NODE_TEXCO_CAMERA: { Transform tfm = kernel_data.cam.worldtocamera; @@ -133,6 +151,15 @@ __device void svm_node_tex_coord_bump_dy(KernelGlobals *kg, ShaderData *sd, floa data = sd->P + sd->dP.dy; break; } + case NODE_TEXCO_NORMAL: { + if(sd->object != ~0) { + Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM); + data = normalize(transform_direction(&tfm, sd->N)); + } + else + data = sd->N; + break; + } case NODE_TEXCO_CAMERA: { Transform tfm = kernel_data.cam.worldtocamera; diff --git a/intern/cycles/kernel/svm/svm_types.h b/intern/cycles/kernel/svm/svm_types.h index 68eb39bdd29..fa7c211b5f9 100644 --- a/intern/cycles/kernel/svm/svm_types.h +++ b/intern/cycles/kernel/svm/svm_types.h @@ -119,6 +119,7 @@ typedef enum NodeLightPath { } NodeLightPath; typedef enum NodeTexCoord { + NODE_TEXCO_NORMAL, NODE_TEXCO_OBJECT, NODE_TEXCO_CAMERA, NODE_TEXCO_WINDOW, diff --git a/intern/cycles/render/integrator.cpp b/intern/cycles/render/integrator.cpp index 6e6d30f3879..c1f066df10c 100644 --- a/intern/cycles/render/integrator.cpp +++ b/intern/cycles/render/integrator.cpp @@ -41,6 +41,7 @@ Integrator::Integrator() transparent_shadows = false; no_caustics = false; + filter_glossy = 0.0f; seed = 0; layer_flag = ~0; sample_clamp = 0.0f; @@ -81,6 +82,8 @@ void Integrator::device_update(Device *device, DeviceScene *dscene) kintegrator->transparent_shadows = transparent_shadows; kintegrator->no_caustics = no_caustics; + kintegrator->filter_glossy = (filter_glossy == 0.0f)? FLT_MAX: 1.0f/filter_glossy; + kintegrator->seed = hash_int(seed); kintegrator->layer_flag = layer_flag << PATH_RAY_LAYER_SHIFT; @@ -119,6 +122,7 @@ bool Integrator::modified(const Integrator& integrator) transparent_probalistic == integrator.transparent_probalistic && transparent_shadows == integrator.transparent_shadows && no_caustics == integrator.no_caustics && + filter_glossy == integrator.filter_glossy && layer_flag == integrator.layer_flag && seed == integrator.seed && sample_clamp == integrator.sample_clamp); diff --git a/intern/cycles/render/integrator.h b/intern/cycles/render/integrator.h index abbbaca894c..0817fcaa457 100644 --- a/intern/cycles/render/integrator.h +++ b/intern/cycles/render/integrator.h @@ -41,6 +41,7 @@ public: bool transparent_shadows; bool no_caustics; + float filter_glossy; int seed; int layer_flag; diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp index a7eb365f983..0ce16e65621 100644 --- a/intern/cycles/render/mesh.cpp +++ b/intern/cycles/render/mesh.cpp @@ -43,6 +43,7 @@ Mesh::Mesh() transform_applied = false; transform_negative_scaled = false; displacement_method = DISPLACE_BUMP; + bounds = BoundBox::empty; bvh = NULL; @@ -96,7 +97,7 @@ void Mesh::add_triangle(int v0, int v1, int v2, int shader_, bool smooth_) void Mesh::compute_bounds() { - BoundBox bnds; + BoundBox bnds = BoundBox::empty; size_t verts_size = verts.size(); for(size_t i = 0; i < verts_size; i++) @@ -697,6 +698,8 @@ void MeshManager::device_update(Device *device, DeviceScene *dscene, Scene *scen progress.set_status(msg, "Building BVH"); mesh->compute_bvh(&scene->params, progress); + + i++; } if(progress.get_cancel()) return; @@ -704,8 +707,6 @@ void MeshManager::device_update(Device *device, DeviceScene *dscene, Scene *scen mesh->need_update = false; mesh->need_update_rebuild = false; } - - i++; } foreach(Shader *shader, scene->shaders) diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index db696993737..d71438ebae1 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -1503,6 +1503,7 @@ TextureCoordinateNode::TextureCoordinateNode() { add_input("Normal", SHADER_SOCKET_NORMAL, ShaderInput::NORMAL, true); add_output("Generated", SHADER_SOCKET_POINT); + add_output("Normal", SHADER_SOCKET_NORMAL); add_output("UV", SHADER_SOCKET_POINT); add_output("Object", SHADER_SOCKET_POINT); add_output("Camera", SHADER_SOCKET_POINT); @@ -1551,6 +1552,12 @@ void TextureCoordinateNode::compile(SVMCompiler& compiler) } } + out = output("Normal"); + if(!out->links.empty()) { + compiler.stack_assign(out); + compiler.add_node(texco_node, NODE_TEXCO_NORMAL, out->stack_offset); + } + out = output("UV"); if(!out->links.empty()) { int attr = compiler.attribute(Attribute::STD_UV); diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp index 5f7a5810c09..28645d856a8 100644 --- a/intern/cycles/render/object.cpp +++ b/intern/cycles/render/object.cpp @@ -37,6 +37,7 @@ Object::Object() tfm = transform_identity(); visibility = ~0; pass_id = 0; + bounds = BoundBox::empty; } Object::~Object() diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 676f42be790..34a0c0ff877 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -27,6 +27,7 @@ #include "util_foreach.h" #include "util_function.h" +#include "util_task.h" #include "util_time.h" CCL_NAMESPACE_BEGIN @@ -37,6 +38,8 @@ Session::Session(const SessionParams& params_) { device_use_gl = ((params.device.type != DEVICE_CPU) && !params.background); + TaskScheduler::init(params.threads); + device = Device::create(params.device, params.background, params.threads); buffers = new RenderBuffers(device); display = new DisplayBuffer(device); @@ -88,6 +91,8 @@ Session::~Session() delete display; delete scene; delete device; + + TaskScheduler::exit(); } void Session::start() diff --git a/intern/cycles/subd/subd_patch.cpp b/intern/cycles/subd/subd_patch.cpp index ff477296c7e..f6acc358959 100644 --- a/intern/cycles/subd/subd_patch.cpp +++ b/intern/cycles/subd/subd_patch.cpp @@ -93,7 +93,7 @@ void LinearQuadPatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, float BoundBox LinearQuadPatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 4; i++) bbox.grow(hull[i]); @@ -115,7 +115,7 @@ void LinearTrianglePatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, f BoundBox LinearTrianglePatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 3; i++) bbox.grow(hull[i]); @@ -132,7 +132,7 @@ void BicubicPatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, float v) BoundBox BicubicPatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 16; i++) bbox.grow(hull[i]); @@ -152,7 +152,7 @@ void BicubicTangentPatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, f BoundBox BicubicTangentPatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 16; i++) bbox.grow(hull[i]); @@ -205,7 +205,7 @@ void GregoryQuadPatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, floa BoundBox GregoryQuadPatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 20; i++) bbox.grow(hull[i]); @@ -276,7 +276,7 @@ void GregoryTrianglePatch::eval(float3 *P, float3 *dPdu, float3 *dPdv, float u, BoundBox GregoryTrianglePatch::bound() { - BoundBox bbox; + BoundBox bbox = BoundBox::empty; for(int i = 0; i < 20; i++) bbox.grow(hull[i]); diff --git a/intern/cycles/util/CMakeLists.txt b/intern/cycles/util/CMakeLists.txt index 9182ee4cbe1..87bd84b4e0f 100644 --- a/intern/cycles/util/CMakeLists.txt +++ b/intern/cycles/util/CMakeLists.txt @@ -15,6 +15,7 @@ set(SRC util_path.cpp util_string.cpp util_system.cpp + util_task.cpp util_time.cpp util_transform.cpp ) @@ -50,6 +51,7 @@ set(SRC_HEADERS util_set.h util_string.h util_system.h + util_task.h util_thread.h util_time.h util_transform.h diff --git a/intern/cycles/util/util_boundbox.h b/intern/cycles/util/util_boundbox.h index bb1df0b220f..9511b48e103 100644 --- a/intern/cycles/util/util_boundbox.h +++ b/intern/cycles/util/util_boundbox.h @@ -23,6 +23,7 @@ #include #include "util_math.h" +#include "util_string.h" #include "util_transform.h" #include "util_types.h" @@ -35,45 +36,81 @@ class BoundBox public: float3 min, max; - BoundBox(void) + __forceinline BoundBox() { - min = make_float3(FLT_MAX, FLT_MAX, FLT_MAX); - max = make_float3(-FLT_MAX, -FLT_MAX, -FLT_MAX); } - BoundBox(const float3& min_, const float3& max_) + __forceinline BoundBox(const float3& pt) + : min(pt), max(pt) + { + } + + __forceinline BoundBox(const float3& min_, const float3& max_) : min(min_), max(max_) { } - void grow(const float3& pt) + static struct empty_t {} empty; + + __forceinline BoundBox(empty_t) + : min(make_float3(FLT_MAX, FLT_MAX, FLT_MAX)), max(make_float3(-FLT_MAX, -FLT_MAX, -FLT_MAX)) + { + } + + __forceinline void grow(const float3& pt) { min = ccl::min(min, pt); max = ccl::max(max, pt); } - void grow(const BoundBox& bbox) + __forceinline void grow(const BoundBox& bbox) { grow(bbox.min); grow(bbox.max); } - void intersect(const BoundBox& bbox) + __forceinline void intersect(const BoundBox& bbox) { min = ccl::max(min, bbox.min); max = ccl::min(max, bbox.max); } - float area(void) const + /* todo: avoid using this */ + __forceinline float safe_area() const { - if(!valid()) + if(!((min.x <= max.x) && (min.y <= max.y) && (min.z <= max.z))) return 0.0f; - float3 d = max - min; - return dot(d, d)*2.0f; + return area(); } - bool valid(void) const + __forceinline float area() const + { + return half_area()*2.0f; + } + + __forceinline float half_area() const + { + float3 d = max - min; + return (d.x*d.z + d.y*d.z + d.x*d.y); + } + + __forceinline float3 center() const + { + return 0.5f*(min + max); + } + + __forceinline float3 center2() const + { + return min + max; + } + + __forceinline float3 size() const + { + return max - min; + } + + __forceinline bool valid() const { return (min.x <= max.x) && (min.y <= max.y) && (min.z <= max.z) && (isfinite(min.x) && isfinite(min.y) && isfinite(min.z)) && @@ -82,7 +119,7 @@ public: BoundBox transformed(const Transform *tfm) { - BoundBox result; + BoundBox result = BoundBox::empty; for(int i = 0; i < 8; i++) { float3 p; @@ -98,6 +135,31 @@ public: } }; +__forceinline BoundBox merge(const BoundBox& bbox, const float3& pt) +{ + return BoundBox(min(bbox.min, pt), max(bbox.max, pt)); +} + +__forceinline BoundBox merge(const BoundBox& a, const BoundBox& b) +{ + return BoundBox(min(a.min, b.min), max(a.max, b.max)); +} + +__forceinline BoundBox merge(const BoundBox& a, const BoundBox& b, const BoundBox& c, const BoundBox& d) +{ + return merge(merge(a, b), merge(c, d)); +} + +__forceinline BoundBox intersect(const BoundBox& a, const BoundBox& b) +{ + return BoundBox(max(a.min, b.min), min(a.max, b.max)); +} + +__forceinline BoundBox intersect(const BoundBox& a, const BoundBox& b, const BoundBox& c) +{ + return intersect(a, intersect(b, c)); +} + CCL_NAMESPACE_END #endif /* __UTIL_BOUNDBOX_H__ */ diff --git a/intern/cycles/util/util_math.h b/intern/cycles/util/util_math.h index 019dede07fa..25d81481d12 100644 --- a/intern/cycles/util/util_math.h +++ b/intern/cycles/util/util_math.h @@ -182,93 +182,74 @@ __device_inline float average(const float2 a) __device_inline float2 operator-(const float2 a) { - float2 r = {-a.x, -a.y}; - return r; + return make_float2(-a.x, -a.y); } __device_inline float2 operator*(const float2 a, const float2 b) { - float2 r = {a.x*b.x, a.y*b.y}; - return r; + return make_float2(a.x*b.x, a.y*b.y); } __device_inline float2 operator*(const float2 a, float f) { - float2 r = {a.x*f, a.y*f}; - return r; + return make_float2(a.x*f, a.y*f); } __device_inline float2 operator*(float f, const float2 a) { - float2 r = {a.x*f, a.y*f}; - return r; + return make_float2(a.x*f, a.y*f); } __device_inline float2 operator/(float f, const float2 a) { - float2 r = {f/a.x, f/a.y}; - return r; + return make_float2(f/a.x, f/a.y); } __device_inline float2 operator/(const float2 a, float f) { float invf = 1.0f/f; - float2 r = {a.x*invf, a.y*invf}; - return r; + return make_float2(a.x*invf, a.y*invf); } __device_inline float2 operator/(const float2 a, const float2 b) { - float2 r = {a.x/b.x, a.y/b.y}; - return r; + return make_float2(a.x/b.x, a.y/b.y); } __device_inline float2 operator+(const float2 a, const float2 b) { - float2 r = {a.x+b.x, a.y+b.y}; - return r; + return make_float2(a.x+b.x, a.y+b.y); } __device_inline float2 operator-(const float2 a, const float2 b) { - float2 r = {a.x-b.x, a.y-b.y}; - return r; + return make_float2(a.x-b.x, a.y-b.y); } __device_inline float2 operator+=(float2& a, const float2 b) { - a.x += b.x; - a.y += b.y; - return a; + return a = a + b; } __device_inline float2 operator*=(float2& a, const float2 b) { - a.x *= b.x; - a.y *= b.y; - return a; + return a = a * b; } __device_inline float2 operator*=(float2& a, float f) { - a.x *= f; - a.y *= f; - return a; + return a = a * f; } __device_inline float2 operator/=(float2& a, const float2 b) { - a.x /= b.x; - a.y /= b.y; - return a; + return a = a / b; } __device_inline float2 operator/=(float2& a, float f) { float invf = 1.0f/f; - a.x *= invf; - a.y *= invf; - return a; + return a = a * invf; } @@ -314,14 +295,12 @@ __device_inline bool operator!=(const float2 a, const float2 b) __device_inline float2 min(float2 a, float2 b) { - float2 r = {min(a.x, b.x), min(a.y, b.y)}; - return r; + return make_float2(min(a.x, b.x), min(a.y, b.y)); } __device_inline float2 max(float2 a, float2 b) { - float2 r = {max(a.x, b.x), max(a.y, b.y)}; - return r; + return make_float2(max(a.x, b.x), max(a.y, b.y)); } __device_inline float2 clamp(float2 a, float2 mn, float2 mx) @@ -361,112 +340,78 @@ __device_inline float2 interp(float2 a, float2 b, float t) /* Float3 Vector */ -__device_inline bool is_zero(const float3 a) -{ - return (a.x == 0.0f && a.y == 0.0f && a.z == 0.0f); -} - -__device_inline float average(const float3 a) -{ - return (a.x + a.y + a.z)*(1.0f/3.0f); -} - #ifndef __KERNEL_OPENCL__ __device_inline float3 operator-(const float3 a) { - float3 r = make_float3(-a.x, -a.y, -a.z); - return r; + return make_float3(-a.x, -a.y, -a.z); } __device_inline float3 operator*(const float3 a, const float3 b) { - float3 r = make_float3(a.x*b.x, a.y*b.y, a.z*b.z); - return r; + return make_float3(a.x*b.x, a.y*b.y, a.z*b.z); } __device_inline float3 operator*(const float3 a, float f) { - float3 r = make_float3(a.x*f, a.y*f, a.z*f); - return r; + return make_float3(a.x*f, a.y*f, a.z*f); } __device_inline float3 operator*(float f, const float3 a) { - float3 r = make_float3(a.x*f, a.y*f, a.z*f); - return r; + return make_float3(a.x*f, a.y*f, a.z*f); } __device_inline float3 operator/(float f, const float3 a) { - float3 r = make_float3(f/a.x, f/a.y, f/a.z); - return r; + return make_float3(f/a.x, f/a.y, f/a.z); } __device_inline float3 operator/(const float3 a, float f) { float invf = 1.0f/f; - float3 r = make_float3(a.x*invf, a.y*invf, a.z*invf); - return r; + return make_float3(a.x*invf, a.y*invf, a.z*invf); } __device_inline float3 operator/(const float3 a, const float3 b) { - float3 r = make_float3(a.x/b.x, a.y/b.y, a.z/b.z); - return r; + return make_float3(a.x/b.x, a.y/b.y, a.z/b.z); } __device_inline float3 operator+(const float3 a, const float3 b) { - float3 r = make_float3(a.x+b.x, a.y+b.y, a.z+b.z); - return r; + return make_float3(a.x+b.x, a.y+b.y, a.z+b.z); } __device_inline float3 operator-(const float3 a, const float3 b) { - float3 r = make_float3(a.x-b.x, a.y-b.y, a.z-b.z); - return r; + return make_float3(a.x-b.x, a.y-b.y, a.z-b.z); } __device_inline float3 operator+=(float3& a, const float3 b) { - a.x += b.x; - a.y += b.y; - a.z += b.z; - return a; + return a = a + b; } __device_inline float3 operator*=(float3& a, const float3 b) { - a.x *= b.x; - a.y *= b.y; - a.z *= b.z; - return a; + return a = a * b; } __device_inline float3 operator*=(float3& a, float f) { - a.x *= f; - a.y *= f; - a.z *= f; - return a; + return a = a * f; } __device_inline float3 operator/=(float3& a, const float3 b) { - a.x /= b.x; - a.y /= b.y; - a.z /= b.z; - return a; + return a = a / b; } __device_inline float3 operator/=(float3& a, float f) { float invf = 1.0f/f; - a.x *= invf; - a.y *= invf; - a.z *= invf; - return a; + return a = a * invf; } __device_inline float dot(const float3 a, const float3 b) @@ -506,7 +451,11 @@ __device_inline float3 normalize_len(const float3 a, float *t) __device_inline bool operator==(const float3 a, const float3 b) { +#ifdef __KERNEL_SSE__ + return (_mm_movemask_ps(_mm_cmpeq_ps(a.m128, b.m128)) & 7) == 7; +#else return (a.x == b.x && a.y == b.y && a.z == b.z); +#endif } __device_inline bool operator!=(const float3 a, const float3 b) @@ -516,14 +465,20 @@ __device_inline bool operator!=(const float3 a, const float3 b) __device_inline float3 min(float3 a, float3 b) { - float3 r = make_float3(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z)); - return r; +#ifdef __KERNEL_SSE__ + return _mm_min_ps(a.m128, b.m128); +#else + return make_float3(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z)); +#endif } __device_inline float3 max(float3 a, float3 b) { - float3 r = make_float3(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z)); - return r; +#ifdef __KERNEL_SSE__ + return _mm_max_ps(a.m128, b.m128); +#else + return make_float3(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z)); +#endif } __device_inline float3 clamp(float3 a, float3 mn, float3 mx) @@ -533,7 +488,12 @@ __device_inline float3 clamp(float3 a, float3 mn, float3 mx) __device_inline float3 fabs(float3 a) { +#ifdef __KERNEL_SSE__ + __m128 mask = _mm_castsi128_ps(_mm_set1_epi32(0x7fffffff)); + return _mm_and_ps(a.m128, mask); +#else return make_float3(fabsf(a.x), fabsf(a.y), fabsf(a.z)); +#endif } #endif @@ -555,6 +515,25 @@ __device_inline void print_float3(const char *label, const float3& a) printf("%s: %.8f %.8f %.8f\n", label, a.x, a.y, a.z); } +__device_inline float reduce_add(const float3& a) +{ +#ifdef __KERNEL_SSE__ + return (a.x + a.y + a.z); +#else + return (a.x + a.y + a.z); +#endif +} + +__device_inline float3 rcp(const float3& a) +{ +#ifdef __KERNEL_SSE__ + float4 r = _mm_rcp_ps(a.m128); + return _mm_sub_ps(_mm_add_ps(r, r), _mm_mul_ps(_mm_mul_ps(r, r), a)); +#else + return make_float3(1.0f/a.x, 1.0f/a.y, 1.0f/a.z); +#endif +} + #endif __device_inline float3 interp(float3 a, float3 b, float t) @@ -562,122 +541,258 @@ __device_inline float3 interp(float3 a, float3 b, float t) return a + t*(b - a); } +__device_inline bool is_zero(const float3 a) +{ +#ifdef __KERNEL_SSE__ + return a == make_float3(0.0f); +#else + return (a.x == 0.0f && a.y == 0.0f && a.z == 0.0f); +#endif +} + +__device_inline float average(const float3 a) +{ + return reduce_add(a)*(1.0f/3.0f); +} + /* Float4 Vector */ +#ifdef __KERNEL_SSE__ + +template __forceinline const float4 shuffle(const float4& b) +{ + return _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(b), _MM_SHUFFLE(index_3, index_2, index_1, index_0))); +} + +template<> __forceinline const float4 shuffle<0, 0, 2, 2>(const float4& b) +{ + return _mm_moveldup_ps(b); +} + +template<> __forceinline const float4 shuffle<1, 1, 3, 3>(const float4& b) +{ + return _mm_movehdup_ps(b); +} + +template<> __forceinline const float4 shuffle<0, 1, 0, 1>(const float4& b) +{ + return _mm_castpd_ps(_mm_movedup_pd(_mm_castps_pd(b))); +} + +#endif + #ifndef __KERNEL_OPENCL__ -__device_inline bool is_zero(const float4& a) -{ - return (a.x == 0.0f && a.y == 0.0f && a.z == 0.0f && a.w == 0.0f); -} - -__device_inline float average(const float4& a) -{ - return (a.x + a.y + a.z + a.w)*(1.0f/4.0f); -} - __device_inline float4 operator-(const float4& a) { - float4 r = {-a.x, -a.y, -a.z, -a.w}; - return r; +#ifdef __KERNEL_SSE__ + __m128 mask = _mm_castsi128_ps(_mm_set1_epi32(0x80000000)); + return _mm_xor_ps(a.m128, mask); +#else + return make_float4(-a.x, -a.y, -a.z, -a.w); +#endif } __device_inline float4 operator*(const float4& a, const float4& b) { - float4 r = {a.x*b.x, a.y*b.y, a.z*b.z, a.w*b.w}; - return r; +#ifdef __KERNEL_SSE__ + return _mm_mul_ps(a.m128, b.m128); +#else + return make_float4(a.x*b.x, a.y*b.y, a.z*b.z, a.w*b.w); +#endif } __device_inline float4 operator*(const float4& a, float f) { - float4 r = {a.x*f, a.y*f, a.z*f, a.w*f}; - return r; +#ifdef __KERNEL_SSE__ + return a * make_float4(f); +#else + return make_float4(a.x*f, a.y*f, a.z*f, a.w*f); +#endif } __device_inline float4 operator*(float f, const float4& a) { - float4 r = {a.x*f, a.y*f, a.z*f, a.w*f}; - return r; + return a * f; +} + +__device_inline float4 rcp(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 r = _mm_rcp_ps(a.m128); + return _mm_sub_ps(_mm_add_ps(r, r), _mm_mul_ps(_mm_mul_ps(r, r), a)); +#else + return make_float4(1.0f/a.x, 1.0f/a.y, 1.0f/a.z, 1.0f/a.w); +#endif } __device_inline float4 operator/(const float4& a, float f) { - float invf = 1.0f/f; - float4 r = {a.x*invf, a.y*invf, a.z*invf, a.w*invf}; - return r; + return a * (1.0f/f); } __device_inline float4 operator/(const float4& a, const float4& b) { - float4 r = {a.x/b.x, a.y/b.y, a.z/b.z, a.w/b.w}; - return r; +#ifdef __KERNEL_SSE__ + return a * rcp(b); +#else + return make_float4(a.x/b.x, a.y/b.y, a.z/b.z, a.w/b.w); +#endif + } __device_inline float4 operator+(const float4& a, const float4& b) { - float4 r = {a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w}; - return r; +#ifdef __KERNEL_SSE__ + return _mm_add_ps(a.m128, b.m128); +#else + return make_float4(a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w); +#endif } __device_inline float4 operator-(const float4& a, const float4& b) { - float4 r = {a.x-b.x, a.y-b.y, a.z-b.z, a.w-b.w}; - return r; +#ifdef __KERNEL_SSE__ + return _mm_sub_ps(a.m128, b.m128); +#else + return make_float4(a.x-b.x, a.y-b.y, a.z-b.z, a.w-b.w); +#endif } __device_inline float4 operator+=(float4& a, const float4& b) { - a.x += b.x; - a.y += b.y; - a.z += b.z; - a.w += b.w; - return a; + return a = a + b; } __device_inline float4 operator*=(float4& a, const float4& b) { - a.x *= b.x; - a.y *= b.y; - a.z *= b.z; - a.w *= b.w; - return a; + return a = a * b; } __device_inline float4 operator/=(float4& a, float f) { - float invf = 1.0f/f; - a.x *= invf; - a.y *= invf; - a.z *= invf; - a.w *= invf; - return a; + return a = a / f; } -__device_inline float dot(const float4& a, const float4& b) +__device_inline int4 operator<(const float4& a, const float4& b) { - return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w; +#ifdef __KERNEL_SSE__ + return _mm_cvtps_epi32(_mm_cmplt_ps(a.m128, b.m128)); /* todo: avoid cvt */ +#else + return make_int4(a.x < b.x, a.y < b.y, a.z < b.z, a.w < b.w); +#endif +} + +__device_inline int4 operator>=(float4 a, float4 b) +{ +#ifdef __KERNEL_SSE__ + return _mm_cvtps_epi32(_mm_cmpge_ps(a.m128, b.m128)); /* todo: avoid cvt */ +#else + return make_int4(a.x >= b.x, a.y >= b.y, a.z >= b.z, a.w >= b.w); +#endif +} + +__device_inline int4 operator<=(const float4& a, const float4& b) +{ +#ifdef __KERNEL_SSE__ + return _mm_cvtps_epi32(_mm_cmple_ps(a.m128, b.m128)); /* todo: avoid cvt */ +#else + return make_int4(a.x <= b.x, a.y <= b.y, a.z <= b.z, a.w <= b.w); +#endif +} + +__device_inline bool operator==(const float4 a, const float4 b) +{ +#ifdef __KERNEL_SSE__ + return (_mm_movemask_ps(_mm_cmpeq_ps(a.m128, b.m128)) & 15) == 15; +#else + return (a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w); +#endif } __device_inline float4 cross(const float4& a, const float4& b) { - float4 r = {a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x, 0.0f}; - return r; +#ifdef __KERNEL_SSE__ + return (shuffle<1,2,0,0>(a)*shuffle<2,0,1,0>(b)) - (shuffle<2,0,1,0>(a)*shuffle<1,2,0,0>(b)); +#else + return make_float4(a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x, 0.0f); +#endif } __device_inline float4 min(float4 a, float4 b) { +#ifdef __KERNEL_SSE__ + return _mm_min_ps(a.m128, b.m128); +#else return make_float4(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z), min(a.w, b.w)); +#endif } __device_inline float4 max(float4 a, float4 b) { +#ifdef __KERNEL_SSE__ + return _mm_max_ps(a.m128, b.m128); +#else return make_float4(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z), max(a.w, b.w)); +#endif } #endif #ifndef __KERNEL_GPU__ +__device_inline float4 select(const int4& mask, const float4& a, const float4& b) +{ +#ifdef __KERNEL_SSE__ + /* blendv is sse4, and apparently broken on vs2008 */ + return _mm_or_ps(_mm_and_ps(_mm_cvtepi32_ps(mask), a), _mm_andnot_ps(_mm_cvtepi32_ps(mask), b)); /* todo: avoid cvt */ +#else + return make_float4((mask.x)? a.x: b.x, (mask.y)? a.y: b.y, (mask.z)? a.z: b.z, (mask.w)? a.w: b.w); +#endif +} + +__device_inline float4 reduce_min(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 h = min(shuffle<1,0,3,2>(a), a); + return min(shuffle<2,3,0,1>(h), h); +#else + return make_float4(min(min(a.x, a.y), min(a.z, a.w))); +#endif +} + +__device_inline float4 reduce_max(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 h = max(shuffle<1,0,3,2>(a), a); + return max(shuffle<2,3,0,1>(h), h); +#else + return make_float4(max(max(a.x, a.y), max(a.z, a.w))); +#endif +} + +#if 0 +__device_inline float4 reduce_add(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 h = shuffle<1,0,3,2>(a) + a; + return shuffle<2,3,0,1>(h) + h; +#else + return make_float4((a.x + a.y) + (a.z + a.w)); +#endif +} +#endif + +__device_inline float reduce_add(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 h = shuffle<1,0,3,2>(a) + a; + return _mm_cvtss_f32(shuffle<2,3,0,1>(h) + h); /* todo: efficiency? */ +#else + return ((a.x + a.y) + (a.z + a.w)); +#endif +} + __device_inline void print_float4(const char *label, const float4& a) { printf("%s: %.8f %.8f %.8f %.8f\n", label, a.x, a.y, a.z, a.w); @@ -685,26 +800,67 @@ __device_inline void print_float4(const char *label, const float4& a) #endif +#ifndef __KERNEL_OPENCL__ + +__device_inline bool is_zero(const float4& a) +{ +#ifdef __KERNEL_SSE__ + return a == make_float4(0.0f); +#else + return (a.x == 0.0f && a.y == 0.0f && a.z == 0.0f && a.w == 0.0f); +#endif +} + +__device_inline float average(const float4& a) +{ + return reduce_add(a) * 0.25f; +} + +__device_inline float dot(const float4& a, const float4& b) +{ + return reduce_add(a * b); +} + +#endif + /* Int3 */ #ifndef __KERNEL_OPENCL__ +__device_inline int3 min(int3 a, int3 b) +{ +#ifdef __KERNEL_SSE__ + return _mm_min_epi32(a.m128, b.m128); +#else + return make_int3(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z)); +#endif +} + __device_inline int3 max(int3 a, int3 b) { - int3 r = {max(a.x, b.x), max(a.y, b.y), max(a.z, b.z)}; - return r; +#ifdef __KERNEL_SSE__ + return _mm_max_epi32(a.m128, b.m128); +#else + return make_int3(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z)); +#endif } __device_inline int3 clamp(const int3& a, int mn, int mx) { - int3 r = {clamp(a.x, mn, mx), clamp(a.y, mn, mx), clamp(a.z, mn, mx)}; - return r; +#ifdef __KERNEL_SSE__ + return min(max(a, make_int3(mn)), make_int3(mx)); +#else + return make_int3(clamp(a.x, mn, mx), clamp(a.y, mn, mx), clamp(a.z, mn, mx)); +#endif } __device_inline int3 clamp(const int3& a, int3& mn, int mx) { - int3 r = {clamp(a.x, mn.x, mx), clamp(a.y, mn.y, mx), clamp(a.z, mn.z, mx)}; - return r; +#ifdef __KERNEL_SSE__ + return min(max(a, mn), make_int3(mx)); +#else + return make_int3(clamp(a.x, mn.x, mx), clamp(a.y, mn.y, mx), clamp(a.z, mn.z, mx)); +#endif } #endif @@ -720,16 +876,63 @@ __device_inline void print_int3(const char *label, const int3& a) /* Int4 */ -#ifndef __KERNEL_OPENCL__ +#ifndef __KERNEL_GPU__ -__device_inline int4 operator>=(float4 a, float4 b) +__device_inline int4 operator+(const int4& a, const int4& b) { - return make_int4(a.x >= b.x, a.y >= b.y, a.z >= b.z, a.w >= b.w); +#ifdef __KERNEL_SSE__ + return _mm_add_epi32(a.m128, b.m128); +#else + return make_int4(a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w); +#endif } -#endif +__device_inline int4 operator+=(int4& a, const int4& b) +{ + return a = a + b; +} -#ifndef __KERNEL_GPU__ +__device_inline int4 operator>>(const int4& a, int i) +{ +#ifdef __KERNEL_SSE__ + return _mm_srai_epi32(a.m128, i); +#else + return make_int4(a.x >> i, a.y >> i, a.z >> i, a.w >> i); +#endif +} + +__device_inline int4 min(int4 a, int4 b) +{ +#ifdef __KERNEL_SSE__ + return _mm_min_epi32(a.m128, b.m128); +#else + return make_int4(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z), min(a.w, b.w)); +#endif +} + +__device_inline int4 max(int4 a, int4 b) +{ +#ifdef __KERNEL_SSE__ + return _mm_max_epi32(a.m128, b.m128); +#else + return make_int4(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z), max(a.w, b.w)); +#endif +} + +__device_inline int4 clamp(const int4& a, const int4& mn, const int4& mx) +{ + return min(max(a, mn), mx); +} + +__device_inline int4 select(const int4& mask, const int4& a, const int4& b) +{ +#ifdef __KERNEL_SSE__ + __m128 m = _mm_cvtepi32_ps(mask); + return _mm_castps_si128(_mm_or_ps(_mm_and_ps(m, _mm_castsi128_ps(a)), _mm_andnot_ps(m, _mm_castsi128_ps(b)))); /* todo: avoid cvt */ +#else + return make_int4((mask.x)? a.x: b.x, (mask.y)? a.y: b.y, (mask.z)? a.z: b.z, (mask.w)? a.w: b.w); +#endif +} __device_inline void print_int4(const char *label, const int4& a) { diff --git a/intern/cycles/util/util_task.cpp b/intern/cycles/util/util_task.cpp new file mode 100644 index 00000000000..6da9a70ec0c --- /dev/null +++ b/intern/cycles/util/util_task.cpp @@ -0,0 +1,223 @@ +/* + * Copyright 2011, Blender Foundation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "util_debug.h" +#include "util_foreach.h" +#include "util_system.h" +#include "util_task.h" + +CCL_NAMESPACE_BEGIN + +/* Task Pool */ + +TaskPool::TaskPool(const TaskRunFunction& run_) +{ + num = 0; + num_done = 0; + + do_cancel = false; + + run = run_; +} + +TaskPool::~TaskPool() +{ + stop(); +} + +void TaskPool::push(Task *task, bool front) +{ + TaskScheduler::Entry entry; + + entry.task = task; + entry.pool = this; + + TaskScheduler::push(entry, front); +} + +void TaskPool::wait() +{ + thread_scoped_lock lock(done_mutex); + + while(num_done != num) + done_cond.wait(lock); +} + +void TaskPool::cancel() +{ + TaskScheduler::clear(this); + + do_cancel = true; + wait(); + do_cancel = false; +} + +void TaskPool::stop() +{ + TaskScheduler::clear(this); + + assert(num_done == num); +} + +bool TaskPool::cancelled() +{ + return do_cancel; +} + +void TaskPool::done_increase(int done) +{ + done_mutex.lock(); + num_done += done; + done_mutex.unlock(); + + assert(num_done <= num); + done_cond.notify_all(); +} + +/* Task Scheduler */ + +thread_mutex TaskScheduler::mutex; +int TaskScheduler::users = 0; +vector TaskScheduler::threads; +volatile bool TaskScheduler::do_exit = false; + +list TaskScheduler::queue; +thread_mutex TaskScheduler::queue_mutex; +thread_condition_variable TaskScheduler::queue_cond; + +void TaskScheduler::init(int num_threads) +{ + thread_scoped_lock lock(mutex); + + /* multiple cycles instances can use this task scheduler, sharing the same + threads, so we keep track of the number of users. */ + if(users == 0) { + do_exit = false; + + /* launch threads that will be waiting for work */ + if(num_threads == 0) + num_threads = system_cpu_thread_count(); + + threads.resize(num_threads); + + for(size_t i = 0; i < threads.size(); i++) + threads[i] = new thread(function_bind(&TaskScheduler::thread_run, i)); + } + + users++; +} + +void TaskScheduler::exit() +{ + thread_scoped_lock lock(mutex); + + users--; + + if(users == 0) { + /* stop all waiting threads */ + do_exit = true; + TaskScheduler::queue_cond.notify_all(); + + /* delete threads */ + foreach(thread *t, threads) { + t->join(); + delete t; + } + + threads.clear(); + } +} + +bool TaskScheduler::thread_wait_pop(Entry& entry) +{ + thread_scoped_lock lock(queue_mutex); + + while(queue.empty() && !do_exit) + queue_cond.wait(lock); + + if(queue.empty()) { + assert(do_exit); + return false; + } + + entry = queue.front(); + queue.pop_front(); + + return true; +} + +void TaskScheduler::thread_run(int thread_id) +{ + Entry entry; + + /* todo: test affinity/denormal mask */ + + /* keep popping off tasks */ + while(thread_wait_pop(entry)) { + /* run task */ + entry.pool->run(entry.task, thread_id); + + /* delete task */ + delete entry.task; + + /* notify pool task was done */ + entry.pool->done_increase(1); + } +} + +void TaskScheduler::push(Entry& entry, bool front) +{ + /* add entry to queue */ + TaskScheduler::queue_mutex.lock(); + if(front) + TaskScheduler::queue.push_front(entry); + else + TaskScheduler::queue.push_back(entry); + entry.pool->num++; + TaskScheduler::queue_mutex.unlock(); + + TaskScheduler::queue_cond.notify_one(); +} + +void TaskScheduler::clear(TaskPool *pool) +{ + thread_scoped_lock lock(TaskScheduler::queue_mutex); + + /* erase all tasks from this pool from the queue */ + list::iterator it = TaskScheduler::queue.begin(); + int done = 0; + + while(it != TaskScheduler::queue.end()) { + TaskScheduler::Entry& entry = *it; + + if(entry.pool == pool) { + done++; + delete entry.task; + + it = TaskScheduler::queue.erase(it); + } + else + it++; + } + + /* notify done */ + pool->done_increase(done); +} + +CCL_NAMESPACE_END + diff --git a/intern/cycles/util/util_task.h b/intern/cycles/util/util_task.h new file mode 100644 index 00000000000..acdb2cb50a2 --- /dev/null +++ b/intern/cycles/util/util_task.h @@ -0,0 +1,122 @@ +/* + * Copyright 2011, Blender Foundation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __UTIL_TASK_H__ +#define __UTIL_TASK_H__ + +#include "util_list.h" +#include "util_thread.h" +#include "util_vector.h" + +CCL_NAMESPACE_BEGIN + +class Task; +class TaskPool; +class TaskScheduler; + +typedef boost::function TaskRunFunction; + +/* Task + * + * Base class for tasks to be executed in threads. */ + +class Task +{ +public: + Task() {}; + virtual ~Task() {} +}; + +/* Task Pool + * + * Pool of tasks that will be executed by the central TaskScheduler.For each + * pool, we can wait for all tasks to be done, or cancel them before they are + * done. + * + * The run callback that actually executes the task may be create like this: + * function_bind(&MyClass::task_execute, this, _1, _2) */ + +class TaskPool +{ +public: + TaskPool(const TaskRunFunction& run); + ~TaskPool(); + + void push(Task *task, bool front = false); + + void wait(); /* wait until all tasks are done */ + void cancel(); /* cancel all tasks, keep worker threads running */ + void stop(); /* stop all worker threads */ + + bool cancelled(); /* for worker threads, test if cancelled */ + +protected: + friend class TaskScheduler; + + void done_increase(int done); + + TaskRunFunction run; + + thread_mutex done_mutex; + thread_condition_variable done_cond; + + volatile int num, num_done; + volatile bool do_cancel; +}; + +/* Task Scheduler + * + * Central scheduler that holds running threads ready to execute tasks. A singe + * queue holds the task from all pools. */ + +class TaskScheduler +{ +public: + static void init(int num_threads = 0); + static void exit(); + + static int num_threads() { return threads.size(); } + +protected: + friend class TaskPool; + + struct Entry { + Task *task; + TaskPool *pool; + }; + + static thread_mutex mutex; + static int users; + static vector threads; + static volatile bool do_exit; + + static list queue; + static thread_mutex queue_mutex; + static thread_condition_variable queue_cond; + + static void thread_run(int thread_id); + static bool thread_wait_pop(Entry& entry); + + static void push(Entry& entry, bool front); + static void clear(TaskPool *pool); +}; + +CCL_NAMESPACE_END + +#endif + diff --git a/intern/cycles/util/util_thread.h b/intern/cycles/util/util_thread.h index 6836be203f5..3d15b342fe5 100644 --- a/intern/cycles/util/util_thread.h +++ b/intern/cycles/util/util_thread.h @@ -69,133 +69,6 @@ protected: bool joined; }; -/* Thread Safe Queue to pass tasks from one thread to another. Tasks should be - * pushed into the queue, while the worker thread waits to pop the next task - * off the queue. Once all tasks are into the queue, calling stop() will stop - * the worker threads from waiting for more tasks once all tasks are done. */ - -template class ThreadQueue -{ -public: - ThreadQueue() - { - tot = 0; - tot_done = 0; - do_stop = false; - do_cancel = false; - } - - /* Main thread functions */ - - /* push a task to be executed */ - void push(const T& value) - { - thread_scoped_lock lock(queue_mutex); - queue.push(value); - tot++; - lock.unlock(); - - queue_cond.notify_one(); - } - - /* wait until all tasks are done */ - void wait_done() - { - thread_scoped_lock lock(done_mutex); - - while(tot_done != tot) - done_cond.wait(lock); - } - - /* stop all worker threads */ - void stop() - { - clear(); - do_stop = true; - queue_cond.notify_all(); - } - - /* cancel all tasks, but keep worker threads running */ - void cancel() - { - clear(); - do_cancel = true; - wait_done(); - do_cancel = false; - } - - /* Worker thread functions - * - * while(queue.worker_wait_pop(task)) { - * for(..) { - * ... do work ... - * - * if(queue.worker_cancel()) - * break; - * } - * - * queue.worker_done(); - * } - */ - - bool worker_wait_pop(T& value) - { - thread_scoped_lock lock(queue_mutex); - - while(queue.empty() && !do_stop) - queue_cond.wait(lock); - - if(queue.empty()) - return false; - - value = queue.front(); - queue.pop(); - - return true; - } - - void worker_done() - { - thread_scoped_lock lock(done_mutex); - tot_done++; - lock.unlock(); - - assert(tot_done <= tot); - - done_cond.notify_all(); - } - - bool worker_cancel() - { - return do_cancel; - } - -protected: - void clear() - { - thread_scoped_lock lock(queue_mutex); - - while(!queue.empty()) { - thread_scoped_lock done_lock(done_mutex); - tot_done++; - done_lock.unlock(); - - queue.pop(); - } - - done_cond.notify_all(); - } - - std::queue queue; - thread_mutex queue_mutex; - thread_mutex done_mutex; - thread_condition_variable queue_cond; - thread_condition_variable done_cond; - volatile bool do_stop; - volatile bool do_cancel; - volatile int tot, tot_done; -}; - /* Thread Local Storage * * Boost implementation is a bit slow, and Mac OS X __thread is not supported diff --git a/intern/cycles/util/util_transform.cpp b/intern/cycles/util/util_transform.cpp index 61bc36ae888..0fd26825911 100644 --- a/intern/cycles/util/util_transform.cpp +++ b/intern/cycles/util/util_transform.cpp @@ -129,23 +129,26 @@ static bool transform_matrix4_gj_inverse(float R[][4], float M[][4]) Transform transform_inverse(const Transform& tfm) { - union { Transform T; float M[4][4]; } R, M; - - R.T = transform_identity(); - M.T = tfm; + Transform tfmR = transform_identity(); + float M[4][4], R[4][4]; - if(!transform_matrix4_gj_inverse(R.M, M.M)) { + memcpy(R, &tfmR, sizeof(R)); + memcpy(M, &tfm, sizeof(M)); + + if(!transform_matrix4_gj_inverse(R, M)) { /* matrix is degenerate (e.g. 0 scale on some axis), ideally we should never be in this situation, but try to invert it anyway with tweak */ - M.M[0][0] += 1e-8f; - M.M[1][1] += 1e-8f; - M.M[2][2] += 1e-8f; + M[0][0] += 1e-8f; + M[1][1] += 1e-8f; + M[2][2] += 1e-8f; - if(!transform_matrix4_gj_inverse(R.M, M.M)) + if(!transform_matrix4_gj_inverse(R, M)) return transform_identity(); } - return R.T; + memcpy(&tfmR, R, sizeof(R)); + + return tfmR; } CCL_NAMESPACE_END diff --git a/intern/cycles/util/util_types.h b/intern/cycles/util/util_types.h index efdda98571a..cf167707e47 100644 --- a/intern/cycles/util/util_types.h +++ b/intern/cycles/util/util_types.h @@ -36,23 +36,37 @@ #define __shared #define __constant -#ifdef __GNUC__ -#define __device_inline static inline __attribute__((always_inline)) -#else +#ifdef _WIN32 #define __device_inline static __forceinline +#define __align(...) __declspec(align(__VA_ARGS__)) +#else +#define __device_inline static inline __attribute__((always_inline)) +#define __forceinline inline __attribute__((always_inline)) +#define __align(...) __attribute__((aligned(__VA_ARGS__))) #endif #endif +/* Bitness */ + +#if defined(__ppc64__) || defined(__PPC64__) || defined(__x86_64__) || defined(__ia64__) || defined(_M_X64) +#define __KERNEL_64_BIT__ +#endif + /* SIMD Types */ -/* not needed yet, will be for qbvh -#ifndef __KERNEL_GPU__ +/* not enabled, globally applying it just gives slowdown, + * but useful for testing. */ +//#define __KERNEL_SSE__ +#ifdef __KERNEL_SSE__ -#include -#include +#include /* SSE 1 */ +#include /* SSE 2 */ +#include /* SSE 3 */ +#include /* SSE 3 */ +#include /* SSE 4 */ -#endif*/ +#endif #ifndef _WIN32 #ifndef __KERNEL_GPU__ @@ -97,6 +111,12 @@ typedef unsigned int uint32_t; typedef long long int64_t; typedef unsigned long long uint64_t; +#ifdef __KERNEL_64_BIT__ +typedef int64_t ssize_t; +#else +typedef int32_t ssize_t; +#endif + #endif /* Generic Memory Pointer */ @@ -108,89 +128,137 @@ typedef uint64_t device_ptr; struct uchar2 { uchar x, y; - uchar operator[](int i) const { return *(&x + i); } - uchar& operator[](int i) { return *(&x + i); } + __forceinline uchar operator[](int i) const { return *(&x + i); } + __forceinline uchar& operator[](int i) { return *(&x + i); } }; struct uchar3 { uchar x, y, z; - uchar operator[](int i) const { return *(&x + i); } - uchar& operator[](int i) { return *(&x + i); } + __forceinline uchar operator[](int i) const { return *(&x + i); } + __forceinline uchar& operator[](int i) { return *(&x + i); } }; struct uchar4 { uchar x, y, z, w; - uchar operator[](int i) const { return *(&x + i); } - uchar& operator[](int i) { return *(&x + i); } + __forceinline uchar operator[](int i) const { return *(&x + i); } + __forceinline uchar& operator[](int i) { return *(&x + i); } }; struct int2 { int x, y; - int operator[](int i) const { return *(&x + i); } - int& operator[](int i) { return *(&x + i); } + __forceinline int operator[](int i) const { return *(&x + i); } + __forceinline int& operator[](int i) { return *(&x + i); } }; +#ifdef __KERNEL_SSE__ +struct __align(16) int3 { + union { + __m128i m128; + struct { int x, y, z, w; }; + }; + + __forceinline int3() {} + __forceinline int3(const __m128i a) : m128(a) {} + __forceinline operator const __m128i&(void) const { return m128; } + __forceinline operator __m128i&(void) { return m128; } +#else struct int3 { - int x, y, z; + int x, y, z, w; +#endif - int operator[](int i) const { return *(&x + i); } - int& operator[](int i) { return *(&x + i); } + __forceinline int operator[](int i) const { return *(&x + i); } + __forceinline int& operator[](int i) { return *(&x + i); } }; +#ifdef __KERNEL_SSE__ +struct __align(16) int4 { + union { + __m128i m128; + struct { int x, y, z, w; }; + }; + + __forceinline int4() {} + __forceinline int4(const __m128i a) : m128(a) {} + __forceinline operator const __m128i&(void) const { return m128; } + __forceinline operator __m128i&(void) { return m128; } +#else struct int4 { int x, y, z, w; +#endif - int operator[](int i) const { return *(&x + i); } - int& operator[](int i) { return *(&x + i); } + __forceinline int operator[](int i) const { return *(&x + i); } + __forceinline int& operator[](int i) { return *(&x + i); } }; struct uint2 { uint x, y; - uint operator[](int i) const { return *(&x + i); } - uint& operator[](int i) { return *(&x + i); } + __forceinline uint operator[](uint i) const { return *(&x + i); } + __forceinline uint& operator[](uint i) { return *(&x + i); } }; struct uint3 { uint x, y, z; - uint operator[](int i) const { return *(&x + i); } - uint& operator[](int i) { return *(&x + i); } + __forceinline uint operator[](uint i) const { return *(&x + i); } + __forceinline uint& operator[](uint i) { return *(&x + i); } }; struct uint4 { uint x, y, z, w; - uint operator[](int i) const { return *(&x + i); } - uint& operator[](int i) { return *(&x + i); } + __forceinline uint operator[](uint i) const { return *(&x + i); } + __forceinline uint& operator[](uint i) { return *(&x + i); } }; struct float2 { float x, y; - float operator[](int i) const { return *(&x + i); } - float& operator[](int i) { return *(&x + i); } + __forceinline float operator[](int i) const { return *(&x + i); } + __forceinline float& operator[](int i) { return *(&x + i); } }; -struct float3 { - float x, y, z; +#ifdef __KERNEL_SSE__ +struct __align(16) float3 { + union { + __m128 m128; + struct { float x, y, z, w; }; + }; -#ifdef WITH_OPENCL - float w; + __forceinline float3() {} + __forceinline float3(const __m128 a) : m128(a) {} + __forceinline operator const __m128&(void) const { return m128; } + __forceinline operator __m128&(void) { return m128; } +#else +struct float3 { + float x, y, z, w; #endif - float operator[](int i) const { return *(&x + i); } - float& operator[](int i) { return *(&x + i); } + __forceinline float operator[](int i) const { return *(&x + i); } + __forceinline float& operator[](int i) { return *(&x + i); } }; +#ifdef __KERNEL_SSE__ +struct __align(16) float4 { + union { + __m128 m128; + struct { float x, y, z, w; }; + }; + + __forceinline float4() {} + __forceinline float4(const __m128 a) : m128(a) {} + __forceinline operator const __m128&(void) const { return m128; } + __forceinline operator __m128&(void) { return m128; } +#else struct float4 { float x, y, z, w; +#endif - float operator[](int i) const { return *(&x + i); } - float& operator[](int i) { return *(&x + i); } + __forceinline float operator[](int i) const { return *(&x + i); } + __forceinline float& operator[](int i) { return *(&x + i); } }; #endif @@ -201,87 +269,179 @@ struct float4 { * * OpenCL does not support C++ class, so we use these instead. */ -__device uchar2 make_uchar2(uchar x, uchar y) +__device_inline uchar2 make_uchar2(uchar x, uchar y) { uchar2 a = {x, y}; return a; } -__device uchar3 make_uchar3(uchar x, uchar y, uchar z) +__device_inline uchar3 make_uchar3(uchar x, uchar y, uchar z) { uchar3 a = {x, y, z}; return a; } -__device uchar4 make_uchar4(uchar x, uchar y, uchar z, uchar w) +__device_inline uchar4 make_uchar4(uchar x, uchar y, uchar z, uchar w) { uchar4 a = {x, y, z, w}; return a; } -__device int2 make_int2(int x, int y) +__device_inline int2 make_int2(int x, int y) { int2 a = {x, y}; return a; } -__device int3 make_int3(int x, int y, int z) +__device_inline int3 make_int3(int x, int y, int z) { - int3 a = {x, y, z}; +#ifdef __KERNEL_SSE__ + int3 a; + a.m128 = _mm_set_epi32(0, z, y, x); +#else + int3 a = {x, y, z, 0}; +#endif + return a; } -__device int4 make_int4(int x, int y, int z, int w) +__device_inline int4 make_int4(int x, int y, int z, int w) { +#ifdef __KERNEL_SSE__ + int4 a; + a.m128 = _mm_set_epi32(w, z, y, x); +#else int4 a = {x, y, z, w}; +#endif + return a; } -__device uint2 make_uint2(uint x, uint y) +__device_inline uint2 make_uint2(uint x, uint y) { uint2 a = {x, y}; return a; } -__device uint3 make_uint3(uint x, uint y, uint z) +__device_inline uint3 make_uint3(uint x, uint y, uint z) { uint3 a = {x, y, z}; return a; } -__device uint4 make_uint4(uint x, uint y, uint z, uint w) +__device_inline uint4 make_uint4(uint x, uint y, uint z, uint w) { uint4 a = {x, y, z, w}; return a; } -__device float2 make_float2(float x, float y) +__device_inline float2 make_float2(float x, float y) { float2 a = {x, y}; return a; } -__device float3 make_float3(float x, float y, float z) +__device_inline float3 make_float3(float x, float y, float z) { -#ifdef WITH_OPENCL - float3 a = {x, y, z, 0.0f}; +#ifdef __KERNEL_SSE__ + float3 a; + a.m128 = _mm_set_ps(0.0f, z, y, x); #else - float3 a = {x, y, z}; + float3 a = {x, y, z, 0.0f}; #endif + return a; } -__device float4 make_float4(float x, float y, float z, float w) +__device_inline float4 make_float4(float x, float y, float z, float w) { +#ifdef __KERNEL_SSE__ + float4 a; + a.m128 = _mm_set_ps(w, z, y, x); +#else float4 a = {x, y, z, w}; +#endif + return a; } -__device int align_up(int offset, int alignment) +__device_inline int align_up(int offset, int alignment) { return (offset + alignment - 1) & ~(alignment - 1); } +__device_inline int3 make_int3(int i) +{ +#ifdef __KERNEL_SSE__ + int3 a; + a.m128 = _mm_set1_epi32(i); +#else + int3 a = {i, i, i, i}; +#endif + + return a; +} + +__device_inline int4 make_int4(int i) +{ +#ifdef __KERNEL_SSE__ + int4 a; + a.m128 = _mm_set1_epi32(i); +#else + int4 a = {i, i, i, i}; +#endif + + return a; +} + +__device_inline float3 make_float3(float f) +{ +#ifdef __KERNEL_SSE__ + float3 a; + a.m128 = _mm_set1_ps(f); +#else + float3 a = {f, f, f, f}; +#endif + + return a; +} + +__device_inline float4 make_float4(float f) +{ +#ifdef __KERNEL_SSE__ + float4 a; + a.m128 = _mm_set1_ps(f); +#else + float4 a = {f, f, f, f}; +#endif + + return a; +} + +__device_inline float4 make_float4(const int4& i) +{ +#ifdef __KERNEL_SSE__ + float4 a; + a.m128 = _mm_cvtepi32_ps(i.m128); +#else + float4 a = {(float)i.x, (float)i.y, (float)i.z, (float)i.w}; +#endif + + return a; +} + +__device_inline int4 make_int4(const float3& f) +{ +#ifdef __KERNEL_SSE__ + int4 a; + a.m128 = _mm_cvtps_epi32(f.m128); +#else + int4 a = {(int)f.x, (int)f.y, (int)f.z, (int)f.w}; +#endif + + return a; +} + #endif CCL_NAMESPACE_END diff --git a/source/blender/gpu/intern/gpu_shader_material.glsl b/source/blender/gpu/intern/gpu_shader_material.glsl index 2ac99e2eee2..76dacd4a10d 100644 --- a/source/blender/gpu/intern/gpu_shader_material.glsl +++ b/source/blender/gpu/intern/gpu_shader_material.glsl @@ -2041,12 +2041,13 @@ void node_geometry(vec3 I, vec3 N, mat4 toworld, backfacing = 0.0; } -void node_tex_coord(vec3 I, vec3 N, mat4 toworld, +void node_tex_coord(vec3 I, vec3 N, mat4 viewinvmat, mat4 obinvmat, vec3 attr_orco, vec3 attr_uv, - out vec3 generated, out vec3 uv, out vec3 object, + out vec3 generated, out vec3 normal, out vec3 uv, out vec3 object, out vec3 camera, out vec3 window, out vec3 reflection) { generated = attr_orco; + normal = normalize((obinvmat*(viewinvmat*vec4(N, 0.0))).xyz); uv = attr_uv; object = I; camera = I; diff --git a/source/blender/gpu/intern/gpu_shader_material.glsl.c b/source/blender/gpu/intern/gpu_shader_material.glsl.c index a6d962a7bb9..6a6db7eadbb 100644 --- a/source/blender/gpu/intern/gpu_shader_material.glsl.c +++ b/source/blender/gpu/intern/gpu_shader_material.glsl.c @@ -1,1484 +1,1487 @@ /* DataToC output of file */ -int datatoc_gpu_shader_material_glsl_size= 49395; -char datatoc_gpu_shader_material_glsl[]= { - 10,102,108,111, 97,116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 40, -102,108,111, 97,116, 32,102, 41, 10,123, 10, 9,114,101,116,117,114,110, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, - 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, - 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, - 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, 99,100,101,108,116, 97, 59, 10, 9,118, -101, 99, 51, 32, 99, 59, 10, 10, 9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40, -114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, - 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,100,101, -108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10, 9,118, 32, 61, 32, 99,109, 97,120, 59, 10, 9,105,102, - 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10, 9, 9,115, 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10, - 9,101,108,115,101, 32,123, 10, 9, 9,115, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, - 10, 10, 9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, - 10, 9,101,108,115,101, 32,123, 10, 9, 9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, - 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116, 97, 59, 10, 10, 9, 9,105,102, 32, - 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10, 9, - 9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, - 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10, 9, 9,101,108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, - 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10, 9, 9,104, 32, 47, 61, 32, 54, 46, 48, 59, 10, 10, 9, 9,105,102, 32, - 40,104, 60, 48, 46, 48, 41, 10, 9, 9, 9,104, 32, 43, 61, 32, 49, 46, 48, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, - 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100, - 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111, -117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, - 44, 32,115, 44, 32,118, 59, 10, 9,118,101, 99, 51, 32,114,103, 98, 59, 10, 10, 9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, - 10, 9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10, 9,118, 32, 61, 32,104,115,118, 91, 50, 93, 59, 10, 10, 9,105,102, 40, -115, 61, 61, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, - 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,105,102, 40,104, 61, 61, 49, 46, 48, 41, 10, 9, 9, 9,104, 32, 61, 32, - 48, 46, 48, 59, 10, 9, 9, 10, 9, 9,104, 32, 42, 61, 32, 54, 46, 48, 59, 10, 9, 9,105, 32, 61, 32,102,108,111,111,114, 40, -104, 41, 59, 10, 9, 9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, - 32,102, 44, 32,102, 41, 59, 10, 9, 9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41, 59, 10, 9, 9,113, 32, 61, 32,118, - 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10, 9, 9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, - 46, 48, 45,102, 41, 41, 41, 59, 10, 9, 9, 10, 9, 9,105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, - 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, - 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 10, 9, 9,101,108,115, -101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, - 32,116, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32, -118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, - 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32, -114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, - 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114, -103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, - 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10, 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, - 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101, -116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, 53, 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, - 44, 32, 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114, -103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, - 10, 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, - 46, 57, 50, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32, 49, 46, 48, 53, 53, 32, 42, 32,112,111,119, 40, - 99, 44, 32, 49, 46, 48, 47, 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, 53, 59, 10,125, 10, 10,118,111,105,100, 32,115,114,103, - 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117, -116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,115,114,103, - 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, - 95,116,111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114, -111,109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97, -114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111, -108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115, -114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95, -116,111, 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115, -114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, 95,116,111, 46,103, 32, 61, 32,108,105,110, -101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103, 41, 59, 10, 9, 99,111,108, - 95,116,111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114, -111,109, 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, - 10, 10, 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, 52, 49, 53, 57, 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, - 50, 51, 56, 52, 54, 10, 35,100,101,102,105,110,101, 32, 77, 95, 49, 95, 80, 73, 32, 48, 46, 51, 49, 56, 51, 48, 57, 56, 56, 54, - 49, 56, 51, 55, 57, 48, 54, 57, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, - 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,118, 99,111,108, 95, - 97,116,116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, - 32,118, 99,111,108, 41, 10,123, 10, 9,118, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 97,116,116,118, 99,111,108, 46,120, 47, - 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,121, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46, -122, 47, 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,117,118, 95, 97,116,116,114,105, 98, -117,116,101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 10,123, 10, 9, -117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, - 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,103,101,111,109, 40,118,101, 99, 51, 32, 99,111, - 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, - 51, 32, 97,116,116,111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,118,101, 99, 52, 32, 97,116,116,118, - 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108, -111, 99, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, - 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, - 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 99,111,108, 95, - 97,108,112,104, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102,114,111,110,116, 98, 97, 99,107, 41, 10,123, 10, 9,108, -111, 99, 97,108, 32, 61, 32, 99,111, 59, 10, 9,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108,111, 99, - 97,108, 41, 59, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, -108,111, 99, 97,108, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99, -111, 59, 10, 9,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,117,118, 44, 32,117,118, 41, 59, 10, 9,110,111, -114,109, 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114, 41, 59, 9, 47, 42, 32, 98,108,101,110,100, -101,114, 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9, -118, 99,111,108, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,118, 99,111,108, 44, 32,118, 99,111,108, 41, 59, 10, 9, -118, 99,111,108, 95, 97,108,112,104, 97, 32, 61, 32, 97,116,116,118, 99,111,108, 46, 97, 59, 10, 9,102,114,111,110,116, 98, 97, - 99,107, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118, -101, 99, 44, 32,109, 97,116, 52, 32,109, 97,116, 44, 32,118,101, 99, 51, 32,109,105,110,118,101, 99, 44, 32,118,101, 99, 51, 32, -109, 97,120,118,101, 99, 44, 32,102,108,111, 97,116, 32,100,111,109,105,110, 44, 32,102,108,111, 97,116, 32,100,111,109, 97,120, - 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 40, -109, 97,116, 32, 42, 32,118,101, 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,105,102, 40,100, -111,109,105,110, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32,109, 97,120, 40,111,117,116,118, -101, 99, 44, 32,109,105,110,118,101, 99, 41, 59, 10, 9,105,102, 40,100,111,109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, - 9,111,117,116,118,101, 99, 32, 61, 32,109,105,110, 40,111,117,116,118,101, 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 10,125, - 10, 10,118,111,105,100, 32, 99, 97,109,101,114, 97, 40,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32, -111,117,116,118,105,101,119, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,101,112,116,104, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,100,105,115,116, 41, 10,123, 10, 9,111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98, -115, 40, 99,111, 46,122, 41, 59, 10, 9,111,117,116,100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 10, - 9,111,117,116,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 59, 10,125, 10, 10,118,111,105, -100, 32,109, 97,116,104, 95, 97,100,100, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, - 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, - 32,118, 97,108, 49, 32, 43, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, - 97, 99,116, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32, -102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, - 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,117,108,116,105,112,108,121, 40,102,108,111, - 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, -117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 42, 32,118, 97,108, 50, 59, 10, -125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32, -102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, - 9,105,102, 32, 40,118, 97,108, 50, 32, 61, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, - 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 10, -125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, - 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 99,111,115,105,110,101, 40,102,108,111, 97,116, 32,118, - 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, - 61, 32, 99,111,115, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, +int datatoc_gpu_shader_material_glsl_size = 49493; +char datatoc_gpu_shader_material_glsl[] = { + 10,102,108,111, 97,116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 40,102,108, +111, 97,116, 32,102, 41, 10,123, 10, 9,114,101,116,117,114,110, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, + 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, 52, 32, +114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, 99, +109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, 99,100,101,108,116, 97, 59, 10, 9,118,101, 99, + 51, 32, 99, 59, 10, 10, 9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, + 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, + 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10, 9, 99,100,101,108,116, + 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10, 9,118, 32, 61, 32, 99,109, 97,120, 59, 10, 9,105,102, 32, 40, + 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10, 9, 9,115, 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10, 9,101, +108,115,101, 32,123, 10, 9, 9,115, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 10, + 9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9, +101,108,115,101, 32,123, 10, 9, 9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44, 32, 99, +109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116, 97, 59, 10, 10, 9, 9,105,102, 32, 40,114, +103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10, 9, 9,101, +108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, + 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10, 9, 9,101,108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, + 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10, 9, 9,104, 32, 47, 61, 32, 54, 46, 48, 59, 10, 10, 9, 9,105,102, 32, 40,104, + 60, 48, 46, 48, 41, 10, 9, 9, 9,104, 32, 43, 61, 32, 49, 46, 48, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, + 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100, 32,104, +115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, + 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32, +115, 44, 32,118, 59, 10, 9,118,101, 99, 51, 32,114,103, 98, 59, 10, 10, 9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 10, 9, +115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10, 9,118, 32, 61, 32,104,115,118, 91, 50, 93, 59, 10, 10, 9,105,102, 40,115, 61, + 61, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 10, 9, +125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,105,102, 40,104, 61, 61, 49, 46, 48, 41, 10, 9, 9, 9,104, 32, 61, 32, 48, 46, + 48, 59, 10, 9, 9, 10, 9, 9,104, 32, 42, 61, 32, 54, 46, 48, 59, 10, 9, 9,105, 32, 61, 32,102,108,111,111,114, 40,104, 41, + 59, 10, 9, 9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44, 32,102, + 44, 32,102, 41, 59, 10, 9, 9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41, 59, 10, 9, 9,113, 32, 61, 32,118, 42, 40, + 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10, 9, 9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, + 45,102, 41, 41, 41, 59, 10, 9, 9, 10, 9, 9,105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32, +118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, + 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 10, 9, 9,101,108,115,101, 32, +105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, + 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, + 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, + 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112, 44, 32,118, 41, 59, 10, 9, 9,101,108,115,101, 32,114,103, + 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41, 59, 10, 9,125, 10, 10, 9,111,117,116, 99,111,108, 32, 61, + 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114,103, 98, + 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, + 32, 48, 46, 48, 52, 48, 52, 53, 41, 10, 9, 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, + 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117, +114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, 53, 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41, 44, 32, + 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, + 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10, 9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41, 10, 9, + 9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50, 46, 57, + 50, 59, 10, 9,101,108,115,101, 10, 9, 9,114,101,116,117,114,110, 32, 49, 46, 48, 53, 53, 32, 42, 32,112,111,119, 40, 99, 44, + 32, 49, 46, 48, 47, 50, 46, 52, 41, 32, 45, 32, 48, 46, 48, 53, 53, 59, 10,125, 10, 10,118,111,105,100, 32,115,114,103, 98, 95, +116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32, +118,101, 99, 52, 32, 99,111,108, 95,116,111, 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,115,114,103, 98, 95, +116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, 95,116, +111, 46,103, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40, 99,111,108, 95,102,114,111,109, + 46,103, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 98, 32, 61, 32,115,114,103, 98, 95,116,111, 95,108,105,110,101, 97,114,114, +103, 98, 40, 99,111,108, 95,102,114,111,109, 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95, +102,114,111,109, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, + 98, 40,118,101, 99, 52, 32, 99,111,108, 95,102,114,111,109, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 95,116,111, + 41, 10,123, 10, 9, 99,111,108, 95,116,111, 46,114, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, + 98, 40, 99,111,108, 95,102,114,111,109, 46,114, 41, 59, 10, 9, 99,111,108, 95,116,111, 46,103, 32, 61, 32,108,105,110,101, 97, +114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, 46,103, 41, 59, 10, 9, 99,111,108, 95,116, +111, 46, 98, 32, 61, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,103, 98, 40, 99,111,108, 95,102,114,111,109, + 46, 98, 41, 59, 10, 9, 99,111,108, 95,116,111, 46, 97, 32, 61, 32, 99,111,108, 95,102,114,111,109, 46, 97, 59, 10,125, 10, 10, + 35,100,101,102,105,110,101, 32, 77, 95, 80, 73, 32, 51, 46, 49, 52, 49, 53, 57, 50, 54, 53, 51, 53, 56, 57, 55, 57, 51, 50, 51, + 56, 52, 54, 10, 35,100,101,102,105,110,101, 32, 77, 95, 49, 95, 80, 73, 32, 48, 46, 51, 49, 56, 51, 48, 57, 56, 56, 54, 49, 56, + 51, 55, 57, 48, 54, 57, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, + 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,118, 99,111,108, 95, 97,116, +116,114,105, 98,117,116,101, 40,118,101, 99, 52, 32, 97,116,116,118, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,118, + 99,111,108, 41, 10,123, 10, 9,118, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 97,116,116,118, 99,111,108, 46,120, 47, 50, 53, + 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,121, 47, 50, 53, 53, 46, 48, 44, 32, 97,116,116,118, 99,111,108, 46,122, 47, + 50, 53, 53, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,117,118, 95, 97,116,116,114,105, 98,117,116, +101, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 41, 10,123, 10, 9,117,118, + 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, + 48, 41, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,103,101,111,109, 40,118,101, 99, 51, 32, 99,111, 44, 32, +118,101, 99, 51, 32,110,111,114, 44, 32,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, + 97,116,116,111,114, 99,111, 44, 32,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,118,101, 99, 52, 32, 97,116,116,118, 99,111, +108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,103,108,111, 98, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108,111, 99, + 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,114, 99,111, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,118, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 99,111,108, 95, 97,108, +112,104, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102,114,111,110,116, 98, 97, 99,107, 41, 10,123, 10, 9,108,111, 99, + 97,108, 32, 61, 32, 99,111, 59, 10, 9,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108,111, 99, 97,108, + 41, 59, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40,108,111, + 99, 97,108, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, + 10, 9,117,118, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,117,118, 44, 32,117,118, 41, 59, 10, 9,110,111,114,109, + 97,108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114, 41, 59, 9, 47, 42, 32, 98,108,101,110,100,101,114, + 32,114,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,118, 99, +111,108, 95, 97,116,116,114,105, 98,117,116,101, 40, 97,116,116,118, 99,111,108, 44, 32,118, 99,111,108, 41, 59, 10, 9,118, 99, +111,108, 95, 97,108,112,104, 97, 32, 61, 32, 97,116,116,118, 99,111,108, 46, 97, 59, 10, 9,102,114,111,110,116, 98, 97, 99,107, + 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, + 44, 32,109, 97,116, 52, 32,109, 97,116, 44, 32,118,101, 99, 51, 32,109,105,110,118,101, 99, 44, 32,118,101, 99, 51, 32,109, 97, +120,118,101, 99, 44, 32,102,108,111, 97,116, 32,100,111,109,105,110, 44, 32,102,108,111, 97,116, 32,100,111,109, 97,120, 44, 32, +111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 40,109, 97, +116, 32, 42, 32,118,101, 99, 52, 40,118,101, 99, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,105,102, 40,100,111,109, +105,110, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32,109, 97,120, 40,111,117,116,118,101, 99, + 44, 32,109,105,110,118,101, 99, 41, 59, 10, 9,105,102, 40,100,111,109, 97,120, 32, 61, 61, 32, 49, 46, 48, 41, 10, 9, 9,111, +117,116,118,101, 99, 32, 61, 32,109,105,110, 40,111,117,116,118,101, 99, 44, 32,109, 97,120,118,101, 99, 41, 59, 10,125, 10, 10, +118,111,105,100, 32, 99, 97,109,101,114, 97, 40,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117, +116,118,105,101,119, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,101,112,116,104, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,100,105,115,116, 41, 10,123, 10, 9,111,117,116,100,101,112,116,104, 32, 61, 32, 97, 98,115, 40, + 99,111, 46,122, 41, 59, 10, 9,111,117,116,100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40, 99,111, 41, 59, 10, 9,111, +117,116,118,105,101,119, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +109, 97,116,104, 95, 97,100,100, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, + 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, + 97,108, 49, 32, 43, 32,118, 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,115,117, 98,116,114, 97, 99, +116, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108, +111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 45, 32,118, + 97,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,117,108,116,105,112,108,121, 40,102,108,111, 97,116, + 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, +118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 42, 32,118, 97,108, 50, 59, 10,125, 10, + 10,118,111,105,100, 32,109, 97,116,104, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108, +111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105, +102, 32, 40,118, 97,108, 50, 32, 61, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10, + 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 49, 32, 47, 32,118, 97,108, 50, 59, 10,125, 10, + 10,118,111,105,100, 32,109, 97,116,104, 95,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,115,105,110, 40,118, 97,108, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 99,111,115,105,110,101, 40,102,108,111, 97,116, 32,118, 97,108, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, + 99,111,115, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,116, 97,110,103,101,110,116, 40,102, +108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111, +117,116,118, 97,108, 32, 61, 32,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, +115,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, + 10,123, 10, 9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, + 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 97,115,105,110, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, + 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, 99,111,115, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, - 9,111,117,116,118, 97,108, 32, 61, 32,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, - 95, 97,115,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, -108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, - 49, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 97,115,105,110, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, - 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97, 99, -111,115, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10, -123, 10, 9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, - 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 97, 99,111,115, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9, -111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40, -102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9, -111,117,116,118, 97,108, 32, 61, 32, 97,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, - 95,112,111,119, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, - 48, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32,112,111,119, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10, 9, -101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116, -104, 95,108,111,103, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, - 32, 32, 38, 38, 32,118, 97,108, 50, 32, 62, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40, -118, 97,108, 49, 41, 32, 47, 32,108,111,103, 50, 40,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, - 97,108, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109, 97,120, 40,102,108,111, 97,116, 32, -118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, - 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, - 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108, -111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111, -117,116,118, 97,108, 32, 61, 32,109,105,110, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, - 32,109, 97,116,104, 95,114,111,117,110,100, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 61, 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, - 48, 46, 53, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,101,115,115, 95,116,104, 97,110, 40,102,108,111, - 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, -117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 60, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, - 97,108, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10, -125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,103,114,101, 97,116,101,114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32, -118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, - 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, - 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10, -118,111,105,100, 32,115,113,117,101,101,122,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,102,108,111, 97,116, 32,119,105, -100,116,104, 44, 32,102,108,111, 97,116, 32, 99,101,110,116,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, -118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 47, 40, 49, 46, 48, 32, 43, 32,112,111,119, 40, - 50, 46, 55, 49, 56, 50, 56, 49, 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45, 99,101,110,116,101,114, 41, 42,119,105,100,116,104, - 41, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,100,100, 40,118,101, 99, 51, 32,118, - 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32, -118, 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, - 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, - 47, 51, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,115,117, 98, 40,118,101, 99, 51, 32, -118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, - 32,118, 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, - 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, - 41, 47, 51, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40, -118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, - 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, - 32,118, 49, 32, 43, 32,118, 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, - 99, 41, 59, 10, 9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, - 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,100,111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118, -101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, - 44, 32, 48, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,100,111,116, 40,118, 49, 44, 32,118, 50, 41, 59, 10,125, 10, 10, -118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 99,114,111,115,115, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, + 9,105,102, 32, 40,118, 97,108, 32, 60, 61, 32, 49, 46, 48, 32, 38, 38, 32,118, 97,108, 32, 62, 61, 32, 45, 49, 46, 48, 41, 10, + 9, 9,111,117,116,118, 97,108, 32, 61, 32, 97, 99,111,115, 40,118, 97,108, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117, +116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, 97,116, 97,110, 40,102,108, +111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117, +116,118, 97,108, 32, 61, 32, 97,116, 97,110, 40,118, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,112, +111,119, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 32, 40,118, 97,108, 49, 32, 62, 61, 32, 48, 46, 48, 41, + 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32,112,111,119, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10, 9,101,108, +115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95, +108,111,103, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32, +102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32, 48, 46, 48, 32, 32, + 38, 38, 32,118, 97,108, 50, 32, 62, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116,118, 97,108, 61, 32,108,111,103, 50, 40,118, 97, +108, 49, 41, 32, 47, 32,108,111,103, 50, 40,118, 97,108, 50, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, + 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109, 97,120, 40,102,108,111, 97,116, 32,118, 97, +108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, + 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, + 10, 10,118,111,105,100, 32,109, 97,116,104, 95,109,105,110, 40,102,108,111, 97,116, 32,118, 97,108, 49, 44, 32,102,108,111, 97, +116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116, +118, 97,108, 32, 61, 32,109,105,110, 40,118, 97,108, 49, 44, 32,118, 97,108, 50, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, + 97,116,104, 95,114,111,117,110,100, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 61, 32,102,108,111,111,114, 40,118, 97,108, 32, 43, 32, 48, 46, + 53, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109, 97,116,104, 95,108,101,115,115, 95,116,104, 97,110, 40,102,108,111, 97,116, + 32,118, 97,108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, +118, 97,108, 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 60, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, + 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, + 10,118,111,105,100, 32,109, 97,116,104, 95,103,114,101, 97,116,101,114, 95,116,104, 97,110, 40,102,108,111, 97,116, 32,118, 97, +108, 49, 44, 32,102,108,111, 97,116, 32,118, 97,108, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, + 41, 10,123, 10, 9,105,102, 40,118, 97,108, 49, 32, 62, 32,118, 97,108, 50, 41, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, + 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116,118, 97,108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111, +105,100, 32,115,113,117,101,101,122,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,102,108,111, 97,116, 32,119,105,100,116, +104, 44, 32,102,108,111, 97,116, 32, 99,101,110,116,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, +108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 47, 40, 49, 46, 48, 32, 43, 32,112,111,119, 40, 50, 46, + 55, 49, 56, 50, 56, 49, 56, 51, 44, 32, 45, 40, 40,118, 97,108, 45, 99,101,110,116,101,114, 41, 42,119,105,100,116,104, 41, 41, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,100,100, 40,118,101, 99, 51, 32,118, 49, 44, + 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 43, 32,118, 50, + 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, 98, +115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, 51, + 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,115,117, 98, 40,118,101, 99, 51, 32,118, 49, + 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32, +102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, 49, 32, 45, 32,118, + 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, 97, 98,115, 40,111,117,116,118,101, 99, 91, 48, 93, 41, 32, 43, 32, 97, + 98,115, 40,111,117,116,118,101, 99, 91, 49, 93, 41, 32, 43, 32, 97, 98,115, 40,111,117,116,118,101, 99, 91, 50, 93, 41, 41, 47, + 51, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 97,118,101,114, 97,103,101, 40,118,101, + 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, + 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118, + 49, 32, 43, 32,118, 50, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, + 59, 10, 9,111,117,116,118,101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,118,101, 99, 41, 59, 10,125, + 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,100,111,116, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32,118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 99,114,111,115,115, 40,118, 49, 44, 32,118, - 50, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, - 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,111,114,109, 97,108,105,122,101, 40,118,101, 99, 51, 32,118, 44, - 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, - 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,118, 41, 59, 10, 9,111,117,116,118, -101, 99, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, - 97,116,104, 95,110,101,103, 97,116,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, - 41, 10,123, 10, 9,111,117,116,118, 32, 61, 32, 45,118, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,114,109, 97,108, 40,118, -101, 99, 51, 32,100,105,114, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110, -111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,111,116, 41, 10,123, 10, 9,111,117,116,110,111,114, 32, - 61, 32,110,111,114, 59, 10, 9,111,117,116,100,111,116, 32, 61, 32, 45,100,111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, - 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,118,101, 99, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118, -101, 99, 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, - 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116, -117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, - 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,120, 59, 10, 9,111,117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120, -116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,121, 32, 43, 32, 49, - 46, 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,121, 59, 10, 9,111,117,116,118,101, 99, 46,122, 32, 61, 32,116,101, -120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,122, 32, 43, 32, - 49, 46, 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,122, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, - 49, 46, 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32, 40,111,117,116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40, -118,101, 99, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95, -114,103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,115, 97,109,112,108,101,114, - 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, - 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32, -118,101, 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111, -108, 46,114, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,114, 59, 10, 9,111,117,116, 99,111,108, 46,103, - 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116, -117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46,103, 44, 32, 48, 46, 48, 41, - 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,103, 59, 10, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,101,120,116,117,114, -101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114, -118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46, 98, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, - 41, 46, 98, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 32, - 61, 32, 40,111,117,116, 99,111,108, 42,102, 97, 99, 41, 32, 43, 32, 40, 99,111,108, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, - 59, 10, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,115,101, -116, 95,118, 97,108,117,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, -118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101, -116, 95,114,103, 98, 40,118,101, 99, 51, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, - 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, - 98, 97, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, - 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, - 95,122,101,114,111, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97, -108, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,111,110,101, 40,111, -117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, - 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 51, 32, -111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10,125, - 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 52, 32,111,117, -116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 52, 40, 48, 46, 48, 41, 59, 10,125, 10, 10, -118,111,105,100, 32,109,105,120, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99, -111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, - 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, - 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, - 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, - 97,100,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, -111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99, -108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109, -105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, - 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,109,117,108,116, + 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 44, 32, 48, 44, 32, + 48, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,100,111,116, 40,118, 49, 44, 32,118, 50, 41, 59, 10,125, 10, 10,118,111, +105,100, 32,118,101, 99, 95,109, 97,116,104, 95, 99,114,111,115,115, 40,118,101, 99, 51, 32,118, 49, 44, 32,118,101, 99, 51, 32, +118, 50, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32, 99,114,111,115,115, 40,118, 49, 44, 32,118, 50, 41, + 59, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,111,117,116,118,101, 99, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,118,101, 99, 95,109, 97,116,104, 95,110,111,114,109, 97,108,105,122,101, 40,118,101, 99, 51, 32,118, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, + 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,108,101,110,103,116,104, 40,118, 41, 59, 10, 9,111,117,116,118,101, 99, + 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118,101, 99, 95,109, 97,116, +104, 95,110,101,103, 97,116,101, 40,118,101, 99, 51, 32,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, 41, 10, +123, 10, 9,111,117,116,118, 32, 61, 32, 45,118, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,114,109, 97,108, 40,118,101, 99, + 51, 32,100,105,114, 44, 32,118,101, 99, 51, 32,110,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,100,111,116, 41, 10,123, 10, 9,111,117,116,110,111,114, 32, 61, 32, +110,111,114, 59, 10, 9,111,117,116,100,111,116, 32, 61, 32, 45,100,111,116, 40,100,105,114, 44, 32,110,111,114, 41, 59, 10,125, + 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,118,101, 99, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, + 51, 32,118,101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118, +101, 99, 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 46,120, 32, 61, 32,116,101,120,116,117,114, +101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,120, 32, 43, 32, 49, 46, 48, 41, + 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,120, 59, 10, 9,111,117,116,118,101, 99, 46,121, 32, 61, 32,116,101,120,116,117, +114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,121, 32, 43, 32, 49, 46, 48, + 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,121, 59, 10, 9,111,117,116,118,101, 99, 46,122, 32, 61, 32,116,101,120,116, +117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 40,118,101, 99, 46,122, 32, 43, 32, 49, 46, + 48, 41, 42, 48, 46, 53, 44, 32, 48, 46, 48, 41, 41, 46,122, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, + 48, 41, 10, 9, 9,111,117,116,118,101, 99, 32, 61, 32, 40,111,117,116,118,101, 99, 42,102, 97, 99, 41, 32, 43, 32, 40,118,101, + 99, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, 10,125, 10, 10,118,111,105,100, 32, 99,117,114,118,101,115, 95,114,103, + 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,115, 97,109,112,108,101,114, 50, 68, + 32, 99,117,114,118,101,109, 97,112, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111, +117,116, 99,111,108, 46,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, + 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46, +114, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46,114, 59, 10, 9,111,117,116, 99,111,108, 46,103, 32, 61, + 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114, +101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46,103, 44, 32, 48, 46, 48, 41, 41, 46, + 97, 44, 32, 48, 46, 48, 41, 41, 46,103, 59, 10, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,101,120,116,117,114,101, 50, + 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101, +109, 97,112, 44, 32,118,101, 99, 50, 40, 99,111,108, 46, 98, 44, 32, 48, 46, 48, 41, 41, 46, 97, 44, 32, 48, 46, 48, 41, 41, 46, + 98, 59, 10, 10, 9,105,102, 32, 40,102, 97, 99, 32, 33, 61, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32, + 40,111,117,116, 99,111,108, 42,102, 97, 99, 41, 32, 43, 32, 40, 99,111,108, 42, 40, 49, 46, 48, 45,102, 97, 99, 41, 41, 59, 10, + 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95, +118, 97,108,117,101, 40,102,108,111, 97,116, 32,118, 97,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97, +108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118, 97,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95, +114,103, 98, 40,118,101, 99, 51, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, + 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, + 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111, +117,116, 99,111,108, 32, 61, 32, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,122, +101,114,111, 40,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, + 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,116, 95,118, 97,108,117,101, 95,111,110,101, 40,111,117,116, + 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 49, 46, 48, 59, 10, +125, 10, 10,118,111,105,100, 32,115,101,116, 95,114,103, 98, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 51, 32,111,117, +116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10,125, 10, 10, +118,111,105,100, 32,115,101,116, 95,114,103, 98, 97, 95,122,101,114,111, 40,111,117,116, 32,118,101, 99, 52, 32,111,117,116,118, + 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,118,101, 99, 52, 40, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111, +105,100, 32,109,105,120, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, + 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, + 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111, +117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111, +117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 97,100, +100, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, + 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97, +109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, + 40, 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111, +108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,109,117,108,116, 40,102, +108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40, +102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111, +108, 49, 44, 32, 99,111,108, 49, 32, 42, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, + 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 99,114,101,101,110, 40,102,108, +111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111, +117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, + 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, + 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 40, +118,101, 99, 52, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111, +108, 50, 41, 41, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, + 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,111,118,101,114,108, 97,121, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109, -112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, - 99,111,108, 49, 44, 32, 99,111,108, 49, 32, 42, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, - 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 99,114,101,101,110, 40, -102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, - 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, - 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, - 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, - 32, 40,118,101, 99, 52, 40,102, 97, 99,109, 41, 32, 43, 32,102, 97, 99, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, - 99,111,108, 50, 41, 41, 42, 40,118,101, 99, 52, 40, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99, -111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,111,118,101,114,108, - 97,121, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111, -108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, - 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, - 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9, -105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 42, 61, - 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,101,108,115,101, 10, 9, 9, -111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, - 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, - 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, - 46,103, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,101,108, -115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, - 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, - 99,111,108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111, -117,116, 99,111,108, 46, 98, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46, 98, - 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, - 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, - 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,102,108,111, - 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117, -116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, - 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, - 44, 32, 99,111,108, 49, 32, 45, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, - 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,116, 32,102, - 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, - 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, - 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, - 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, - 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, - 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 50, - 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111, -108, 46,103, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40, 99, -111,108, 50, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117, -116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59, 10,125, 10, - 10,118,111,105,100, 32,109,105,120, 95,100,105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99, -111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, - 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, - 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,108, 49, 32, 45, 32, 99, -111,108, 50, 41, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, -125, 10, 10,118,111,105,100, 32,109,105,120, 95,100, 97,114,107, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, - 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111, -108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, - 59, 10, 9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109,105,110, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111, -108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, - 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, - 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, - 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, - 48, 41, 59, 10, 9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, - 99,111,108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, - 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32, -118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111, -117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, - 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111, -108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, - 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, - 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, - 32, 61, 32,111,117,116, 99,111,108, 46,114, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111, -108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, -116,109,112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, - 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9, - 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, - 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,103, 47,116,109,112, - 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108, -115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, - 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, - 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, - 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116, -109,112, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, - 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, - 61, 32,116,109,112, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,111, 97,116, +112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, + 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, + 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 42, 61, 32,102, + 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117, +116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 40, + 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,114, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, + 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, + 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,101,108,115,101, + 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42, +102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111, +108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, + 99,111,108, 46, 98, 32, 42, 61, 32,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, + 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, + 32, 50, 46, 48, 42,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32, 99,111,108, 50, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32, +111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115,117, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32, 118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, - 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32, 61, 32, 49, - 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,116,109,112, - 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, - 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, - 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 47, -116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9, -101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, - 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 10, 9,116, -109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40,116,109,112, 32, - 60, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32, -105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, - 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, - 10, 9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, - 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 10, - 9,116,109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,105,102, 40,116,109, -112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115, -101, 32,105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, - 46, 98, 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, - 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, - 98, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, - 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, + 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, + 99,111,108, 49, 32, 45, 32, 99,111,108, 50, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99, +111,108, 49, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,105,118, 40,102,108,111, 97,116, 32,102, 97, 99, + 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, + 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, + 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, + 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 33, 61, + 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, + 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,114, 47, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 50, 46,103, + 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, +103, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46,103, 47, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40, 99,111,108, + 50, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,111,117,116, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99, +111,108, 46, 98, 32, 43, 32,102, 97, 99, 42,111,117,116, 99,111,108, 46, 98, 47, 99,111,108, 50, 46, 98, 59, 10,125, 10, 10,118, +111,105,100, 32,109,105,120, 95,100,105,102,102, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, + 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, + 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111, +117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 49, 44, 32, 97, 98,115, 40, 99,111,108, 49, 32, 45, 32, 99,111,108, + 50, 41, 44, 32,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, 10, + 10,118,111,105,100, 32,109,105,120, 95,100, 97,114,107, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99, +111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, + 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, + 9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109,105,110, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111,108, 50, + 46,114,103, 98, 42,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10,125, + 10, 10,118,111,105,100, 32,109,105,120, 95,108,105,103,104,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111, 108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, - 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, - 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109, -112, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, - 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111, -117,116, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, - 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99,111, -108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117,116, - 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, - 97,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111, -108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, - 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, - 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9, -118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99, -111,108, 44, 32,104,115,118, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, - 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9, 9,104,115,118, 46, -121, 32, 61, 32,102, 97, 99,109, 42,104,115,118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 10, 9, 9,104, -115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 9,125, 10,125, 10, 10,118,111, -105,100, 32,109,105,120, 95,118, 97,108, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, - 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9, -102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, - 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, - 32,104,115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 49, 44, 32,104,115,118, 41, 59, 10, 9, -114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,104,115,118, 46,122, 32, - 61, 32,102, 97, 99,109, 42,104,115,118, 46,122, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,122, 59, 10, 9,104,115,118, 95, -116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, - 95, 99,111,108,111,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, - 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, - 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, - 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, - 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, 95,116,111, - 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, - 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, - 41, 59, 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,104, -115,118, 50, 46,121, 59, 10, 9, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, - 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, - 41, 59, 10, 9, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111, -105,100, 32,109,105,120, 95,115,111,102,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, - 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, - 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108, -111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,111,110,101, - 61, 32,118,101, 99, 52, 40, 49, 46, 48, 41, 59, 10, 9,118,101, 99, 52, 32,115, 99,114, 61, 32,111,110,101, 32, 45, 32, 40,111, -110,101, 32, 45, 32, 99,111,108, 50, 41, 42, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, - 32, 61, 32,102, 97, 99,109, 42, 99,111,108, 49, 32, 43, 32,102, 97, 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, - 42, 99,111,108, 50, 42, 99,111,108, 49, 32, 43, 32, 99,111,108, 49, 42,115, 99,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -109,105,120, 95,108,105,110,101, 97,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, - 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9, -102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9,111,117, -116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46, 53, 41, 10, - 9, 9,111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99, -111,108, 50, 46,114, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 61, - 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45, 32, 49, 46, - 48, 41, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, -103, 61, 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32, 45, 32, 48, - 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, - 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105,102, 40, - 99,111,108, 50, 46, 98, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, - 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108, -115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, - 42, 40, 99,111,108, 50, 46, 98, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118, 97,108,116,111,114, -103, 98, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,111,108,111,114,109, 97,112, - 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, - 97,108,112,104, 97, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,111,108, -111,114,109, 97,112, 44, 32,118,101, 99, 50, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 41, 59, 10, 9,111,117,116, 97,108,112,104, - 97, 32, 61, 32,111,117,116, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98,116,111, 98,119, 40,118,101, - 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 32, 32, 10,123, 10, - 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, 46, 51, 53, 32, 43, 32, 99,111,108,111,114, 46,103, - 42, 48, 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 50, 59, 32, 47, 42, 32,107,101,101,112, 32,116,104,101, -115,101, 32,102, 97, 99,116,111,114,115, 32,105,110, 32,115,121,110, 99, 32,119,105,116,104, 32,116,101,120,116,117,114,101, 46, -104, 58, 82, 71, 66, 84, 79, 66, 87, 32, 42, 47, 10,125, 10, 10,118,111,105,100, 32,105,110,118,101,114,116, 40,102,108,111, 97, -116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, - 41, 10,123, 10, 9,111,117,116, 99,111,108, 46,120,121,122, 32, 61, 32,109,105,120, 40, 99,111,108, 46,120,121,122, 44, 32,118, -101, 99, 51, 40, 49, 46, 48, 44, 32, 49, 46, 48, 44, 32, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 46,120,121,122, 44, 32,102, 97, - 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46,119, 32, 61, 32, 99,111,108, 46,119, 59, 10,125, 10, 10,118,111,105,100, 32,104, -117,101, 95,115, 97,116, 40,102,108,111, 97,116, 32,104,117,101, 44, 32,102,108,111, 97,116, 32,115, 97,116, 44, 32,102,108,111, - 97,116, 32,118, 97,108,117,101, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111, -117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32,104,115,118, 59, 10, 10, 9,114, -103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10, 9,104,115,118, 91, 48, 93, 32, 43, 61, - 32, 40,104,117,101, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,105,102, 40,104,115,118, 91, 48, 93, 62, 49, 46, 48, 41, 32,104,115, -118, 91, 48, 93, 45, 61, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 48, 93, 60, 48, 46, 48, 41, 32,104, -115,118, 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, 10, 9,104,115,118, 91, 49, 93, 32, 42, 61, 32,115, 97,116, 59, 10, 9,105,102, - 40,104,115,118, 91, 49, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105, -102, 40,104,115,118, 91, 49, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 48, 46, 48, 59, 10, 9,104,115,118, 91, - 50, 93, 32, 42, 61, 32,118, 97,108,117,101, 59, 10, 9,105,102, 40,104,115,118, 91, 50, 93, 62, 49, 46, 48, 41, 32,104,115,118, - 91, 50, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 50, 93, 60, 48, 46, 48, 41, 32,104,115, -118, 91, 50, 93, 61, 32, 48, 46, 48, 59, 10, 10, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, - 99,111,108, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 44, 32,111,117,116, 99,111,108, - 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,112, 97,114, 97,116,101, 95,114,103, 98, 40,118,101, 99, - 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,103, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32, 98, 41, 10,123, 10, 9,114, 32, 61, 32, 99,111,108, 46,114, 59, 10, 9,103, 32, 61, - 32, 99,111,108, 46,103, 59, 10, 9, 98, 32, 61, 32, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,109, 98, -105,110,101, 95,114,103, 98, 40,102,108,111, 97,116, 32,114, 44, 32,102,108,111, 97,116, 32,103, 44, 32,102,108,111, 97,116, 32, - 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 41, 10,123, 10, 9, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114, - 44, 32,103, 44, 32, 98, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,111,117,116,112,117,116, 95,110,111,100, -101, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, - 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114, -103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 84, 69, 88, 84, - 85, 82, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,101,120,116, -117,114,101, 95,102,108,105,112, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, - 51, 32,111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 46,121,120,122, 59, 10,125, - 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,108,105,110, 40,118,101, 99, 51, 32,118,101, - 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, - 32, 40, 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114, -101, 95, 98,108,101,110,100, 95,113,117, 97,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40, 40, 49, 46, 48, 43,118,101, - 99, 46,120, 41, 47, 50, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 42, 61, 32,111,117,116,118, 97, -108, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,119,111,111,100, 95,115,105,110, 40,118,101, 99, 51, - 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, - 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9,102,108,111, 97,116, - 32, 97, 32, 61, 32,115,113,114,116, 40,118,101, 99, 46,120, 42,118,101, 99, 46,120, 32, 43, 32,118,101, 99, 46,121, 42,118,101, - 99, 46,121, 32, 43, 32,118,101, 99, 46,122, 42,118,101, 99, 46,122, 41, 42, 50, 48, 46, 48, 59, 10, 9,102,108,111, 97,116, 32, -119,105, 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, 46, 53, 42,115,105,110, 40, 97, 41, 59, 10, 10, 9,118, 97,108,117,101, 32, 61, - 32,119,105, 59, 10, 9, 99,111,108,111,114, 32, 61, 32,118,101, 99, 52, 40,119,105, 44, 32,119,105, 44, 32,119,105, 44, 32, 49, - 46, 48, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, - 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,118, -101, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108, -117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114, -109, 97,108, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 40, -118,101, 99, 46,120,121, 32, 43, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 41, 42, 48, 46, 53, 41, 59, 10, 9, -118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10, 10, 9,110,111,114,109, 97,108, 46,120, 32, 61, 32, 50, 46, 48, 42, 40, 99, -111,108,111,114, 46,114, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,110,111,114,109, 97,108, 46,121, 32, 61, 32, 50, 46, 48, 42, 40, - 48, 46, 53, 32, 45, 32, 99,111,108,111,114, 46,103, 41, 59, 10, 9,110,111,114,109, 97,108, 46,122, 32, 61, 32, 50, 46, 48, 42, - 40, 99,111,108,111,114, 46, 98, 32, 45, 32, 48, 46, 53, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, - 32,116,101,120, 99,111, 95,111,114, 99,111, 40,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,111,117,116, 32,118,101, - 99, 51, 32,111,114, 99,111, 41, 10,123, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10,125, 10, 10,118, -111,105,100, 32,116,101,120, 99,111, 95,117,118, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, - 51, 32,117,118, 41, 10,123, 10, 9, 47, 42, 32,100,105,115, 97, 98,108,101,100, 32,102,111,114, 32,110,111,119, 44, 32,119,111, -114,107,115, 32,116,111,103,101,116,104,101,114, 32,119,105,116,104, 32,108,101, 97,118,105,110,103, 32,111,117,116, 32,109,116, -101,120, 95, 50,100, 95,109, 97,112,112,105,110,103, 10, 9, 32, 32, 32,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117, -118, 42, 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 32, 42, 47, - 10, 9,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, - 32,116,101,120, 99,111, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, - 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 99,111,114,114,101,115,112,111,110,100,115, 32,116, -111, 32,115,104,105, 45, 62,111,114,110, 44, 32,119,104,105, 99,104, 32,105,115, 32,110,101,103, 97,116,101,100, 32,115,111, 32, - 99, 97,110, 99,101,108,115, 10, 9, 32, 32, 32,111,117,116, 32, 98,108,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,110, -101,103, 97,116,105,111,110, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122, -101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,116, 97,110,103,101,110,116, - 40,118,101, 99, 52, 32,116, 97,110,103,101,110,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116, 97,110,103,101, -110,116, 41, 10,123, 10, 9,111,117,116,116, 97,110,103,101,110,116, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,116, 97, -110,103,101,110,116, 46,120,121,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,103,108,111, 98, 97,108, - 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118, -101, 99, 51, 32,103,108,111, 98, 97,108, 41, 10,123, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118, -109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118,111,105,100, 32, -116,101,120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,109, 97, -116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111, - 98,106,101, 99,116, 41, 10,123, 10, 9,111, 98,106,101, 99,116, 32, 61, 32, 40,111, 98,105,110,118,109, 97,116, 42, 40,118,105, -101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 41, 46,120,121,122, 59, 10,125, 10, - 10,118,111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,118, -105,101,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, 41, 10,123, 10, 9,114,101,102, 32, 61, 32,118,105,101,119, - 32, 45, 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118,105,101,119, 41, 42,118,110, 59, 10,125, 10, 10,118,111,105,100, - 32,115,104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, - 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101, -114, 32,110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97, -108, 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -109,116,101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, - 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, - 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, - 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111, -117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,109,117,108, 40,118,101, 99, 51, - 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, - 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, - 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, - 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109, 32, 43, - 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32, -116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32, -111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, - 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, - 10, 10, 9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 51, 40,102, 97, 99, -109, 41, 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, - 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, - 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, - 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, - 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,114, - 32, 61, 32,111,117,116, 99,111,108, 46,114, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, - 99,111,108, 46,114, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, - 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,114, - 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, - 46,103, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 42, 40, -102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 41, 59, 10, 9,101,108,115,101, - 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, - 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, - 99,111,108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105, -110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, - 99,116, 42,116,101,120, 99,111,108, 46, 98, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46, 98, 32, 61, 32, - 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101, -120, 99,111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, - 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, - 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, 32, 45,102, 97, - 99,116, 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, - 32,109,116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32, -116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32, -111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42, -102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, - 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, - 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, - 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, -105,102, 40,116,101,120, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32,102, 97, - 99,109, 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,114, 47,116,101,120, 99, -111,108, 46,114, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, - 46,103, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, - 46,103, 47,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, - 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99,116, - 42,111,117,116, 99,111,108, 46, 98, 47,116,101,120, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, - 95,114,103, 98, 95,100,105,102,102, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99, -111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32, -118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99, -116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105, -110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101, -120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, - 95,100, 97,114,107, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32, -102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, - 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 10, 10, 9,102, 97, - 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, - 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111, -117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99, -111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, - 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46,103, 41, 32,105,110, 99,111,108, - 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46, -103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9,105,102, 40, 99,111,108, - 32, 60, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, - 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101, -120, 95,114,103, 98, 95,108,105,103,104,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, + 59, 10, 9,111,117,116, 99,111,108, 46,114,103, 98, 32, 61, 32,109, 97,120, 40, 99,111,108, 49, 46,114,103, 98, 44, 32, 99,111, +108, 50, 46,114,103, 98, 42,102, 97, 99, 41, 59, 10, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, + 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,100,111,100,103,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, + 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, + 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, + 48, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, +114, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32, +102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9, +111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, + 32,111,117,116, 99,111,108, 46,114, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46, +114, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109, +112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102, +108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9, 9,105, +102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, + 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, 32, 61, 32,111,117,116, 99,111,108, 46,103, 47,116,109,112, 41, 32, + 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, + 10, 9, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, 9,105,102, 40,111,117,116, 99,111, +108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32, 49, 46, 48, 32, + 45, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, 46, 48, 41, 10, 9, + 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40, 40,116,109,112, + 32, 61, 32,111,117,116, 99,111,108, 46, 98, 47,116,109,112, 41, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9, 9,111,117,116, 99,111, +108, 46, 98, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9,101,108,115,101, 10, 9, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, +116,109,112, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 98,117,114,110, 40,102,108,111, 97,116, 32,102, + 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, + 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, + 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,116,109,112, 44, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, + 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,116,109,112, 32, 61, + 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,114, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, 32, 48, + 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 40, +116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 47,116,109, +112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108, +115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32, 49, 46, + 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 32, 61, 32,116,109,112, 59, 10, 10, 9,116,109,112, + 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46,103, 59, 10, 9,105,102, 40,116,109,112, 32, 60, 61, + 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, + 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,103, 41, 47, +116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, 48, 46, 48, 59, 10, 9, +101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32, + 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 32, 61, 32,116,109,112, 59, 10, 10, 9,116, +109,112, 32, 61, 32,102, 97, 99,109, 32, 43, 32,102, 97, 99, 42, 99,111,108, 50, 46, 98, 59, 10, 9,105,102, 40,116,109,112, 32, + 60, 61, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32, +105,102, 40, 40,116,109,112, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, + 41, 47,116,109,112, 41, 41, 32, 60, 32, 48, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32, 48, 46, 48, 59, + 10, 9,101,108,115,101, 32,105,102, 40,116,109,112, 32, 62, 32, 49, 46, 48, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, + 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 32, 61, 32,116,109,112, 59, 10,125, + 10, 10,118,111,105,100, 32,109,105,120, 95,104,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99, +111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, + 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, + 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111, +108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, + 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104, +115,118, 50, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, + 99,111,108, 44, 32,104,115,118, 41, 59, 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104, +115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, 9,111,117,116, 99,111,108, 32, + 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, 10, 9, 9,111,117,116, 99,111, +108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95,115, 97,116, + 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, + 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109, +112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 32, 61, 32, + 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,118,101, + 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, + 44, 32,104,115,118, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 46,121, 32, 33, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114, +103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9, 9,104,115,118, 46,121, 32, + 61, 32,102, 97, 99,109, 42,104,115,118, 46,121, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,121, 59, 10, 9, 9,104,115,118, + 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, + 32,109,105,120, 95,118, 97,108, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118, +101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, + 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, + 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104, +115,118, 50, 59, 10, 9,114,103, 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 49, 44, 32,104,115,118, 41, 59, 10, 9,114,103, + 98, 95,116,111, 95,104,115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,104,115,118, 46,122, 32, 61, 32, +102, 97, 99,109, 42,104,115,118, 46,122, 32, 43, 32,102, 97, 99, 42,104,115,118, 50, 46,122, 59, 10, 9,104,115,118, 95,116,111, + 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105,120, 95, 99, +111,108,111,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, + 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, 99, 32, 61, 32, + 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 97, 99, +109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 59, 10, + 10, 9,118,101, 99, 52, 32,104,115,118, 44, 32,104,115,118, 50, 44, 32,116,109,112, 59, 10, 9,114,103, 98, 95,116,111, 95,104, +115,118, 40, 99,111,108, 50, 44, 32,104,115,118, 50, 41, 59, 10, 10, 9,105,102, 40,104,115,118, 50, 46,121, 32, 33, 61, 32, 48, + 46, 48, 41, 32,123, 10, 9, 9,114,103, 98, 95,116,111, 95,104,115,118, 40,111,117,116, 99,111,108, 44, 32,104,115,118, 41, 59, + 10, 9, 9,104,115,118, 46,120, 32, 61, 32,104,115,118, 50, 46,120, 59, 10, 9, 9,104,115,118, 46,121, 32, 61, 32,104,115,118, + 50, 46,121, 59, 10, 9, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,116,109,112, 41, 59, 32, 10, 10, 9, + 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40,111,117,116, 99,111,108, 44, 32,116,109,112, 44, 32,102, 97, 99, 41, 59, + 10, 9, 9,111,117,116, 99,111,108, 46, 97, 32, 61, 32, 99,111,108, 49, 46, 97, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, + 32,109,105,120, 95,115,111,102,116, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32, +118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, + 97, 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,102,108,111, 97, +116, 32,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99, 59, 10, 10, 9,118,101, 99, 52, 32,111,110,101, 61, 32, +118,101, 99, 52, 40, 49, 46, 48, 41, 59, 10, 9,118,101, 99, 52, 32,115, 99,114, 61, 32,111,110,101, 32, 45, 32, 40,111,110,101, + 32, 45, 32, 99,111,108, 50, 41, 42, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 59, 10, 9,111,117,116, 99,111,108, 32, 61, + 32,102, 97, 99,109, 42, 99,111,108, 49, 32, 43, 32,102, 97, 99, 42, 40, 40,111,110,101, 32, 45, 32, 99,111,108, 49, 41, 42, 99, +111,108, 50, 42, 99,111,108, 49, 32, 43, 32, 99,111,108, 49, 42,115, 99,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,105, +120, 95,108,105,110,101, 97,114, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118, +101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102, 97, + 99, 32, 61, 32, 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9,111,117,116, 99, +111,108, 32, 61, 32, 99,111,108, 49, 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,114, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9, +111,117,116, 99,111,108, 46,114, 61, 32, 99,111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, + 50, 46,114, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,114, 61, 32, 99, +111,108, 49, 46,114, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,114, 41, 32, 45, 32, 49, 46, 48, 41, + 59, 10, 10, 9,105,102, 40, 99,111,108, 50, 46,103, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, + 32, 99,111,108, 49, 46,103, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 32, 45, 32, 48, 46, 53, + 41, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111,117,116, 99,111,108, 46,103, 61, 32, 99,111,108, 49, 46,103, 32, 43, 32,102, + 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46,103, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10, 10, 9,105,102, 40, 99,111, +108, 50, 46, 98, 32, 62, 32, 48, 46, 53, 41, 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, + 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, 99,111,108, 50, 46, 98, 32, 45, 32, 48, 46, 53, 41, 41, 59, 10, 9,101,108,115,101, + 10, 9, 9,111,117,116, 99,111,108, 46, 98, 61, 32, 99,111,108, 49, 46, 98, 32, 43, 32,102, 97, 99, 42, 40, 50, 46, 48, 42, 40, + 99,111,108, 50, 46, 98, 41, 32, 45, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,118, 97,108,116,111,114,103, 98, + 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,111,108,111,114,109, 97,112, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116, 97,108, +112,104, 97, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,111,108,111,114, +109, 97,112, 44, 32,118,101, 99, 50, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 41, 59, 10, 9,111,117,116, 97,108,112,104, 97, 32, + 61, 32,111,117,116, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98,116,111, 98,119, 40,118,101, 99, 52, + 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 32, 32, 10,123, 10, 9,111, +117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, 46, 51, 53, 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, + 46, 52, 53, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 50, 59, 32, 47, 42, 32,107,101,101,112, 32,116,104,101,115,101, + 32,102, 97, 99,116,111,114,115, 32,105,110, 32,115,121,110, 99, 32,119,105,116,104, 32,116,101,120,116,117,114,101, 46,104, 58, + 82, 71, 66, 84, 79, 66, 87, 32, 42, 47, 10,125, 10, 10,118,111,105,100, 32,105,110,118,101,114,116, 40,102,108,111, 97,116, 32, +102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10, +123, 10, 9,111,117,116, 99,111,108, 46,120,121,122, 32, 61, 32,109,105,120, 40, 99,111,108, 46,120,121,122, 44, 32,118,101, 99, + 51, 40, 49, 46, 48, 44, 32, 49, 46, 48, 44, 32, 49, 46, 48, 41, 32, 45, 32, 99,111,108, 46,120,121,122, 44, 32,102, 97, 99, 41, + 59, 10, 9,111,117,116, 99,111,108, 46,119, 32, 61, 32, 99,111,108, 46,119, 59, 10,125, 10, 10,118,111,105,100, 32,104,117,101, + 95,115, 97,116, 40,102,108,111, 97,116, 32,104,117,101, 44, 32,102,108,111, 97,116, 32,115, 97,116, 44, 32,102,108,111, 97,116, + 32,118, 97,108,117,101, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, + 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32,104,115,118, 59, 10, 10, 9,114,103, 98, + 95,116,111, 95,104,115,118, 40, 99,111,108, 44, 32,104,115,118, 41, 59, 10, 10, 9,104,115,118, 91, 48, 93, 32, 43, 61, 32, 40, +104,117,101, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,105,102, 40,104,115,118, 91, 48, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, + 48, 93, 45, 61, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 48, 93, 60, 48, 46, 48, 41, 32,104,115,118, + 91, 48, 93, 43, 61, 32, 49, 46, 48, 59, 10, 9,104,115,118, 91, 49, 93, 32, 42, 61, 32,115, 97,116, 59, 10, 9,105,102, 40,104, +115,118, 91, 49, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40, +104,115,118, 91, 49, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, 49, 93, 61, 32, 48, 46, 48, 59, 10, 9,104,115,118, 91, 50, 93, + 32, 42, 61, 32,118, 97,108,117,101, 59, 10, 9,105,102, 40,104,115,118, 91, 50, 93, 62, 49, 46, 48, 41, 32,104,115,118, 91, 50, + 93, 61, 32, 49, 46, 48, 59, 32,101,108,115,101, 32,105,102, 40,104,115,118, 91, 50, 93, 60, 48, 46, 48, 41, 32,104,115,118, 91, + 50, 93, 61, 32, 48, 46, 48, 59, 10, 10, 9,104,115,118, 95,116,111, 95,114,103, 98, 40,104,115,118, 44, 32,111,117,116, 99,111, +108, 41, 59, 10, 10, 9,111,117,116, 99,111,108, 32, 61, 32,109,105,120, 40, 99,111,108, 44, 32,111,117,116, 99,111,108, 44, 32, +102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,101,112, 97,114, 97,116,101, 95,114,103, 98, 40,118,101, 99, 52, 32, + 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,103, 44, 32,111, +117,116, 32,102,108,111, 97,116, 32, 98, 41, 10,123, 10, 9,114, 32, 61, 32, 99,111,108, 46,114, 59, 10, 9,103, 32, 61, 32, 99, +111,108, 46,103, 59, 10, 9, 98, 32, 61, 32, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32, 99,111,109, 98,105,110, +101, 95,114,103, 98, 40,102,108,111, 97,116, 32,114, 44, 32,102,108,111, 97,116, 32,103, 44, 32,102,108,111, 97,116, 32, 98, 44, + 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108, 41, 10,123, 10, 9, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,114, 44, 32, +103, 44, 32, 98, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,111,117,116,112,117,116, 95,110,111,100,101, 40, +118,101, 99, 52, 32,114,103, 98, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32,111,117,116, 32,118,101, 99, 52, 32, +111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 46,114,103, 98, + 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 84, 69, 88, 84, 85, 82, + 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116,101,120,116,117,114, +101, 95,102,108,105,112, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32, +111,117,116,118,101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 46,121,120,122, 59, 10,125, 10, 10, +118,111,105,100, 32,116,101,120,116,117,114,101, 95, 98,108,101,110,100, 95,108,105,110, 40,118,101, 99, 51, 32,118,101, 99, 44, + 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 40, + 49, 46, 48, 43,118,101, 99, 46,120, 41, 47, 50, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95, + 98,108,101,110,100, 95,113,117, 97,100, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111, +117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32,109, 97,120, 40, 40, 49, 46, 48, 43,118,101, 99, 46, +120, 41, 47, 50, 46, 48, 44, 32, 48, 46, 48, 41, 59, 10, 9,111,117,116,118, 97,108, 32, 42, 61, 32,111,117,116,118, 97,108, 59, + 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,119,111,111,100, 95,115,105,110, 40,118,101, 99, 51, 32,118, +101, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111, +108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32, 97, + 32, 61, 32,115,113,114,116, 40,118,101, 99, 46,120, 42,118,101, 99, 46,120, 32, 43, 32,118,101, 99, 46,121, 42,118,101, 99, 46, +121, 32, 43, 32,118,101, 99, 46,122, 42,118,101, 99, 46,122, 41, 42, 50, 48, 46, 48, 59, 10, 9,102,108,111, 97,116, 32,119,105, + 32, 61, 32, 48, 46, 53, 32, 43, 32, 48, 46, 53, 42,115,105,110, 40, 97, 41, 59, 10, 10, 9,118, 97,108,117,101, 32, 61, 32,119, +105, 59, 10, 9, 99,111,108,111,114, 32, 61, 32,118,101, 99, 52, 40,119,105, 44, 32,119,105, 44, 32,119,105, 44, 32, 49, 46, 48, + 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, + 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120,116,117,114,101, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,118,101, 99, + 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, + 44, 32,111,117,116, 32,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97, +108, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 40,118,101, + 99, 46,120,121, 32, 43, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 41, 42, 48, 46, 53, 41, 59, 10, 9,118, 97, +108,117,101, 32, 61, 32, 49, 46, 48, 59, 10, 10, 9,110,111,114,109, 97,108, 46,120, 32, 61, 32, 50, 46, 48, 42, 40, 99,111,108, +111,114, 46,114, 32, 45, 32, 48, 46, 53, 41, 59, 10, 9,110,111,114,109, 97,108, 46,121, 32, 61, 32, 50, 46, 48, 42, 40, 48, 46, + 53, 32, 45, 32, 99,111,108,111,114, 46,103, 41, 59, 10, 9,110,111,114,109, 97,108, 46,122, 32, 61, 32, 50, 46, 48, 42, 40, 99, +111,108,111,114, 46, 98, 32, 45, 32, 48, 46, 53, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 32, 77, 84, 69, 88, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,116, +101,120, 99,111, 95,111,114, 99,111, 40,118,101, 99, 51, 32, 97,116,116,111,114, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, + 32,111,114, 99,111, 41, 10,123, 10, 9,111,114, 99,111, 32, 61, 32, 97,116,116,111,114, 99,111, 59, 10,125, 10, 10,118,111,105, +100, 32,116,101,120, 99,111, 95,117,118, 40,118,101, 99, 50, 32, 97,116,116,117,118, 44, 32,111,117,116, 32,118,101, 99, 51, 32, +117,118, 41, 10,123, 10, 9, 47, 42, 32,100,105,115, 97, 98,108,101,100, 32,102,111,114, 32,110,111,119, 44, 32,119,111,114,107, +115, 32,116,111,103,101,116,104,101,114, 32,119,105,116,104, 32,108,101, 97,118,105,110,103, 32,111,117,116, 32,109,116,101,120, + 95, 50,100, 95,109, 97,112,112,105,110,103, 10, 9, 32, 32, 32,117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 42, + 50, 46, 48, 32, 45, 32,118,101, 99, 50, 40, 49, 46, 48, 44, 32, 49, 46, 48, 41, 44, 32, 48, 46, 48, 41, 59, 32, 42, 47, 10, 9, +117,118, 32, 61, 32,118,101, 99, 51, 40, 97,116,116,117,118, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116, +101,120, 99,111, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32, +111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 99,111,114,114,101,115,112,111,110,100,115, 32,116,111, 32, +115,104,105, 45, 62,111,114,110, 44, 32,119,104,105, 99,104, 32,105,115, 32,110,101,103, 97,116,101,100, 32,115,111, 32, 99, 97, +110, 99,101,108,115, 10, 9, 32, 32, 32,111,117,116, 32, 98,108,101,110,100,101,114, 32,110,111,114,109, 97,108, 32,110,101,103, + 97,116,105,111,110, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, +110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,116, 97,110,103,101,110,116, 40,118, +101, 99, 52, 32,116, 97,110,103,101,110,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116, 97,110,103,101,110,116, + 41, 10,123, 10, 9,111,117,116,116, 97,110,103,101,110,116, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,116, 97,110,103, +101,110,116, 46,120,121,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,120, 99,111, 95,103,108,111, 98, 97,108, 40,109, + 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, + 51, 32,103,108,111, 98, 97,108, 41, 10,123, 10, 9,103,108,111, 98, 97,108, 32, 61, 32, 40,118,105,101,119,105,110,118,109, 97, +116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118,111,105,100, 32,116,101, +120, 99,111, 95,111, 98,106,101, 99,116, 40,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,109, 97,116, 52, + 32,111, 98,105,110,118,109, 97,116, 44, 32,118,101, 99, 51, 32, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111, 98,106, +101, 99,116, 41, 10,123, 10, 9,111, 98,106,101, 99,116, 32, 61, 32, 40,111, 98,105,110,118,109, 97,116, 42, 40,118,105,101,119, +105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 99,111, 44, 32, 49, 46, 48, 41, 41, 41, 46,120,121,122, 59, 10,125, 10, 10,118, +111,105,100, 32,116,101,120, 99,111, 95,114,101,102,108, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,118,105,101, +119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, 41, 10,123, 10, 9,114,101,102, 32, 61, 32,118,105,101,119, 32, 45, + 32, 50, 46, 48, 42,100,111,116, 40,118,110, 44, 32,118,105,101,119, 41, 42,118,110, 59, 10,125, 10, 10,118,111,105,100, 32,115, +104, 97,100,101, 95,110,111,114,109, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32, +111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 42, 32, 98,108,101,110,100,101,114, 32,114,101,110,100,101,114, 32, +110,111,114,109, 97,108, 32,105,115, 32,110,101,103, 97,116,101,100, 32, 42, 47, 10, 9,111,117,116,110,111,114,109, 97,108, 32, + 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, +101,120, 95,114,103, 98, 95, 98,108,101,110,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116, +101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9, +102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, + 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, + 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,109,117,108, 40,118,101, 99, 51, 32,111, +117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32, +102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102, +108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, + 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32, 40,102, 97, 99,109, 32, 43, 32,102, + 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,114,103, 98, 95,115, 99,114,101,101,110, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, 120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, -116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, - 59, 10, 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, - 99,116, 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99, -111,108, 32, 62, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108, -115,101, 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, - 99,116, 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,103, 41, - 32,105,110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111, -117,116, 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9, -105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, - 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95,114,103, 98, 95,104,117,101, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, - 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, - 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, - 9,109,105,120, 95,104,117,101, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, - 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, - 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,114,103, 98, 95,115, 97,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, - 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, - 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95, -115, 97,116, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, - 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111, -108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, - 98, 95,118, 97,108, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32, -102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, - 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95,118, 97,108, 40,102, - 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, - 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, - 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 99,111,108, -111,114, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, - 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, - 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95, 99,111,108,111,114, 40,102, 97, - 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, - 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, - 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97, -114,115, 40,105,110,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,109, 41, 10,123, 10, 9,102, 97, 99,116, 32, 42, 61, 32, 97, 98,115, 40, -102, 97, 99,103, 41, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,102, 40,102, 97, - 99,103, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32,102, 97, 99,116, 59, 10, - 9, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,109, 59, 10, 9, 9,102, 97, 99,109, 32, 61, 32,116,109,112, 59, 10, 9,125, 10, -125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,111, -117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, - 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, - 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, - 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42, -116,101,120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,118, 97,108,117,101, 95,109,117,108, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, - 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, - 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, - 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, - 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, - 32, 61, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10, -125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32, -111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, - 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, - 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, - 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, - 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, - 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, - 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,117, 98, 40,102,108,111, 97,116, 32, -111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, - 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, - 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, - 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32, 45,102, 97, 99,116, - 59, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, - 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 97,100,100, 40,102,108,111, 97,116, 32,111,117, +116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, + 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, 10, + 9,105,110, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32, 40,118,101, 99, 51, 40,102, 97, 99,109, 41, + 32, 43, 32,102, 97, 99,116, 42, 40,118,101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40,118, +101, 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,114,103, 98, 95,111,118,101,114,108, 97,121, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116, +101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9, +102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,103, 59, 10, + 10, 9,105,102, 40,111,117,116, 99,111,108, 46,114, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,114, 32, 61, + 32,111,117,116, 99,111,108, 46,114, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111, +108, 46,114, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46,114, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, + 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,114, 41, 41, + 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46,114, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46,103, + 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 42, 40,102, 97, + 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,103, 41, 59, 10, 9,101,108,115,101, 10, 9, + 9,105,110, 99,111,108, 46,103, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99, +116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 46,103, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111, +108, 46,103, 41, 59, 10, 10, 9,105,102, 40,111,117,116, 99,111,108, 46, 98, 32, 60, 32, 48, 46, 53, 41, 10, 9, 9,105,110, 99, +111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 42, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, + 42,116,101,120, 99,111,108, 46, 98, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 46, 98, 32, 61, 32, 49, 46, + 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32, 50, 46, 48, 42,102, 97, 99,116, 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99, +111,108, 46, 98, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 46, 98, 41, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95,114,103, 98, 95,115,117, 98, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32, +116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32, +111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, 32, 45,102, 97, 99,116, + 42,102, 97, 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109, +116,101,120, 95,114,103, 98, 95, 97,100,100, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101, +120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117, +116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,102, 97, + 99,103, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,114,103, 98, 95,100,105,118, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111, +108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118, +101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, + 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,102, + 40,116,101,120, 99,111,108, 46,114, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32,102, 97, 99,109, + 42,111,117,116, 99,111,108, 46,114, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,114, 47,116,101,120, 99,111,108, + 46,114, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46,103, 32, 33, 61, 32, 48, 46, 48, 41, 32,105,110, 99,111,108, 46,103, + 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46,103, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99,111,108, 46,103, + 47,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40,116,101,120, 99,111,108, 46, 98, 32, 33, 61, 32, 48, 46, 48, 41, 32, +105,110, 99,111,108, 46, 98, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 46, 98, 32, 43, 32,102, 97, 99,116, 42,111, +117,116, 99,111,108, 46, 98, 47,116,101,120, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114, +103, 98, 95,100,105,102,102, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, + 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, + 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 10, 9,102, 97, 99,116, 32, + 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,110, 99, +111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101,120, 99, +111,108, 32, 45, 32,111,117,116, 99,111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,100, + 97,114,107, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108, +111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105, +110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 10, 10, 9,102, 97, 99,116, + 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9, 99,111, +108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, + 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, + 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111, +108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 46,103, 41, 32,105,110, 99,111,108, 46,103, + 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, 99,111,108, 46,103, 59, + 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, + 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105, +110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, +114,103, 98, 95,108,105,103,104,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99, +111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32, +118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 44, 32, 99,111,108, 59, 10, + 10, 9,102, 97, 99,116, 32, 42, 61, 32,102, 97, 99,103, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, + 59, 10, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46,114, 59, 10, 9,105,102, 40, 99,111,108, + 32, 62, 32,111,117,116, 99,111,108, 46,114, 41, 32,105,110, 99,111,108, 46,114, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, + 32,105,110, 99,111,108, 46,114, 32, 61, 32,111,117,116, 99,111,108, 46,114, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, + 42,116,101,120, 99,111,108, 46,103, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46,103, 41, 32,105, +110, 99,111,108, 46,103, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 46,103, 32, 61, 32,111,117,116, + 99,111,108, 46,103, 59, 10, 9, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 46, 98, 59, 10, 9,105,102, + 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 46, 98, 41, 32,105,110, 99,111,108, 46, 98, 32, 61, 32, 99,111,108, 59, 32, +101,108,115,101, 32,105,110, 99,111,108, 46, 98, 32, 61, 32,111,117,116, 99,111,108, 46, 98, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95,114,103, 98, 95,104,117,101, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32, +116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32, +111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109, +105,120, 95,104,117,101, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, + 46, 48, 41, 44, 32,118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105, +110, 99,111,108, 46,114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,114,103, 98, 95,115, 97,116, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111, +108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118, +101, 99, 51, 32,105,110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95,115, 97, +116, 40,102, 97, 99,116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, +118,101, 99, 52, 40,116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46, +114,103, 98, 32, 61, 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, +118, 97,108, 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108, +111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105, +110, 99,111,108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95,118, 97,108, 40,102, 97, 99, +116, 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40, +116,101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, + 32, 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95, 99,111,108,111,114, + 40,118,101, 99, 51, 32,111,117,116, 99,111,108, 44, 32,118,101, 99, 51, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111, +108, 41, 10,123, 10, 9,118,101, 99, 52, 32, 99,111,108, 59, 10, 10, 9,109,105,120, 95, 99,111,108,111,114, 40,102, 97, 99,116, + 42,102, 97, 99,103, 44, 32,118,101, 99, 52, 40,111,117,116, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32,118,101, 99, 52, 40,116, +101,120, 99,111,108, 44, 32, 49, 46, 48, 41, 44, 32, 99,111,108, 41, 59, 10, 9,105,110, 99,111,108, 46,114,103, 98, 32, 61, 32, + 99,111,108, 46,114,103, 98, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, + 40,105,110,111,117,116, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111, +117,116, 32,102,108,111, 97,116, 32,102, 97, 99,109, 41, 10,123, 10, 9,102, 97, 99,116, 32, 42, 61, 32, 97, 98,115, 40,102, 97, + 99,103, 41, 59, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 45,102, 97, 99,116, 59, 10, 10, 9,105,102, 40,102, 97, 99,103, + 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,102,108,111, 97,116, 32,116,109,112, 32, 61, 32,102, 97, 99,116, 59, 10, 9, 9, +102, 97, 99,116, 32, 61, 32,102, 97, 99,109, 59, 10, 9, 9,102, 97, 99,109, 32, 61, 32,116,109,112, 59, 10, 9,125, 10,125, 10, + 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 98,108,101,110,100, 40,102,108,111, 97,116, 32,111,117,116, + 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102, +108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102, +108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, + 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101, +120, 99,111,108, 32, 43, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,118, 97,108,117,101, 95,109,117,108, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116, +101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111, +117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9, +109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, + 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, + 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 41, 42,111,117,116, 99,111,108, 59, 10,125, 10, + 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115, 99,114,101,101,110, 40,102,108,111, 97,116, 32,111,117, 116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32, 102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9, 102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99, -116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,116, 59, 10, 9, -105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, - 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,118, 40,102,108,111, 97,116, 32,111,117,116, 99,111, -108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, - 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, - 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32, -102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,102, 40,116,101,120, 99,111,108, 32, 33, 61, 32, 48, 46, 48, 41, - 10, 9, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42,111,117, -116, 99,111,108, 47,116,101,120, 99,111,108, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 32, 61, 32, 48, 46, 48, - 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,102,102, 40,102,108,111, 97,116, 32, -111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, - 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, - 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, - 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, - 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99, -111,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100, 97,114,107, 40,102,108,111, - 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, - 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114, -115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, - 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, - 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99, -111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,108,105,103,104,116, 40,102,108,111, - 97,116, 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, - 97, 99,116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, - 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114, -115, 40,102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, - 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, - 41, 32,105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99, -111,108, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 95,112,111,115, -105,116,105,118,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, - 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32,109, 97,120, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, - 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,102, 97, 99, - 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32, - 99,108, 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,104, 97,114, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,111,117,116,104, 97,114, 41, 10,123, 10, 9,111,117,116,104, 97,114, 32, 61, 32,104, 97,114, 47, 49, 50, 56, 46, 48, - 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,104, 97,114, 95,109,117,108,116,105,112,108,121, 95, 99,108, 97,109, -112, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,104, 97,114, 41, 10,123, - 10, 9,104, 97,114, 32, 42, 61, 32, 49, 50, 56, 46, 48, 59, 10, 10, 9,105,102, 40,104, 97,114, 32, 60, 32, 49, 46, 48, 41, 32, -111,117,116,104, 97,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,104, 97,114, 32, 62, 32, 53, 49, 49, - 46, 48, 41, 32,111,117,116,104, 97,114, 32, 61, 32, 53, 49, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,111,117,116,104, 97,114, - 32, 61, 32,104, 97,114, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108,112,104, 97, 95,102,114,111,109, 95, - 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 41, 10,123, - 10, 9, 97,108,112,104, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108, -112,104, 97, 95,116,111, 95, 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, - 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118, -101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101, -120, 95,114,103, 98,116,111,105,110,116, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105, -110,116,101,110,115,105,116,121, 41, 10,123, 10, 9,105,110,116,101,110,115,105,116,121, 32, 61, 32,100,111,116, 40,118,101, 99, - 51, 40, 48, 46, 51, 53, 44, 32, 48, 46, 52, 53, 44, 32, 48, 46, 50, 41, 44, 32,114,103, 98, 46,114,103, 98, 41, 59, 10,125, 10, - 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,105,110,118,101,114,116, 40,102,108,111, 97,116, 32,105,110, -118, 97,108,117,101, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,117,101, 41, 10,123, 10, 9,111,117, -116,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 32, 45, 32,105,110,118, 97,108,117,101, 59, 10,125, 10, 10,118,111,105,100, 32, -109,116,101,120, 95,114,103, 98, 95,105,110,118,101,114,116, 40,118,101, 99, 52, 32,105,110,114,103, 98, 44, 32,111,117,116, 32, -118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,118,101, - 99, 51, 40, 49, 46, 48, 41, 32, 45, 32,105,110,114,103, 98, 46,114,103, 98, 44, 32,105,110,114,103, 98, 46, 97, 41, 59, 10,125, - 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, 32, -115,116,101,110, 99,105,108, 44, 32,102,108,111, 97,116, 32,105,110,116,101,110,115,105,116,121, 44, 32,111,117,116, 32,102,108, -111, 97,116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105,110,116, -101,110,115,105,116,121, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,116, 32, 61, 32,105,110,116,101,110,115,105,116, -121, 59, 10, 9,111,117,116,105,110,116,101,110,115,105,116,121, 32, 61, 32,105,110,116,101,110,115,105,116,121, 42,115,116,101, -110, 99,105,108, 59, 10, 9,111,117,116,115,116,101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, - 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, - 32,115,116,101,110, 99,105,108, 44, 32,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117, -116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,102,108, -111, 97,116, 32,102, 97, 99,116, 32, 61, 32,114,103, 98, 46, 97, 59, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, - 40,114,103, 98, 46,114,103, 98, 44, 32,114,103, 98, 46, 97, 42,115,116,101,110, 99,105,108, 41, 59, 10, 9,111,117,116,115,116, -101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95,109, 97,112,112,105,110,103, 95,111,102,115, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32, -111,102,115, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101, -120, 99,111, 32, 61, 32,116,101,120, 99,111, 32, 43, 32,111,102,115, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, -109, 97,112,112,105,110,103, 95,115,105,122,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32,115,105, -122,101, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101,120, - 99,111, 32, 61, 32,115,105,122,101, 42,116,101,120, 99,111, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 50,100, - 95,109, 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118, -101, 99, 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40,118,101, 99, 46,120,121, 42, 48, 46, 53, 32, - 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, 44, 32,118,101, 99, 46,122, 41, 59, 10,125, 10, 10,118,111,105, -100, 32,109,116,101,120, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, - 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, - 52, 32, 99,111,108,111,114, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, - 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118, -111,105,100, 32,109,116,101,120, 95,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112, -108,101,114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, - 47, 32, 84,104,101, 32,105,110,118,101,114,116, 32,111,102, 32,116,104,101, 32,114,101,100, 32, 99,104, 97,110,110,101,108, 32, -105,115, 32,116,111, 32,109, 97,107,101, 10, 9, 47, 47, 32,116,104,101, 32,110,111,114,109, 97,108, 32,109, 97,112, 32, 99,111, -109,112,108,105, 97,110,116, 32,119,105,116,104, 32,116,104,101, 32,111,117,116,115,105,100,101, 32,119,111,114,108,100, 46, 10, - 9, 47, 47, 32, 73,116, 32,110,101,101,100,115, 32,116,111, 32, 98,101, 32,100,111,110,101, 32, 98,101, 99, 97,117,115,101, 32, -105,110, 32, 66,108,101,110,100,101,114, 10, 9, 47, 47, 32,116,104,101, 32,110,111,114,109, 97,108, 32,117,115,101,100, 32,112, -111,105,110,116,115, 32,105,110,119, 97,114,100, 46, 10, 9, 47, 47, 32, 83,104,111,117,108,100, 32,116,104,105,115, 32,101,118, -101,114, 32, 99,104, 97,110,103,101, 32,116,104,105,115, 32,110,101,103, 97,116,101, 32,109,117,115,116, 32, 98,101, 32,114,101, -109,111,118,101,100, 46, 10, 32, 32, 32, 32,118,101, 99, 52, 32, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, - 68, 40,105,109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32, 50, 46, 48, 42, - 40,118,101, 99, 51, 40, 45, 99,111,108,111,114, 46,114, 44, 32, 99,111,108,111,114, 46,103, 44, 32, 99,111,108,111,114, 46, 98, - 41, 32, 45, 32,118,101, 99, 51, 40, 45, 48, 46, 53, 44, 32, 48, 46, 53, 44, 32, 48, 46, 53, 41, 41, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,110,111,114,109, 97,108,115, 95,105,110,105,116, 40, 32,118,101, 99, 51, 32, -118, 78, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78,111,114,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, - 99, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 32, 41, 10,123, - 10, 9,118, 78,111,114,103, 32, 61, 32,118, 78, 59, 10, 9,118, 78, 97, 99, 99, 32, 61, 32,118, 78, 59, 10, 9,102, 80,114,101, -118, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10, 47, 42, 42, 32,104,101,108,112,101,114, 32, -109,101,116,104,111,100, 32,116,111, 32,101,120,116,114, 97, 99,116, 32,116,104,101, 32,117,112,112,101,114, 32,108,101,102,116, - 32, 51,120, 51, 32,109, 97,116,114,105,120, 32,102,114,111,109, 32, 97, 32, 52,120, 52, 32,109, 97,116,114,105,120, 32, 42, 47, - 10,109, 97,116, 51, 32,116,111, 95,109, 97,116, 51, 40,109, 97,116, 52, 32,109, 52, 41, 10,123, 10, 9,109, 97,116, 51, 32,109, - 51, 59, 10, 9,109, 51, 91, 48, 93, 32, 61, 32,109, 52, 91, 48, 93, 46,120,121,122, 59, 10, 9,109, 51, 91, 49, 93, 32, 61, 32, -109, 52, 91, 49, 93, 46,120,121,122, 59, 10, 9,109, 51, 91, 50, 93, 32, 61, 32,109, 52, 91, 50, 93, 46,120,121,122, 59, 10, 9, -114,101,116,117,114,110, 32,109, 51, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,105,110,105, -116, 95,111, 98,106,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32,115,117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32, -115,117,114,102, 95,110,111,114,109, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,109, 97,116, 52, 32,109, 86,105,101,119, 44, 32, -109, 97,116, 52, 32,109, 86,105,101,119, 73,110,118, 44, 32,109, 97,116, 52, 32,109, 79, 98,106, 44, 32,109, 97,116, 52, 32,109, - 79, 98,106, 73,110,118, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103, -110,105,116,117,100,101, 95,105,110, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, - 9, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 44, - 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,111, -117,116, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102, -108,111, 97,116, 32,102, 68,101,116, 32, 41, 32, 10,123, 10, 9,109, 97,116, 51, 32,111, 98,106, 50,118,105,101,119, 32, 61, 32, -116,111, 95,109, 97,116, 51, 40,103,108, 95, 77,111,100,101,108, 86,105,101,119, 77, 97,116,114,105,120, 41, 59, 10, 9,109, 97, -116, 51, 32,118,105,101,119, 50,111, 98,106, 32, 61, 32,116,111, 95,109, 97,116, 51, 40,103,108, 95, 77,111,100,101,108, 86,105, -101,119, 77, 97,116,114,105,120, 73,110,118,101,114,115,101, 41, 59, 10, 9, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, - 83, 32, 61, 32,118,105,101,119, 50,111, 98,106, 32, 42, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, - 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,118,105,101,119, 50,111, 98,106, 32, 42, 32,100, 70,100,121, - 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,110,111,114,109, 97,108,105, -122,101, 40, 32,115,117,114,102, 95,110,111,114,109, 32, 42, 32,111, 98,106, 50,118,105,101,119, 32, 41, 59, 10, 10, 9,118, 82, - 49, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103,109, 97, 84, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, - 32, 99,114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105,103,109, 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32, -100,111,116, 32, 40, 32,118, 83,105,103,109, 97, 83, 44, 32,118, 82, 49, 32, 41, 59, 10, 9, 10, 9, 47, 42, 32,112,114,101,116, -114, 97,110,115,102,111,114,109, 32,118, 78, 97, 99, 99, 32, 40,105,110, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112, -108,121, 41, 32,117,115,105,110,103, 32,116,104,101, 32,105,110,118,101,114,115,101, 32,116,114, 97,110,115,112,111,115,101,100, - 32, 42, 47, 10, 9,118, 82, 49, 32, 61, 32,118, 82, 49, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 82, 50, 32, - 61, 32,118, 82, 50, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 78, 32, 61, 32,118, 78, 32, 42, 32,118,105,101, -119, 50,111, 98,106, 59, 10, 9, 10, 9,102,108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, - 40,102, 68,101,116, 41, 32, 42, 32,108,101,110,103,116,104, 40,118, 78, 41, 59, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, - 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, 40,102, 77, 97,103,110,105,116,117,100,101, 32, 47, 32,102, 80,114,101,118, - 77, 97,103,110,105,116,117,100,101, 95,105,110, 41, 59, 10, 9,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111, -117,116, 32, 61, 32,102, 77, 97,103,110,105,116,117,100,101, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117, -109,112, 95,105,110,105,116, 95,116,101,120,116,117,114,101,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32,115,117,114,102, 95, -112,111,115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114,109, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, -102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 44, 32,118,101, 99, 51, 32,118, 78, - 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101, -118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111, -117,116, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,111,117,116, - 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, 32, 41, 32, 10,123, 10, 9, -118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, - 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,100, 70,100,121, 40, 32,115,117,114,102, 95,112,111,115, 32, - 41, 59, 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,115,117,114,102, 95,110,111,114,109, 59, 32, 47, 42, 32,110,111,114,109, - 97,108,105,122,101,100, 32,105,110,116,101,114,112,111,108, 97,116,101,100, 32,118,101,114,116,101,120, 32,110,111,114,109, 97, -108, 32, 42, 47, 10, 9, 10, 9,118, 82, 49, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32, 99,114,111,115,115, 40, 32, -118, 83,105,103,109, 97, 84, 44, 32,118, 78, 32, 41, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32,110,111,114,109, 97,108,105,122, -101, 40, 32, 99,114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105,103,109, 97, 83, 32, 41, 32, 41, 59, 10, 9,102, 68,101,116, - 32, 61, 32,115,105,103,110, 40, 32,100,111,116, 40,118, 83,105,103,109, 97, 83, 44, 32,118, 82, 49, 41, 32, 41, 59, 10, 9, 10, - 9,102,108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, 40,102, 68,101,116, 41, 59, 10, 9, -118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, 40,102, 77, 97,103,110,105,116,117, -100,101, 32, 47, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 41, 59, 10, 9,102, 80,114,101,118, 77, - 97,103,110,105,116,117,100,101, 95,111,117,116, 32, 61, 32,102, 77, 97,103,110,105,116,117,100,101, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,105,110,105,116, 95,118,105,101,119,115,112, 97, 99,101, 40, 32,118,101, 99, - 51, 32,115,117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114,109, 44, 32, 10, 9, 9, 9, - 9, 9, 9, 9, 32, 32, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 44, 32, -118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,111,117,116, 32,102,108,111, - 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32, -118, 78, 97, 99, 99, 95,111,117,116, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, - 82, 49, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, - 32, 41, 32, 10,123, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,100, 70,100,120, 40, 32,115,117,114,102, - 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,100, 70,100,121, 40, 32,115,117, -114,102, 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,115,117,114,102, 95,110,111,114,109, 59, 32, - 47, 42, 32,110,111,114,109, 97,108,105,122,101,100, 32,105,110,116,101,114,112,111,108, 97,116,101,100, 32,118,101,114,116,101, -120, 32,110,111,114,109, 97,108, 32, 42, 47, 10, 9, 10, 9,118, 82, 49, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103, -109, 97, 84, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105, -103,109, 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32,100,111,116, 32, 40, 32,118, 83,105,103,109, 97, 83, 44, 32, -118, 82, 49, 32, 41, 59, 10, 9, 10, 9,102,108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, - 40,102, 68,101,116, 41, 59, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, - 40,102, 77, 97,103,110,105,116,117,100,101, 32, 47, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 41, - 59, 10, 9,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 32, 61, 32,102, 77, 97,103,110,105,116,117, -100,101, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,116, 97,112, 51, 40, 32,118,101, 99, 51, - 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,104, 83, 99, - 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,102, -108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,118,101, - 99, 50, 32, 83, 84,108,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, 83, 84,108,114, 32, 61, - 32,116,101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120,121, 41, 32, 59, 10, 9,118,101, - 99, 50, 32, 83, 84,117,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,121, 40,116,101,120, 99,111, 46, -120,121, 41, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72,108,108, 44, 72,108,114, 44, 72,117,108, 59, 10, 9,114,103, 98, -116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108,108, 41, 44, 32, 72,108,108, 32, - 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108,114, - 41, 44, 32, 72,108,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, - 97, 44, 32, 83, 84,117,108, 41, 44, 32, 72,117,108, 32, 41, 59, 10, 9, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, - 32, 42, 32, 40, 72,108,114, 32, 45, 32, 72,108,108, 41, 59, 10, 9,100, 66,116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, - 40, 72,117,108, 32, 45, 32, 72,108,108, 41, 59, 10,125, 10, 10, 35,105,102,100,101,102, 32, 66, 85, 77, 80, 95, 66, 73, 67, 85, - 66, 73, 67, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95, 98,105, 99,117, 98,105, 99, 40, 32,118,101, 99, - 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,104, 83, - 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32, -102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,102, -108,111, 97,116, 32, 72,108, 59, 10, 9,102,108,111, 97,116, 32, 72,114, 59, 10, 9,102,108,111, 97,116, 32, 72,100, 59, 10, 9, -102,108,111, 97,116, 32, 72,117, 59, 10, 9, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116, -101,120, 99,111, 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, - 99,111, 46,120,121, 41, 59, 10, 32, 10, 9,118,101, 99, 50, 32, 83, 84,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, - 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,114, 32, 61, 32,116,101,120, 99,111, - 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,100, 32, 61, 32, -116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9,118,101, 99, 50, 32, 83, - 84,117, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9, 10, - 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108, 41, 44, 32, 72,108, - 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,114, 41, 44, - 32, 72,114, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84, -100, 41, 44, 32, 72,100, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, - 32, 83, 84,117, 41, 44, 32, 72,117, 41, 59, 10, 9, 10, 9,118,101, 99, 50, 32,100, 72,100,120,121, 32, 61, 32,118,101, 99, 50, - 40, 72,114, 32, 45, 32, 72,108, 44, 32, 72,117, 32, 45, 32, 72,100, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 66,108,101,110, -100, 32, 61, 32, 99,108, 97,109,112, 40, 49, 46, 48, 45,116,101,120,116,117,114,101, 81,117,101,114,121, 76, 79, 68, 40,105,109, - 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 46,120, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,105,102, 40,102, - 66,108,101,110,100, 33, 61, 48, 46, 48, 41, 10, 9,123, 10, 9, 9, 47, 47, 32,116,104,101, 32,100,101,114,105,118, 97,116,105, -118,101, 32,111,102, 32,116,104,101, 32, 98,105, 99,117, 98,105, 99, 32,115, 97,109,112,108,105,110,103, 32,111,102, 32,108,101, -118,101,108, 32, 48, 10, 9, 9,105,118,101, 99, 50, 32,118, 68,105,109, 59, 10, 9, 9,118, 68,105,109, 32, 61, 32,116,101,120, -116,117,114,101, 83,105,122,101, 40,105,109, 97, 44, 32, 48, 41, 59, 10, 10, 9, 9, 47, 47, 32,116, 97,107,105,110,103, 32,116, -104,101, 32,102,114, 97, 99,116, 32,112, 97,114,116, 32,111,102, 32,116,104,101, 32,116,101,120,116,117,114,101, 32, 99,111,111, -114,100,105,110, 97,116,101, 32,105,115, 32, 97, 32,104, 97,114,100, 99,111,100,101,100, 32,119,114, 97,112, 32,109,111,100,101, - 46, 10, 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32, 97, 99, 99,101,112,116, 97, 98,108,101, 32, 97,115, 32,116,101,120, -116,117,114,101,115, 32,117,115,101, 32,119,114, 97,112, 32,109,111,100,101, 32,101,120, 99,108,117,115,105,118,101,108,121, 32, -105,110, 32, 51, 68, 32,118,105,101,119, 32,101,108,115,101,119,104,101,114,101, 32,105,110, 32, 98,108,101,110,100,101,114, 46, - 32, 10, 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32,100,111,110,101, 32,115,111, 32,116,104, 97,116, 32,119,101, 32, 99, - 97,110, 32,115,116,105,108,108, 32,103,101,116, 32, 97, 32,118, 97,108,105,100, 32,116,101,120,101,108, 32,119,105,116,104, 32, -117,118,115, 32,111,117,116,115,105,100,101, 32,116,104,101, 32, 48, 44, 49, 32,114, 97,110,103,101, 10, 9, 9, 47, 47, 32, 98, -121, 32,116,101,120,101,108, 70,101,116, 99,104, 32, 98,101,108,111,119, 44, 32, 97,115, 32, 99,111,111,114,100,105,110, 97,116, -101,115, 32, 97,114,101, 32, 99,108, 97,109,112,101,100, 32,119,104,101,110, 32,117,115,105,110,103, 32,116,104,105,115, 32,102, -117,110, 99,116,105,111,110, 46, 10, 9, 9,118,101, 99, 50, 32,102, 84,101,120, 76,111, 99, 32, 61, 32,118, 68,105,109, 42,102, -114, 97, 99,116, 40,116,101,120, 99,111, 46,120,121, 41, 32, 45, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, 59, - 10, 9, 9,105,118,101, 99, 50, 32,105, 84,101,120, 76,111, 99, 32, 61, 32,105,118,101, 99, 50, 40,102,108,111,111,114, 40,102, - 84,101,120, 76,111, 99, 41, 41, 59, 10, 9, 9,118,101, 99, 50, 32,116, 32, 61, 32, 99,108, 97,109,112, 40,102, 84,101,120, 76, -111, 99, 32, 45, 32,105, 84,101,120, 76,111, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 9, 9, 47, 47, 32,115, 97,116, - 32,106,117,115,116, 32,116,111, 32, 98,101, 32,112,101,100, 97,110,116,105, 99, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, +116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,109, 32, 61, 32, 49, 46, 48, 32, 45, 32,102, + 97, 99,103, 59, 10, 9,105,110, 99,111,108, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40,102, 97, 99,109, 32, 43, 32,102, 97, 99,116, + 42, 40, 49, 46, 48, 32, 45, 32,116,101,120, 99,111,108, 41, 41, 42, 40, 49, 46, 48, 32, 45, 32,111,117,116, 99,111,108, 41, 59, + 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,117, 98, 40,102,108,111, 97,116, 32,111,117, +116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32, +102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9, +102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99, +116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32, 45,102, 97, 99,116, 59, 10, + 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, + 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 97,100,100, 40,102,108,111, 97,116, 32,111,117,116, 99, +111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108, +111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108, +111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, + 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102, 97, 99,116, 32, 61, 32,102, 97, 99,116, 59, 10, 9,105,110, + 99,111,108, 32, 61, 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 32, 43, 32,111,117,116, 99,111,108, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,118, 40,102,108,111, 97,116, 32,111,117,116, 99,111,108, 44, + 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32,102,108,111, 97,116, + 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, + 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99,116, 44, 32,102, 97, + 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,102, 40,116,101,120, 99,111,108, 32, 33, 61, 32, 48, 46, 48, 41, 10, 9, + 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111,117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42,111,117,116, 99, +111,108, 47,116,101,120, 99,111,108, 59, 10, 9,101,108,115,101, 10, 9, 9,105,110, 99,111,108, 32, 61, 32, 48, 46, 48, 59, 10, +125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100,105,102,102, 40,102,108,111, 97,116, 32,111,117, +116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99,116, 44, 32, +102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10,123, 10, 9, +102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40,102, 97, 99, +116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,105,110, 99,111,108, 32, 61, 32,102, 97, 99,109, 42,111, +117,116, 99,111,108, 32, 43, 32,102, 97, 99,116, 42, 97, 98,115, 40,116,101,120, 99,111,108, 32, 45, 32,111,117,116, 99,111,108, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,100, 97,114,107, 40,102,108,111, 97,116, + 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99, +116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10, +123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40, +102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, 32, 61, + 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 60, 32,111,117,116, 99,111,108, 41, 32, +105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99,111,108, + 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,108,105,103,104,116, 40,102,108,111, 97,116, + 32,111,117,116, 99,111,108, 44, 32,102,108,111, 97,116, 32,116,101,120, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 97, 99, +116, 44, 32,102,108,111, 97,116, 32,102, 97, 99,103, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110, 99,111,108, 41, 10, +123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,109, 59, 10, 9,109,116,101,120, 95,118, 97,108,117,101, 95,118, 97,114,115, 40, +102, 97, 99,116, 44, 32,102, 97, 99,103, 44, 32,102, 97, 99,109, 41, 59, 10, 10, 9,102,108,111, 97,116, 32, 99,111,108, 32, 61, + 32,102, 97, 99,116, 42,116,101,120, 99,111,108, 59, 10, 9,105,102, 40, 99,111,108, 32, 62, 32,111,117,116, 99,111,108, 41, 32, +105,110, 99,111,108, 32, 61, 32, 99,111,108, 59, 32,101,108,115,101, 32,105,110, 99,111,108, 32, 61, 32,111,117,116, 99,111,108, + 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 95,112,111,115,105,116, +105,118,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, + 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32,109, 97,120, 40,102, 97, 99, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32, +111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,111,117,116,102, 97, 99, 32, 61, 32, 99,108, + 97,109,112, 40,102, 97, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,104, 97,114, 95,100,105,118,105,100,101, 40,102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, 97,116, + 32,111,117,116,104, 97,114, 41, 10,123, 10, 9,111,117,116,104, 97,114, 32, 61, 32,104, 97,114, 47, 49, 50, 56, 46, 48, 59, 10, +125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,104, 97,114, 95,109,117,108,116,105,112,108,121, 95, 99,108, 97,109,112, 40, +102,108,111, 97,116, 32,104, 97,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,104, 97,114, 41, 10,123, 10, 9, +104, 97,114, 32, 42, 61, 32, 49, 50, 56, 46, 48, 59, 10, 10, 9,105,102, 40,104, 97,114, 32, 60, 32, 49, 46, 48, 41, 32,111,117, +116,104, 97,114, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40,104, 97,114, 32, 62, 32, 53, 49, 49, 46, 48, + 41, 32,111,117,116,104, 97,114, 32, 61, 32, 53, 49, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,111,117,116,104, 97,114, 32, 61, + 32,104, 97,114, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108,112,104, 97, 95,102,114,111,109, 95, 99,111, +108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 41, 10,123, 10, 9, + 97,108,112,104, 97, 32, 61, 32, 99,111,108, 46, 97, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 97,108,112,104, + 97, 95,116,111, 95, 99,111,108, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32, 97,108,112,104, 97, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, + 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 97,108,112,104, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, +114,103, 98,116,111,105,110,116, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,116, +101,110,115,105,116,121, 41, 10,123, 10, 9,105,110,116,101,110,115,105,116,121, 32, 61, 32,100,111,116, 40,118,101, 99, 51, 40, + 48, 46, 51, 53, 44, 32, 48, 46, 52, 53, 44, 32, 48, 46, 50, 41, 44, 32,114,103, 98, 46,114,103, 98, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,105,110,118,101,114,116, 40,102,108,111, 97,116, 32,105,110,118, 97, +108,117,101, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118, 97,108,117,101, 41, 10,123, 10, 9,111,117,116,118, + 97,108,117,101, 32, 61, 32, 49, 46, 48, 32, 45, 32,105,110,118, 97,108,117,101, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, +101,120, 95,114,103, 98, 95,105,110,118,101,114,116, 40,118,101, 99, 52, 32,105,110,114,103, 98, 44, 32,111,117,116, 32,118,101, + 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,118,101, 99, 51, + 40, 49, 46, 48, 41, 32, 45, 32,105,110,114,103, 98, 46,114,103, 98, 44, 32,105,110,114,103, 98, 46, 97, 41, 59, 10,125, 10, 10, +118,111,105,100, 32,109,116,101,120, 95,118, 97,108,117,101, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, 32,115,116, +101,110, 99,105,108, 44, 32,102,108,111, 97,116, 32,105,110,116,101,110,115,105,116,121, 44, 32,111,117,116, 32,102,108,111, 97, +116, 32,111,117,116,115,116,101,110, 99,105,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105,110,116,101,110, +115,105,116,121, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99,116, 32, 61, 32,105,110,116,101,110,115,105,116,121, 59, + 10, 9,111,117,116,105,110,116,101,110,115,105,116,121, 32, 61, 32,105,110,116,101,110,115,105,116,121, 42,115,116,101,110, 99, +105,108, 59, 10, 9,111,117,116,115,116,101,110, 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, 59, 10, +125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,114,103, 98, 95,115,116,101,110, 99,105,108, 40,102,108,111, 97,116, 32,115, +116,101,110, 99,105,108, 44, 32,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115, +116,101,110, 99,105,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,114,103, 98, 41, 10,123, 10, 9,102,108,111, 97, +116, 32,102, 97, 99,116, 32, 61, 32,114,103, 98, 46, 97, 59, 10, 9,111,117,116,114,103, 98, 32, 61, 32,118,101, 99, 52, 40,114, +103, 98, 46,114,103, 98, 44, 32,114,103, 98, 46, 97, 42,115,116,101,110, 99,105,108, 41, 59, 10, 9,111,117,116,115,116,101,110, + 99,105,108, 32, 61, 32,115,116,101,110, 99,105,108, 42,102, 97, 99,116, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95,109, 97,112,112,105,110,103, 95,111,102,115, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32,111,102, +115, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101,120, 99, +111, 32, 61, 32,116,101,120, 99,111, 32, 43, 32,111,102,115, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,109, 97, +112,112,105,110,103, 95,115,105,122,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,118,101, 99, 51, 32,115,105,122,101, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,116,101,120, 99,111, 41, 10,123, 10, 9,111,117,116,116,101,120, 99,111, + 32, 61, 32,115,105,122,101, 42,116,101,120, 99,111, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 50,100, 95,109, + 97,112,112,105,110,103, 40,118,101, 99, 51, 32,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,118,101, 99, + 41, 10,123, 10, 9,111,117,116,118,101, 99, 32, 61, 32,118,101, 99, 51, 40,118,101, 99, 46,120,121, 42, 48, 46, 53, 32, 43, 32, +118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, 44, 32,118,101, 99, 46,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +109,116,101,120, 95,105,109, 97,103,101, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, + 32,105,109, 97, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, 97,108,117,101, 44, 32,111,117,116, 32,118,101, 99, 52, 32, + 99,111,108,111,114, 41, 10,123, 10, 9, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, + 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,118, 97,108,117,101, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105, +100, 32,109,116,101,120, 95,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101, +114, 50, 68, 32,105,109, 97, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 41, 10,123, 10, 9, 47, 47, 32, + 84,104,101, 32,105,110,118,101,114,116, 32,111,102, 32,116,104,101, 32,114,101,100, 32, 99,104, 97,110,110,101,108, 32,105,115, + 32,116,111, 32,109, 97,107,101, 10, 9, 47, 47, 32,116,104,101, 32,110,111,114,109, 97,108, 32,109, 97,112, 32, 99,111,109,112, +108,105, 97,110,116, 32,119,105,116,104, 32,116,104,101, 32,111,117,116,115,105,100,101, 32,119,111,114,108,100, 46, 10, 9, 47, + 47, 32, 73,116, 32,110,101,101,100,115, 32,116,111, 32, 98,101, 32,100,111,110,101, 32, 98,101, 99, 97,117,115,101, 32,105,110, + 32, 66,108,101,110,100,101,114, 10, 9, 47, 47, 32,116,104,101, 32,110,111,114,109, 97,108, 32,117,115,101,100, 32,112,111,105, +110,116,115, 32,105,110,119, 97,114,100, 46, 10, 9, 47, 47, 32, 83,104,111,117,108,100, 32,116,104,105,115, 32,101,118,101,114, + 32, 99,104, 97,110,103,101, 32,116,104,105,115, 32,110,101,103, 97,116,101, 32,109,117,115,116, 32, 98,101, 32,114,101,109,111, +118,101,100, 46, 10, 32, 32, 32, 32,118,101, 99, 52, 32, 99,111,108,111,114, 32, 61, 32,116,101,120,116,117,114,101, 50, 68, 40, +105,109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32, 50, 46, 48, 42, 40,118, +101, 99, 51, 40, 45, 99,111,108,111,114, 46,114, 44, 32, 99,111,108,111,114, 46,103, 44, 32, 99,111,108,111,114, 46, 98, 41, 32, + 45, 32,118,101, 99, 51, 40, 45, 48, 46, 53, 44, 32, 48, 46, 53, 44, 32, 48, 46, 53, 41, 41, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95, 98,117,109,112, 95,110,111,114,109, 97,108,115, 95,105,110,105,116, 40, 32,118,101, 99, 51, 32,118, 78, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78,111,114,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 32, 41, 10,123, 10, 9, +118, 78,111,114,103, 32, 61, 32,118, 78, 59, 10, 9,118, 78, 97, 99, 99, 32, 61, 32,118, 78, 59, 10, 9,102, 80,114,101,118, 77, + 97,103,110,105,116,117,100,101, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10, 47, 42, 42, 32,104,101,108,112,101,114, 32,109,101, +116,104,111,100, 32,116,111, 32,101,120,116,114, 97, 99,116, 32,116,104,101, 32,117,112,112,101,114, 32,108,101,102,116, 32, 51, +120, 51, 32,109, 97,116,114,105,120, 32,102,114,111,109, 32, 97, 32, 52,120, 52, 32,109, 97,116,114,105,120, 32, 42, 47, 10,109, + 97,116, 51, 32,116,111, 95,109, 97,116, 51, 40,109, 97,116, 52, 32,109, 52, 41, 10,123, 10, 9,109, 97,116, 51, 32,109, 51, 59, + 10, 9,109, 51, 91, 48, 93, 32, 61, 32,109, 52, 91, 48, 93, 46,120,121,122, 59, 10, 9,109, 51, 91, 49, 93, 32, 61, 32,109, 52, + 91, 49, 93, 46,120,121,122, 59, 10, 9,109, 51, 91, 50, 93, 32, 61, 32,109, 52, 91, 50, 93, 46,120,121,122, 59, 10, 9,114,101, +116,117,114,110, 32,109, 51, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,105,110,105,116, 95, +111, 98,106,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32,115,117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32,115,117, +114,102, 95,110,111,114,109, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,109, 97,116, 52, 32,109, 86,105,101,119, 44, 32,109, 97, +116, 52, 32,109, 86,105,101,119, 73,110,118, 44, 32,109, 97,116, 52, 32,109, 79, 98,106, 44, 32,109, 97,116, 52, 32,109, 79, 98, +106, 73,110,118, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105, +116,117,100,101, 95,105,110, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, + 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 44, 32,111, +117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32,111,117,116, + 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, + 97,116, 32,102, 68,101,116, 32, 41, 32, 10,123, 10, 9,109, 97,116, 51, 32,111, 98,106, 50,118,105,101,119, 32, 61, 32,116,111, + 95,109, 97,116, 51, 40,103,108, 95, 77,111,100,101,108, 86,105,101,119, 77, 97,116,114,105,120, 41, 59, 10, 9,109, 97,116, 51, + 32,118,105,101,119, 50,111, 98,106, 32, 61, 32,116,111, 95,109, 97,116, 51, 40,103,108, 95, 77,111,100,101,108, 86,105,101,119, + 77, 97,116,114,105,120, 73,110,118,101,114,115,101, 41, 59, 10, 9, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, + 61, 32,118,105,101,119, 50,111, 98,106, 32, 42, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9, +118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,118,105,101,119, 50,111, 98,106, 32, 42, 32,100, 70,100,121, 40, 32, +115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,110,111,114,109, 97,108,105,122,101, + 40, 32,115,117,114,102, 95,110,111,114,109, 32, 42, 32,111, 98,106, 50,118,105,101,119, 32, 41, 59, 10, 10, 9,118, 82, 49, 32, + 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103,109, 97, 84, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32, 99, +114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105,103,109, 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32,100,111, +116, 32, 40, 32,118, 83,105,103,109, 97, 83, 44, 32,118, 82, 49, 32, 41, 59, 10, 9, 10, 9, 47, 42, 32,112,114,101,116,114, 97, +110,115,102,111,114,109, 32,118, 78, 97, 99, 99, 32, 40,105,110, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, + 41, 32,117,115,105,110,103, 32,116,104,101, 32,105,110,118,101,114,115,101, 32,116,114, 97,110,115,112,111,115,101,100, 32, 42, + 47, 10, 9,118, 82, 49, 32, 61, 32,118, 82, 49, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 82, 50, 32, 61, 32, +118, 82, 50, 32, 42, 32,118,105,101,119, 50,111, 98,106, 59, 10, 9,118, 78, 32, 61, 32,118, 78, 32, 42, 32,118,105,101,119, 50, +111, 98,106, 59, 10, 9, 10, 9,102,108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, 40,102, + 68,101,116, 41, 32, 42, 32,108,101,110,103,116,104, 40,118, 78, 41, 59, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32, +118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, 40,102, 77, 97,103,110,105,116,117,100,101, 32, 47, 32,102, 80,114,101,118, 77, 97, +103,110,105,116,117,100,101, 95,105,110, 41, 59, 10, 9,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, + 32, 61, 32,102, 77, 97,103,110,105,116,117,100,101, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, + 95,105,110,105,116, 95,116,101,120,116,117,114,101,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32,115,117,114,102, 95,112,111, +115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114,109, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32,102,108, +111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, + 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, + 97,103,110,105,116,117,100,101, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, + 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,111,117,116, 32,118, +101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, 32, 41, 32, 10,123, 10, 9,118,101, + 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, 10, 9, +118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,100, 70,100,121, 40, 32,115,117,114,102, 95,112,111,115, 32, 41, 59, + 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,115,117,114,102, 95,110,111,114,109, 59, 32, 47, 42, 32,110,111,114,109, 97,108, +105,122,101,100, 32,105,110,116,101,114,112,111,108, 97,116,101,100, 32,118,101,114,116,101,120, 32,110,111,114,109, 97,108, 32, + 42, 47, 10, 9, 10, 9,118, 82, 49, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32, 99,114,111,115,115, 40, 32,118, 83, +105,103,109, 97, 84, 44, 32,118, 78, 32, 41, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, + 32, 99,114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105,103,109, 97, 83, 32, 41, 32, 41, 59, 10, 9,102, 68,101,116, 32, 61, + 32,115,105,103,110, 40, 32,100,111,116, 40,118, 83,105,103,109, 97, 83, 44, 32,118, 82, 49, 41, 32, 41, 59, 10, 9, 10, 9,102, +108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, 40,102, 68,101,116, 41, 59, 10, 9,118, 78, + 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, 40,102, 77, 97,103,110,105,116,117,100,101, + 32, 47, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 41, 59, 10, 9,102, 80,114,101,118, 77, 97,103, +110,105,116,117,100,101, 95,111,117,116, 32, 61, 32,102, 77, 97,103,110,105,116,117,100,101, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95, 98,117,109,112, 95,105,110,105,116, 95,118,105,101,119,115,112, 97, 99,101, 40, 32,118,101, 99, 51, 32, +115,117,114,102, 95,112,111,115, 44, 32,118,101, 99, 51, 32,115,117,114,102, 95,110,111,114,109, 44, 32, 10, 9, 9, 9, 9, 9, + 9, 9, 32, 32, 32,102,108,111, 97,116, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 44, 32,118,101, + 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,111,117,116, 32,102,108,111, 97,116, + 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, + 97, 99, 99, 95,111,117,116, 44, 32, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 49, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,102, 68,101,116, 32, 41, + 32, 10,123, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 83, 32, 61, 32,100, 70,100,120, 40, 32,115,117,114,102, 95,112, +111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 83,105,103,109, 97, 84, 32, 61, 32,100, 70,100,121, 40, 32,115,117,114,102, + 95,112,111,115, 32, 41, 59, 10, 9,118,101, 99, 51, 32,118, 78, 32, 61, 32,115,117,114,102, 95,110,111,114,109, 59, 32, 47, 42, + 32,110,111,114,109, 97,108,105,122,101,100, 32,105,110,116,101,114,112,111,108, 97,116,101,100, 32,118,101,114,116,101,120, 32, +110,111,114,109, 97,108, 32, 42, 47, 10, 9, 10, 9,118, 82, 49, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 83,105,103,109, 97, + 84, 44, 32,118, 78, 32, 41, 59, 10, 9,118, 82, 50, 32, 61, 32, 99,114,111,115,115, 40, 32,118, 78, 44, 32,118, 83,105,103,109, + 97, 83, 32, 41, 32, 59, 10, 9,102, 68,101,116, 32, 61, 32,100,111,116, 32, 40, 32,118, 83,105,103,109, 97, 83, 44, 32,118, 82, + 49, 32, 41, 59, 10, 9, 10, 9,102,108,111, 97,116, 32,102, 77, 97,103,110,105,116,117,100,101, 32, 61, 32, 97, 98,115, 40,102, + 68,101,116, 41, 59, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 42, 32, 40,102, + 77, 97,103,110,105,116,117,100,101, 32, 47, 32,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,105,110, 41, 59, 10, + 9,102, 80,114,101,118, 77, 97,103,110,105,116,117,100,101, 95,111,117,116, 32, 61, 32,102, 77, 97,103,110,105,116,117,100,101, + 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,116, 97,112, 51, 40, 32,118,101, 99, 51, 32,116, +101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,104, 83, 99, 97,108, +101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,102,108,111, + 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,118,101, 99, 50, + 32, 83, 84,108,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, 83, 84,108,114, 32, 61, 32,116, +101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120,121, 41, 32, 59, 10, 9,118,101, 99, 50, + 32, 83, 84,117,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120,121, + 41, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72,108,108, 44, 72,108,114, 44, 72,117,108, 59, 10, 9,114,103, 98,116,111, + 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108,108, 41, 44, 32, 72,108,108, 32, 41, 59, + 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108,114, 41, 44, + 32, 72,108,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, + 32, 83, 84,117,108, 41, 44, 32, 72,117,108, 32, 41, 59, 10, 9, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, + 32, 40, 72,108,114, 32, 45, 32, 72,108,108, 41, 59, 10, 9,100, 66,116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72, +117,108, 32, 45, 32, 72,108,108, 41, 59, 10,125, 10, 10, 35,105,102,100,101,102, 32, 66, 85, 77, 80, 95, 66, 73, 67, 85, 66, 73, + 67, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95, 98,105, 99,117, 98,105, 99, 40, 32,118,101, 99, 51, 32, +116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,104, 83, 99, 97, +108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,102,108, +111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,102,108,111, + 97,116, 32, 72,108, 59, 10, 9,102,108,111, 97,116, 32, 72,114, 59, 10, 9,102,108,111, 97,116, 32, 72,100, 59, 10, 9,102,108, +111, 97,116, 32, 72,117, 59, 10, 9, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, + 99,111, 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, + 46,120,121, 41, 59, 10, 32, 10, 9,118,101, 99, 50, 32, 83, 84,108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, + 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,114, 32, 61, 32,116,101,120, 99,111, 46,120, +121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,100, 32, 61, 32,116,101, +120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,117, + 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9, 10, 9,114, +103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,108, 41, 44, 32, 72,108, 41, 59, + 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,114, 41, 44, 32, 72, +114, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,100, 41, + 44, 32, 72,100, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, + 84,117, 41, 44, 32, 72,117, 41, 59, 10, 9, 10, 9,118,101, 99, 50, 32,100, 72,100,120,121, 32, 61, 32,118,101, 99, 50, 40, 72, +114, 32, 45, 32, 72,108, 44, 32, 72,117, 32, 45, 32, 72,100, 41, 59, 10, 9,102,108,111, 97,116, 32,102, 66,108,101,110,100, 32, + 61, 32, 99,108, 97,109,112, 40, 49, 46, 48, 45,116,101,120,116,117,114,101, 81,117,101,114,121, 76, 79, 68, 40,105,109, 97, 44, + 32,116,101,120, 99,111, 46,120,121, 41, 46,120, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,105,102, 40,102, 66,108, +101,110,100, 33, 61, 48, 46, 48, 41, 10, 9,123, 10, 9, 9, 47, 47, 32,116,104,101, 32,100,101,114,105,118, 97,116,105,118,101, + 32,111,102, 32,116,104,101, 32, 98,105, 99,117, 98,105, 99, 32,115, 97,109,112,108,105,110,103, 32,111,102, 32,108,101,118,101, +108, 32, 48, 10, 9, 9,105,118,101, 99, 50, 32,118, 68,105,109, 59, 10, 9, 9,118, 68,105,109, 32, 61, 32,116,101,120,116,117, +114,101, 83,105,122,101, 40,105,109, 97, 44, 32, 48, 41, 59, 10, 10, 9, 9, 47, 47, 32,116, 97,107,105,110,103, 32,116,104,101, + 32,102,114, 97, 99,116, 32,112, 97,114,116, 32,111,102, 32,116,104,101, 32,116,101,120,116,117,114,101, 32, 99,111,111,114,100, +105,110, 97,116,101, 32,105,115, 32, 97, 32,104, 97,114,100, 99,111,100,101,100, 32,119,114, 97,112, 32,109,111,100,101, 46, 10, + 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32, 97, 99, 99,101,112,116, 97, 98,108,101, 32, 97,115, 32,116,101,120,116,117, +114,101,115, 32,117,115,101, 32,119,114, 97,112, 32,109,111,100,101, 32,101,120, 99,108,117,115,105,118,101,108,121, 32,105,110, + 32, 51, 68, 32,118,105,101,119, 32,101,108,115,101,119,104,101,114,101, 32,105,110, 32, 98,108,101,110,100,101,114, 46, 32, 10, + 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32,100,111,110,101, 32,115,111, 32,116,104, 97,116, 32,119,101, 32, 99, 97,110, + 32,115,116,105,108,108, 32,103,101,116, 32, 97, 32,118, 97,108,105,100, 32,116,101,120,101,108, 32,119,105,116,104, 32,117,118, +115, 32,111,117,116,115,105,100,101, 32,116,104,101, 32, 48, 44, 49, 32,114, 97,110,103,101, 10, 9, 9, 47, 47, 32, 98,121, 32, +116,101,120,101,108, 70,101,116, 99,104, 32, 98,101,108,111,119, 44, 32, 97,115, 32, 99,111,111,114,100,105,110, 97,116,101,115, + 32, 97,114,101, 32, 99,108, 97,109,112,101,100, 32,119,104,101,110, 32,117,115,105,110,103, 32,116,104,105,115, 32,102,117,110, + 99,116,105,111,110, 46, 10, 9, 9,118,101, 99, 50, 32,102, 84,101,120, 76,111, 99, 32, 61, 32,118, 68,105,109, 42,102,114, 97, + 99,116, 40,116,101,120, 99,111, 46,120,121, 41, 32, 45, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 32, 48, 46, 53, 41, 59, 10, 9, + 9,105,118,101, 99, 50, 32,105, 84,101,120, 76,111, 99, 32, 61, 32,105,118,101, 99, 50, 40,102,108,111,111,114, 40,102, 84,101, +120, 76,111, 99, 41, 41, 59, 10, 9, 9,118,101, 99, 50, 32,116, 32, 61, 32, 99,108, 97,109,112, 40,102, 84,101,120, 76,111, 99, + 32, 45, 32,105, 84,101,120, 76,111, 99, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 9, 9, 47, 47, 32,115, 97,116, 32,106, +117,115,116, 32,116,111, 32, 98,101, 32,112,101,100, 97,110,116,105, 99, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 10, 32, 42, 32, 84,104,105,115, 32, 98,108,111, 99,107, - 32,119,105,108,108, 32,114,101,112,108, 97, 99,101, 32,116,104,101, 32,111,110,101, 32, 98,101,108,111,119, 32,119,104,101,110, - 32,111,110,101, 32, 99,104, 97,110,110,101,108, 32,116,101,120,116,117,114,101,115, 32, 97,114,101, 32,112,114,111,112,101,114, -108,121, 32,115,117,112,112,111,114,116,101,100, 46, 32, 42, 10, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 10, 32, 42, 32, 84,104,105,115, 32, 98,108,111, 99,107, 32,119, +105,108,108, 32,114,101,112,108, 97, 99,101, 32,116,104,101, 32,111,110,101, 32, 98,101,108,111,119, 32,119,104,101,110, 32,111, +110,101, 32, 99,104, 97,110,110,101,108, 32,116,101,120,116,117,114,101,115, 32, 97,114,101, 32,112,114,111,112,101,114,108,121, + 32,115,117,112,112,111,114,116,101,100, 46, 32, 42, 10, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 85, 76, 32, 61, - 32,116,101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, - 99, 50, 40, 45, 49, 44, 45, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, - 41, 59, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 85, 82, 32, 61, 32,116,101,120,116,117,114,101, 71, 97, -116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, 99, 50, 40, 49, 44, 45, 49, 41, 32, 43, - 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, 10, 9, 9,118,101, 99, 52, 32,118, - 83, 97,109,112,108,101,115, 76, 76, 32, 61, 32,116,101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40, -105, 84,101,120, 76,111, 99, 43,105,118,101, 99, 50, 40, 45, 49, 44, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, - 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 76, 82, 32, 61, - 32,116,101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, - 99, 50, 40, 49, 44, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, - 10, 10, 9, 9,109, 97,116, 52, 32, 72, 32, 61, 32,109, 97,116, 52, 40,118, 83, 97,109,112,108,101,115, 85, 76, 46,119, 44, 32, -118, 83, 97,109,112,108,101,115, 85, 76, 46,120, 44, 32,118, 83, 97,109,112,108,101,115, 76, 76, 46,119, 44, 32,118, 83, 97,109, -112,108,101,115, 76, 76, 46,120, 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 76, 46,122, 44, 32,118, 83, 97, -109,112,108,101,115, 85, 76, 46,121, 44, 32,118, 83, 97,109,112,108,101,115, 76, 76, 46,122, 44, 32,118, 83, 97,109,112,108,101, -115, 76, 76, 46,121, 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 82, 46,119, 44, 32,118, 83, 97,109,112,108, -101,115, 85, 82, 46,120, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,119, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, - 46,120, 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 82, 46,122, 44, 32,118, 83, 97,109,112,108,101,115, 85, - 82, 46,121, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,122, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,121, 41, - 59, 10, 42, 47, 9, 10, 9, 9,105,118,101, 99, 50, 32,105, 84,101,120, 76,111, 99, 77,111,100, 32, 61, 32,105, 84,101,120, 76, -111, 99, 32, 43, 32,105,118,101, 99, 50, 40, 45, 49, 44, 32, 45, 49, 41, 59, 10, 10, 9, 9,109, 97,116, 52, 32, 72, 59, 10, 9, - 9, 10, 9, 9,102,111,114, 40,105,110,116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 52, 59, 32,105, 43, 43, 41,123, 10, - 9, 9, 9,102,111,114, 40,105,110,116, 32,106, 32, 61, 32, 48, 59, 32,106, 32, 60, 32, 52, 59, 32,106, 43, 43, 41,123, 10, 9, - 9, 9, 9,105,118,101, 99, 50, 32,105, 84,101,120, 84,109,112, 32, 61, 32,105, 84,101,120, 76,111, 99, 77,111,100, 32, 43, 32, -105,118,101, 99, 50, 40,105, 44,106, 41, 59, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 47, 47, 32,119,114, 97,112, 32,116,101,120, -116,117,114,101, 32, 99,111,111,114,100,105,110, 97,116,101,115, 32,109, 97,110,117, 97,108,108,121, 32,102,111,114, 32,116,101, -120,101,108, 70,101,116, 99,104, 32,116,111, 32,119,111,114,107, 32,111,110, 32,117,118,115, 32,111,105,116,115,105,100,101, 32, -116,104,101, 32, 48, 44, 49, 32,114, 97,110,103,101, 46, 10, 9, 9, 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32,103,117, - 97,114, 97,110,116,101,101,100, 32,116,111, 32,119,111,114,107, 32,115,105,110, 99,101, 32,119,101, 32,116, 97,107,101, 32,116, -104,101, 32,102,114, 97, 99,116,105,111,110, 97,108, 32,112, 97,114,116, 32,111,102, 32,116,104,101, 32,117,118, 32, 97, 98,111, -118,101, 46, 10, 9, 9, 9, 9,105, 84,101,120, 84,109,112, 46,120, 32, 61, 32, 40,105, 84,101,120, 84,109,112, 46,120, 32, 60, - 32, 48, 41, 63, 32,105, 84,101,120, 84,109,112, 46,120, 32, 43, 32,118, 68,105,109, 46,120, 32, 58, 32, 40, 40,105, 84,101,120, - 84,109,112, 46,120, 32, 62, 61, 32,118, 68,105,109, 46,120, 41, 63, 32,105, 84,101,120, 84,109,112, 46,120, 32, 45, 32,118, 68, -105,109, 46,120, 32, 58, 32,105, 84,101,120, 84,109,112, 46,120, 41, 59, 10, 9, 9, 9, 9,105, 84,101,120, 84,109,112, 46,121, - 32, 61, 32, 40,105, 84,101,120, 84,109,112, 46,121, 32, 60, 32, 48, 41, 63, 32,105, 84,101,120, 84,109,112, 46,121, 32, 43, 32, -118, 68,105,109, 46,121, 32, 58, 32, 40, 40,105, 84,101,120, 84,109,112, 46,121, 32, 62, 61, 32,118, 68,105,109, 46,121, 41, 63, - 32,105, 84,101,120, 84,109,112, 46,121, 32, 45, 32,118, 68,105,109, 46,121, 32, 58, 32,105, 84,101,120, 84,109,112, 46,121, 41, - 59, 10, 10, 9, 9, 9, 9,114,103, 98,116,111, 98,119, 40,116,101,120,101,108, 70,101,116, 99,104, 40,105,109, 97, 44, 32,105, - 84,101,120, 84,109,112, 44, 32, 48, 41, 44, 32, 72, 91,105, 93, 91,106, 93, 41, 59, 10, 9, 9, 9,125, 10, 9, 9,125, 10, 9, - 9, 10, 9, 9,102,108,111, 97,116, 32,120, 32, 61, 32,116, 46,120, 44, 32,121, 32, 61, 32,116, 46,121, 59, 10, 9, 9,102,108, -111, 97,116, 32,120, 50, 32, 61, 32,120, 32, 42, 32,120, 44, 32,120, 51, 32, 61, 32,120, 50, 32, 42, 32,120, 44, 32,121, 50, 32, - 61, 32,121, 32, 42, 32,121, 44, 32,121, 51, 32, 61, 32,121, 50, 32, 42, 32,121, 59, 10, 10, 9, 9,118,101, 99, 52, 32, 88, 32, - 61, 32,118,101, 99, 52, 40, 45, 48, 46, 53, 42, 40,120, 51, 43,120, 41, 43,120, 50, 44, 9, 9, 49, 46, 53, 42,120, 51, 45, 50, - 46, 53, 42,120, 50, 43, 49, 44, 9, 45, 49, 46, 53, 42,120, 51, 43, 50, 42,120, 50, 43, 48, 46, 53, 42,120, 44, 9, 9, 48, 46, - 53, 42, 40,120, 51, 45,120, 50, 41, 41, 59, 10, 9, 9,118,101, 99, 52, 32, 89, 32, 61, 32,118,101, 99, 52, 40, 45, 48, 46, 53, - 42, 40,121, 51, 43,121, 41, 43,121, 50, 44, 9, 9, 49, 46, 53, 42,121, 51, 45, 50, 46, 53, 42,121, 50, 43, 49, 44, 9, 45, 49, - 46, 53, 42,121, 51, 43, 50, 42,121, 50, 43, 48, 46, 53, 42,121, 44, 9, 9, 48, 46, 53, 42, 40,121, 51, 45,121, 50, 41, 41, 59, - 10, 9, 9,118,101, 99, 52, 32,100, 88, 32, 61, 32,118,101, 99, 52, 40, 45, 49, 46, 53, 42,120, 50, 43, 50, 42,120, 45, 48, 46, - 53, 44, 9, 9, 52, 46, 53, 42,120, 50, 45, 53, 42,120, 44, 9, 9, 9, 45, 52, 46, 53, 42,120, 50, 43, 52, 42,120, 43, 48, 46, - 53, 44, 9, 9, 49, 46, 53, 42,120, 50, 45,120, 41, 59, 10, 9, 9,118,101, 99, 52, 32,100, 89, 32, 61, 32,118,101, 99, 52, 40, - 45, 49, 46, 53, 42,121, 50, 43, 50, 42,121, 45, 48, 46, 53, 44, 9, 9, 52, 46, 53, 42,121, 50, 45, 53, 42,121, 44, 9, 9, 9, - 45, 52, 46, 53, 42,121, 50, 43, 52, 42,121, 43, 48, 46, 53, 44, 9, 9, 49, 46, 53, 42,121, 50, 45,121, 41, 59, 10, 9, 10, 9, - 9, 47, 47, 32, 99,111,109,112,108,101,116,101, 32,100,101,114,105,118, 97,116,105,118,101, 32,105,110, 32,110,111,114,109, 97, -108,105,122,101,100, 32, 99,111,111,114,100,105,110, 97,116,101,115, 32, 40,109,117,108, 32, 98,121, 32,118, 68,105,109, 41, 10, - 9, 9,118,101, 99, 50, 32,100, 72,100, 83, 84, 32, 61, 32,118, 68,105,109, 32, 42, 32,118,101, 99, 50, 40,100,111,116, 40, 89, - 44, 32, 72, 32, 42, 32,100, 88, 41, 44, 32,100,111,116, 40,100, 89, 44, 32, 72, 32, 42, 32, 88, 41, 41, 59, 10, 10, 9, 9, 47, - 47, 32,116,114, 97,110,115,102,111,114,109, 32,100,101,114,105,118, 97,116,105,118,101, 32,116,111, 32,115, 99,114,101,101,110, - 45,115,112, 97, 99,101, 10, 9, 9,118,101, 99, 50, 32,100, 72,100,120,121, 95, 98,105, 99,117, 98,105, 99, 32, 61, 32,118,101, - 99, 50, 40, 32,100, 72,100, 83, 84, 46,120, 32, 42, 32, 84,101,120, 68,120, 46,120, 32, 43, 32,100, 72,100, 83, 84, 46,121, 32, - 42, 32, 84,101,120, 68,120, 46,121, 44, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,100, 72,100, 83, 84, 46,120, 32, 42, 32, - 84,101,120, 68,121, 46,120, 32, 43, 32,100, 72,100, 83, 84, 46,121, 32, 42, 32, 84,101,120, 68,121, 46,121, 32, 41, 59, 10, 10, - 9, 9, 47, 47, 32, 98,108,101,110,100, 32, 98,101,116,119,101,101,110, 32,116,104,101, 32,116,119,111, 10, 9, 9,100, 72,100, -120,121, 32, 61, 32,100, 72,100,120,121, 42, 40, 49, 45,102, 66,108,101,110,100, 41, 32, 43, 32,100, 72,100,120,121, 95, 98,105, - 99,117, 98,105, 99, 42,102, 66,108,101,110,100, 59, 10, 9,125, 10, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, - 42, 32,100, 72,100,120,121, 46,120, 59, 10, 9,100, 66,116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32,100, 72,100,120,121, - 46,121, 59, 10,125, 10, 10, 35,101,110,100,105,102, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,116, 97, -112, 53, 40, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102, -108,111, 97,116, 32,104, 83, 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, - 41, 32, 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120,121, - 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120,121, 41, 59, - 10, 10, 9,118,101, 99, 50, 32, 83, 84, 99, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, 83, 84, -108, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, - 99, 50, 32, 83, 84,114, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, - 59, 10, 9,118,101, 99, 50, 32, 83, 84,100, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84, -101,120, 68,121, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,117, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, - 53, 32, 42, 32, 84,101,120, 68,121, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72, 99, 44, 72,108, 44, 72,114, 44, 72,100, - 44, 72,117, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84, - 99, 41, 44, 32, 72, 99, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, - 97, 44, 32, 83, 84,108, 41, 44, 32, 72,108, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, - 50, 68, 40,105,109, 97, 44, 32, 83, 84,114, 41, 44, 32, 72,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101, -120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,100, 41, 44, 32, 72,100, 32, 41, 59, 10, 9,114,103, 98,116,111, 98, -119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,117, 41, 44, 32, 72,117, 32, 41, 59, 10, 9, 10, - 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,114, 32, 45, 32, 72,108, 41, 59, 10, 9,100, 66,116, 32, - 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,117, 32, 45, 32, 72,100, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116, -101,120, 95, 98,117,109,112, 95,100,101,114,105,118, 40, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108, -101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,120, 44, 32,102,108,111, 97,116, 32,105,109, 97, - 95,121, 44, 32,102,108,111, 97,116, 32,104, 83, 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,100, 66,116, 32, 41, 32, 10,123, 10, 9,102,108,111, 97,116, 32,115, 32, 61, 32, 49, 46, 48, 59, 9, 9, 47, 47, 32,110,101, -103, 97,116,101, 32,116,104,105,115, 32,105,102, 32,102,108,105,112,112,101,100, 32,116,101,120,116,117,114,101, 32, 99,111,111, -114,100,105,110, 97,116,101, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, 99,111, - 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120, -121, 41, 59, 10, 9, 10, 9, 47, 47, 32,116,104,105,115, 32,118, 97,114,105, 97,110,116, 32,117,115,105,110,103, 32, 97, 32,100, -101,114,105,118, 97,116,105,118,101, 32,109, 97,112, 32,105,115, 32,100,101,115, 99,114,105, 98,101,100, 32,104,101,114,101, 10, - 9, 47, 47, 32,104,116,116,112, 58, 47, 47,109,109,105,107,107,101,108,115,101,110, 51,100, 46, 98,108,111,103,115,112,111,116, - 46, 99,111,109, 47, 50, 48, 49, 49, 47, 48, 55, 47,100,101,114,105,118, 97,116,105,118,101, 45,109, 97,112,115, 46,104,116,109, -108, 10, 9,118,101, 99, 50, 32,100,105,109, 32, 61, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 44, 32,105,109, 97, 95,121, 41, - 59, 10, 9,118,101, 99, 50, 32,100, 66,100,117,118, 32, 61, 32,104, 83, 99, 97,108,101, 42,100,105,109, 42, 40, 50, 46, 48, 42, -116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 46,120,121, 45, 49, 46, 48, 41, - 59, 10, 9, 10, 9,100, 66,115, 32, 61, 32,100, 66,100,117,118, 46,120, 42, 84,101,120, 68,120, 46,120, 32, 43, 32,115, 42,100, - 66,100,117,118, 46,121, 42, 84,101,120, 68,120, 46,121, 59, 10, 9,100, 66,116, 32, 61, 32,100, 66,100,117,118, 46,120, 42, 84, -101,120, 68,121, 46,120, 32, 43, 32,115, 42,100, 66,100,117,118, 46,121, 42, 84,101,120, 68,121, 46,121, 59, 10,125, 10, 10,118, -111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 40, 32,102,108,111, 97,116, 32,102, 68,101,116, 44, - 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118,101, 99, 51, 32,118, 82, 49, 44, - 32,118,101, 99, 51, 32,118, 82, 50, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 32, - 32,111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112,101, -114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 41, 32, 10,123, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97, -100, 32, 61, 32,115,105,103,110, 40,102, 68,101,116, 41, 32, 42, 32, 40, 32,100, 66,115, 32, 42, 32,118, 82, 49, 32, 43, 32,100, - 66,116, 32, 42, 32,118, 82, 50, 32, 41, 59, 10, 9, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, - 95,105,110, 32, 45, 32,118, 83,117,114,102, 71,114, 97,100, 59, 10, 9,112,101,114,116,117,114, 98,101,100, 95,110,111,114,109, - 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 32,118, 78, 97, 99, 99, 95,111,117,116, 32, 41, 59, 10,125, 10, 10,118,111, -105,100, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 95,116,101,120,115,112, 97, 99,101, 40, 32,102,108,111, - 97,116, 32,102, 68,101,116, 44, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118, -101, 99, 51, 32,118, 82, 49, 44, 32,118,101, 99, 51, 32,118, 82, 50, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, - 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,120, 44, 32,102,108,111, 97,116, 32, -105,109, 97, 95,121, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, -111,117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112,101,114, -116,117,114, 98,101,100, 95,110,111,114,109, 32, 41, 32, 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, - 70,100,120, 40,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100, -121, 40,116,101,120, 99,111, 46,120,121, 41, 59, 10, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97,100, 32, 61, 32, -115,105,103,110, 40,102, 68,101,116, 41, 32, 42, 32, 40, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100, 66,115, - 32, 47, 32,108,101,110,103,116,104, 40, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 42, 84,101,120, 68,120, 46,120, 44, 32,105, -109, 97, 95,121, 42, 84,101,120, 68,120, 46,121, 41, 32, 41, 32, 42, 32,118, 82, 49, 32, 43, 32, 10, 9, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,100, 66,116, 32, 47, 32,108,101,110,103,116,104, 40, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 42, 84, -101,120, 68,121, 46,120, 44, 32,105,109, 97, 95,121, 42, 84,101,120, 68,121, 46,121, 41, 32, 41, 32, 42, 32,118, 82, 50, 32, 41, - 59, 10, 9, 9, 9, 9, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 45, 32,118, - 83,117,114,102, 71,114, 97,100, 59, 10, 9,112,101,114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 61, 32,110,111,114,109, - 97,108,105,122,101, 40, 32,118, 78, 97, 99, 99, 95,111,117,116, 32, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, - 95,110,101,103, 97,116,101, 95,116,101,120,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111, -117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9,111,117,116,110,111,114,109, 97,108, 32, - 61, 32,118,101, 99, 51, 40, 45,110,111,114,109, 97,108, 46,120, 44, 32, 45,110,111,114,109, 97,108, 46,121, 44, 32,110,111,114, -109, 97,108, 46,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110,115,112, 97, 99,101, 95,116, 97,110,103, -101,110,116, 40,118,101, 99, 52, 32,116, 97,110,103,101,110,116, 44, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,118, -101, 99, 51, 32,116,101,120,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97, -108, 41, 10,123, 10, 9,118,101, 99, 51, 32, 66, 32, 61, 32,116, 97,110,103,101,110,116, 46,119, 32, 42, 32, 99,114,111,115,115, - 40,110,111,114,109, 97,108, 44, 32,116, 97,110,103,101,110,116, 46,120,121,122, 41, 59, 10, 10, 9,111,117,116,110,111,114,109, - 97,108, 32, 61, 32,116,101,120,110,111,114,109, 97,108, 46,120, 42,116, 97,110,103,101,110,116, 46,120,121,122, 32, 43, 32,116, -101,120,110,111,114,109, 97,108, 46,121, 42, 66, 32, 43, 32,116,101,120,110,111,114,109, 97,108, 46,122, 42,110,111,114,109, 97, -108, 59, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,110,111,114, -109, 97,108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,108,101,110,100, 95,110,111,114,109, 97,108, 40, -102,108,111, 97,116, 32,110,111,114,102, 97, 99, 44, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,118,101, 99, 51, 32, -110,101,119,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, - 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32,110,111,114,102, 97, 99, 41, 42,110,111,114, -109, 97,108, 32, 43, 32,110,111,114,102, 97, 99, 42,110,101,119,110,111,114,109, 97,108, 59, 10, 9,111,117,116,110,111,114,109, - 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10, 47, 42, - 42, 42, 42, 42, 42, 42, 32, 77, 65, 84, 69, 82, 73, 65, 76, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, - 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,117,110, 95,104,101,109,105, 40,118,101, 99, 51, 32,108, - 97,109,112,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, -105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,108,118, 32, 61, 32, -108, 97,109,112,118,101, 99, 59, 10, 9,100,105,115,116, 32, 61, 32, 49, 46, 48, 59, 10, 9,118,105,115,105,102, 97, 99, 32, 61, - 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,111,116, -104,101,114, 40,118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111, 44, 32,111,117,116, 32,118,101, - 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, - 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,108,118, 32, 61, 32, 99,111, 32, 45, 32,108, 97,109,112, 99,111, 59, 10, 9, -100,105,115,116, 32, 61, 32,108,101,110,103,116,104, 40,108,118, 41, 59, 10, 9,108,118, 32, 61, 32,110,111,114,109, 97,108,105, -122,101, 40,108,118, 41, 59, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32, -108, 97,109,112, 95,102, 97,108,108,111,102,102, 95,105,110,118,108,105,110,101, 97,114, 40,102,108,111, 97,116, 32,108, 97,109, -112,100,105,115,116, 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115, -105,102, 97, 99, 41, 10,123, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32,108, 97,109,112,100,105,115,116, 47, 40,108, 97,109, -112,100,105,115,116, 32, 43, 32,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,102, 97,108,108, -111,102,102, 95,105,110,118,115,113,117, 97,114,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32,102,108, -111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9, -118,105,115,105,102, 97, 99, 32, 61, 32,108, 97,109,112,100,105,115,116, 47, 40,108, 97,109,112,100,105,115,116, 32, 43, 32,100, -105,115,116, 42,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,102, 97,108,108,111,102,102, 95, -115,108,105,100,101,114,115, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32,102,108,111, 97,116, 32,108,100, - 49, 44, 32,102,108,111, 97,116, 32,108,100, 50, 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108, -111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116,107,119, - 32, 61, 32,108, 97,109,112,100,105,115,116, 42,108, 97,109,112,100,105,115,116, 59, 10, 10, 9,118,105,115,105,102, 97, 99, 32, - 61, 32,108, 97,109,112,100,105,115,116, 47, 40,108, 97,109,112,100,105,115,116, 32, 43, 32,108,100, 49, 42,100,105,115,116, 41, - 59, 10, 9,118,105,115,105,102, 97, 99, 32, 42, 61, 32,108, 97,109,112,100,105,115,116,107,119, 47, 40,108, 97,109,112,100,105, -115,116,107,119, 32, 43, 32,108,100, 50, 42,100,105,115,116, 42,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, - 97,109,112, 95,102, 97,108,108,111,102,102, 95, 99,117,114,118,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, - 44, 32,115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,102,108,111, 97,116, 32,100,105,115,116, - 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,118,105,115,105,102, 97, 99, 32, - 61, 32,116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,100,105,115,116, 47, -108, 97,109,112,100,105,115,116, 44, 32, 48, 46, 48, 41, 41, 46,120, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95, -118,105,115,105, 98,105,108,105,116,121, 95,115,112,104,101,114,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, - 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,116, 61, 32,108, - 97,109,112,100,105,115,116, 32, 45, 32,100,105,115,116, 59, 10, 10, 9,111,117,116,118,105,115,105,102, 97, 99, 61, 32,118,105, -115,105,102, 97, 99, 42,109, 97,120, 40,116, 44, 32, 48, 46, 48, 41, 47,108, 97,109,112,100,105,115,116, 59, 10,125, 10, 10,118, -111,105,100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 95,115,113,117, 97,114,101, 40, -118,101, 99, 51, 32,108, 97,109,112,118,101, 99, 44, 32,109, 97,116, 52, 32,108, 97,109,112,105,109, 97,116, 44, 32,118,101, 99, - 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112,114, 41, 10,123, 10, 9,105,102, 40,100,111,116, 40, -108,118, 44, 32,108, 97,109,112,118,101, 99, 41, 32, 62, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,118,101, 99, 51, 32,108,118,114, -111,116, 32, 61, 32, 40,108, 97,109,112,105,109, 97,116, 42,118,101, 99, 52, 40,108,118, 44, 32, 48, 46, 48, 41, 41, 46,120,121, -122, 59, 10, 9, 9,102,108,111, 97,116, 32,120, 32, 61, 32,109, 97,120, 40, 97, 98,115, 40,108,118,114,111,116, 46,120, 47,108, -118,114,111,116, 46,122, 41, 44, 32, 97, 98,115, 40,108,118,114,111,116, 46,121, 47,108,118,114,111,116, 46,122, 41, 41, 59, 10, - 10, 9, 9,105,110,112,114, 32, 61, 32, 49, 46, 48, 47,115,113,114,116, 40, 49, 46, 48, 32, 43, 32,120, 42,120, 41, 59, 10, 9, -125, 10, 9,101,108,115,101, 10, 9, 9,105,110,112,114, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97, -109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 95, 99,105,114, 99,108,101, 40,118,101, 99, 51, 32,108, - 97,109,112,118,101, 99, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112,114, 41, - 10,123, 10, 9,105,110,112,114, 32, 61, 32,100,111,116, 40,108,118, 44, 32,108, 97,109,112,118,101, 99, 41, 59, 10,125, 10, 10, -118,111,105,100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 40,102,108,111, 97,116, 32, -115,112,111,116,115,105, 44, 32,102,108,111, 97,116, 32,115,112,111,116, 98,108, 44, 32,102,108,111, 97,116, 32,105,110,112,114, - 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118,105, -115,105,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,116, 32, 61, 32,115,112,111,116,115,105, 59, 10, 10, 9,105,102, - 40,105,110,112,114, 32, 60, 61, 32,116, 41, 32,123, 10, 9, 9,111,117,116,118,105,115,105,102, 97, 99, 32, 61, 32, 48, 46, 48, - 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,116, 32, 61, 32,105,110,112,114, 32, 45, 32,116, 59, 10, 10, 9, 9, - 47, 42, 32,115,111,102,116, 32, 97,114,101, 97, 32, 42, 47, 10, 9, 9,105,102, 40,115,112,111,116, 98,108, 32, 33, 61, 32, 48, - 46, 48, 41, 10, 9, 9, 9,105,110,112,114, 32, 42, 61, 32,115,109,111,111,116,104,115,116,101,112, 40, 48, 46, 48, 44, 32, 49, - 46, 48, 44, 32,116, 47,115,112,111,116, 98,108, 41, 59, 10, 10, 9, 9,111,117,116,118,105,115,105,102, 97, 99, 32, 61, 32,118, -105,115,105,102, 97, 99, 42,105,110,112,114, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,118,105,115, -105, 98,105,108,105,116,121, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, - 32,102,108,111, 97,116, 32,111,117,116,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,111,117,116,118,105,115,105,102, 97, 99, - 32, 61, 32, 40,118,105,115,105,102, 97, 99, 32, 60, 32, 48, 46, 48, 48, 49, 41, 63, 32, 48, 46, 48, 58, 32,118,105,115,105,102, - 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,118,105,101,119, 40,118,101, 99, 51, 32, 99,111, 44, 32, -111,117,116, 32,118,101, 99, 51, 32,118,105,101,119, 41, 10,123, 10, 9, 47, 42, 32,104, 97,110,100,108,101, 32,112,101,114,115, -112,101, 99,116,105,118,101, 47,111,114,116,104,111,103,114, 97,112,104,105, 99, 32, 42, 47, 10, 9,118,105,101,119, 32, 61, 32, - 40,103,108, 95, 80,114,111,106,101, 99,116,105,111,110, 77, 97,116,114,105,120, 91, 51, 93, 91, 51, 93, 32, 61, 61, 32, 48, 46, - 48, 41, 63, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 58, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, - 44, 32, 45, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,116, 97,110,103,101,110,116, 95,118, - 40,118,101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,116, 97,110,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,110, - 41, 10,123, 10, 9,118,101, 99, 51, 32, 99, 32, 61, 32, 99,114,111,115,115, 40,108,118, 44, 32,116, 97,110,103, 41, 59, 10, 9, -118,101, 99, 51, 32,118,110,111,114, 32, 61, 32, 99,114,111,115,115, 40, 99, 44, 32,116, 97,110,103, 41, 59, 10, 10, 9,118,110, - 32, 61, 32, 45,110,111,114,109, 97,108,105,122,101, 40,118,110,111,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97, -100,101, 95,105,110,112, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, - 97,116, 32,105,110,112, 41, 10,123, 10, 9,105,110,112, 32, 61, 32,100,111,116, 40,118,110, 44, 32,108,118, 41, 59, 10,125, 10, - 10,118,111,105,100, 32,115,104, 97,100,101, 95,105,115, 95,110,111, 95,100,105,102,102,117,115,101, 40,111,117,116, 32,102,108, -111, 97,116, 32,105,115, 41, 10,123, 10, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97, -100,101, 95,105,115, 95,104,101,109,105, 40,102,108,111, 97,116, 32,105,110,112, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, -105,115, 41, 10,123, 10, 9,105,115, 32, 61, 32, 48, 46, 53, 42,105,110,112, 32, 43, 32, 48, 46, 53, 59, 10,125, 10, 10,102,108, -111, 97,116, 32, 97,114,101, 97, 95,108, 97,109,112, 95,101,110,101,114,103,121, 40,109, 97,116, 52, 32, 97,114,101, 97, 44, 32, -118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,118,110, 41, 10,123, 10, 9,118,101, 99, 51, 32,118,101, 99, 91, 52, 93, - 44, 32, 99, 91, 52, 93, 59, 10, 9,102,108,111, 97,116, 32,114, 97,100, 91, 52, 93, 44, 32,102, 97, 99, 59, 10, 9, 10, 9,118, -101, 99, 91, 48, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 32, 45, 32, 97,114,101, 97, 91, 48, 93, 46,120, -121,122, 41, 59, 10, 9,118,101, 99, 91, 49, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 32, 45, 32, 97,114, -101, 97, 91, 49, 93, 46,120,121,122, 41, 59, 10, 9,118,101, 99, 91, 50, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, - 99,111, 32, 45, 32, 97,114,101, 97, 91, 50, 93, 46,120,121,122, 41, 59, 10, 9,118,101, 99, 91, 51, 93, 32, 61, 32,110,111,114, -109, 97,108,105,122,101, 40, 99,111, 32, 45, 32, 97,114,101, 97, 91, 51, 93, 46,120,121,122, 41, 59, 10, 10, 9, 99, 91, 48, 93, - 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, 91, 48, 93, 44, 32,118,101, 99, 91, 49, - 93, 41, 41, 59, 10, 9, 99, 91, 49, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, - 91, 49, 93, 44, 32,118,101, 99, 91, 50, 93, 41, 41, 59, 10, 9, 99, 91, 50, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, - 40, 99,114,111,115,115, 40,118,101, 99, 91, 50, 93, 44, 32,118,101, 99, 91, 51, 93, 41, 41, 59, 10, 9, 99, 91, 51, 93, 32, 61, - 32,110,111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, 91, 51, 93, 44, 32,118,101, 99, 91, 48, 93, 41, - 41, 59, 10, 10, 9,114, 97,100, 91, 48, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, 40,118,101, 99, 91, 48, 93, 44, 32,118, -101, 99, 91, 49, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 49, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, 40,118,101, 99, 91, - 49, 93, 44, 32,118,101, 99, 91, 50, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 50, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, - 40,118,101, 99, 91, 50, 93, 44, 32,118,101, 99, 91, 51, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 51, 93, 32, 61, 32, 97, 99,111, -115, 40,100,111,116, 40,118,101, 99, 91, 51, 93, 44, 32,118,101, 99, 91, 48, 93, 41, 41, 59, 10, 10, 9,102, 97, 99, 61, 32, 32, -114, 97,100, 91, 48, 93, 42,100,111,116, 40,118,110, 44, 32, 99, 91, 48, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, - 91, 49, 93, 42,100,111,116, 40,118,110, 44, 32, 99, 91, 49, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, 91, 50, 93, - 42,100,111,116, 40,118,110, 44, 32, 99, 91, 50, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, 91, 51, 93, 42,100,111, -116, 40,118,110, 44, 32, 99, 91, 51, 93, 41, 59, 10, 10, 9,114,101,116,117,114,110, 32,109, 97,120, 40,102, 97, 99, 44, 32, 48, - 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,105,110,112, 95, 97,114,101, 97, 40,118,101, 99, 51, - 32,112,111,115,105,116,105,111,110, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111, 44, 32,118,101, 99, 51, 32,108, 97,109, -112,118,101, 99, 44, 32,118,101, 99, 51, 32,118,110, 44, 32,109, 97,116, 52, 32, 97,114,101, 97, 44, 32,102,108,111, 97,116, 32, - 97,114,101, 97,115,105,122,101, 44, 32,102,108,111, 97,116, 32,107, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112, - 41, 10,123, 10, 9,118,101, 99, 51, 32, 99,111, 32, 61, 32,112,111,115,105,116,105,111,110, 59, 10, 9,118,101, 99, 51, 32,118, -101, 99, 32, 61, 32, 99,111, 32, 45, 32,108, 97,109,112, 99,111, 59, 10, 10, 9,105,102, 40,100,111,116, 40,118,101, 99, 44, 32, -108, 97,109,112,118,101, 99, 41, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,110,112, 32, 61, 32, 48, 46, 48, 59, 10, 9, -125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,105,110,116,101,110,115, 32, 61, 32, 97,114,101, 97, 95, -108, 97,109,112, 95,101,110,101,114,103,121, 40, 97,114,101, 97, 44, 32, 99,111, 44, 32,118,110, 41, 59, 10, 10, 9, 9,105,110, -112, 32, 61, 32,112,111,119, 40,105,110,116,101,110,115, 42, 97,114,101, 97,115,105,122,101, 44, 32,107, 41, 59, 10, 9,125, 10, -125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,111,114,101,110, 95,110, 97,121,101,114, - 40,102,108,111, 97,116, 32,110,108, 44, 32,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32, -118, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,115, 41, 10,123, 10, - 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32,108, 41, 59, 10, 9,102,108,111, - 97,116, 32,110,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,104, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9,102,108, -111, 97,116, 32,110,118, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9,102, -108,111, 97,116, 32,114,101, 97,108,110,108, 32, 61, 32,100,111,116, 40,110, 44, 32,108, 41, 59, 10, 10, 9,105,102, 40,114,101, - 97,108,110,108, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108, -115,101, 32,105,102, 40,110,108, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, - 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,118,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,118, 44, - 32,104, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 76,105,116, 95, 65, 32, 61, 32, 97, 99,111,115, 40, -114,101, 97,108,110,108, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 86,105,101,119, 95, 65, 32, 61, 32, 97, 99,111,115, 40,110, -118, 41, 59, 10, 10, 9, 9,118,101, 99, 51, 32, 76,105,116, 95, 66, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, - 45, 32,114,101, 97,108,110,108, 42,110, 41, 59, 10, 9, 9,118,101, 99, 51, 32, 86,105,101,119, 95, 66, 32, 61, 32,110,111,114, -109, 97,108,105,122,101, 40,118, 32, 45, 32,110,118, 42,110, 41, 59, 10, 10, 9, 9,102,108,111, 97,116, 32,116, 32, 61, 32,109, - 97,120, 40,100,111,116, 40, 76,105,116, 95, 66, 44, 32, 86,105,101,119, 95, 66, 41, 44, 32, 48, 46, 48, 41, 59, 10, 10, 9, 9, -102,108,111, 97,116, 32, 97, 44, 32, 98, 59, 10, 10, 9, 9,105,102, 40, 76,105,116, 95, 65, 32, 62, 32, 86,105,101,119, 95, 65, - 41, 32,123, 10, 9, 9, 9, 97, 32, 61, 32, 76,105,116, 95, 65, 59, 10, 9, 9, 9, 98, 32, 61, 32, 86,105,101,119, 95, 65, 59, - 10, 9, 9,125, 10, 9, 9,101,108,115,101, 32,123, 10, 9, 9, 9, 97, 32, 61, 32, 86,105,101,119, 95, 65, 59, 10, 9, 9, 9, - 98, 32, 61, 32, 76,105,116, 95, 65, 59, 10, 9, 9,125, 10, 10, 9, 9,102,108,111, 97,116, 32, 65, 32, 61, 32, 49, 46, 48, 32, - 45, 32, 40, 48, 46, 53, 42, 40, 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 47, 40, 40,114,111,117,103,104, 42,114,111, -117,103,104, 41, 32, 43, 32, 48, 46, 51, 51, 41, 41, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 66, 32, 61, 32, 48, 46, 52, 53, - 42, 40, 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 47, 40, 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 32, 43, - 32, 48, 46, 48, 57, 41, 41, 59, 10, 10, 9, 9, 98, 32, 42, 61, 32, 48, 46, 57, 53, 59, 10, 9, 9,105,115, 32, 61, 32,110,108, - 42, 40, 65, 32, 43, 32, 40, 66, 32, 42, 32,116, 32, 42, 32,115,105,110, 40, 97, 41, 32, 42, 32,116, 97,110, 40, 98, 41, 41, 41, - 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,116,111,111,110, 40, -118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,115,105, -122,101, 44, 32,102,108,111, 97,116, 32,116,115,109,111,111,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,115, 41, - 10,123, 10, 9,102,108,111, 97,116, 32,114,115,108,116, 32, 61, 32,100,111,116, 40,110, 44, 32,108, 41, 59, 10, 9,102,108,111, - 97,116, 32, 97,110,103, 32, 61, 32, 97, 99,111,115, 40,114,115,108,116, 41, 59, 10, 10, 9,105,102, 40, 97,110,103, 32, 60, 32, -115,105,122,101, 41, 32,105,115, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 97,110,103, 32, 62, 32, 40, -115,105,122,101, 32, 43, 32,116,115,109,111,111,116,104, 41, 32,124,124, 32,116,115,109,111,111,116,104, 32, 61, 61, 32, 48, 46, - 48, 41, 32,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,115, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40, 40, - 97,110,103, 32, 45, 32,115,105,122,101, 41, 47,116,115,109,111,111,116,104, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, - 97,100,101, 95,100,105,102,102,117,115,101, 95,109,105,110,110, 97,101,114,116, 40,102,108,111, 97,116, 32,110,108, 44, 32,118, -101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,100, 97,114,107,110,101,115,115, 44, 32,111, -117,116, 32,102,108,111, 97,116, 32,105,115, 41, 10,123, 10, 9,105,102, 40,110,108, 32, 60, 61, 32, 48, 46, 48, 41, 32,123, 10, - 9, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,110, -118, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 10, 9, 9,105,102, 40,100, - 97,114,107,110,101,115,115, 32, 60, 61, 32, 49, 46, 48, 41, 10, 9, 9, 9,105,115, 32, 61, 32,110,108, 42,112,111,119, 40,109, - 97,120, 40,110,118, 42,110,108, 44, 32, 48, 46, 49, 41, 44, 32,100, 97,114,107,110,101,115,115, 32, 45, 32, 49, 46, 48, 41, 59, - 10, 9, 9,101,108,115,101, 10, 9, 9, 9,105,115, 32, 61, 32,110,108, 42,112,111,119, 40, 49, 46, 48, 48, 48, 49, 32, 45, 32, -110,118, 44, 32,100, 97,114,107,110,101,115,115, 32, 45, 32, 49, 46, 48, 41, 59, 10, 9,125, 10,125, 10, 10,102,108,111, 97,116, - 32,102,114,101,115,110,101,108, 95,102, 97, 99, 40,118,101, 99, 51, 32,118,105,101,119, 44, 32,118,101, 99, 51, 32,118,110, 44, - 32,102,108,111, 97,116, 32,103,114, 97,100, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, - 32,116, 49, 44, 32,116, 50, 59, 10, 9,102,108,111, 97,116, 32,102,102, 97, 99, 59, 10, 10, 9,105,102, 40,102, 97, 99, 61, 61, - 48, 46, 48, 41, 32,123, 10, 9, 9,102,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, - 9, 9,116, 49, 61, 32,100,111,116, 40,118,105,101,119, 44, 32,118,110, 41, 59, 10, 9, 9,105,102, 40,116, 49, 62, 48, 46, 48, - 41, 32, 32,116, 50, 61, 32, 49, 46, 48, 43,116, 49, 59, 10, 9, 9,101,108,115,101, 32,116, 50, 61, 32, 49, 46, 48, 45,116, 49, - 59, 10, 10, 9, 9,116, 50, 61, 32,103,114, 97,100, 32, 43, 32, 40, 49, 46, 48, 45,103,114, 97,100, 41, 42,112,111,119, 40,116, - 50, 44, 32,102, 97, 99, 41, 59, 10, 10, 9, 9,105,102, 40,116, 50, 60, 48, 46, 48, 41, 32,102,102, 97, 99, 32, 61, 32, 48, 46, - 48, 59, 10, 9, 9,101,108,115,101, 32,105,102, 40,116, 50, 62, 49, 46, 48, 41, 32,102,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, - 10, 9, 9,101,108,115,101, 32,102,102, 97, 99, 32, 61, 32,116, 50, 59, 10, 9,125, 10, 10, 9,114,101,116,117,114,110, 32,102, -102, 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,102,114,101,115,110, -101,108, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32, -102,108,111, 97,116, 32,102, 97, 99, 95,105, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97, -116, 32,105,115, 41, 10,123, 10, 9,105,115, 32, 61, 32,102,114,101,115,110,101,108, 95,102, 97, 99, 40,108,118, 44, 32,118,110, - 44, 32,102, 97, 99, 95,105, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 99,117, 98, -105, 99, 40,102,108,111, 97,116, 32,105,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105,115, 41, 10,123, 10, - 9,105,102, 40,105,115, 62, 48, 46, 48, 32, 38, 38, 32,105,115, 60, 49, 46, 48, 41, 10, 9, 9,111,117,116,105,115, 61, 32,115, -109,111,111,116,104,115,116,101,112, 40, 48, 46, 48, 44, 32, 49, 46, 48, 44, 32,105,115, 41, 59, 10, 9,101,108,115,101, 10, 9, - 9,111,117,116,105,115, 61, 32,105,115, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,118,105,115,105,102, 97, - 99, 40,102,108,111, 97,116, 32,105, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,102,108,111, 97,116, 32, -114,101,102,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105, 41, 10,123, 10, 9, 47, 42,105,102, 40,105, 32, - 62, 32, 48, 46, 48, 41, 42, 47, 10, 9, 9,111,117,116,105, 32, 61, 32,109, 97,120, 40,105, 42,118,105,115,105,102, 97, 99, 42, -114,101,102,108, 44, 32, 48, 46, 48, 41, 59, 10, 9, 47, 42,101,108,115,101, 10, 9, 9,111,117,116,105, 32, 61, 32,105, 59, 42, - 47, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,116, 97,110,103,101,110,116, 95,118, 95,115,112,101, 99, 40,118, -101, 99, 51, 32,116, 97,110,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,110, 41, 10,123, 10, 9,118,110, 32, 61, 32,116, - 97,110,103, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,100,100, 95,116,111, 95,100,105,102,102,117,115, -101, 40,102,108,111, 97,116, 32,105, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111,108, 44, 32,118,101, 99, 51, 32, 99,111, -108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,105,102, 40,105, 32, 62, 32, 48, 46, - 48, 41, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,105, 42,108, 97,109,112, 99,111,108, 42, 99,111,108, 59, 10, 9,101,108, -115,101, 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, - 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,104,101,109,105, 95,115,112,101, 99, 40,118,101, 99, 51, 32, -118,110, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,102,108,111, 97,116, 32,115,112, -101, 99, 44, 32,102,108,111, 97,116, 32,104, 97,114,100, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111, -117,116, 32,102,108,111, 97,116, 32,116, 41, 10,123, 10, 9,108,118, 32, 43, 61, 32,118,105,101,119, 59, 10, 9,108,118, 32, 61, - 32,110,111,114,109, 97,108,105,122,101, 40,108,118, 41, 59, 10, 10, 9,116, 32, 61, 32,100,111,116, 40,118,110, 44, 32,108,118, - 41, 59, 10, 9,116, 32, 61, 32, 48, 46, 53, 42,116, 32, 43, 32, 48, 46, 53, 59, 10, 10, 9,116, 32, 61, 32,118,105,115,105,102, - 97, 99, 42,115,112,101, 99, 42,112,111,119, 40,116, 44, 32,104, 97,114,100, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, - 97,100,101, 95,112,104,111,110,103, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118, -101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,104, 97,114,100, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, - 99,102, 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, 43, 32, -118, 41, 59, 10, 9,102,108,111, 97,116, 32,114,115,108,116, 32, 61, 32,109, 97,120, 40,100,111,116, 40,104, 44, 32,110, 41, 44, - 32, 48, 46, 48, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,112,111,119, 40,114,115,108,116, 44, 32,104, 97,114, -100, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 99,111,111,107,116,111,114,114, 95,115,112,101, 99, 40, -118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,104, 97, -114,100, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, - 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32,108, 41, 59, 10, 9,102,108,111, 97,116, 32,110,104, 32, 61, - 32,100,111,116, 40,110, 44, 32,104, 41, 59, 10, 10, 9,105,102, 40,110,104, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,115, -112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, - 32,110,118, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9,102,108,111, - 97,116, 32,105, 32, 61, 32,112,111,119, 40,110,104, 44, 32,104, 97,114,100, 41, 59, 10, 10, 9, 9,105, 32, 61, 32,105, 47, 40, - 48, 46, 49, 43,110,118, 41, 59, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,105, 59, 10, 9,125, 10,125, 10, 10,118,111, -105,100, 32,115,104, 97,100,101, 95, 98,108,105,110,110, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, - 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,114,101,102,114, 97, 99, 44, 32,102,108,111, 97,116, 32, -115,112,101, 99, 95,112,111,119,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, - 10, 9,105,102, 40,114,101,102,114, 97, 99, 32, 60, 32, 49, 46, 48, 41, 32,123, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, - 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,105,102, 40,115,112,101, 99, 95,112,111,119,101,114, 32, 61, 61, 32, - 48, 46, 48, 41, 32,123, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, - 32,123, 10, 9, 9,105,102, 40,115,112,101, 99, 95,112,111,119,101,114, 60, 49, 48, 48, 46, 48, 41, 10, 9, 9, 9,115,112,101, - 99, 95,112,111,119,101,114, 61, 32,115,113,114,116, 40, 49, 46, 48, 47,115,112,101, 99, 95,112,111,119,101,114, 41, 59, 10, 9, - 9,101,108,115,101, 10, 9, 9, 9,115,112,101, 99, 95,112,111,119,101,114, 61, 32, 49, 48, 46, 48, 47,115,112,101, 99, 95,112, -111,119,101,114, 59, 10, 10, 9, 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32, -108, 41, 59, 10, 9, 9,102,108,111, 97,116, 32,110,104, 32, 61, 32,100,111,116, 40,110, 44, 32,104, 41, 59, 10, 9, 9,105,102, - 40,110,104, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9, - 9,125, 10, 9, 9,101,108,115,101, 32,123, 10, 9, 9, 9,102,108,111, 97,116, 32,110,118, 32, 61, 32,109, 97,120, 40,100,111, -116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 49, 41, 59, 10, 9, 9, 9,102,108,111, 97,116, 32,110,108, 32, 61, 32,100,111, -116, 40,110, 44, 32,108, 41, 59, 10, 9, 9, 9,105,102, 40,110,108, 32, 60, 61, 32, 48, 46, 48, 49, 41, 32,123, 10, 9, 9, 9, - 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9, 9,125, 10, 9, 9, 9,101,108,115,101, 32,123, 10, 9, - 9, 9, 9,102,108,111, 97,116, 32,118,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,118, 44, 32,104, 41, 44, 32, 48, 46, 48, - 49, 41, 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, 97, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9, 9, 9,102,108,111, 97, -116, 32, 98, 32, 61, 32, 40, 50, 46, 48, 42,110,104, 42,110,118, 41, 47,118,104, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, - 99, 32, 61, 32, 40, 50, 46, 48, 42,110,104, 42,110,108, 41, 47,118,104, 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32,103, - 32, 61, 32, 48, 46, 48, 59, 10, 10, 9, 9, 9, 9,105,102, 40, 97, 32, 60, 32, 98, 32, 38, 38, 32, 97, 32, 60, 32, 99, 41, 32, -103, 32, 61, 32, 97, 59, 10, 9, 9, 9, 9,101,108,115,101, 32,105,102, 40, 98, 32, 60, 32, 97, 32, 38, 38, 32, 98, 32, 60, 32, - 99, 41, 32,103, 32, 61, 32, 98, 59, 10, 9, 9, 9, 9,101,108,115,101, 32,105,102, 40, 99, 32, 60, 32, 97, 32, 38, 38, 32, 99, - 32, 60, 32, 98, 41, 32,103, 32, 61, 32, 99, 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32,112, 32, 61, 32,115,113,114,116, - 40, 40, 40,114,101,102,114, 97, 99, 32, 42, 32,114,101,102,114, 97, 99, 41, 43, 40,118,104, 42,118,104, 41, 45, 49, 46, 48, 41, - 41, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32,102, 32, 61, 32, 40, 40, 40,112, 45,118,104, 41, 42, 40,112, 45,118,104, 41, - 41, 47, 40, 40,112, 43,118,104, 41, 42, 40,112, 43,118,104, 41, 41, 41, 42, 40, 49, 46, 48, 43, 40, 40, 40, 40,118,104, 42, 40, -112, 43,118,104, 41, 41, 45, 49, 46, 48, 41, 42, 40, 40,118,104, 42, 40,112, 43,118,104, 41, 41, 45, 49, 46, 48, 41, 41, 47, 40, - 40, 40,118,104, 42, 40,112, 45,118,104, 41, 41, 43, 49, 46, 48, 41, 42, 40, 40,118,104, 42, 40,112, 45,118,104, 41, 41, 43, 49, - 46, 48, 41, 41, 41, 41, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, 97,110,103, 32, 61, 32, 97, 99,111,115, 40,110,104, 41, - 59, 10, 10, 9, 9, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,109, 97,120, 40,102, 42,103, 42,101,120,112, 95, 98,108,101, -110,100,101,114, 40, 40, 45, 40, 97,110,103, 42, 97,110,103, 41, 47, 40, 50, 46, 48, 42,115,112,101, 99, 95,112,111,119,101,114, - 42,115,112,101, 99, 95,112,111,119,101,114, 41, 41, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9, 9,125, 10, 9, 9,125, 10, 9, -125, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,119, 97,114,100,105,115,111, 95,115,112,101, 99, 40,118,101, 99, - 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,114,109,115, 44, 32, -111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, 32, 61, 32,110, -111,114,109, 97,108,105,122,101, 40,108, 32, 43, 32,118, 41, 59, 10, 9,102,108,111, 97,116, 32,110,104, 32, 61, 32,109, 97,120, - 40,100,111,116, 40,110, 44, 32,104, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, 32,110,118, 32, 61, 32, -109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, 32,110,108, - 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,108, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, - 32, 97,110,103,108,101, 32, 61, 32,116, 97,110, 40, 97, 99,111,115, 40,110,104, 41, 41, 59, 10, 9,102,108,111, 97,116, 32, 97, -108,112,104, 97, 32, 61, 32,109, 97,120, 40,114,109,115, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, - 99, 61, 32,110,108, 32, 42, 32, 40, 49, 46, 48, 47, 40, 52, 46, 48, 42, 77, 95, 80, 73, 42, 97,108,112,104, 97, 42, 97,108,112, -104, 97, 41, 41, 42, 40,101,120,112, 95, 98,108,101,110,100,101,114, 40, 45, 40, 97,110,103,108,101, 42, 97,110,103,108,101, 41, - 47, 40, 97,108,112,104, 97, 42, 97,108,112,104, 97, 41, 41, 47, 40,115,113,114,116, 40,110,118, 42,110,108, 41, 41, 41, 59, 10, -125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,116,111,111,110, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32, -118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,115,105,122,101, 44, 32,102,108,111, 97, -116, 32,116,115,109,111,111,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, - 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, 43, 32,118, 41, 59, 10, 9,102,108,111, - 97,116, 32,114,115,108,116, 32, 61, 32,100,111,116, 40,104, 44, 32,110, 41, 59, 10, 9,102,108,111, 97,116, 32, 97,110,103, 32, - 61, 32, 97, 99,111,115, 40,114,115,108,116, 41, 59, 10, 10, 9,105,102, 40, 97,110,103, 32, 60, 32,115,105,122,101, 41, 32,114, -115,108,116, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 97,110,103, 32, 62, 61, 32, 40,115,105,122,101, - 32, 43, 32,116,115,109,111,111,116,104, 41, 32,124,124, 32,116,115,109,111,111,116,104, 32, 61, 61, 32, 48, 46, 48, 41, 32,114, -115,108,116, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,114,115,108,116, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40, 40, - 97,110,103, 32, 45, 32,115,105,122,101, 41, 47,116,115,109,111,111,116,104, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, 99, 32, - 61, 32,114,115,108,116, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,115,112,101, 99, 95, 97,114,101, 97, 95, -105,110,112, 40,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 44, 32,102,108,111, 97,116, 32,105,110,112, 44, 32,111,117, -116, 32,102,108,111, 97,116, 32,111,117,116,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,111,117,116,115,112,101, 99,102, 97, - 99, 32, 61, 32,115,112,101, 99,102, 97, 99, 42,105,110,112, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,115, -112,101, 99, 95,116, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,102,108,111, 97,116, 32,115,112,101, 99, 44, - 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 44, 32,111, -117,116, 32,102,108,111, 97,116, 32,116, 41, 10,123, 10, 9,116, 32, 61, 32,115,104, 97,100,102, 97, 99, 42,115,112,101, 99, 42, -118,105,115,105,102, 97, 99, 42,115,112,101, 99,102, 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97, -100,100, 95,115,112,101, 99, 40,102,108,111, 97,116, 32,116, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111,108, 44, 32,118, -101, 99, 51, 32,115,112,101, 99, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, - 9,111,117,116, 99,111,108, 32, 61, 32,116, 42,108, 97,109,112, 99,111,108, 42,115,112,101, 99, 99,111,108, 59, 10,125, 10, 10, -118,111,105,100, 32,115,104, 97,100,101, 95, 97,100,100, 40,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99, -111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, - 61, 32, 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, 97,100, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 85, 76, 32, 61, 32,116, +101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, 99, 50, + 40, 45, 49, 44, 45, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, + 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 85, 82, 32, 61, 32,116,101,120,116,117,114,101, 71, 97,116,104, +101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, 99, 50, 40, 49, 44, 45, 49, 41, 32, 43, 32,118, +101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97, +109,112,108,101,115, 76, 76, 32, 61, 32,116,101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84, +101,120, 76,111, 99, 43,105,118,101, 99, 50, 40, 45, 49, 44, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, + 41, 41, 47,118, 68,105,109, 32, 41, 59, 10, 9, 9,118,101, 99, 52, 32,118, 83, 97,109,112,108,101,115, 76, 82, 32, 61, 32,116, +101,120,116,117,114,101, 71, 97,116,104,101,114, 40,105,109, 97, 44, 32, 40,105, 84,101,120, 76,111, 99, 43,105,118,101, 99, 50, + 40, 49, 44, 49, 41, 32, 43, 32,118,101, 99, 50, 40, 48, 46, 53, 44, 48, 46, 53, 41, 41, 47,118, 68,105,109, 32, 41, 59, 10, 10, + 9, 9,109, 97,116, 52, 32, 72, 32, 61, 32,109, 97,116, 52, 40,118, 83, 97,109,112,108,101,115, 85, 76, 46,119, 44, 32,118, 83, + 97,109,112,108,101,115, 85, 76, 46,120, 44, 32,118, 83, 97,109,112,108,101,115, 76, 76, 46,119, 44, 32,118, 83, 97,109,112,108, +101,115, 76, 76, 46,120, 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 76, 46,122, 44, 32,118, 83, 97,109,112, +108,101,115, 85, 76, 46,121, 44, 32,118, 83, 97,109,112,108,101,115, 76, 76, 46,122, 44, 32,118, 83, 97,109,112,108,101,115, 76, + 76, 46,121, 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 82, 46,119, 44, 32,118, 83, 97,109,112,108,101,115, + 85, 82, 46,120, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,119, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,120, + 44, 10, 9, 9, 9, 9, 9,118, 83, 97,109,112,108,101,115, 85, 82, 46,122, 44, 32,118, 83, 97,109,112,108,101,115, 85, 82, 46, +121, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,122, 44, 32,118, 83, 97,109,112,108,101,115, 76, 82, 46,121, 41, 59, 10, + 42, 47, 9, 10, 9, 9,105,118,101, 99, 50, 32,105, 84,101,120, 76,111, 99, 77,111,100, 32, 61, 32,105, 84,101,120, 76,111, 99, + 32, 43, 32,105,118,101, 99, 50, 40, 45, 49, 44, 32, 45, 49, 41, 59, 10, 10, 9, 9,109, 97,116, 52, 32, 72, 59, 10, 9, 9, 10, + 9, 9,102,111,114, 40,105,110,116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 52, 59, 32,105, 43, 43, 41,123, 10, 9, 9, + 9,102,111,114, 40,105,110,116, 32,106, 32, 61, 32, 48, 59, 32,106, 32, 60, 32, 52, 59, 32,106, 43, 43, 41,123, 10, 9, 9, 9, + 9,105,118,101, 99, 50, 32,105, 84,101,120, 84,109,112, 32, 61, 32,105, 84,101,120, 76,111, 99, 77,111,100, 32, 43, 32,105,118, +101, 99, 50, 40,105, 44,106, 41, 59, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 47, 47, 32,119,114, 97,112, 32,116,101,120,116,117, +114,101, 32, 99,111,111,114,100,105,110, 97,116,101,115, 32,109, 97,110,117, 97,108,108,121, 32,102,111,114, 32,116,101,120,101, +108, 70,101,116, 99,104, 32,116,111, 32,119,111,114,107, 32,111,110, 32,117,118,115, 32,111,105,116,115,105,100,101, 32,116,104, +101, 32, 48, 44, 49, 32,114, 97,110,103,101, 46, 10, 9, 9, 9, 9, 47, 47, 32,116,104,105,115, 32,105,115, 32,103,117, 97,114, + 97,110,116,101,101,100, 32,116,111, 32,119,111,114,107, 32,115,105,110, 99,101, 32,119,101, 32,116, 97,107,101, 32,116,104,101, + 32,102,114, 97, 99,116,105,111,110, 97,108, 32,112, 97,114,116, 32,111,102, 32,116,104,101, 32,117,118, 32, 97, 98,111,118,101, + 46, 10, 9, 9, 9, 9,105, 84,101,120, 84,109,112, 46,120, 32, 61, 32, 40,105, 84,101,120, 84,109,112, 46,120, 32, 60, 32, 48, + 41, 63, 32,105, 84,101,120, 84,109,112, 46,120, 32, 43, 32,118, 68,105,109, 46,120, 32, 58, 32, 40, 40,105, 84,101,120, 84,109, +112, 46,120, 32, 62, 61, 32,118, 68,105,109, 46,120, 41, 63, 32,105, 84,101,120, 84,109,112, 46,120, 32, 45, 32,118, 68,105,109, + 46,120, 32, 58, 32,105, 84,101,120, 84,109,112, 46,120, 41, 59, 10, 9, 9, 9, 9,105, 84,101,120, 84,109,112, 46,121, 32, 61, + 32, 40,105, 84,101,120, 84,109,112, 46,121, 32, 60, 32, 48, 41, 63, 32,105, 84,101,120, 84,109,112, 46,121, 32, 43, 32,118, 68, +105,109, 46,121, 32, 58, 32, 40, 40,105, 84,101,120, 84,109,112, 46,121, 32, 62, 61, 32,118, 68,105,109, 46,121, 41, 63, 32,105, + 84,101,120, 84,109,112, 46,121, 32, 45, 32,118, 68,105,109, 46,121, 32, 58, 32,105, 84,101,120, 84,109,112, 46,121, 41, 59, 10, + 10, 9, 9, 9, 9,114,103, 98,116,111, 98,119, 40,116,101,120,101,108, 70,101,116, 99,104, 40,105,109, 97, 44, 32,105, 84,101, +120, 84,109,112, 44, 32, 48, 41, 44, 32, 72, 91,105, 93, 91,106, 93, 41, 59, 10, 9, 9, 9,125, 10, 9, 9,125, 10, 9, 9, 10, + 9, 9,102,108,111, 97,116, 32,120, 32, 61, 32,116, 46,120, 44, 32,121, 32, 61, 32,116, 46,121, 59, 10, 9, 9,102,108,111, 97, +116, 32,120, 50, 32, 61, 32,120, 32, 42, 32,120, 44, 32,120, 51, 32, 61, 32,120, 50, 32, 42, 32,120, 44, 32,121, 50, 32, 61, 32, +121, 32, 42, 32,121, 44, 32,121, 51, 32, 61, 32,121, 50, 32, 42, 32,121, 59, 10, 10, 9, 9,118,101, 99, 52, 32, 88, 32, 61, 32, +118,101, 99, 52, 40, 45, 48, 46, 53, 42, 40,120, 51, 43,120, 41, 43,120, 50, 44, 9, 9, 49, 46, 53, 42,120, 51, 45, 50, 46, 53, + 42,120, 50, 43, 49, 44, 9, 45, 49, 46, 53, 42,120, 51, 43, 50, 42,120, 50, 43, 48, 46, 53, 42,120, 44, 9, 9, 48, 46, 53, 42, + 40,120, 51, 45,120, 50, 41, 41, 59, 10, 9, 9,118,101, 99, 52, 32, 89, 32, 61, 32,118,101, 99, 52, 40, 45, 48, 46, 53, 42, 40, +121, 51, 43,121, 41, 43,121, 50, 44, 9, 9, 49, 46, 53, 42,121, 51, 45, 50, 46, 53, 42,121, 50, 43, 49, 44, 9, 45, 49, 46, 53, + 42,121, 51, 43, 50, 42,121, 50, 43, 48, 46, 53, 42,121, 44, 9, 9, 48, 46, 53, 42, 40,121, 51, 45,121, 50, 41, 41, 59, 10, 9, + 9,118,101, 99, 52, 32,100, 88, 32, 61, 32,118,101, 99, 52, 40, 45, 49, 46, 53, 42,120, 50, 43, 50, 42,120, 45, 48, 46, 53, 44, + 9, 9, 52, 46, 53, 42,120, 50, 45, 53, 42,120, 44, 9, 9, 9, 45, 52, 46, 53, 42,120, 50, 43, 52, 42,120, 43, 48, 46, 53, 44, + 9, 9, 49, 46, 53, 42,120, 50, 45,120, 41, 59, 10, 9, 9,118,101, 99, 52, 32,100, 89, 32, 61, 32,118,101, 99, 52, 40, 45, 49, + 46, 53, 42,121, 50, 43, 50, 42,121, 45, 48, 46, 53, 44, 9, 9, 52, 46, 53, 42,121, 50, 45, 53, 42,121, 44, 9, 9, 9, 45, 52, + 46, 53, 42,121, 50, 43, 52, 42,121, 43, 48, 46, 53, 44, 9, 9, 49, 46, 53, 42,121, 50, 45,121, 41, 59, 10, 9, 10, 9, 9, 47, + 47, 32, 99,111,109,112,108,101,116,101, 32,100,101,114,105,118, 97,116,105,118,101, 32,105,110, 32,110,111,114,109, 97,108,105, +122,101,100, 32, 99,111,111,114,100,105,110, 97,116,101,115, 32, 40,109,117,108, 32, 98,121, 32,118, 68,105,109, 41, 10, 9, 9, +118,101, 99, 50, 32,100, 72,100, 83, 84, 32, 61, 32,118, 68,105,109, 32, 42, 32,118,101, 99, 50, 40,100,111,116, 40, 89, 44, 32, + 72, 32, 42, 32,100, 88, 41, 44, 32,100,111,116, 40,100, 89, 44, 32, 72, 32, 42, 32, 88, 41, 41, 59, 10, 10, 9, 9, 47, 47, 32, +116,114, 97,110,115,102,111,114,109, 32,100,101,114,105,118, 97,116,105,118,101, 32,116,111, 32,115, 99,114,101,101,110, 45,115, +112, 97, 99,101, 10, 9, 9,118,101, 99, 50, 32,100, 72,100,120,121, 95, 98,105, 99,117, 98,105, 99, 32, 61, 32,118,101, 99, 50, + 40, 32,100, 72,100, 83, 84, 46,120, 32, 42, 32, 84,101,120, 68,120, 46,120, 32, 43, 32,100, 72,100, 83, 84, 46,121, 32, 42, 32, + 84,101,120, 68,120, 46,121, 44, 10, 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,100, 72,100, 83, 84, 46,120, 32, 42, 32, 84,101, +120, 68,121, 46,120, 32, 43, 32,100, 72,100, 83, 84, 46,121, 32, 42, 32, 84,101,120, 68,121, 46,121, 32, 41, 59, 10, 10, 9, 9, + 47, 47, 32, 98,108,101,110,100, 32, 98,101,116,119,101,101,110, 32,116,104,101, 32,116,119,111, 10, 9, 9,100, 72,100,120,121, + 32, 61, 32,100, 72,100,120,121, 42, 40, 49, 45,102, 66,108,101,110,100, 41, 32, 43, 32,100, 72,100,120,121, 95, 98,105, 99,117, + 98,105, 99, 42,102, 66,108,101,110,100, 59, 10, 9,125, 10, 10, 9,100, 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, +100, 72,100,120,121, 46,120, 59, 10, 9,100, 66,116, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32,100, 72,100,120,121, 46,121, + 59, 10,125, 10, 10, 35,101,110,100,105,102, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,117,109,112, 95,116, 97,112, 53, + 40, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,102,108,111, + 97,116, 32,104, 83, 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,116, 32, 41, 32, + 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120,121, 41, 59, + 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120,121, 41, 59, 10, 10, + 9,118,101, 99, 50, 32, 83, 84, 99, 32, 61, 32,116,101,120, 99,111, 46,120,121, 59, 10, 9,118,101, 99, 50, 32, 83, 84,108, 32, + 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, 9,118,101, 99, 50, + 32, 83, 84,114, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, 42, 32, 84,101,120, 68,120, 32, 59, 10, + 9,118,101, 99, 50, 32, 83, 84,100, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 45, 32, 48, 46, 53, 32, 42, 32, 84,101,120, + 68,121, 32, 59, 10, 9,118,101, 99, 50, 32, 83, 84,117, 32, 61, 32,116,101,120, 99,111, 46,120,121, 32, 43, 32, 48, 46, 53, 32, + 42, 32, 84,101,120, 68,121, 32, 59, 10, 9, 10, 9,102,108,111, 97,116, 32, 72, 99, 44, 72,108, 44, 72,114, 44, 72,100, 44, 72, +117, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84, 99, 41, + 44, 32, 72, 99, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, + 32, 83, 84,108, 41, 44, 32, 72,108, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116,117,114,101, 50, 68, + 40,105,109, 97, 44, 32, 83, 84,114, 41, 44, 32, 72,114, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, 32,116,101,120,116, +117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,100, 41, 44, 32, 72,100, 32, 41, 59, 10, 9,114,103, 98,116,111, 98,119, 40, + 32,116,101,120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32, 83, 84,117, 41, 44, 32, 72,117, 32, 41, 59, 10, 9, 10, 9,100, + 66,115, 32, 61, 32,104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,114, 32, 45, 32, 72,108, 41, 59, 10, 9,100, 66,116, 32, 61, 32, +104, 83, 99, 97,108,101, 32, 42, 32, 40, 72,117, 32, 45, 32, 72,100, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, + 95, 98,117,109,112, 95,100,101,114,105,118, 40, 32,118,101, 99, 51, 32,116,101,120, 99,111, 44, 32,115, 97,109,112,108,101,114, + 50, 68, 32,105,109, 97, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,120, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,121, + 44, 32,102,108,111, 97,116, 32,104, 83, 99, 97,108,101, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,111,117,116, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100, + 66,116, 32, 41, 32, 10,123, 10, 9,102,108,111, 97,116, 32,115, 32, 61, 32, 49, 46, 48, 59, 9, 9, 47, 47, 32,110,101,103, 97, +116,101, 32,116,104,105,115, 32,105,102, 32,102,108,105,112,112,101,100, 32,116,101,120,116,117,114,101, 32, 99,111,111,114,100, +105,110, 97,116,101, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100,120, 40,116,101,120, 99,111, 46,120, +121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40,116,101,120, 99,111, 46,120,121, 41, + 59, 10, 9, 10, 9, 47, 47, 32,116,104,105,115, 32,118, 97,114,105, 97,110,116, 32,117,115,105,110,103, 32, 97, 32,100,101,114, +105,118, 97,116,105,118,101, 32,109, 97,112, 32,105,115, 32,100,101,115, 99,114,105, 98,101,100, 32,104,101,114,101, 10, 9, 47, + 47, 32,104,116,116,112, 58, 47, 47,109,109,105,107,107,101,108,115,101,110, 51,100, 46, 98,108,111,103,115,112,111,116, 46, 99, +111,109, 47, 50, 48, 49, 49, 47, 48, 55, 47,100,101,114,105,118, 97,116,105,118,101, 45,109, 97,112,115, 46,104,116,109,108, 10, + 9,118,101, 99, 50, 32,100,105,109, 32, 61, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 44, 32,105,109, 97, 95,121, 41, 59, 10, + 9,118,101, 99, 50, 32,100, 66,100,117,118, 32, 61, 32,104, 83, 99, 97,108,101, 42,100,105,109, 42, 40, 50, 46, 48, 42,116,101, +120,116,117,114,101, 50, 68, 40,105,109, 97, 44, 32,116,101,120, 99,111, 46,120,121, 41, 46,120,121, 45, 49, 46, 48, 41, 59, 10, + 9, 10, 9,100, 66,115, 32, 61, 32,100, 66,100,117,118, 46,120, 42, 84,101,120, 68,120, 46,120, 32, 43, 32,115, 42,100, 66,100, +117,118, 46,121, 42, 84,101,120, 68,120, 46,121, 59, 10, 9,100, 66,116, 32, 61, 32,100, 66,100,117,118, 46,120, 42, 84,101,120, + 68,121, 46,120, 32, 43, 32,115, 42,100, 66,100,117,118, 46,121, 42, 84,101,120, 68,121, 46,121, 59, 10,125, 10, 10,118,111,105, +100, 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 40, 32,102,108,111, 97,116, 32,102, 68,101,116, 44, 32,102, +108,111, 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118,101, 99, 51, 32,118, 82, 49, 44, 32,118, +101, 99, 51, 32,118, 82, 50, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 32, 32,111, +117,116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112,101,114,116, +117,114, 98,101,100, 95,110,111,114,109, 32, 41, 32, 10,123, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97,100, 32, + 61, 32,115,105,103,110, 40,102, 68,101,116, 41, 32, 42, 32, 40, 32,100, 66,115, 32, 42, 32,118, 82, 49, 32, 43, 32,100, 66,116, + 32, 42, 32,118, 82, 50, 32, 41, 59, 10, 9, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105, +110, 32, 45, 32,118, 83,117,114,102, 71,114, 97,100, 59, 10, 9,112,101,114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 61, + 32,110,111,114,109, 97,108,105,122,101, 40, 32,118, 78, 97, 99, 99, 95,111,117,116, 32, 41, 59, 10,125, 10, 10,118,111,105,100, + 32,109,116,101,120, 95, 98,117,109,112, 95, 97,112,112,108,121, 95,116,101,120,115,112, 97, 99,101, 40, 32,102,108,111, 97,116, + 32,102, 68,101,116, 44, 32,102,108,111, 97,116, 32,100, 66,115, 44, 32,102,108,111, 97,116, 32,100, 66,116, 44, 32,118,101, 99, + 51, 32,118, 82, 49, 44, 32,118,101, 99, 51, 32,118, 82, 50, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115, 97,109,112,108,101,114, 50, 68, 32,105,109, 97, 44, 32,118, +101, 99, 51, 32,116,101,120, 99,111, 44, 32,102,108,111, 97,116, 32,105,109, 97, 95,120, 44, 32,102,108,111, 97,116, 32,105,109, + 97, 95,121, 44, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,105,110, 44, 10, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32,111,117, +116, 32,118,101, 99, 51, 32,118, 78, 97, 99, 99, 95,111,117,116, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112,101,114,116,117, +114, 98,101,100, 95,110,111,114,109, 32, 41, 32, 10,123, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,120, 32, 61, 32,100, 70,100, +120, 40,116,101,120, 99,111, 46,120,121, 41, 59, 10, 9,118,101, 99, 50, 32, 84,101,120, 68,121, 32, 61, 32,100, 70,100,121, 40, +116,101,120, 99,111, 46,120,121, 41, 59, 10, 10, 9,118,101, 99, 51, 32,118, 83,117,114,102, 71,114, 97,100, 32, 61, 32,115,105, +103,110, 40,102, 68,101,116, 41, 32, 42, 32, 40, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100, 66,115, 32, 47, + 32,108,101,110,103,116,104, 40, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 42, 84,101,120, 68,120, 46,120, 44, 32,105,109, 97, + 95,121, 42, 84,101,120, 68,120, 46,121, 41, 32, 41, 32, 42, 32,118, 82, 49, 32, 43, 32, 10, 9, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,100, 66,116, 32, 47, 32,108,101,110,103,116,104, 40, 32,118,101, 99, 50, 40,105,109, 97, 95,120, 42, 84,101,120, + 68,121, 46,120, 44, 32,105,109, 97, 95,121, 42, 84,101,120, 68,121, 46,121, 41, 32, 41, 32, 42, 32,118, 82, 50, 32, 41, 59, 10, + 9, 9, 9, 9, 10, 9,118, 78, 97, 99, 99, 95,111,117,116, 32, 61, 32,118, 78, 97, 99, 99, 95,105,110, 32, 45, 32,118, 83,117, +114,102, 71,114, 97,100, 59, 10, 9,112,101,114,116,117,114, 98,101,100, 95,110,111,114,109, 32, 61, 32,110,111,114,109, 97,108, +105,122,101, 40, 32,118, 78, 97, 99, 99, 95,111,117,116, 32, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110, +101,103, 97,116,101, 95,116,101,120,110,111,114,109, 97,108, 40,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, + 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32, +118,101, 99, 51, 40, 45,110,111,114,109, 97,108, 46,120, 44, 32, 45,110,111,114,109, 97,108, 46,121, 44, 32,110,111,114,109, 97, +108, 46,122, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95,110,115,112, 97, 99,101, 95,116, 97,110,103,101,110, +116, 40,118,101, 99, 52, 32,116, 97,110,103,101,110,116, 44, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,118,101, 99, + 51, 32,116,101,120,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, + 10,123, 10, 9,118,101, 99, 51, 32, 66, 32, 61, 32,116, 97,110,103,101,110,116, 46,119, 32, 42, 32, 99,114,111,115,115, 40,110, +111,114,109, 97,108, 44, 32,116, 97,110,103,101,110,116, 46,120,121,122, 41, 59, 10, 10, 9,111,117,116,110,111,114,109, 97,108, + 32, 61, 32,116,101,120,110,111,114,109, 97,108, 46,120, 42,116, 97,110,103,101,110,116, 46,120,121,122, 32, 43, 32,116,101,120, +110,111,114,109, 97,108, 46,121, 42, 66, 32, 43, 32,116,101,120,110,111,114,109, 97,108, 46,122, 42,110,111,114,109, 97,108, 59, + 10, 9,111,117,116,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,110,111,114,109, 97, +108, 41, 59, 10,125, 10, 10,118,111,105,100, 32,109,116,101,120, 95, 98,108,101,110,100, 95,110,111,114,109, 97,108, 40,102,108, +111, 97,116, 32,110,111,114,102, 97, 99, 44, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,118,101, 99, 51, 32,110,101, +119,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116,110,111,114,109, 97,108, 41, 10,123, 10, 9, +111,117,116,110,111,114,109, 97,108, 32, 61, 32, 40, 49, 46, 48, 32, 45, 32,110,111,114,102, 97, 99, 41, 42,110,111,114,109, 97, +108, 32, 43, 32,110,111,114,102, 97, 99, 42,110,101,119,110,111,114,109, 97,108, 59, 10, 9,111,117,116,110,111,114,109, 97,108, + 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,111,117,116,110,111,114,109, 97,108, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, + 42, 42, 42, 42, 32, 77, 65, 84, 69, 82, 73, 65, 76, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, 10, 10,118,111,105,100, 32,108, + 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,117,110, 95,104,101,109,105, 40,118,101, 99, 51, 32,108, 97,109, +112,118,101, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100,105,115, +116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,108,118, 32, 61, 32,108, 97, +109,112,118,101, 99, 59, 10, 9,100,105,115,116, 32, 61, 32, 49, 46, 48, 59, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32, 49, + 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,111,116,104,101, +114, 40,118,101, 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111, 44, 32,111,117,116, 32,118,101, 99, 51, + 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118, +105,115,105,102, 97, 99, 41, 10,123, 10, 9,108,118, 32, 61, 32, 99,111, 32, 45, 32,108, 97,109,112, 99,111, 59, 10, 9,100,105, +115,116, 32, 61, 32,108,101,110,103,116,104, 40,108,118, 41, 59, 10, 9,108,118, 32, 61, 32,110,111,114,109, 97,108,105,122,101, + 40,108,118, 41, 59, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97, +109,112, 95,102, 97,108,108,111,102,102, 95,105,110,118,108,105,110,101, 97,114, 40,102,108,111, 97,116, 32,108, 97,109,112,100, +105,115,116, 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, + 97, 99, 41, 10,123, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32,108, 97,109,112,100,105,115,116, 47, 40,108, 97,109,112,100, +105,115,116, 32, 43, 32,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,102, 97,108,108,111,102, +102, 95,105,110,118,115,113,117, 97,114,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32,102,108,111, 97, +116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,118,105, +115,105,102, 97, 99, 32, 61, 32,108, 97,109,112,100,105,115,116, 47, 40,108, 97,109,112,100,105,115,116, 32, 43, 32,100,105,115, +116, 42,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,102, 97,108,108,111,102,102, 95,115,108, +105,100,101,114,115, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32,102,108,111, 97,116, 32,108,100, 49, 44, + 32,102,108,111, 97,116, 32,108,100, 50, 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32,111,117,116, 32,102,108,111, 97, +116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116,107,119, 32, 61, + 32,108, 97,109,112,100,105,115,116, 42,108, 97,109,112,100,105,115,116, 59, 10, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32, +108, 97,109,112,100,105,115,116, 47, 40,108, 97,109,112,100,105,115,116, 32, 43, 32,108,100, 49, 42,100,105,115,116, 41, 59, 10, + 9,118,105,115,105,102, 97, 99, 32, 42, 61, 32,108, 97,109,112,100,105,115,116,107,119, 47, 40,108, 97,109,112,100,105,115,116, +107,119, 32, 43, 32,108,100, 50, 42,100,105,115,116, 42,100,105,115,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109, +112, 95,102, 97,108,108,111,102,102, 95, 99,117,114,118,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32, +115, 97,109,112,108,101,114, 50, 68, 32, 99,117,114,118,101,109, 97,112, 44, 32,102,108,111, 97,116, 32,100,105,115,116, 44, 32, +111,117,116, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,118,105,115,105,102, 97, 99, 32, 61, 32, +116,101,120,116,117,114,101, 50, 68, 40, 99,117,114,118,101,109, 97,112, 44, 32,118,101, 99, 50, 40,100,105,115,116, 47,108, 97, +109,112,100,105,115,116, 44, 32, 48, 46, 48, 41, 41, 46,120, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,118,105, +115,105, 98,105,108,105,116,121, 95,115,112,104,101,114,101, 40,102,108,111, 97,116, 32,108, 97,109,112,100,105,115,116, 44, 32, +102,108,111, 97,116, 32,100,105,115,116, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,116, 61, 32,108, 97,109, +112,100,105,115,116, 32, 45, 32,100,105,115,116, 59, 10, 10, 9,111,117,116,118,105,115,105,102, 97, 99, 61, 32,118,105,115,105, +102, 97, 99, 42,109, 97,120, 40,116, 44, 32, 48, 46, 48, 41, 47,108, 97,109,112,100,105,115,116, 59, 10,125, 10, 10,118,111,105, +100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 95,115,113,117, 97,114,101, 40,118,101, + 99, 51, 32,108, 97,109,112,118,101, 99, 44, 32,109, 97,116, 52, 32,108, 97,109,112,105,109, 97,116, 44, 32,118,101, 99, 51, 32, +108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112,114, 41, 10,123, 10, 9,105,102, 40,100,111,116, 40,108,118, + 44, 32,108, 97,109,112,118,101, 99, 41, 32, 62, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,118,101, 99, 51, 32,108,118,114,111,116, + 32, 61, 32, 40,108, 97,109,112,105,109, 97,116, 42,118,101, 99, 52, 40,108,118, 44, 32, 48, 46, 48, 41, 41, 46,120,121,122, 59, + 10, 9, 9,102,108,111, 97,116, 32,120, 32, 61, 32,109, 97,120, 40, 97, 98,115, 40,108,118,114,111,116, 46,120, 47,108,118,114, +111,116, 46,122, 41, 44, 32, 97, 98,115, 40,108,118,114,111,116, 46,121, 47,108,118,114,111,116, 46,122, 41, 41, 59, 10, 10, 9, + 9,105,110,112,114, 32, 61, 32, 49, 46, 48, 47,115,113,114,116, 40, 49, 46, 48, 32, 43, 32,120, 42,120, 41, 59, 10, 9,125, 10, + 9,101,108,115,101, 10, 9, 9,105,110,112,114, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, + 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 95, 99,105,114, 99,108,101, 40,118,101, 99, 51, 32,108, 97,109, +112,118,101, 99, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112,114, 41, 10,123, + 10, 9,105,110,112,114, 32, 61, 32,100,111,116, 40,108,118, 44, 32,108, 97,109,112,118,101, 99, 41, 59, 10,125, 10, 10,118,111, +105,100, 32,108, 97,109,112, 95,118,105,115,105, 98,105,108,105,116,121, 95,115,112,111,116, 40,102,108,111, 97,116, 32,115,112, +111,116,115,105, 44, 32,102,108,111, 97,116, 32,115,112,111,116, 98,108, 44, 32,102,108,111, 97,116, 32,105,110,112,114, 44, 32, +102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,118,105,115,105, +102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,116, 32, 61, 32,115,112,111,116,115,105, 59, 10, 10, 9,105,102, 40,105, +110,112,114, 32, 60, 61, 32,116, 41, 32,123, 10, 9, 9,111,117,116,118,105,115,105,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, + 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,116, 32, 61, 32,105,110,112,114, 32, 45, 32,116, 59, 10, 10, 9, 9, 47, 42, + 32,115,111,102,116, 32, 97,114,101, 97, 32, 42, 47, 10, 9, 9,105,102, 40,115,112,111,116, 98,108, 32, 33, 61, 32, 48, 46, 48, + 41, 10, 9, 9, 9,105,110,112,114, 32, 42, 61, 32,115,109,111,111,116,104,115,116,101,112, 40, 48, 46, 48, 44, 32, 49, 46, 48, + 44, 32,116, 47,115,112,111,116, 98,108, 41, 59, 10, 10, 9, 9,111,117,116,118,105,115,105,102, 97, 99, 32, 61, 32,118,105,115, +105,102, 97, 99, 42,105,110,112,114, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,108, 97,109,112, 95,118,105,115,105, 98, +105,108,105,116,121, 95, 99,108, 97,109,112, 40,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, 32,102, +108,111, 97,116, 32,111,117,116,118,105,115,105,102, 97, 99, 41, 10,123, 10, 9,111,117,116,118,105,115,105,102, 97, 99, 32, 61, + 32, 40,118,105,115,105,102, 97, 99, 32, 60, 32, 48, 46, 48, 48, 49, 41, 63, 32, 48, 46, 48, 58, 32,118,105,115,105,102, 97, 99, + 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,118,105,101,119, 40,118,101, 99, 51, 32, 99,111, 44, 32,111,117, +116, 32,118,101, 99, 51, 32,118,105,101,119, 41, 10,123, 10, 9, 47, 42, 32,104, 97,110,100,108,101, 32,112,101,114,115,112,101, + 99,116,105,118,101, 47,111,114,116,104,111,103,114, 97,112,104,105, 99, 32, 42, 47, 10, 9,118,105,101,119, 32, 61, 32, 40,103, +108, 95, 80,114,111,106,101, 99,116,105,111,110, 77, 97,116,114,105,120, 91, 51, 93, 91, 51, 93, 32, 61, 61, 32, 48, 46, 48, 41, + 63, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 41, 58, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, + 45, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,116, 97,110,103,101,110,116, 95,118, 40,118, +101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,116, 97,110,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,110, 41, 10, +123, 10, 9,118,101, 99, 51, 32, 99, 32, 61, 32, 99,114,111,115,115, 40,108,118, 44, 32,116, 97,110,103, 41, 59, 10, 9,118,101, + 99, 51, 32,118,110,111,114, 32, 61, 32, 99,114,111,115,115, 40, 99, 44, 32,116, 97,110,103, 41, 59, 10, 10, 9,118,110, 32, 61, + 32, 45,110,111,114,109, 97,108,105,122,101, 40,118,110,111,114, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, + 95,105,110,112, 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,111,117,116, 32,102,108,111, 97,116, + 32,105,110,112, 41, 10,123, 10, 9,105,110,112, 32, 61, 32,100,111,116, 40,118,110, 44, 32,108,118, 41, 59, 10,125, 10, 10,118, +111,105,100, 32,115,104, 97,100,101, 95,105,115, 95,110,111, 95,100,105,102,102,117,115,101, 40,111,117,116, 32,102,108,111, 97, +116, 32,105,115, 41, 10,123, 10, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, + 95,105,115, 95,104,101,109,105, 40,102,108,111, 97,116, 32,105,110,112, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,115, + 41, 10,123, 10, 9,105,115, 32, 61, 32, 48, 46, 53, 42,105,110,112, 32, 43, 32, 48, 46, 53, 59, 10,125, 10, 10,102,108,111, 97, +116, 32, 97,114,101, 97, 95,108, 97,109,112, 95,101,110,101,114,103,121, 40,109, 97,116, 52, 32, 97,114,101, 97, 44, 32,118,101, + 99, 51, 32, 99,111, 44, 32,118,101, 99, 51, 32,118,110, 41, 10,123, 10, 9,118,101, 99, 51, 32,118,101, 99, 91, 52, 93, 44, 32, + 99, 91, 52, 93, 59, 10, 9,102,108,111, 97,116, 32,114, 97,100, 91, 52, 93, 44, 32,102, 97, 99, 59, 10, 9, 10, 9,118,101, 99, + 91, 48, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 32, 45, 32, 97,114,101, 97, 91, 48, 93, 46,120,121,122, + 41, 59, 10, 9,118,101, 99, 91, 49, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, 32, 45, 32, 97,114,101, 97, + 91, 49, 93, 46,120,121,122, 41, 59, 10, 9,118,101, 99, 91, 50, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,111, + 32, 45, 32, 97,114,101, 97, 91, 50, 93, 46,120,121,122, 41, 59, 10, 9,118,101, 99, 91, 51, 93, 32, 61, 32,110,111,114,109, 97, +108,105,122,101, 40, 99,111, 32, 45, 32, 97,114,101, 97, 91, 51, 93, 46,120,121,122, 41, 59, 10, 10, 9, 99, 91, 48, 93, 32, 61, + 32,110,111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, 91, 48, 93, 44, 32,118,101, 99, 91, 49, 93, 41, + 41, 59, 10, 9, 99, 91, 49, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, 91, 49, + 93, 44, 32,118,101, 99, 91, 50, 93, 41, 41, 59, 10, 9, 99, 91, 50, 93, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 99, +114,111,115,115, 40,118,101, 99, 91, 50, 93, 44, 32,118,101, 99, 91, 51, 93, 41, 41, 59, 10, 9, 99, 91, 51, 93, 32, 61, 32,110, +111,114,109, 97,108,105,122,101, 40, 99,114,111,115,115, 40,118,101, 99, 91, 51, 93, 44, 32,118,101, 99, 91, 48, 93, 41, 41, 59, + 10, 10, 9,114, 97,100, 91, 48, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, 40,118,101, 99, 91, 48, 93, 44, 32,118,101, 99, + 91, 49, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 49, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, 40,118,101, 99, 91, 49, 93, + 44, 32,118,101, 99, 91, 50, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 50, 93, 32, 61, 32, 97, 99,111,115, 40,100,111,116, 40,118, +101, 99, 91, 50, 93, 44, 32,118,101, 99, 91, 51, 93, 41, 41, 59, 10, 9,114, 97,100, 91, 51, 93, 32, 61, 32, 97, 99,111,115, 40, +100,111,116, 40,118,101, 99, 91, 51, 93, 44, 32,118,101, 99, 91, 48, 93, 41, 41, 59, 10, 10, 9,102, 97, 99, 61, 32, 32,114, 97, +100, 91, 48, 93, 42,100,111,116, 40,118,110, 44, 32, 99, 91, 48, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, 91, 49, + 93, 42,100,111,116, 40,118,110, 44, 32, 99, 91, 49, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, 91, 50, 93, 42,100, +111,116, 40,118,110, 44, 32, 99, 91, 50, 93, 41, 59, 10, 9,102, 97, 99, 43, 61, 32,114, 97,100, 91, 51, 93, 42,100,111,116, 40, +118,110, 44, 32, 99, 91, 51, 93, 41, 59, 10, 10, 9,114,101,116,117,114,110, 32,109, 97,120, 40,102, 97, 99, 44, 32, 48, 46, 48, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,105,110,112, 95, 97,114,101, 97, 40,118,101, 99, 51, 32,112, +111,115,105,116,105,111,110, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111, 44, 32,118,101, 99, 51, 32,108, 97,109,112,118, +101, 99, 44, 32,118,101, 99, 51, 32,118,110, 44, 32,109, 97,116, 52, 32, 97,114,101, 97, 44, 32,102,108,111, 97,116, 32, 97,114, +101, 97,115,105,122,101, 44, 32,102,108,111, 97,116, 32,107, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,110,112, 41, 10, +123, 10, 9,118,101, 99, 51, 32, 99,111, 32, 61, 32,112,111,115,105,116,105,111,110, 59, 10, 9,118,101, 99, 51, 32,118,101, 99, + 32, 61, 32, 99,111, 32, 45, 32,108, 97,109,112, 99,111, 59, 10, 10, 9,105,102, 40,100,111,116, 40,118,101, 99, 44, 32,108, 97, +109,112,118,101, 99, 41, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,110,112, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, + 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,105,110,116,101,110,115, 32, 61, 32, 97,114,101, 97, 95,108, 97, +109,112, 95,101,110,101,114,103,121, 40, 97,114,101, 97, 44, 32, 99,111, 44, 32,118,110, 41, 59, 10, 10, 9, 9,105,110,112, 32, + 61, 32,112,111,119, 40,105,110,116,101,110,115, 42, 97,114,101, 97,115,105,122,101, 44, 32,107, 41, 59, 10, 9,125, 10,125, 10, + 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,111,114,101,110, 95,110, 97,121,101,114, 40,102, +108,111, 97,116, 32,110,108, 44, 32,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, + 32,102,108,111, 97,116, 32,114,111,117,103,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,115, 41, 10,123, 10, 9,118, +101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32,108, 41, 59, 10, 9,102,108,111, 97,116, + 32,110,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,104, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9,102,108,111, 97, +116, 32,110,118, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9,102,108,111, + 97,116, 32,114,101, 97,108,110,108, 32, 61, 32,100,111,116, 40,110, 44, 32,108, 41, 59, 10, 10, 9,105,102, 40,114,101, 97,108, +110,108, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, + 32,105,102, 40,110,108, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9, +101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,118,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,118, 44, 32,104, + 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 76,105,116, 95, 65, 32, 61, 32, 97, 99,111,115, 40,114,101, + 97,108,110,108, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 86,105,101,119, 95, 65, 32, 61, 32, 97, 99,111,115, 40,110,118, 41, + 59, 10, 10, 9, 9,118,101, 99, 51, 32, 76,105,116, 95, 66, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, 45, 32, +114,101, 97,108,110,108, 42,110, 41, 59, 10, 9, 9,118,101, 99, 51, 32, 86,105,101,119, 95, 66, 32, 61, 32,110,111,114,109, 97, +108,105,122,101, 40,118, 32, 45, 32,110,118, 42,110, 41, 59, 10, 10, 9, 9,102,108,111, 97,116, 32,116, 32, 61, 32,109, 97,120, + 40,100,111,116, 40, 76,105,116, 95, 66, 44, 32, 86,105,101,119, 95, 66, 41, 44, 32, 48, 46, 48, 41, 59, 10, 10, 9, 9,102,108, +111, 97,116, 32, 97, 44, 32, 98, 59, 10, 10, 9, 9,105,102, 40, 76,105,116, 95, 65, 32, 62, 32, 86,105,101,119, 95, 65, 41, 32, +123, 10, 9, 9, 9, 97, 32, 61, 32, 76,105,116, 95, 65, 59, 10, 9, 9, 9, 98, 32, 61, 32, 86,105,101,119, 95, 65, 59, 10, 9, + 9,125, 10, 9, 9,101,108,115,101, 32,123, 10, 9, 9, 9, 97, 32, 61, 32, 86,105,101,119, 95, 65, 59, 10, 9, 9, 9, 98, 32, + 61, 32, 76,105,116, 95, 65, 59, 10, 9, 9,125, 10, 10, 9, 9,102,108,111, 97,116, 32, 65, 32, 61, 32, 49, 46, 48, 32, 45, 32, + 40, 48, 46, 53, 42, 40, 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 47, 40, 40,114,111,117,103,104, 42,114,111,117,103, +104, 41, 32, 43, 32, 48, 46, 51, 51, 41, 41, 41, 59, 10, 9, 9,102,108,111, 97,116, 32, 66, 32, 61, 32, 48, 46, 52, 53, 42, 40, + 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 47, 40, 40,114,111,117,103,104, 42,114,111,117,103,104, 41, 32, 43, 32, 48, + 46, 48, 57, 41, 41, 59, 10, 10, 9, 9, 98, 32, 42, 61, 32, 48, 46, 57, 53, 59, 10, 9, 9,105,115, 32, 61, 32,110,108, 42, 40, + 65, 32, 43, 32, 40, 66, 32, 42, 32,116, 32, 42, 32,115,105,110, 40, 97, 41, 32, 42, 32,116, 97,110, 40, 98, 41, 41, 41, 59, 10, + 9,125, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,116,111,111,110, 40,118,101, + 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,115,105,122,101, + 44, 32,102,108,111, 97,116, 32,116,115,109,111,111,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,105,115, 41, 10,123, + 10, 9,102,108,111, 97,116, 32,114,115,108,116, 32, 61, 32,100,111,116, 40,110, 44, 32,108, 41, 59, 10, 9,102,108,111, 97,116, + 32, 97,110,103, 32, 61, 32, 97, 99,111,115, 40,114,115,108,116, 41, 59, 10, 10, 9,105,102, 40, 97,110,103, 32, 60, 32,115,105, +122,101, 41, 32,105,115, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 97,110,103, 32, 62, 32, 40,115,105, +122,101, 32, 43, 32,116,115,109,111,111,116,104, 41, 32,124,124, 32,116,115,109,111,111,116,104, 32, 61, 61, 32, 48, 46, 48, 41, + 32,105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,105,115, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40, 40, 97,110, +103, 32, 45, 32,115,105,122,101, 41, 47,116,115,109,111,111,116,104, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100, +101, 95,100,105,102,102,117,115,101, 95,109,105,110,110, 97,101,114,116, 40,102,108,111, 97,116, 32,110,108, 44, 32,118,101, 99, + 51, 32,110, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,100, 97,114,107,110,101,115,115, 44, 32,111,117,116, + 32,102,108,111, 97,116, 32,105,115, 41, 10,123, 10, 9,105,102, 40,110,108, 32, 60, 61, 32, 48, 46, 48, 41, 32,123, 10, 9, 9, +105,115, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,110,118, 32, + 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 10, 9, 9,105,102, 40,100, 97,114, +107,110,101,115,115, 32, 60, 61, 32, 49, 46, 48, 41, 10, 9, 9, 9,105,115, 32, 61, 32,110,108, 42,112,111,119, 40,109, 97,120, + 40,110,118, 42,110,108, 44, 32, 48, 46, 49, 41, 44, 32,100, 97,114,107,110,101,115,115, 32, 45, 32, 49, 46, 48, 41, 59, 10, 9, + 9,101,108,115,101, 10, 9, 9, 9,105,115, 32, 61, 32,110,108, 42,112,111,119, 40, 49, 46, 48, 48, 48, 49, 32, 45, 32,110,118, + 44, 32,100, 97,114,107,110,101,115,115, 32, 45, 32, 49, 46, 48, 41, 59, 10, 9,125, 10,125, 10, 10,102,108,111, 97,116, 32,102, +114,101,115,110,101,108, 95,102, 97, 99, 40,118,101, 99, 51, 32,118,105,101,119, 44, 32,118,101, 99, 51, 32,118,110, 44, 32,102, +108,111, 97,116, 32,103,114, 97,100, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,116, + 49, 44, 32,116, 50, 59, 10, 9,102,108,111, 97,116, 32,102,102, 97, 99, 59, 10, 10, 9,105,102, 40,102, 97, 99, 61, 61, 48, 46, + 48, 41, 32,123, 10, 9, 9,102,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9, +116, 49, 61, 32,100,111,116, 40,118,105,101,119, 44, 32,118,110, 41, 59, 10, 9, 9,105,102, 40,116, 49, 62, 48, 46, 48, 41, 32, + 32,116, 50, 61, 32, 49, 46, 48, 43,116, 49, 59, 10, 9, 9,101,108,115,101, 32,116, 50, 61, 32, 49, 46, 48, 45,116, 49, 59, 10, + 10, 9, 9,116, 50, 61, 32,103,114, 97,100, 32, 43, 32, 40, 49, 46, 48, 45,103,114, 97,100, 41, 42,112,111,119, 40,116, 50, 44, + 32,102, 97, 99, 41, 59, 10, 10, 9, 9,105,102, 40,116, 50, 60, 48, 46, 48, 41, 32,102,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, + 10, 9, 9,101,108,115,101, 32,105,102, 40,116, 50, 62, 49, 46, 48, 41, 32,102,102, 97, 99, 32, 61, 32, 49, 46, 48, 59, 10, 9, + 9,101,108,115,101, 32,102,102, 97, 99, 32, 61, 32,116, 50, 59, 10, 9,125, 10, 10, 9,114,101,116,117,114,110, 32,102,102, 97, + 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,100,105,102,102,117,115,101, 95,102,114,101,115,110,101,108, + 40,118,101, 99, 51, 32,118,110, 44, 32,118,101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,102,108, +111, 97,116, 32,102, 97, 99, 95,105, 44, 32,102,108,111, 97,116, 32,102, 97, 99, 44, 32,111,117,116, 32,102,108,111, 97,116, 32, +105,115, 41, 10,123, 10, 9,105,115, 32, 61, 32,102,114,101,115,110,101,108, 95,102, 97, 99, 40,108,118, 44, 32,118,110, 44, 32, +102, 97, 99, 95,105, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 99,117, 98,105, 99, + 40,102,108,111, 97,116, 32,105,115, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105,115, 41, 10,123, 10, 9,105, +102, 40,105,115, 62, 48, 46, 48, 32, 38, 38, 32,105,115, 60, 49, 46, 48, 41, 10, 9, 9,111,117,116,105,115, 61, 32,115,109,111, +111,116,104,115,116,101,112, 40, 48, 46, 48, 44, 32, 49, 46, 48, 44, 32,105,115, 41, 59, 10, 9,101,108,115,101, 10, 9, 9,111, +117,116,105,115, 61, 32,105,115, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,118,105,115,105,102, 97, 99, 40, +102,108,111, 97,116, 32,105, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,102,108,111, 97,116, 32,114,101, +102,108, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,105, 41, 10,123, 10, 9, 47, 42,105,102, 40,105, 32, 62, 32, + 48, 46, 48, 41, 42, 47, 10, 9, 9,111,117,116,105, 32, 61, 32,109, 97,120, 40,105, 42,118,105,115,105,102, 97, 99, 42,114,101, +102,108, 44, 32, 48, 46, 48, 41, 59, 10, 9, 47, 42,101,108,115,101, 10, 9, 9,111,117,116,105, 32, 61, 32,105, 59, 42, 47, 10, +125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,116, 97,110,103,101,110,116, 95,118, 95,115,112,101, 99, 40,118,101, 99, + 51, 32,116, 97,110,103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,118,110, 41, 10,123, 10, 9,118,110, 32, 61, 32,116, 97,110, +103, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,100,100, 95,116,111, 95,100,105,102,102,117,115,101, 40, +102,108,111, 97,116, 32,105, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111,108, 44, 32,118,101, 99, 51, 32, 99,111,108, 44, + 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,105,102, 40,105, 32, 62, 32, 48, 46, 48, 41, + 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,105, 42,108, 97,109,112, 99,111,108, 42, 99,111,108, 59, 10, 9,101,108,115,101, + 10, 9, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 59, + 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,104,101,109,105, 95,115,112,101, 99, 40,118,101, 99, 51, 32,118,110, + 44, 32,118,101, 99, 51, 32,108,118, 44, 32,118,101, 99, 51, 32,118,105,101,119, 44, 32,102,108,111, 97,116, 32,115,112,101, 99, + 44, 32,102,108,111, 97,116, 32,104, 97,114,100, 44, 32,102,108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,111,117,116, + 32,102,108,111, 97,116, 32,116, 41, 10,123, 10, 9,108,118, 32, 43, 61, 32,118,105,101,119, 59, 10, 9,108,118, 32, 61, 32,110, +111,114,109, 97,108,105,122,101, 40,108,118, 41, 59, 10, 10, 9,116, 32, 61, 32,100,111,116, 40,118,110, 44, 32,108,118, 41, 59, + 10, 9,116, 32, 61, 32, 48, 46, 53, 42,116, 32, 43, 32, 48, 46, 53, 59, 10, 10, 9,116, 32, 61, 32,118,105,115,105,102, 97, 99, + 42,115,112,101, 99, 42,112,111,119, 40,116, 44, 32,104, 97,114,100, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100, +101, 95,112,104,111,110,103, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, + 51, 32,118, 44, 32,102,108,111, 97,116, 32,104, 97,114,100, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, + 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, 43, 32,118, 41, + 59, 10, 9,102,108,111, 97,116, 32,114,115,108,116, 32, 61, 32,109, 97,120, 40,100,111,116, 40,104, 44, 32,110, 41, 44, 32, 48, + 46, 48, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,112,111,119, 40,114,115,108,116, 44, 32,104, 97,114,100, 41, + 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 99,111,111,107,116,111,114,114, 95,115,112,101, 99, 40,118,101, + 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,104, 97,114,100, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, 32, 61, + 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32,108, 41, 59, 10, 9,102,108,111, 97,116, 32,110,104, 32, 61, 32,100, +111,116, 40,110, 44, 32,104, 41, 59, 10, 10, 9,105,102, 40,110,104, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9,115,112,101, + 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, 10, 9, 9,102,108,111, 97,116, 32,110, +118, 32, 61, 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9,102,108,111, 97,116, + 32,105, 32, 61, 32,112,111,119, 40,110,104, 44, 32,104, 97,114,100, 41, 59, 10, 10, 9, 9,105, 32, 61, 32,105, 47, 40, 48, 46, + 49, 43,110,118, 41, 59, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,105, 59, 10, 9,125, 10,125, 10, 10,118,111,105,100, + 32,115,104, 97,100,101, 95, 98,108,105,110,110, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32,118,101, 99, 51, 32,108, + 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,114,101,102,114, 97, 99, 44, 32,102,108,111, 97,116, 32,115,112, +101, 99, 95,112,111,119,101,114, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9, +105,102, 40,114,101,102,114, 97, 99, 32, 60, 32, 49, 46, 48, 41, 32,123, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, + 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,105,102, 40,115,112,101, 99, 95,112,111,119,101,114, 32, 61, 61, 32, 48, 46, + 48, 41, 32,123, 10, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, + 10, 9, 9,105,102, 40,115,112,101, 99, 95,112,111,119,101,114, 60, 49, 48, 48, 46, 48, 41, 10, 9, 9, 9,115,112,101, 99, 95, +112,111,119,101,114, 61, 32,115,113,114,116, 40, 49, 46, 48, 47,115,112,101, 99, 95,112,111,119,101,114, 41, 59, 10, 9, 9,101, +108,115,101, 10, 9, 9, 9,115,112,101, 99, 95,112,111,119,101,114, 61, 32, 49, 48, 46, 48, 47,115,112,101, 99, 95,112,111,119, +101,114, 59, 10, 10, 9, 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,118, 32, 43, 32,108, 41, + 59, 10, 9, 9,102,108,111, 97,116, 32,110,104, 32, 61, 32,100,111,116, 40,110, 44, 32,104, 41, 59, 10, 9, 9,105,102, 40,110, +104, 32, 60, 32, 48, 46, 48, 41, 32,123, 10, 9, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9,125, + 10, 9, 9,101,108,115,101, 32,123, 10, 9, 9, 9,102,108,111, 97,116, 32,110,118, 32, 61, 32,109, 97,120, 40,100,111,116, 40, +110, 44, 32,118, 41, 44, 32, 48, 46, 48, 49, 41, 59, 10, 9, 9, 9,102,108,111, 97,116, 32,110,108, 32, 61, 32,100,111,116, 40, +110, 44, 32,108, 41, 59, 10, 9, 9, 9,105,102, 40,110,108, 32, 60, 61, 32, 48, 46, 48, 49, 41, 32,123, 10, 9, 9, 9, 9,115, +112,101, 99,102, 97, 99, 32, 61, 32, 48, 46, 48, 59, 10, 9, 9, 9,125, 10, 9, 9, 9,101,108,115,101, 32,123, 10, 9, 9, 9, + 9,102,108,111, 97,116, 32,118,104, 32, 61, 32,109, 97,120, 40,100,111,116, 40,118, 44, 32,104, 41, 44, 32, 48, 46, 48, 49, 41, + 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, 97, 32, 61, 32, 49, 46, 48, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, + 98, 32, 61, 32, 40, 50, 46, 48, 42,110,104, 42,110,118, 41, 47,118,104, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, 99, 32, + 61, 32, 40, 50, 46, 48, 42,110,104, 42,110,108, 41, 47,118,104, 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32,103, 32, 61, + 32, 48, 46, 48, 59, 10, 10, 9, 9, 9, 9,105,102, 40, 97, 32, 60, 32, 98, 32, 38, 38, 32, 97, 32, 60, 32, 99, 41, 32,103, 32, + 61, 32, 97, 59, 10, 9, 9, 9, 9,101,108,115,101, 32,105,102, 40, 98, 32, 60, 32, 97, 32, 38, 38, 32, 98, 32, 60, 32, 99, 41, + 32,103, 32, 61, 32, 98, 59, 10, 9, 9, 9, 9,101,108,115,101, 32,105,102, 40, 99, 32, 60, 32, 97, 32, 38, 38, 32, 99, 32, 60, + 32, 98, 41, 32,103, 32, 61, 32, 99, 59, 10, 10, 9, 9, 9, 9,102,108,111, 97,116, 32,112, 32, 61, 32,115,113,114,116, 40, 40, + 40,114,101,102,114, 97, 99, 32, 42, 32,114,101,102,114, 97, 99, 41, 43, 40,118,104, 42,118,104, 41, 45, 49, 46, 48, 41, 41, 59, + 10, 9, 9, 9, 9,102,108,111, 97,116, 32,102, 32, 61, 32, 40, 40, 40,112, 45,118,104, 41, 42, 40,112, 45,118,104, 41, 41, 47, + 40, 40,112, 43,118,104, 41, 42, 40,112, 43,118,104, 41, 41, 41, 42, 40, 49, 46, 48, 43, 40, 40, 40, 40,118,104, 42, 40,112, 43, +118,104, 41, 41, 45, 49, 46, 48, 41, 42, 40, 40,118,104, 42, 40,112, 43,118,104, 41, 41, 45, 49, 46, 48, 41, 41, 47, 40, 40, 40, +118,104, 42, 40,112, 45,118,104, 41, 41, 43, 49, 46, 48, 41, 42, 40, 40,118,104, 42, 40,112, 45,118,104, 41, 41, 43, 49, 46, 48, + 41, 41, 41, 41, 59, 10, 9, 9, 9, 9,102,108,111, 97,116, 32, 97,110,103, 32, 61, 32, 97, 99,111,115, 40,110,104, 41, 59, 10, + 10, 9, 9, 9, 9,115,112,101, 99,102, 97, 99, 32, 61, 32,109, 97,120, 40,102, 42,103, 42,101,120,112, 95, 98,108,101,110,100, +101,114, 40, 40, 45, 40, 97,110,103, 42, 97,110,103, 41, 47, 40, 50, 46, 48, 42,115,112,101, 99, 95,112,111,119,101,114, 42,115, +112,101, 99, 95,112,111,119,101,114, 41, 41, 41, 44, 32, 48, 46, 48, 41, 59, 10, 9, 9, 9,125, 10, 9, 9,125, 10, 9,125, 10, +125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,119, 97,114,100,105,115,111, 95,115,112,101, 99, 40,118,101, 99, 51, 32, +110, 44, 32,118,101, 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,114,109,115, 44, 32,111,117, +116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,118,101, 99, 51, 32,104, 32, 61, 32,110,111,114, +109, 97,108,105,122,101, 40,108, 32, 43, 32,118, 41, 59, 10, 9,102,108,111, 97,116, 32,110,104, 32, 61, 32,109, 97,120, 40,100, +111,116, 40,110, 44, 32,104, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, 32,110,118, 32, 61, 32,109, 97, +120, 40,100,111,116, 40,110, 44, 32,118, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, 32,110,108, 32, 61, + 32,109, 97,120, 40,100,111,116, 40,110, 44, 32,108, 41, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 9,102,108,111, 97,116, 32, 97, +110,103,108,101, 32, 61, 32,116, 97,110, 40, 97, 99,111,115, 40,110,104, 41, 41, 59, 10, 9,102,108,111, 97,116, 32, 97,108,112, +104, 97, 32, 61, 32,109, 97,120, 40,114,109,115, 44, 32, 48, 46, 48, 48, 49, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, 99, 61, + 32,110,108, 32, 42, 32, 40, 49, 46, 48, 47, 40, 52, 46, 48, 42, 77, 95, 80, 73, 42, 97,108,112,104, 97, 42, 97,108,112,104, 97, + 41, 41, 42, 40,101,120,112, 95, 98,108,101,110,100,101,114, 40, 45, 40, 97,110,103,108,101, 42, 97,110,103,108,101, 41, 47, 40, + 97,108,112,104, 97, 42, 97,108,112,104, 97, 41, 41, 47, 40,115,113,114,116, 40,110,118, 42,110,108, 41, 41, 41, 59, 10,125, 10, + 10,118,111,105,100, 32,115,104, 97,100,101, 95,116,111,111,110, 95,115,112,101, 99, 40,118,101, 99, 51, 32,110, 44, 32,118,101, + 99, 51, 32,108, 44, 32,118,101, 99, 51, 32,118, 44, 32,102,108,111, 97,116, 32,115,105,122,101, 44, 32,102,108,111, 97,116, 32, +116,115,109,111,111,116,104, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,118, +101, 99, 51, 32,104, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40,108, 32, 43, 32,118, 41, 59, 10, 9,102,108,111, 97,116, + 32,114,115,108,116, 32, 61, 32,100,111,116, 40,104, 44, 32,110, 41, 59, 10, 9,102,108,111, 97,116, 32, 97,110,103, 32, 61, 32, + 97, 99,111,115, 40,114,115,108,116, 41, 59, 10, 10, 9,105,102, 40, 97,110,103, 32, 60, 32,115,105,122,101, 41, 32,114,115,108, +116, 32, 61, 32, 49, 46, 48, 59, 10, 9,101,108,115,101, 32,105,102, 40, 97,110,103, 32, 62, 61, 32, 40,115,105,122,101, 32, 43, + 32,116,115,109,111,111,116,104, 41, 32,124,124, 32,116,115,109,111,111,116,104, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,115,108, +116, 32, 61, 32, 48, 46, 48, 59, 10, 9,101,108,115,101, 32,114,115,108,116, 32, 61, 32, 49, 46, 48, 32, 45, 32, 40, 40, 97,110, +103, 32, 45, 32,115,105,122,101, 41, 47,116,115,109,111,111,116,104, 41, 59, 10, 10, 9,115,112,101, 99,102, 97, 99, 32, 61, 32, +114,115,108,116, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,115,112,101, 99, 95, 97,114,101, 97, 95,105,110, +112, 40,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 44, 32,102,108,111, 97,116, 32,105,110,112, 44, 32,111,117,116, 32, +102,108,111, 97,116, 32,111,117,116,115,112,101, 99,102, 97, 99, 41, 10,123, 10, 9,111,117,116,115,112,101, 99,102, 97, 99, 32, + 61, 32,115,112,101, 99,102, 97, 99, 42,105,110,112, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,115,112,101, + 99, 95,116, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,102,108,111, 97,116, 32,115,112,101, 99, 44, 32,102, +108,111, 97,116, 32,118,105,115,105,102, 97, 99, 44, 32,102,108,111, 97,116, 32,115,112,101, 99,102, 97, 99, 44, 32,111,117,116, + 32,102,108,111, 97,116, 32,116, 41, 10,123, 10, 9,116, 32, 61, 32,115,104, 97,100,102, 97, 99, 42,115,112,101, 99, 42,118,105, +115,105,102, 97, 99, 42,115,112,101, 99,102, 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,100,100, + 95,115,112,101, 99, 40,102,108,111, 97,116, 32,116, 44, 32,118,101, 99, 51, 32,108, 97,109,112, 99,111,108, 44, 32,118,101, 99, + 51, 32,115,112,101, 99, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111, +117,116, 99,111,108, 32, 61, 32,116, 42,108, 97,109,112, 99,111,108, 42,115,112,101, 99, 99,111,108, 59, 10,125, 10, 10,118,111, +105,100, 32,115,104, 97,100,101, 95, 97,100,100, 40,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, + 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, + 99,111,108, 49, 32, 43, 32, 99,111,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, 97,100,100, 40, +118,101, 99, 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, + 32, 43, 32, 99,111,108, 49, 42, 99,111,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,100,100, 95, + 99,108, 97,109,112,101,100, 40,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117, +116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 32, + 43, 32,109, 97,120, 40, 99,111,108, 50, 44, 32,118,101, 99, 52, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, + 48, 46, 48, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, 97,100,100, 95, 99,108, 97,109,112,101, 100, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99, -111,108, 32, 43, 32, 99,111,108, 49, 42, 99,111,108, 50, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,100, -100, 95, 99,108, 97,109,112,101,100, 40,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32, -111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, - 49, 32, 43, 32,109, 97,120, 40, 99,111,108, 50, 44, 32,118,101, 99, 52, 40, 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, - 44, 32, 48, 46, 48, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, 97,100,100, 95, 99,108, 97,109, -112,101,100, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111, -108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, - 32, 99,111,108, 32, 43, 32,109, 97,120, 40, 99,111,108, 49, 42, 99,111,108, 50, 44, 32,118,101, 99, 52, 40, 48, 46, 48, 44, 32, - 48, 46, 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, - 97,100,100,102, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 44, 32,118,101, 99, 52, 32, 99,111,108, - 49, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, - 99,111,108, 32, 43, 32,102, 42, 99,111,108, 49, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109,117,108, 40, -118,101, 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111, -117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 42, 99,111,108, 50, 59, 10,125, 10, - 10,118,111,105,100, 32,115,104, 97,100,101, 95,109,117,108, 95,118, 97,108,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, - 32,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111, -117,116, 99,111,108, 32, 61, 32, 99,111,108, 42,102, 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111, - 98, 99,111,108,111,114, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32,111, 98, 99,111,108, 44, 32,111,117,116, - 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99, -111,108, 46,114,103, 98, 42,111, 98, 99,111,108, 46,114,103, 98, 44, 32, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10,118,111,105, -100, 32,114, 97,109,112, 95,114,103, 98,116,111, 98,119, 40,118,101, 99, 51, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102, -108,111, 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, - 42, 48, 46, 51, 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, 46, 53, 56, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, - 49, 50, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111,119, 40,102,108, -111, 97,116, 32,105, 44, 32,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,102,108,111, 97,116, 32,101,110,101,114, -103,121, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115,104, 97,100,102, 97, 99, 41, 10,123, 10, 9,111,117,116, -115,104, 97,100,102, 97, 99, 32, 61, 32,105, 42,101,110,101,114,103,121, 42, 40, 49, 46, 48, 32, 45, 32,115,104, 97,100,102, 97, - 99, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111,119, 95,100,105, -102,102,117,115,101, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,118,101, 99, 51, 32,114,103, 98, 44, 32,118, -101, 99, 52, 32,100,105,102,102, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,100,105,102,102, 41, 10,123, 10, 9,111, -117,116,100,105,102,102, 32, 61, 32,100,105,102,102, 32, 45, 32,118,101, 99, 52, 40,114,103, 98, 42,115,104, 97,100,102, 97, 99, - 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111, -119, 95,115,112,101, 99,117,108, 97,114, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,118,101, 99, 51, 32,115, -112,101, 99,114,103, 98, 44, 32,118,101, 99, 52, 32,115,112,101, 99, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,115, -112,101, 99, 41, 10,123, 10, 9,111,117,116,115,112,101, 99, 32, 61, 32,115,112,101, 99, 32, 45, 32,118,101, 99, 52, 40,115,112, -101, 99,114,103, 98, 42,115,104, 97,100,102, 97, 99, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,115, -116, 95,115,104, 97,100,111,119, 98,117,102, 40,118,101, 99, 51, 32,114, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 83, -104, 97,100,111,119, 32,115,104, 97,100,111,119,109, 97,112, 44, 32,109, 97,116, 52, 32,115,104, 97,100,111,119,112,101,114,115, -109, 97,116, 44, 32,102,108,111, 97,116, 32,115,104, 97,100,111,119, 98,105, 97,115, 44, 32,102,108,111, 97,116, 32,105,110,112, - 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,105,102, 40,105,110,112, 32, 60, 61, - 32, 48, 46, 48, 41, 32,123, 10, 9, 9,114,101,115,117,108,116, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, - 32,123, 10, 9, 9,118,101, 99, 52, 32, 99,111, 32, 61, 32,115,104, 97,100,111,119,112,101,114,115,109, 97,116, 42,118,101, 99, - 52, 40,114, 99,111, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9, 9, 47, 47,102,108,111, 97,116, 32, 98,105, 97,115, 32, 61, 32, 40, - 49, 46, 53, 32, 45, 32,105,110,112, 42,105,110,112, 41, 42,115,104, 97,100,111,119, 98,105, 97,115, 59, 10, 9, 9, 99,111, 46, -122, 32, 45, 61, 32,115,104, 97,100,111,119, 98,105, 97,115, 42, 99,111, 46,119, 59, 10, 10, 9, 9,114,101,115,117,108,116, 32, - 61, 32,115,104, 97,100,111,119, 50, 68, 80,114,111,106, 40,115,104, 97,100,111,119,109, 97,112, 44, 32, 99,111, 41, 46,120, 59, - 10, 9,125, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,101,120,112,111,115,117,114,101, 95, 99,111,114,114,101, - 99,116, 40,118,101, 99, 51, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32,108,105,110,102, 97, 99, 44, 32,102,108,111, 97,116, - 32,108,111,103,102, 97, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, - 99,111,108, 32, 61, 32,108,105,110,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32,101,120,112, 40, 99,111,108, 42,108,111,103,102, - 97, 99, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109,105,115,116, 95,102, 97, 99,116,111,114, 40, -118,101, 99, 51, 32, 99,111, 44, 32,102,108,111, 97,116, 32,109,105,115,116,115,116, 97, 44, 32,102,108,111, 97,116, 32,109,105, -115,116,100,105,115,116, 44, 32,102,108,111, 97,116, 32,109,105,115,116,116,121,112,101, 44, 32,102,108,111, 97,116, 32,109,105, -115,105, 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, - 97, 99, 44, 32,122, 99,111,114, 59, 10, 10, 9,122, 99,111,114, 32, 61, 32, 40,103,108, 95, 80,114,111,106,101, 99,116,105,111, -110, 77, 97,116,114,105,120, 91, 51, 93, 91, 51, 93, 32, 61, 61, 32, 48, 46, 48, 41, 63, 32,108,101,110,103,116,104, 40, 99,111, - 41, 58, 32, 45, 99,111, 91, 50, 93, 59, 10, 9, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40, 40,122, 99,111,114, 45, -109,105,115,116,115,116, 97, 41, 47,109,105,115,116,100,105,115,116, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,105, -102, 40,109,105,115,116,116,121,112,101, 32, 61, 61, 32, 48, 46, 48, 41, 32,102, 97, 99, 32, 42, 61, 32,102, 97, 99, 59, 10, 9, -101,108,115,101, 32,105,102, 40,109,105,115,116,116,121,112,101, 32, 61, 61, 32, 49, 46, 48, 41, 59, 10, 9,101,108,115,101, 32, -102, 97, 99, 32, 61, 32,115,113,114,116, 40,102, 97, 99, 41, 59, 10, 10, 9,111,117,116,102, 97, 99, 32, 61, 32, 49, 46, 48, 32, - 45, 32, 40, 49, 46, 48, 45,102, 97, 99, 41, 42, 40, 49, 46, 48, 45,109,105,115,105, 41, 59, 10,125, 10, 10,118,111,105,100, 32, -115,104, 97,100,101, 95,119,111,114,108,100, 95,109,105,120, 40,118,101, 99, 51, 32,104,111,114, 44, 32,118,101, 99, 52, 32, 99, -111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, - 99, 32, 61, 32, 99,108, 97,109,112, 40, 99,111,108, 46, 97, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, - 99,111,108, 32, 61, 32,118,101, 99, 52, 40,109,105,120, 40,104,111,114, 44, 32, 99,111,108, 46,114,103, 98, 44, 32,102, 97, 99, - 41, 44, 32, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,108,112,104, 97, 95,111, -112, 97,113,117,101, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, - 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 49, 46, 48, 41, 59, - 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,108,112,104, 97, 95,111, 98, 99,111,108,111,114, 40,118,101, 99, - 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32,111, 98, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99, -111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 99,111, -108, 46, 97, 42,111, 98, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 78, 69, - 87, 32, 83, 72, 65, 68, 69, 82, 32, 85, 84, 73, 76, 73, 84, 73, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 47, 10, 10,102,108,111, 97,116, 32,102,114,101,115,110,101,108, 95,100,105,101,108,101, 99,116,114,105, 99, 40,118,101, 99, - 51, 32, 73,110, 99,111,109,105,110,103, 44, 32,118,101, 99, 51, 32, 78,111,114,109, 97,108, 44, 32,102,108,111, 97,116, 32,101, -116, 97, 41, 10,123, 10, 32, 32, 32, 32, 47, 42, 32, 99,111,109,112,117,116,101, 32,102,114,101,115,110,101,108, 32,114,101,102, -108,101, 99,116, 97,110, 99,101, 32,119,105,116,104,111,117,116, 32,101,120,112,108,105, 99,105,116,108,121, 32, 99,111,109,112, -117,116,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32,116,104,101, 32,114,101,102,114, 97, 99,116,101,100, 32,100,105,114,101, 99, -116,105,111,110, 32, 42, 47, 10, 32, 32, 32, 32,102,108,111, 97,116, 32, 99, 32, 61, 32, 97, 98,115, 40,100,111,116, 40, 73,110, - 99,111,109,105,110,103, 44, 32, 78,111,114,109, 97,108, 41, 41, 59, 10, 32, 32, 32, 32,102,108,111, 97,116, 32,103, 32, 61, 32, -101,116, 97, 32, 42, 32,101,116, 97, 32, 45, 32, 49, 46, 48, 32, 43, 32, 99, 32, 42, 32, 99, 59, 10, 32, 32, 32, 32,102,108,111, - 97,116, 32,114,101,115,117,108,116, 59, 10, 10, 32, 32, 32, 32,105,102, 40,103, 32, 62, 32, 48, 46, 48, 41, 32,123, 10, 32, 32, - 32, 32, 32, 32, 32, 32,103, 32, 61, 32,115,113,114,116, 40,103, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,108,111, 97,116, - 32, 65, 32, 61, 40,103, 32, 45, 32, 99, 41, 47, 40,103, 32, 43, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,108,111, - 97,116, 32, 66, 32, 61, 40, 99, 32, 42, 40,103, 32, 43, 32, 99, 41, 45, 32, 49, 46, 48, 41, 47, 40, 99, 32, 42, 40,103, 32, 45, - 32, 99, 41, 43, 32, 49, 46, 48, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115,117,108,116, 32, 61, 32, 48, 46, 53, 32, - 42, 32, 65, 32, 42, 32, 65, 32, 42, 40, 49, 46, 48, 32, 43, 32, 66, 32, 42, 32, 66, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32, - 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115,117,108,116, 32, 61, 32, 49, 46, 48, 59, 32, 32, 47, 42, - 32, 84, 73, 82, 32, 40,110,111, 32,114,101,102,114, 97, 99,116,101,100, 32, 99,111,109,112,111,110,101,110,116, 41, 32, 42, 47, - 10, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108,116, 59, 10,125, 10, 10,102,108,111, 97,116, 32,104,121, -112,111,116, 40,102,108,111, 97,116, 32,120, 44, 32,102,108,111, 97,116, 32,121, 41, 10,123, 10, 9,114,101,116,117,114,110, 32, -115,113,114,116, 40,120, 42,120, 32, 43, 32,121, 42,121, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 32, 78, 69, 87, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 47, 10, 10, 35,100,101,102,105,110,101, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 32, 51, 10, 10, 47, 42, 32, 98,115,100, -102,115, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,100,105,102,102,117,115,101, 40,118,101, - 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 44, 32,118,101, 99, 51, 32, - 78, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9, 47, 42, 32, 97,109, 98,105,101,110, -116, 32,108,105,103,104,116, 32, 42, 47, 10, 9,118,101, 99, 51, 32, 76, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 50, 41, 59, 10, - 10, 9, 47, 42, 32,100,105,114,101, 99,116,105,111,110, 97,108, 32,108,105,103,104,116,115, 32, 42, 47, 10, 9,102,111,114, 40, -105,110,116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 59, 32,105, 43, 43, 41, 32, -123, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 32, 61, 32,103,108, 95, 76,105,103, -104,116, 83,111,117,114, 99,101, 91,105, 93, 46,112,111,115,105,116,105,111,110, 46,120,121,122, 59, 10, 9, 9,118,101, 99, 51, - 32,108,105,103,104,116, 95,100,105,102,102,117,115,101, 32, 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91, -105, 93, 46,100,105,102,102,117,115,101, 46,114,103, 98, 59, 10, 10, 9, 9,102,108,111, 97,116, 32, 98,115,100,102, 32, 61, 32, -109, 97,120, 40,100,111,116, 40, 78, 44, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 41, 44, 32, 48, 46, 48, 41, - 59, 10, 9, 9, 76, 32, 43, 61, 32,108,105,103,104,116, 95,100,105,102,102,117,115,101, 42, 98,115,100,102, 59, 10, 9,125, 10, - 10, 9,114,101,115,117,108,116, 32, 61, 32,118,101, 99, 52, 40, 76, 42, 99,111,108,111,114, 46,114,103, 98, 44, 32, 49, 46, 48, - 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,103,108,111,115,115,121, 40,118,101, 99, 52, +111,108, 32, 43, 32,109, 97,120, 40, 99,111,108, 49, 42, 99,111,108, 50, 44, 32,118,101, 99, 52, 40, 48, 46, 48, 44, 32, 48, 46, + 48, 44, 32, 48, 46, 48, 44, 32, 48, 46, 48, 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109, 97,100, +100,102, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32,102, 44, 32,118,101, 99, 52, 32, 99,111,108, 49, 44, + 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111, +108, 32, 43, 32,102, 42, 99,111,108, 49, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109,117,108, 40,118,101, + 99, 52, 32, 99,111,108, 49, 44, 32,118,101, 99, 52, 32, 99,111,108, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, + 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32, 99,111,108, 49, 42, 99,111,108, 50, 59, 10,125, 10, 10,118, +111,105,100, 32,115,104, 97,100,101, 95,109,117,108, 95,118, 97,108,117,101, 40,102,108,111, 97,116, 32,102, 97, 99, 44, 32,118, +101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, + 99,111,108, 32, 61, 32, 99,111,108, 42,102, 97, 99, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111, 98, 99, +111,108,111,114, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,118,101, 99, 52, 32,111, 98, 99,111,108, 44, 32,111,117,116, 32,118, +101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, + 46,114,103, 98, 42,111, 98, 99,111,108, 46,114,103, 98, 44, 32, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32, +114, 97,109,112, 95,114,103, 98,116,111, 98,119, 40,118,101, 99, 51, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,102,108,111, + 97,116, 32,111,117,116,118, 97,108, 41, 10,123, 10, 9,111,117,116,118, 97,108, 32, 61, 32, 99,111,108,111,114, 46,114, 42, 48, + 46, 51, 32, 43, 32, 99,111,108,111,114, 46,103, 42, 48, 46, 53, 56, 32, 43, 32, 99,111,108,111,114, 46, 98, 42, 48, 46, 49, 50, + 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111,119, 40,102,108,111, 97, +116, 32,105, 44, 32,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,102,108,111, 97,116, 32,101,110,101,114,103,121, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,115,104, 97,100,102, 97, 99, 41, 10,123, 10, 9,111,117,116,115,104, + 97,100,102, 97, 99, 32, 61, 32,105, 42,101,110,101,114,103,121, 42, 40, 49, 46, 48, 32, 45, 32,115,104, 97,100,102, 97, 99, 41, + 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111,119, 95,100,105,102,102, +117,115,101, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,118,101, 99, 51, 32,114,103, 98, 44, 32,118,101, 99, + 52, 32,100,105,102,102, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,100,105,102,102, 41, 10,123, 10, 9,111,117,116, +100,105,102,102, 32, 61, 32,100,105,102,102, 32, 45, 32,118,101, 99, 52, 40,114,103, 98, 42,115,104, 97,100,102, 97, 99, 44, 32, + 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,111,110,108,121, 95,115,104, 97,100,111,119, 95, +115,112,101, 99,117,108, 97,114, 40,102,108,111, 97,116, 32,115,104, 97,100,102, 97, 99, 44, 32,118,101, 99, 51, 32,115,112,101, + 99,114,103, 98, 44, 32,118,101, 99, 52, 32,115,112,101, 99, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116,115,112,101, + 99, 41, 10,123, 10, 9,111,117,116,115,112,101, 99, 32, 61, 32,115,112,101, 99, 32, 45, 32,118,101, 99, 52, 40,115,112,101, 99, +114,103, 98, 42,115,104, 97,100,102, 97, 99, 44, 32, 48, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,116,101,115,116, 95, +115,104, 97,100,111,119, 98,117,102, 40,118,101, 99, 51, 32,114, 99,111, 44, 32,115, 97,109,112,108,101,114, 50, 68, 83,104, 97, +100,111,119, 32,115,104, 97,100,111,119,109, 97,112, 44, 32,109, 97,116, 52, 32,115,104, 97,100,111,119,112,101,114,115,109, 97, +116, 44, 32,102,108,111, 97,116, 32,115,104, 97,100,111,119, 98,105, 97,115, 44, 32,102,108,111, 97,116, 32,105,110,112, 44, 32, +111,117,116, 32,102,108,111, 97,116, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,105,102, 40,105,110,112, 32, 60, 61, 32, 48, + 46, 48, 41, 32,123, 10, 9, 9,114,101,115,117,108,116, 32, 61, 32, 48, 46, 48, 59, 10, 9,125, 10, 9,101,108,115,101, 32,123, + 10, 9, 9,118,101, 99, 52, 32, 99,111, 32, 61, 32,115,104, 97,100,111,119,112,101,114,115,109, 97,116, 42,118,101, 99, 52, 40, +114, 99,111, 44, 32, 49, 46, 48, 41, 59, 10, 10, 9, 9, 47, 47,102,108,111, 97,116, 32, 98,105, 97,115, 32, 61, 32, 40, 49, 46, + 53, 32, 45, 32,105,110,112, 42,105,110,112, 41, 42,115,104, 97,100,111,119, 98,105, 97,115, 59, 10, 9, 9, 99,111, 46,122, 32, + 45, 61, 32,115,104, 97,100,111,119, 98,105, 97,115, 42, 99,111, 46,119, 59, 10, 10, 9, 9,114,101,115,117,108,116, 32, 61, 32, +115,104, 97,100,111,119, 50, 68, 80,114,111,106, 40,115,104, 97,100,111,119,109, 97,112, 44, 32, 99,111, 41, 46,120, 59, 10, 9, +125, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,101,120,112,111,115,117,114,101, 95, 99,111,114,114,101, 99,116, + 40,118,101, 99, 51, 32, 99,111,108, 44, 32,102,108,111, 97,116, 32,108,105,110,102, 97, 99, 44, 32,102,108,111, 97,116, 32,108, +111,103,102, 97, 99, 44, 32,111,117,116, 32,118,101, 99, 51, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,111,117,116, 99,111, +108, 32, 61, 32,108,105,110,102, 97, 99, 42, 40, 49, 46, 48, 32, 45, 32,101,120,112, 40, 99,111,108, 42,108,111,103,102, 97, 99, + 41, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95,109,105,115,116, 95,102, 97, 99,116,111,114, 40,118,101, + 99, 51, 32, 99,111, 44, 32,102,108,111, 97,116, 32,109,105,115,116,115,116, 97, 44, 32,102,108,111, 97,116, 32,109,105,115,116, +100,105,115,116, 44, 32,102,108,111, 97,116, 32,109,105,115,116,116,121,112,101, 44, 32,102,108,111, 97,116, 32,109,105,115,105, + 44, 32,111,117,116, 32,102,108,111, 97,116, 32,111,117,116,102, 97, 99, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99, + 44, 32,122, 99,111,114, 59, 10, 10, 9,122, 99,111,114, 32, 61, 32, 40,103,108, 95, 80,114,111,106,101, 99,116,105,111,110, 77, + 97,116,114,105,120, 91, 51, 93, 91, 51, 93, 32, 61, 61, 32, 48, 46, 48, 41, 63, 32,108,101,110,103,116,104, 40, 99,111, 41, 58, + 32, 45, 99,111, 91, 50, 93, 59, 10, 9, 10, 9,102, 97, 99, 32, 61, 32, 99,108, 97,109,112, 40, 40,122, 99,111,114, 45,109,105, +115,116,115,116, 97, 41, 47,109,105,115,116,100,105,115,116, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,105,102, 40, +109,105,115,116,116,121,112,101, 32, 61, 61, 32, 48, 46, 48, 41, 32,102, 97, 99, 32, 42, 61, 32,102, 97, 99, 59, 10, 9,101,108, +115,101, 32,105,102, 40,109,105,115,116,116,121,112,101, 32, 61, 61, 32, 49, 46, 48, 41, 59, 10, 9,101,108,115,101, 32,102, 97, + 99, 32, 61, 32,115,113,114,116, 40,102, 97, 99, 41, 59, 10, 10, 9,111,117,116,102, 97, 99, 32, 61, 32, 49, 46, 48, 32, 45, 32, + 40, 49, 46, 48, 45,102, 97, 99, 41, 42, 40, 49, 46, 48, 45,109,105,115,105, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, + 97,100,101, 95,119,111,114,108,100, 95,109,105,120, 40,118,101, 99, 51, 32,104,111,114, 44, 32,118,101, 99, 52, 32, 99,111,108, + 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10, 9,102,108,111, 97,116, 32,102, 97, 99, 32, + 61, 32, 99,108, 97,109,112, 40, 99,111,108, 46, 97, 44, 32, 48, 46, 48, 44, 32, 49, 46, 48, 41, 59, 10, 9,111,117,116, 99,111, +108, 32, 61, 32,118,101, 99, 52, 40,109,105,120, 40,104,111,114, 44, 32, 99,111,108, 46,114,103, 98, 44, 32,102, 97, 99, 41, 44, + 32, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,108,112,104, 97, 95,111,112, 97, +113,117,101, 40,118,101, 99, 52, 32, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, + 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 49, 46, 48, 41, 59, 10,125, + 10, 10,118,111,105,100, 32,115,104, 97,100,101, 95, 97,108,112,104, 97, 95,111, 98, 99,111,108,111,114, 40,118,101, 99, 52, 32, + 99,111,108, 44, 32,118,101, 99, 52, 32,111, 98, 99,111,108, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, + 41, 10,123, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40, 99,111,108, 46,114,103, 98, 44, 32, 99,111,108, 46, + 97, 42,111, 98, 99,111,108, 46, 97, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 78, 69, 87, 32, + 83, 72, 65, 68, 69, 82, 32, 85, 84, 73, 76, 73, 84, 73, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, + 10, 10,102,108,111, 97,116, 32,102,114,101,115,110,101,108, 95,100,105,101,108,101, 99,116,114,105, 99, 40,118,101, 99, 51, 32, + 73,110, 99,111,109,105,110,103, 44, 32,118,101, 99, 51, 32, 78,111,114,109, 97,108, 44, 32,102,108,111, 97,116, 32,101,116, 97, + 41, 10,123, 10, 32, 32, 32, 32, 47, 42, 32, 99,111,109,112,117,116,101, 32,102,114,101,115,110,101,108, 32,114,101,102,108,101, + 99,116, 97,110, 99,101, 32,119,105,116,104,111,117,116, 32,101,120,112,108,105, 99,105,116,108,121, 32, 99,111,109,112,117,116, +105,110,103, 10, 32, 32, 32, 32, 32, 32, 32,116,104,101, 32,114,101,102,114, 97, 99,116,101,100, 32,100,105,114,101, 99,116,105, +111,110, 32, 42, 47, 10, 32, 32, 32, 32,102,108,111, 97,116, 32, 99, 32, 61, 32, 97, 98,115, 40,100,111,116, 40, 73,110, 99,111, +109,105,110,103, 44, 32, 78,111,114,109, 97,108, 41, 41, 59, 10, 32, 32, 32, 32,102,108,111, 97,116, 32,103, 32, 61, 32,101,116, + 97, 32, 42, 32,101,116, 97, 32, 45, 32, 49, 46, 48, 32, 43, 32, 99, 32, 42, 32, 99, 59, 10, 32, 32, 32, 32,102,108,111, 97,116, + 32,114,101,115,117,108,116, 59, 10, 10, 32, 32, 32, 32,105,102, 40,103, 32, 62, 32, 48, 46, 48, 41, 32,123, 10, 32, 32, 32, 32, + 32, 32, 32, 32,103, 32, 61, 32,115,113,114,116, 40,103, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,108,111, 97,116, 32, 65, + 32, 61, 40,103, 32, 45, 32, 99, 41, 47, 40,103, 32, 43, 32, 99, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,108,111, 97,116, + 32, 66, 32, 61, 40, 99, 32, 42, 40,103, 32, 43, 32, 99, 41, 45, 32, 49, 46, 48, 41, 47, 40, 99, 32, 42, 40,103, 32, 45, 32, 99, + 41, 43, 32, 49, 46, 48, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115,117,108,116, 32, 61, 32, 48, 46, 53, 32, 42, 32, + 65, 32, 42, 32, 65, 32, 42, 40, 49, 46, 48, 32, 43, 32, 66, 32, 42, 32, 66, 41, 59, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, +101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115,117,108,116, 32, 61, 32, 49, 46, 48, 59, 32, 32, 47, 42, 32, 84, + 73, 82, 32, 40,110,111, 32,114,101,102,114, 97, 99,116,101,100, 32, 99,111,109,112,111,110,101,110,116, 41, 32, 42, 47, 10, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108,116, 59, 10,125, 10, 10,102,108,111, 97,116, 32,104,121,112,111, +116, 40,102,108,111, 97,116, 32,120, 44, 32,102,108,111, 97,116, 32,121, 41, 10,123, 10, 9,114,101,116,117,114,110, 32,115,113, +114,116, 40,120, 42,120, 32, 43, 32,121, 42,121, 41, 59, 10,125, 10, 10, 47, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 32, 78, + 69, 87, 32, 83, 72, 65, 68, 69, 82, 32, 78, 79, 68, 69, 83, 32, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 47, + 10, 10, 35,100,101,102,105,110,101, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 32, 51, 10, 10, 47, 42, 32, 98,115,100,102,115, + 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,100,105,102,102,117,115,101, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 44, 32,118,101, 99, 51, 32, 78, 44, - 32,118,101, 99, 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9, 47, 42, 32, - 97,109, 98,105,101,110,116, 32,108,105,103,104,116, 32, 42, 47, 10, 9,118,101, 99, 51, 32, 76, 32, 61, 32,118,101, 99, 51, 40, - 48, 46, 50, 41, 59, 10, 10, 9, 47, 42, 32,100,105,114,101, 99,116,105,111,110, 97,108, 32,108,105,103,104,116,115, 32, 42, 47, - 10, 9,102,111,114, 40,105,110,116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 59, - 32,105, 43, 43, 41, 32,123, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 32, 61, 32, -103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,112,111,115,105,116,105,111,110, 46,120,121,122, 59, 10, - 9, 9,118,101, 99, 51, 32, 72, 32, 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,104, 97,108, -102, 86,101, 99,116,111,114, 46,120,121,122, 59, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,100,105,102,102,117,115, -101, 32, 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,100,105,102,102,117,115,101, 46,114,103, - 98, 59, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,115,112,101, 99,117,108, 97,114, 32, 61, 32,103,108, 95, 76,105, -103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,115,112,101, 99,117,108, 97,114, 46,114,103, 98, 59, 10, 10, 9, 9, 47, 42, - 32,119,101, 32,109,105,120, 32,105,110, 32,115,111,109,101, 32,100,105,102,102,117,115,101, 32,115,111, 32,108,111,119, 32,114, -111,117,103,104,110,101,115,115, 32,115,116,105,108,108, 32,115,104,111,119,115, 32,117,112, 32, 42, 47, 10, 9, 9,102,108,111, - 97,116, 32, 98,115,100,102, 32, 61, 32, 48, 46, 53, 42,112,111,119, 40,109, 97,120, 40,100,111,116, 40, 78, 44, 32, 72, 41, 44, - 32, 48, 46, 48, 41, 44, 32, 49, 46, 48, 47,114,111,117,103,104,110,101,115,115, 41, 59, 10, 9, 9, 98,115,100,102, 32, 43, 61, - 32, 48, 46, 53, 42,109, 97,120, 40,100,111,116, 40, 78, 44, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 41, 44, - 32, 48, 46, 48, 41, 59, 10, 9, 9, 76, 32, 43, 61, 32,108,105,103,104,116, 95,115,112,101, 99,117,108, 97,114, 42, 98,115,100, -102, 59, 10, 9,125, 10, 10, 9,114,101,115,117,108,116, 32, 61, 32,118,101, 99, 52, 40, 76, 42, 99,111,108,111,114, 46,114,103, - 98, 44, 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95, 97,110,105,115,111, -116,114,111,112,105, 99, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101, -115,115, 85, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 86, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118, -101, 99, 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, - 98,115,100,102, 95,100,105,102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117, -108,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,103,108, 97,115,115, 40,118,101, 99, - 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 44, 32,102,108,111, 97,116, 32, -105,111,114, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118,101, 99, 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101, -115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115,100,102, 95,100,105,102,102,117,115,101, 40, 99,111,108,111,114, - 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, - 98,115,100,102, 95,116,114, 97,110,115,108,117, 99,101,110,116, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,118,101, 99, - 51, 32, 78, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115, + 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9, 47, 42, 32, 97,109, 98,105,101,110,116, 32, +108,105,103,104,116, 32, 42, 47, 10, 9,118,101, 99, 51, 32, 76, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 50, 41, 59, 10, 10, 9, + 47, 42, 32,100,105,114,101, 99,116,105,111,110, 97,108, 32,108,105,103,104,116,115, 32, 42, 47, 10, 9,102,111,114, 40,105,110, +116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 59, 32,105, 43, 43, 41, 32,123, 10, + 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 32, 61, 32,103,108, 95, 76,105,103,104,116, + 83,111,117,114, 99,101, 91,105, 93, 46,112,111,115,105,116,105,111,110, 46,120,121,122, 59, 10, 9, 9,118,101, 99, 51, 32,108, +105,103,104,116, 95,100,105,102,102,117,115,101, 32, 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, + 46,100,105,102,102,117,115,101, 46,114,103, 98, 59, 10, 10, 9, 9,102,108,111, 97,116, 32, 98,115,100,102, 32, 61, 32,109, 97, +120, 40,100,111,116, 40, 78, 44, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 41, 44, 32, 48, 46, 48, 41, 59, 10, + 9, 9, 76, 32, 43, 61, 32,108,105,103,104,116, 95,100,105,102,102,117,115,101, 42, 98,115,100,102, 59, 10, 9,125, 10, 10, 9, +114,101,115,117,108,116, 32, 61, 32,118,101, 99, 52, 40, 76, 42, 99,111,108,111,114, 46,114,103, 98, 44, 32, 49, 46, 48, 41, 59, + 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,103,108,111,115,115,121, 40,118,101, 99, 52, 32, 99, +111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118, +101, 99, 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9, 47, 42, 32, 97,109, + 98,105,101,110,116, 32,108,105,103,104,116, 32, 42, 47, 10, 9,118,101, 99, 51, 32, 76, 32, 61, 32,118,101, 99, 51, 40, 48, 46, + 50, 41, 59, 10, 10, 9, 47, 42, 32,100,105,114,101, 99,116,105,111,110, 97,108, 32,108,105,103,104,116,115, 32, 42, 47, 10, 9, +102,111,114, 40,105,110,116, 32,105, 32, 61, 32, 48, 59, 32,105, 32, 60, 32, 78, 85, 77, 95, 76, 73, 71, 72, 84, 83, 59, 32,105, + 43, 43, 41, 32,123, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 32, 61, 32,103,108, + 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,112,111,115,105,116,105,111,110, 46,120,121,122, 59, 10, 9, 9, +118,101, 99, 51, 32, 72, 32, 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,104, 97,108,102, 86, +101, 99,116,111,114, 46,120,121,122, 59, 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,100,105,102,102,117,115,101, 32, + 61, 32,103,108, 95, 76,105,103,104,116, 83,111,117,114, 99,101, 91,105, 93, 46,100,105,102,102,117,115,101, 46,114,103, 98, 59, + 10, 9, 9,118,101, 99, 51, 32,108,105,103,104,116, 95,115,112,101, 99,117,108, 97,114, 32, 61, 32,103,108, 95, 76,105,103,104, +116, 83,111,117,114, 99,101, 91,105, 93, 46,115,112,101, 99,117,108, 97,114, 46,114,103, 98, 59, 10, 10, 9, 9, 47, 42, 32,119, +101, 32,109,105,120, 32,105,110, 32,115,111,109,101, 32,100,105,102,102,117,115,101, 32,115,111, 32,108,111,119, 32,114,111,117, +103,104,110,101,115,115, 32,115,116,105,108,108, 32,115,104,111,119,115, 32,117,112, 32, 42, 47, 10, 9, 9,102,108,111, 97,116, + 32, 98,115,100,102, 32, 61, 32, 48, 46, 53, 42,112,111,119, 40,109, 97,120, 40,100,111,116, 40, 78, 44, 32, 72, 41, 44, 32, 48, + 46, 48, 41, 44, 32, 49, 46, 48, 47,114,111,117,103,104,110,101,115,115, 41, 59, 10, 9, 9, 98,115,100,102, 32, 43, 61, 32, 48, + 46, 53, 42,109, 97,120, 40,100,111,116, 40, 78, 44, 32,108,105,103,104,116, 95,112,111,115,105,116,105,111,110, 41, 44, 32, 48, + 46, 48, 41, 59, 10, 9, 9, 76, 32, 43, 61, 32,108,105,103,104,116, 95,115,112,101, 99,117,108, 97,114, 42, 98,115,100,102, 59, + 10, 9,125, 10, 10, 9,114,101,115,117,108,116, 32, 61, 32,118,101, 99, 52, 40, 76, 42, 99,111,108,111,114, 46,114,103, 98, 44, + 32, 49, 46, 48, 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95, 97,110,105,115,111,116,114, +111,112,105, 99, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, + 85, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 86, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118,101, 99, + 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115, 100,102, 95,100,105,102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, - 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,116,114, 97,110,115,112, 97,114,101,110,116, - 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, - 9, 47, 42, 32,116,104,105,115, 32,105,115,110, 39,116, 32,114,105,103,104,116, 32, 42, 47, 10, 9,114,101,115,117,108,116, 46, -114, 32, 61, 32, 99,111,108,111,114, 46,114, 59, 10, 9,114,101,115,117,108,116, 46,103, 32, 61, 32, 99,111,108,111,114, 46,103, - 59, 10, 9,114,101,115,117,108,116, 46, 98, 32, 61, 32, 99,111,108,111,114, 46, 98, 59, 10, 9,114,101,115,117,108,116, 46, 97, - 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,118,101,108,118,101,116, - 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,115,105,103,109, 97, 44, 32,118,101, 99, 51, 32, 78, - 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115,100,102, 95, -100,105,102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, 41, 59, 10, -125, 10, 10, 47, 42, 32,101,109,105,115,115,105,111,110, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,101,109,105, -115,115,105,111,110, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,115,116,114,101,110,103,116,104, - 44, 32,118,101, 99, 51, 32, 78, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,114,101, -115,117,108,116, 32, 61, 32, 99,111,108,111,114, 42,115,116,114,101,110,103,116,104, 59, 10,125, 10, 10, 47, 42, 32, 99,108,111, -115,117,114,101,115, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,109,105,120, 95,115,104, 97,100,101,114, 40,102, -108,111, 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 49, 44, 32,118,101, 99, 52, 32,115,104, 97, -100,101,114, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 41, 10,123, 10, 9,115,104, 97,100,101,114, - 32, 61, 32,109,105,120, 40,115,104, 97,100,101,114, 49, 44, 32,115,104, 97,100,101,114, 50, 44, 32,102, 97, 99, 41, 59, 10,125, - 10, 10,118,111,105,100, 32,110,111,100,101, 95, 97,100,100, 95,115,104, 97,100,101,114, 40,118,101, 99, 52, 32,115,104, 97,100, -101,114, 49, 44, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,115,104, 97,100, -101,114, 41, 10,123, 10, 9,115,104, 97,100,101,114, 32, 61, 32,115,104, 97,100,101,114, 49, 32, 43, 32,115,104, 97,100,101,114, - 50, 59, 10,125, 10, 10, 47, 42, 32,102,114,101,115,110,101,108, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,102, -114,101,115,110,101,108, 40,102,108,111, 97,116, 32,105,111,114, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118,101, 99, 51, 32, 73, - 44, 32,111,117,116, 32,102,108,111, 97,116, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,102,108,111, 97,116, 32,101,116, 97, - 32, 61, 32,109, 97,120, 40,105,111,114, 44, 32, 48, 46, 48, 48, 48, 48, 49, 41, 59, 10, 9,114,101,115,117,108,116, 32, 61, 32, -102,114,101,115,110,101,108, 95,100,105,101,108,101, 99,116,114,105, 99, 40, 73, 44, 32, 78, 44, 32,101,116, 97, 41, 59, 32, 47, - 47, 98, 97, 99,107,102, 97, 99,105,110,103, 40, 41, 63, 32, 49, 46, 48, 47,101,116, 97, 58, 32,101,116, 97, 41, 59, 10,125, 10, - 10, 47, 42, 32,103,101,111,109,101,116,114,121, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,103,101,111,109,101, -116,114,121, 40,118,101, 99, 51, 32, 73, 44, 32,118,101, 99, 51, 32, 78, 44, 32,109, 97,116, 52, 32,116,111,119,111,114,108,100, - 44, 10, 9,111,117,116, 32,118,101, 99, 51, 32,112,111,115,105,116,105,111,110, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110, -111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,116, 97,110,103,101,110,116, 44, 10, 9,111,117,116, 32,118,101, - 99, 51, 32,116,114,117,101, 95,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,109,105,110, -103, 44, 32,111,117,116, 32,118,101, 99, 51, 32,112, 97,114, 97,109,101,116,114,105, 99, 44, 10, 9,111,117,116, 32,102,108,111, - 97,116, 32, 98, 97, 99,107,102, 97, 99,105,110,103, 41, 10,123, 10, 9,112,111,115,105,116,105,111,110, 32, 61, 32, 40,116,111, -119,111,114,108,100, 42,118,101, 99, 52, 40, 73, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,110,111,114,109, 97,108, - 32, 61, 32, 78, 59, 10, 9,116, 97,110,103,101,110,116, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10, 9,116,114,117, -101, 95,110,111,114,109, 97,108, 32, 61, 32, 78, 59, 10, 9,105,110, 99,111,109,105,110,103, 32, 61, 32, 73, 59, 10, 9,112, 97, -114, 97,109,101,116,114,105, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10, 9, 98, 97, 99,107,102, 97, 99,105,110, -103, 32, 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95,116,101,120, 95, 99,111,111,114,100, 40, -118,101, 99, 51, 32, 73, 44, 32,118,101, 99, 51, 32, 78, 44, 32,109, 97,116, 52, 32,116,111,119,111,114,108,100, 44, 10, 9,118, -101, 99, 51, 32, 97,116,116,114, 95,111,114, 99,111, 44, 32,118,101, 99, 51, 32, 97,116,116,114, 95,117,118, 44, 10, 9,111,117, -116, 32,118,101, 99, 51, 32,103,101,110,101,114, 97,116,101,100, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32,111, -117,116, 32,118,101, 99, 51, 32,111, 98,106,101, 99,116, 44, 10, 9,111,117,116, 32,118,101, 99, 51, 32, 99, 97,109,101,114, 97, - 44, 32,111,117,116, 32,118,101, 99, 51, 32,119,105,110,100,111,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102,108, -101, 99,116,105,111,110, 41, 10,123, 10, 9,103,101,110,101,114, 97,116,101,100, 32, 61, 32, 97,116,116,114, 95,111,114, 99,111, + 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,103,108, 97,115,115, 40,118,101, 99, 52, 32, + 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,114,111,117,103,104,110,101,115,115, 44, 32,102,108,111, 97,116, 32,105,111, +114, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118,101, 99, 51, 32, 73, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117, +108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115,100,102, 95,100,105,102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, + 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, 41, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115, +100,102, 95,116,114, 97,110,115,108,117, 99,101,110,116, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,118,101, 99, 51, 32, + 78, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115,100,102, + 95,100,105,102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, 41, 59, + 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,116,114, 97,110,115,112, 97,114,101,110,116, 40,118, +101, 99, 52, 32, 99,111,108,111,114, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9, 47, + 42, 32,116,104,105,115, 32,105,115,110, 39,116, 32,114,105,103,104,116, 32, 42, 47, 10, 9,114,101,115,117,108,116, 46,114, 32, + 61, 32, 99,111,108,111,114, 46,114, 59, 10, 9,114,101,115,117,108,116, 46,103, 32, 61, 32, 99,111,108,111,114, 46,103, 59, 10, + 9,114,101,115,117,108,116, 46, 98, 32, 61, 32, 99,111,108,111,114, 46, 98, 59, 10, 9,114,101,115,117,108,116, 46, 97, 32, 61, + 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95, 98,115,100,102, 95,118,101,108,118,101,116, 40,118, +101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,115,105,103,109, 97, 44, 32,118,101, 99, 51, 32, 78, 44, 32, +111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,110,111,100,101, 95, 98,115,100,102, 95,100,105, +102,102,117,115,101, 40, 99,111,108,111,114, 44, 32, 48, 46, 48, 44, 32, 78, 44, 32,114,101,115,117,108,116, 41, 59, 10,125, 10, + 10, 47, 42, 32,101,109,105,115,115,105,111,110, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,101,109,105,115,115, +105,111,110, 40,118,101, 99, 52, 32, 99,111,108,111,114, 44, 32,102,108,111, 97,116, 32,115,116,114,101,110,103,116,104, 44, 32, +118,101, 99, 51, 32, 78, 44, 32,111,117,116, 32,118,101, 99, 52, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,114,101,115,117, +108,116, 32, 61, 32, 99,111,108,111,114, 42,115,116,114,101,110,103,116,104, 59, 10,125, 10, 10, 47, 42, 32, 99,108,111,115,117, +114,101,115, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,109,105,120, 95,115,104, 97,100,101,114, 40,102,108,111, + 97,116, 32,102, 97, 99, 44, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 49, 44, 32,118,101, 99, 52, 32,115,104, 97,100,101, +114, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 41, 10,123, 10, 9,115,104, 97,100,101,114, 32, 61, + 32,109,105,120, 40,115,104, 97,100,101,114, 49, 44, 32,115,104, 97,100,101,114, 50, 44, 32,102, 97, 99, 41, 59, 10,125, 10, 10, +118,111,105,100, 32,110,111,100,101, 95, 97,100,100, 95,115,104, 97,100,101,114, 40,118,101, 99, 52, 32,115,104, 97,100,101,114, + 49, 44, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, 50, 44, 32,111,117,116, 32,118,101, 99, 52, 32,115,104, 97,100,101,114, + 41, 10,123, 10, 9,115,104, 97,100,101,114, 32, 61, 32,115,104, 97,100,101,114, 49, 32, 43, 32,115,104, 97,100,101,114, 50, 59, + 10,125, 10, 10, 47, 42, 32,102,114,101,115,110,101,108, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,102,114,101, +115,110,101,108, 40,102,108,111, 97,116, 32,105,111,114, 44, 32,118,101, 99, 51, 32, 78, 44, 32,118,101, 99, 51, 32, 73, 44, 32, +111,117,116, 32,102,108,111, 97,116, 32,114,101,115,117,108,116, 41, 10,123, 10, 9,102,108,111, 97,116, 32,101,116, 97, 32, 61, + 32,109, 97,120, 40,105,111,114, 44, 32, 48, 46, 48, 48, 48, 48, 49, 41, 59, 10, 9,114,101,115,117,108,116, 32, 61, 32,102,114, +101,115,110,101,108, 95,100,105,101,108,101, 99,116,114,105, 99, 40, 73, 44, 32, 78, 44, 32,101,116, 97, 41, 59, 32, 47, 47, 98, + 97, 99,107,102, 97, 99,105,110,103, 40, 41, 63, 32, 49, 46, 48, 47,101,116, 97, 58, 32,101,116, 97, 41, 59, 10,125, 10, 10, 47, + 42, 32,103,101,111,109,101,116,114,121, 32, 42, 47, 10, 10,118,111,105,100, 32,110,111,100,101, 95,103,101,111,109,101,116,114, +121, 40,118,101, 99, 51, 32, 73, 44, 32,118,101, 99, 51, 32, 78, 44, 32,109, 97,116, 52, 32,116,111,119,111,114,108,100, 44, 10, + 9,111,117,116, 32,118,101, 99, 51, 32,112,111,115,105,116,105,111,110, 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114, +109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,116, 97,110,103,101,110,116, 44, 10, 9,111,117,116, 32,118,101, 99, 51, + 32,116,114,117,101, 95,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,105,110, 99,111,109,105,110,103, 44, + 32,111,117,116, 32,118,101, 99, 51, 32,112, 97,114, 97,109,101,116,114,105, 99, 44, 10, 9,111,117,116, 32,102,108,111, 97,116, + 32, 98, 97, 99,107,102, 97, 99,105,110,103, 41, 10,123, 10, 9,112,111,115,105,116,105,111,110, 32, 61, 32, 40,116,111,119,111, +114,108,100, 42,118,101, 99, 52, 40, 73, 44, 32, 49, 46, 48, 41, 41, 46,120,121,122, 59, 10, 9,110,111,114,109, 97,108, 32, 61, + 32, 78, 59, 10, 9,116, 97,110,103,101,110,116, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10, 9,116,114,117,101, 95, +110,111,114,109, 97,108, 32, 61, 32, 78, 59, 10, 9,105,110, 99,111,109,105,110,103, 32, 61, 32, 73, 59, 10, 9,112, 97,114, 97, +109,101,116,114,105, 99, 32, 61, 32,118,101, 99, 51, 40, 48, 46, 48, 41, 59, 10, 9, 98, 97, 99,107,102, 97, 99,105,110,103, 32, + 61, 32, 48, 46, 48, 59, 10,125, 10, 10,118,111,105,100, 32,110,111,100,101, 95,116,101,120, 95, 99,111,111,114,100, 40,118,101, + 99, 51, 32, 73, 44, 32,118,101, 99, 51, 32, 78, 44, 32,109, 97,116, 52, 32,118,105,101,119,105,110,118,109, 97,116, 44, 32,109, + 97,116, 52, 32,111, 98,105,110,118,109, 97,116, 44, 10, 9,118,101, 99, 51, 32, 97,116,116,114, 95,111,114, 99,111, 44, 32,118, +101, 99, 51, 32, 97,116,116,114, 95,117,118, 44, 10, 9,111,117,116, 32,118,101, 99, 51, 32,103,101,110,101,114, 97,116,101,100, + 44, 32,111,117,116, 32,118,101, 99, 51, 32,110,111,114,109, 97,108, 44, 32,111,117,116, 32,118,101, 99, 51, 32,117,118, 44, 32, +111,117,116, 32,118,101, 99, 51, 32,111, 98,106,101, 99,116, 44, 10, 9,111,117,116, 32,118,101, 99, 51, 32, 99, 97,109,101,114, + 97, 44, 32,111,117,116, 32,118,101, 99, 51, 32,119,105,110,100,111,119, 44, 32,111,117,116, 32,118,101, 99, 51, 32,114,101,102, +108,101, 99,116,105,111,110, 41, 10,123, 10, 9,103,101,110,101,114, 97,116,101,100, 32, 61, 32, 97,116,116,114, 95,111,114, 99, +111, 59, 10, 9,110,111,114,109, 97,108, 32, 61, 32,110,111,114,109, 97,108,105,122,101, 40, 40,111, 98,105,110,118,109, 97,116, + 42, 40,118,105,101,119,105,110,118,109, 97,116, 42,118,101, 99, 52, 40, 78, 44, 32, 48, 46, 48, 41, 41, 41, 46,120,121,122, 41, 59, 10, 9,117,118, 32, 61, 32, 97,116,116,114, 95,117,118, 59, 10, 9,111, 98,106,101, 99,116, 32, 61, 32, 73, 59, 10, 9, 99, 97,109,101,114, 97, 32, 61, 32, 73, 59, 10, 9,119,105,110,100,111,119, 32, 61, 32,103,108, 95, 70,114, 97,103, 67,111,111,114, 100, 46,120,121,122, 59, 10, 9,114,101,102,108,101, 99,116,105,111,110, 32, 61, 32,114,101,102,108,101, 99,116, 40, 78, 44, 32, diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index d2df799bc94..83688e30643 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -176,14 +176,16 @@ typedef struct SceneRenderLayer { struct Material *mat_override; struct Group *light_override; - unsigned int lay; /* scene->lay itself has priority over this */ - unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */ + unsigned int lay; /* scene->lay itself has priority over this */ + unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */ + unsigned int lay_exclude; /* not used by internal, exclude */ int layflag; - int pad; - int passflag; /* pass_xor has to be after passflag */ int pass_xor; + + int samples; + int pad; } SceneRenderLayer; /* srl->layflag */ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index d2eef1cdd43..359b1e4ee00 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1905,6 +1905,19 @@ void rna_def_render_layer_common(StructRNA *srna, int scene) if (scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_Scene_glsl_update"); else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + prop = RNA_def_property(srna, "layers_exclude", PROP_BOOLEAN, PROP_LAYER); + RNA_def_property_boolean_sdna(prop, NULL, "lay_exclude", 1); + RNA_def_property_array(prop, 20); + RNA_def_property_ui_text(prop, "Exclude Layers", "Exclude scene layers from having any influence"); + if (scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_Scene_glsl_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + if(scene) { + prop = RNA_def_property(srna, "samples", PROP_INT, PROP_UNSIGNED); + RNA_def_property_ui_text(prop, "Samples", "Override number of render samples for this render layer, 0 will use the scene setting"); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); + } + /* layer options */ prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "layflag", SCE_LAY_DISABLE); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 315995475e9..2a3c8e60638 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -82,7 +82,7 @@ typedef struct RenderLayer { /* copy of RenderData */ char name[RE_MAXNAME]; - unsigned int lay, lay_zmask; + unsigned int lay, lay_zmask, lay_exclude; int layflag, passflag, pass_xor; struct Material *mat_override; diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index 37d6479e7bc..162fc160915 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -458,6 +458,7 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf BLI_strncpy(rl->name, srl->name, sizeof(rl->name)); rl->lay= srl->lay; rl->lay_zmask= srl->lay_zmask; + rl->lay_exclude= srl->lay_exclude; rl->layflag= srl->layflag; rl->passflag= srl->passflag; // for debugging: srl->passflag|SCE_PASS_RAYHITS; rl->pass_xor= srl->pass_xor; From 61752c926d0f86aefeb2d8e60fb2bf2f1d9d191f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Apr 2012 09:00:09 +0000 Subject: [PATCH 142/158] Addons: "persistent" parameter for addon_utils.enable(), so that you can enable addons from a startup script and keep them enabled after loading .blend files. --- release/scripts/modules/addon_utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index 588c10eea54..695bb8cb6b6 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -212,10 +212,13 @@ def check(module_name): loaded_state = False + if mod and getattr(mod, "__addon_persistent__", False): + loaded_default = True + return loaded_default, loaded_state -def enable(module_name, default_set=True): +def enable(module_name, default_set=True, persistent=False): """ Enables an addon by name. @@ -283,6 +286,7 @@ def enable(module_name, default_set=True): ext.module = module_name mod.__addon_enabled__ = True + mod.__addon_persistent__ = persistent if _bpy.app.debug_python: print("\taddon_utils.enable", mod.__name__) @@ -305,6 +309,7 @@ def disable(module_name, default_set=True): # the addon in the user prefs. if mod: mod.__addon_enabled__ = False + mod.__addon_persistent = False try: mod.unregister() From 2c592b0d964c3931b7fd0fa99b2efa4baa8f266c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Apr 2012 09:00:11 +0000 Subject: [PATCH 143/158] Point Cache: allow baking external smoke caches. This needs to be cleaned up a bit, I couldn't fully understand how the External setting is supposed to work to make further changes, but this should make it work at least. --- .../bl_ui/properties_physics_common.py | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index f623d9a37eb..4db056e77a2 100644 --- a/release/scripts/startup/bl_ui/properties_physics_common.py +++ b/release/scripts/startup/bl_ui/properties_physics_common.py @@ -94,18 +94,25 @@ def point_cache_ui(self, context, cache, enabled, cachetype): if cachetype in {'PSYS', 'HAIR', 'SMOKE'}: row.prop(cache, "use_external") + if cachetype == 'SMOKE': + row.prop(cache, "use_library_path", "Use Lib Path") + if cache.use_external: - split = layout.split(percentage=0.80) - split.prop(cache, "name", text="File Name") - split.prop(cache, "index", text="") + split = layout.split(percentage=0.35) + col = split.column() + col.label(text="File Name:") + if cache.use_external: + col.label(text="File Path:") - row = layout.row() - row.label(text="File Path:") - row.prop(cache, "use_library_path", "Use Lib Path") + col = split.column() + sub = col.split(percentage=0.70, align=True) + sub.prop(cache, "name", text="") + sub.prop(cache, "index", text="") + col.prop(cache, "filepath", text="") - layout.prop(cache, "filepath", text="") - - layout.label(text=cache.info) + cache_info = cache.info + if cache_info: + layout.label(text=cache_info) else: if cachetype in {'SMOKE', 'DYNAMIC_PAINT'}: if not bpy.data.is_saved: @@ -117,6 +124,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype): else: layout.prop(cache, "name", text="Cache Name") + if not cache.use_external or cachetype == 'SMOKE': row = layout.row(align=True) if cachetype not in {'PSYS', 'DYNAMIC_PAINT'}: From 44924a2e5e10cf645e2a81e0041defa05b542e83 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 28 Apr 2012 09:10:20 +0000 Subject: [PATCH 144/158] Cycles: fix for CUDA build. --- intern/cycles/util/util_math.h | 38 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/intern/cycles/util/util_math.h b/intern/cycles/util/util_math.h index 25d81481d12..33e351c74e9 100644 --- a/intern/cycles/util/util_math.h +++ b/intern/cycles/util/util_math.h @@ -515,15 +515,6 @@ __device_inline void print_float3(const char *label, const float3& a) printf("%s: %.8f %.8f %.8f\n", label, a.x, a.y, a.z); } -__device_inline float reduce_add(const float3& a) -{ -#ifdef __KERNEL_SSE__ - return (a.x + a.y + a.z); -#else - return (a.x + a.y + a.z); -#endif -} - __device_inline float3 rcp(const float3& a) { #ifdef __KERNEL_SSE__ @@ -550,6 +541,15 @@ __device_inline bool is_zero(const float3 a) #endif } +__device_inline float reduce_add(const float3& a) +{ +#ifdef __KERNEL_SSE__ + return (a.x + a.y + a.z); +#else + return (a.x + a.y + a.z); +#endif +} + __device_inline float average(const float3 a) { return reduce_add(a)*(1.0f/3.0f); @@ -783,16 +783,6 @@ __device_inline float4 reduce_add(const float4& a) } #endif -__device_inline float reduce_add(const float4& a) -{ -#ifdef __KERNEL_SSE__ - float4 h = shuffle<1,0,3,2>(a) + a; - return _mm_cvtss_f32(shuffle<2,3,0,1>(h) + h); /* todo: efficiency? */ -#else - return ((a.x + a.y) + (a.z + a.w)); -#endif -} - __device_inline void print_float4(const char *label, const float4& a) { printf("%s: %.8f %.8f %.8f %.8f\n", label, a.x, a.y, a.z, a.w); @@ -811,6 +801,16 @@ __device_inline bool is_zero(const float4& a) #endif } +__device_inline float reduce_add(const float4& a) +{ +#ifdef __KERNEL_SSE__ + float4 h = shuffle<1,0,3,2>(a) + a; + return _mm_cvtss_f32(shuffle<2,3,0,1>(h) + h); /* todo: efficiency? */ +#else + return ((a.x + a.y) + (a.z + a.w)); +#endif +} + __device_inline float average(const float4& a) { return reduce_add(a) * 0.25f; From 5a860b840ddfc208c11df5d6a621a8478514f113 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 09:21:16 +0000 Subject: [PATCH 145/158] Fix: #31095: Incorrect clamping of labels for multibyte languages --- source/blender/editors/interface/interface_widgets.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 03ceeb68c4c..4666232c232 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1047,9 +1047,8 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) /* chop off the leading text, starting from the right */ while (but->strwidth > okwidth && cp2 > but->drawstr) { - int bytes = BLI_str_utf8_size(cp2); - if (bytes < 0) - bytes = 1; + char *prev_utf8 = BLI_str_find_prev_char_utf8(but->drawstr, cp2); + int bytes = cp2 - prev_utf8; /* shift the text after and including cp2 back by 1 char, +1 to include null terminator */ memmove(cp2 - bytes, cp2, strlen(cp2) + 1); From 54911f52d87be169bf62ffc8088c81d3b7580681 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 09:32:55 +0000 Subject: [PATCH 146/158] Fix #31117: Segfault when removing Meshdeform Modifier --- source/blender/editors/object/object_modifier.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index cd2fa4f93b6..445047ac321 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1343,6 +1343,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) mmd->bindcagecos= NULL; mmd->dyngrid= NULL; mmd->dyninfluences= NULL; + mmd->bindinfluences= NULL; mmd->bindoffsets= NULL; mmd->dynverts= NULL; mmd->bindweights= NULL; /* deprecated */ From a434572654d95b2910324f3c6125580f4ee28afe Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 10:09:58 +0000 Subject: [PATCH 147/158] Camera tracking: if there's no image for current frame display default grid and allow to interact with tracks for operators which doesn't require image. Merged from tomato branch: svn merge ^/branches/soc-2011-tomato -r45624:45625 --- source/blender/blenkernel/intern/movieclip.c | 4 +- source/blender/editors/include/ED_screen.h | 1 + source/blender/editors/screen/area.c | 60 ++++++++++++++++++ source/blender/editors/space_clip/clip_draw.c | 5 ++ .../blender/editors/space_clip/tracking_ops.c | 33 +++++++--- .../blender/editors/space_image/image_draw.c | 61 +------------------ .../editors/transform/transform_conversions.c | 5 +- 7 files changed, 99 insertions(+), 70 deletions(-) diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index f23578e07d7..a3baa883a4a 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -925,8 +925,8 @@ void BKE_movieclip_get_size(MovieClip *clip, MovieClipUser *user, int *width, in real_ibuf_size(clip, user, ibuf, width, height); } else { - *width = 0; - *height = 0; + *width = clip->lastsize[0]; + *height = clip->lastsize[1]; } if (ibuf) diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index f0fffb34b73..f62befdaa31 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -66,6 +66,7 @@ void ED_region_header(const struct bContext *C, struct ARegion *ar); void ED_region_toggle_hidden(struct bContext *C, struct ARegion *ar); void region_scissor_winrct(struct ARegion *ar, struct rcti *winrct); void ED_region_info_draw(struct ARegion *ar, const char *text, int block, float alpha); +void ED_region_grid_draw(struct ARegion *ar, float zoomx, float zoomy); /* spaces */ void ED_spacetypes_init(void); diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index eb1688a76e2..2a561a6bc6c 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1813,3 +1813,63 @@ void ED_region_info_draw(ARegion *ar, const char *text, int block, float alpha) BLF_position(fontid, 12, rect.ymin + 5, 0.0f); BLF_draw(fontid, text, BLF_DRAW_STR_DUMMY_MAX); } + +void ED_region_grid_draw(ARegion *ar, float zoomx, float zoomy) +{ + float gridsize, gridstep = 1.0f / 32.0f; + float fac, blendfac; + int x1, y1, x2, y2; + + /* the image is located inside (0,0),(1, 1) as set by view2d */ + UI_ThemeColorShade(TH_BACK, 20); + + UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x1, &y1); + UI_view2d_to_region_no_clip(&ar->v2d, 1.0f, 1.0f, &x2, &y2); + glRectf(x1, y1, x2, y2); + + /* gridsize adapted to zoom level */ + gridsize = 0.5f * (zoomx + zoomy); + if (gridsize <= 0.0f) + return; + + if (gridsize < 1.0f) { + while (gridsize < 1.0f) { + gridsize *= 4.0f; + gridstep *= 4.0f; + } + } + else { + while (gridsize >= 4.0f) { + gridsize /= 4.0f; + gridstep /= 4.0f; + } + } + + /* the fine resolution level */ + blendfac = 0.25f * gridsize - floorf(0.25f * gridsize); + CLAMP(blendfac, 0.0f, 1.0f); + UI_ThemeColorShade(TH_BACK, (int)(20.0f * (1.0f - blendfac))); + + fac = 0.0f; + glBegin(GL_LINES); + while (fac < 1.0f) { + glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); + fac += gridstep; + } + + /* the large resolution level */ + UI_ThemeColor(TH_BACK); + + fac = 0.0f; + while (fac < 1.0f) { + glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); + glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); + fac += 4.0f * gridstep; + } + glEnd(); +} diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c index bf8976035a8..2f9956fc143 100644 --- a/source/blender/editors/space_clip/clip_draw.c +++ b/source/blender/editors/space_clip/clip_draw.c @@ -1380,7 +1380,12 @@ void clip_draw_main(SpaceClip *sc, ARegion *ar, Scene *scene) if (ibuf) { draw_movieclip_buffer(sc, ar, ibuf, width, height, zoomx, zoomy); IMB_freeImBuf(ibuf); + } + else { + ED_region_grid_draw(ar, zoomx, zoomy); + } + if (width && height) { draw_tracking_tracks(sc, ar, clip, width, height, zoomx, zoomy); draw_distortion(sc, ar, clip, width, height, zoomx, zoomy); } diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c index 2b1b311b89d..f4454394ca3 100644 --- a/source/blender/editors/space_clip/tracking_ops.c +++ b/source/blender/editors/space_clip/tracking_ops.c @@ -92,6 +92,25 @@ static int space_clip_frame_poll(bContext *C) return FALSE; } +static int space_clip_size_poll(bContext *C) +{ + SpaceClip *sc = CTX_wm_space_clip(C); + + if (sc) { + MovieClip *clip = ED_space_clip(sc); + + if (clip) { + int width, height; + + BKE_movieclip_get_size(clip, &sc->user, &width, &height); + + return width > 0 && height > 0; + } + } + + return FALSE; +} + /********************** add marker operator *********************/ static void add_marker(SpaceClip *sc, float x, float y) @@ -156,7 +175,7 @@ void CLIP_OT_add_marker(wmOperatorType *ot) /* api callbacks */ ot->invoke = add_marker_invoke; ot->exec = add_marker_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -643,7 +662,7 @@ void CLIP_OT_slide_marker(wmOperatorType *ot) ot->idname = "CLIP_OT_slide_marker"; /* api callbacks */ - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; ot->invoke = slide_marker_invoke; ot->modal = slide_marker_modal; @@ -1200,7 +1219,7 @@ void CLIP_OT_select_grouped(wmOperatorType *ot) /* api callbacks */ ot->exec = select_groped_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2016,7 +2035,7 @@ static Object *get_orientation_object(bContext *C) static int set_orientation_poll(bContext *C) { - if (space_clip_frame_poll(C)) { + if (space_clip_size_poll(C)) { Scene *scene = CTX_data_scene(C); SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); @@ -2626,7 +2645,7 @@ void CLIP_OT_set_scale(wmOperatorType *ot) static int set_solution_scale_poll(bContext *C) { - if (space_clip_frame_poll(C)) { + if (space_clip_size_poll(C)) { SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); MovieTracking *tracking = &clip->tracking; @@ -2974,7 +2993,7 @@ void CLIP_OT_frame_jump(wmOperatorType *ot) /* api callbacks */ ot->exec = frame_jump_exec; - ot->poll = space_clip_frame_poll; + ot->poll = ED_space_clip_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; @@ -3031,7 +3050,7 @@ void CLIP_OT_join_tracks(wmOperatorType *ot) /* api callbacks */ ot->exec = join_tracks_exec; - ot->poll = space_clip_frame_poll; + ot->poll = space_clip_size_poll; /* flags */ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 29bd5f5117d..793e5712c8c 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -334,65 +334,6 @@ void ED_image_draw_info(ARegion *ar, int color_manage, int channels, int x, int /* image drawing */ -static void draw_image_grid(ARegion *ar, float zoomx, float zoomy) -{ - float gridsize, gridstep = 1.0f / 32.0f; - float fac, blendfac; - int x1, y1, x2, y2; - - /* the image is located inside (0,0),(1, 1) as set by view2d */ - UI_ThemeColorShade(TH_BACK, 20); - - UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x1, &y1); - UI_view2d_to_region_no_clip(&ar->v2d, 1.0f, 1.0f, &x2, &y2); - glRectf(x1, y1, x2, y2); - - /* gridsize adapted to zoom level */ - gridsize = 0.5f * (zoomx + zoomy); - if (gridsize <= 0.0f) return; - - if (gridsize < 1.0f) { - while (gridsize < 1.0f) { - gridsize *= 4.0f; - gridstep *= 4.0f; - } - } - else { - while (gridsize >= 4.0f) { - gridsize /= 4.0f; - gridstep /= 4.0f; - } - } - - /* the fine resolution level */ - blendfac = 0.25f * gridsize - floorf(0.25f * gridsize); - CLAMP(blendfac, 0.0f, 1.0f); - UI_ThemeColorShade(TH_BACK, (int)(20.0f * (1.0f - blendfac))); - - fac = 0.0f; - glBegin(GL_LINES); - while (fac < 1.0f) { - glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); - fac += gridstep; - } - - /* the large resolution level */ - UI_ThemeColor(TH_BACK); - - fac = 0.0f; - while (fac < 1.0f) { - glVertex2f(x1, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x2, y1 * (1.0f - fac) + y2 * fac); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y1); - glVertex2f(x1 * (1.0f - fac) + x2 * fac, y2); - fac += 4.0f * gridstep; - } - glEnd(); -} - static void sima_draw_alpha_pixels(float x1, float y1, int rectx, int recty, unsigned int *recti) { @@ -781,7 +722,7 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) /* draw the image or grid */ if (ibuf == NULL) - draw_image_grid(ar, zoomx, zoomy); + ED_region_grid_draw(ar, zoomx, zoomy); else if (sima->flag & SI_DRAW_TILE) draw_image_buffer_repeated(sima, ar, scene, ima, ibuf, zoomx, zoomy); else if (ima && (ima->tpageflag & IMA_TILES)) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index d33b8787121..ebbc2ca9267 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5731,10 +5731,13 @@ static void createTransTrackingData(bContext *C, TransInfo *t) ARegion *ar = CTX_wm_region(C); SpaceClip *sc = CTX_wm_space_clip(C); MovieClip *clip = ED_space_clip(sc); + int width, height; t->total = 0; - if (!clip || !BKE_movieclip_has_frame(clip, &sc->user)) + BKE_movieclip_get_size(clip, &sc->user, &width, &height); + + if (!clip || width == 0 || height == 0) return; if (!ELEM(t->mode, TFM_RESIZE, TFM_TRANSLATION)) From 9caab2e26501f709109024ade3063e3762a19929 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 10:33:32 +0000 Subject: [PATCH 148/158] code cleanup: replace some long ELEM7 checks with macro OB_TYPE_SUPPORT_EDITMODE() --- source/blender/editors/object/object_edit.c | 6 +++--- .../blender/editors/space_view3d/view3d_header.c | 8 ++++---- source/blender/editors/util/undo.c | 15 +++++++++------ source/blender/makesdna/DNA_object_types.h | 8 ++++++-- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 8531ec5701d..69ced0c0f8a 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1351,11 +1351,11 @@ static EnumPropertyItem *object_mode_set_itemsf(bContext *C, PointerRNA *UNUSED( if (!C) /* needed for docs */ return object_mode_items; + + ob = CTX_data_active_object(C); while (ob && input->identifier) { - if ((input->value == OB_MODE_EDIT && ((ob->type == OB_MESH) || (ob->type == OB_ARMATURE) || - (ob->type == OB_CURVE) || (ob->type == OB_SURF) || - (ob->type == OB_FONT) || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) || + if ((input->value == OB_MODE_EDIT && OB_TYPE_SUPPORT_EDITMODE(ob->type)) || (input->value == OB_MODE_POSE && (ob->type == OB_ARMATURE)) || (input->value == OB_MODE_PARTICLE_EDIT && ob->particlesystem.first) || ((input->value == OB_MODE_SCULPT || input->value == OB_MODE_VERTEX_PAINT || diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index ab4eca2e303..c4309980b18 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -294,15 +294,15 @@ static char *view3d_modeselect_pup(Scene *scene) if (!((ID *)ob->data)->lib) { /* if active object is editable */ - if (ELEM6(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE)) { - str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT); - } - else if (ob->type == OB_ARMATURE) { + if (ob->type == OB_ARMATURE) { if (ob->mode & OB_MODE_POSE) str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT | OB_MODE_POSE, ICON_EDITMODE_HLT); else str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT); } + else if (OB_TYPE_SUPPORT_EDITMODE(ob->type)) { + str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT); + } if (ob->type == OB_MESH) { diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index a43d549cba1..cd88614f8fe 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -155,7 +155,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) ED_text_undo_step(C, step); } else if (obedit) { - if (ELEM7(obedit->type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE)) { + if (OB_TYPE_SUPPORT_EDITMODE(obedit->type)) { if (undoname) undo_editmode_name(C, undoname); else @@ -247,7 +247,7 @@ int ED_undo_valid(const bContext *C, const char *undoname) return 1; } else if (obedit) { - if (ELEM7(obedit->type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE)) { + if (OB_TYPE_SUPPORT_EDITMODE(obedit->type)) { return undo_editmode_valid(undoname); } } @@ -413,9 +413,11 @@ void ED_undo_operator_repeat_cb_evt(bContext *C, void *arg_op, int UNUSED(arg_ev /* ************************** */ -#define UNDOSYSTEM_GLOBAL 1 -#define UNDOSYSTEM_EDITMODE 2 -#define UNDOSYSTEM_PARTICLE 3 +enum { + UNDOSYSTEM_GLOBAL = 1, + UNDOSYSTEM_EDITMODE = 2, + UNDOSYSTEM_PARTICLE = 3 +}; static int get_undo_system(bContext *C) { @@ -423,8 +425,9 @@ static int get_undo_system(bContext *C) /* find out which undo system */ if (obedit) { - if (ELEM7(obedit->type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE)) + if (OB_TYPE_SUPPORT_EDITMODE(obedit->type)) { return UNDOSYSTEM_EDITMODE; + } } else { Object *obact = CTX_data_active_object(C); diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 86a2bb60cc9..05a96ef2f35 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -319,8 +319,12 @@ typedef struct DupliObject { #define OB_ARMATURE 25 /* check if the object type supports materials */ -#define OB_TYPE_SUPPORT_MATERIAL(_type) ((_type) >= OB_MESH && (_type) <= OB_MBALL) -#define OB_TYPE_SUPPORT_VGROUP(_type) (ELEM(_type, OB_MESH, OB_LATTICE)) +#define OB_TYPE_SUPPORT_MATERIAL(_type) \ + ((_type) >= OB_MESH && (_type) <= OB_MBALL) +#define OB_TYPE_SUPPORT_VGROUP(_type) \ + (ELEM(_type, OB_MESH, OB_LATTICE)) +#define OB_TYPE_SUPPORT_EDITMODE(_type) \ + (ELEM7(_type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE)) /* partype: first 4 bits: type */ #define PARTYPE 15 From 4dd552fef9bc009dcad052121f827be84b8e8f86 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 11:45:28 +0000 Subject: [PATCH 149/158] patch [#31104] Correct comment for mul_qt_v3 from Bill Currie (taniwha) --- source/blender/blenlib/intern/math_rotation.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c index bb3265bdf33..37402f9391c 100644 --- a/source/blender/blenlib/intern/math_rotation.c +++ b/source/blender/blenlib/intern/math_rotation.c @@ -78,7 +78,23 @@ void mul_qt_qtqt(float q[4], const float q1[4], const float q2[4]) q[2] = t2; } -/* Assumes a unit quaternion */ +/** + * \note: + * Assumes a unit quaternion? + * + * infact not, but you may wan't to use a unit quat, read on... + * + * Shortcut for 'q v q*' when \a v is actually a quaternion. + * This removes the need for converting a vector to a quaternion, + * calculating q's conjugate and converting back to a vector. + * It also happens to be faster (17+,24* vs * 24+,32*). + * If \a q is not a unit quaternion, then \a v will be both rotated by + * the same amount as if q was a unit quaternion, and scaled by the square of + * the length of q. + * + * For people used to python mathutils, its like: + * def mul_qt_v3(q, v): (q * Quaternion((0.0, v[0], v[1], v[2])) * q.conjugated())[1:] + */ void mul_qt_v3(const float q[4], float v[3]) { float t0, t1, t2; From c91fd5a0bf60a03a404fe9157bbf3fccb40e590b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 12:23:05 +0000 Subject: [PATCH 150/158] code cleanup: remove editmesh code left hanging around thats already been ported to bmesh, also remove main editmesh header. --- source/blender/blenlib/BLI_editVert.h | 191 ------------------ source/blender/blenlib/CMakeLists.txt | 1 - source/blender/editors/armature/reeb.c | 17 +- source/blender/editors/mesh/editmesh_tools.c | 16 -- .../editors/space_view3d/view3d_select.c | 60 ------ source/blender/editors/util/crazyspace.c | 69 ------- 6 files changed, 12 insertions(+), 342 deletions(-) delete mode 100644 source/blender/blenlib/BLI_editVert.h diff --git a/source/blender/blenlib/BLI_editVert.h b/source/blender/blenlib/BLI_editVert.h deleted file mode 100644 index 0f754d5fc98..00000000000 --- a/source/blender/blenlib/BLI_editVert.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef __BLI_EDITVERT_H__ -#define __BLI_EDITVERT_H__ - -/** \file BLI_editVert.h - * \ingroup bli - * \since March 2001 - * \author nzc - * \brief Some editing types needed in the lib (unfortunately) for - * scanfill.c - */ - -#include "DNA_customdata_types.h" -#include "DNA_mesh_types.h" - -#include "BLO_sys_types.h" // for intptr_t support - -struct DerivedMesh; - -/* note; changing this also might affect the undo copy in editmesh.c */ -typedef struct EditVert -{ - struct EditVert *next, *prev; - union { - /* some lean storage for temporary usage - * in editmesh routines - */ - struct EditVert *v; - struct EditEdge *e; - struct EditFace *f; - void *p; - intptr_t l; - float fp; - int t; - } tmp; - float no[3]; /*vertex normal */ - float co[3]; /*vertex location */ - short xs, ys; /* used to store a screenspace 2d projection of the verts */ - - /* f stores selection eg. if (eve->f & SELECT) {... - * h for hidden. if (!eve->h) {... - * f1 and f2 can be used for temp data, clear them first*/ - unsigned char f, h, f1, f2; - float bweight; - short fast; /* only 0 or 1, for editmesh_fastmalloc, do not store temp data here! */ - int hash; /* internal editmesh.c use only, don't touch! */ - int keyindex; /* original index #, for restoring key information */ - - void *data; /* custom vertex data */ -} EditVert; - -struct EditEdge; - -typedef struct HashEdge { - struct EditEdge *eed; - struct HashEdge *next; -} HashEdge; - -/* note; changing this also might affect the undo copy in editmesh.c */ -typedef struct EditEdge -{ - struct EditEdge *next, *prev; - struct EditVert *v1, *v2; - union { - /* some lean storage for temporary usage - * in editmesh routines - */ - struct EditVert *v; - struct EditEdge *e; - struct EditFace *f; - void *p; - intptr_t l; - float fp; - } tmp; - short f1, f2; /* short, f1 is (ab)used in subdiv */ - unsigned char f, h, dir, seam, sharp; - float crease; - float bweight; - short fast; /* only 0 or 1, for editmesh_fastmalloc */ - short fgoni; /* index for fgon, for search */ - HashEdge hash; - void *data; /*custom edge data*/ -} EditEdge; - -/* note; changing this also might affect the undo copy in editmesh.c */ -typedef struct EditFace -{ - struct EditFace *next, *prev; - struct EditVert *v1, *v2, *v3, *v4; - struct EditEdge *e1, *e2, *e3, *e4; - union { - /* some lean storage for temporary usage - * in editmesh routines - */ - struct EditVert *v; - struct EditEdge *e; - struct EditFace *f; - void *p; - intptr_t l; - float fp; - } tmp; - float n[3], cent[3]; - unsigned char flag; - unsigned char f, f1, h; - unsigned char fast; /* only 0 or 1, for editmesh_fastmalloc */ - unsigned char fgonf; /* flag for fgon options */ - short mat_nr; - void *data; /* custom face data */ -} EditFace; - - -/*selection types*/ -#define EDITVERT 0 -#define EDITEDGE 1 -#define EDITFACE 2 - -typedef struct EditSelection -{ - struct EditSelection *next, *prev; - short type; - void *data; -} EditSelection; - - -typedef struct EditMesh -{ - ListBase verts, edges, faces; - ListBase selected; /*EditSelections. Used to store the order in which things are selected.*/ - HashEdge *hashedgetab; - - /* this is for the editmesh_fastmalloc */ - EditVert *allverts, *curvert; - EditEdge *alledges, *curedge; - EditFace *allfaces, *curface; - /* DerivedMesh caches... note that derived cage can be equivalent - * to derived final, care should be taken on release. - */ - - /* used for keeping track of the last clicked on face - so the space image - * when using the last selected face - (EditSelection) the space image flickered too much - * - * never access this directly, use EM_set_actFace and EM_get_actFace */ - EditFace *act_face; - - /* copy from scene */ - short selectmode; - /* copy from object actcol */ - short mat_nr; - /* stats */ - int totvert, totedge, totface, totvertsel, totedgesel, totfacesel; - /* shape key being edited */ - int shapenr; - - struct DerivedMesh *derivedCage, *derivedFinal; - /* the custom data layer mask that was last used to calculate - * derivedCage and derivedFinal - */ - int lastDataMask; - - CustomData vdata, edata, fdata; - -} EditMesh; - -#endif - diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index 61fe3b560e2..d4b9bc3d2bc 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -103,7 +103,6 @@ set(SRC BLI_dynlib.h BLI_dynstr.h BLI_edgehash.h - BLI_editVert.h BLI_fileops.h BLI_fileops_types.h BLI_fnmatch.h diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c index f5e7770a7fc..eebdeafcea9 100644 --- a/source/blender/editors/armature/reeb.c +++ b/source/blender/editors/armature/reeb.c @@ -41,7 +41,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_utildefines.h" -#include "BLI_editVert.h" #include "BLI_edgehash.h" #include "BLI_ghash.h" #include "BLI_heap.h" @@ -81,15 +80,23 @@ static ReebGraph *FILTERED_RG = NULL; #define DEBUG_REEB #define DEBUG_REEB_NODE -typedef struct VertexData -{ +/* place-holders! */ +typedef struct EditEdge { + void *fake; +} EditEdge; + +typedef struct EditFace { + void *fake; +} EditFace; +/* end place-holders! */ + +typedef struct VertexData { float w; /* weight */ int i; /* index */ ReebNode *n; } VertexData; -typedef struct EdgeIndex -{ +typedef struct EdgeIndex { EditEdge **edges; int *offset; } EdgeIndex; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index f68c40d5f8a..7eae8b4d67e 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -3640,22 +3640,6 @@ static int vergxco(const void *v1, const void *v2) return (x2->org_idx < 0) - (x1->org_idx < 0); } -#if 0 /* Unused */ -struct facesort { - uintptr_t x; - struct EditFace *efa; -}; - -static int vergface(const void *v1, const void *v2) -{ - const struct facesort *x1 = v1, *x2 = v2; - - if (x1->x > x2->x) return 1; - else if (x1->x < x2->x) return -1; - return 0; -} -#endif - static void xsortvert_flag__doSetX(void *userData, BMVert *UNUSED(eve), int x, int UNUSED(y), int index) { xvertsort *sortblock = userData; diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 09cc6b9c7a5..d7e992e70e9 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -487,66 +487,6 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves, EDBM_selectmode_flush(vc->em); } -/* BMESH_TODO */ -#if 0 -/* this is an exception in that its the only lasso that dosnt use the 3d view (uses space image view) */ -static void do_lasso_select_mesh_uv(int mcords[][2], short moves, short select) -{ - EditFace *efa; - MTFace *tf; - int screenUV[2], nverts, i, ok = 1; - rcti rect; - - BLI_lasso_boundbox(&rect, mcords, moves); - - if (draw_uvs_face_check()) { /* Face Center Sel */ - float cent[2]; - ok = 0; - for (efa = em->faces.first; efa; efa = efa->next) { - /* assume not touched */ - efa->tmp.l = 0; - tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if ((select) != (simaFaceSel_Check(efa, tf))) { - uv_center(tf->uv, cent, (void *)efa->v4); - uvco_to_areaco_noclip(cent, screenUV); - if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) { - efa->tmp.l = ok = 1; - } - } - } - /* (de)selects all tagged faces and deals with sticky modes */ - if (ok) - uvface_setsel__internal(select); - - } - else { /* Vert Sel*/ - for (efa = em->faces.first; efa; efa = efa->next) { - tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if (uvedit_face_visible_test(scene, ima, efa, tf)) { - nverts = efa->v4 ? 4 : 3; - for (i = 0; i < nverts; i++) { - if ((select) != (simaUVSel_Check(efa, tf, i))) { - uvco_to_areaco_noclip(tf->uv[i], screenUV); - if (BLI_in_rcti(&rect, screenUV[0], screenUV[1]) && BLI_lasso_is_point_inside(mcords, moves, screenUV[0], screenUV[1])) { - if (select) { - simaUVSel_Set(efa, tf, i); - } - else { - simaUVSel_UnSet(efa, tf, i); - } - } - } - } - } - } - } - if (ok && G.sima->flag & SI_SYNC_UVSEL) { - if (select) EM_select_flush(vc->em); - else EM_deselect_flush(vc->em); - } -} -#endif - static void do_lasso_select_curve__doSelect(void *userData, Nurb *UNUSED(nu), BPoint *bp, BezTriple *bezt, int beztindex, int x, int y) { LassoSelectUserData *data = userData; diff --git a/source/blender/editors/util/crazyspace.c b/source/blender/editors/util/crazyspace.c index 4b03c846f3e..5430a9a1c90 100644 --- a/source/blender/editors/util/crazyspace.c +++ b/source/blender/editors/util/crazyspace.c @@ -187,75 +187,6 @@ void crazyspace_set_quats_editmesh(BMEditMesh *em, float *origcos, float *mapped em->bm->elem_index_dirty |= BM_VERT; MEM_freeN(vert_table); -#if 0 - BMEditVert *eve, *prev; - BMEditFace *efa; - BMIter iter; - float *v1, *v2, *v3, *v4, *co1, *co2, *co3, *co4; - intptr_t index = 0; - - /* two abused locations in vertices */ - for (eve = em->verts.first; eve; eve = eve->next, index++) { - eve->tmp.p = NULL; - eve->prev = (EditVert *)index; - } - - /* first store two sets of tangent vectors in vertices, we derive it just from the face-edges */ - for (efa = em->faces.first; efa; efa = efa->next) { - - /* retrieve mapped coordinates */ - v1 = mappedcos + 3 * (intptr_t)(efa->v1->prev); - v2 = mappedcos + 3 * (intptr_t)(efa->v2->prev); - v3 = mappedcos + 3 * (intptr_t)(efa->v3->prev); - - co1 = (origcos) ? origcos + 3 * (intptr_t)(efa->v1->prev) : efa->v1->co; - co2 = (origcos) ? origcos + 3 * (intptr_t)(efa->v2->prev) : efa->v2->co; - co3 = (origcos) ? origcos + 3 * (intptr_t)(efa->v3->prev) : efa->v3->co; - - if (efa->v2->tmp.p == NULL && efa->v2->f1) { - set_crazy_vertex_quat(quats, co2, co3, co1, v2, v3, v1); - efa->v2->tmp.p = (void *)quats; - quats += 4; - } - - if (efa->v4) { - v4 = mappedcos + 3 * (intptr_t)(efa->v4->prev); - co4 = (origcos) ? origcos + 3 * (intptr_t)(efa->v4->prev) : efa->v4->co; - - if (efa->v1->tmp.p == NULL && efa->v1->f1) { - set_crazy_vertex_quat(quats, co1, co2, co4, v1, v2, v4); - efa->v1->tmp.p = (void *)quats; - quats += 4; - } - if (efa->v3->tmp.p == NULL && efa->v3->f1) { - set_crazy_vertex_quat(quats, co3, co4, co2, v3, v4, v2); - efa->v3->tmp.p = (void *)quats; - quats += 4; - } - if (efa->v4->tmp.p == NULL && efa->v4->f1) { - set_crazy_vertex_quat(quats, co4, co1, co3, v4, v1, v3); - efa->v4->tmp.p = (void *)quats; - quats += 4; - } - } - else { - if (efa->v1->tmp.p == NULL && efa->v1->f1) { - set_crazy_vertex_quat(quats, co1, co2, co3, v1, v2, v3); - efa->v1->tmp.p = (void *)quats; - quats += 4; - } - if (efa->v3->tmp.p == NULL && efa->v3->f1) { - set_crazy_vertex_quat(quats, co3, co1, co2, v3, v1, v2); - efa->v3->tmp.p = (void *)quats; - quats += 4; - } - } - } - - /* restore abused prev pointer */ - for (prev = NULL, eve = em->verts.first; eve; prev = eve, eve = eve->next) - eve->prev = prev; -#endif } /* BMESH_TODO - use MPolys over MFace's */ From ef3acaedc1eb530b263e9235d83d853f8282a278 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Sat, 28 Apr 2012 13:16:29 +0000 Subject: [PATCH 151/158] Audio: * Fix for [#31099] Audio in Meta-Strips Plays Beyond Strip Cut * Adding a split files option to the mixdown operator which then renders each channel into a separate file --- intern/audaspace/intern/AUD_C-API.cpp | 42 ++++++++++++++++++++ intern/audaspace/intern/AUD_C-API.h | 15 +++++++ intern/audaspace/intern/AUD_FileWriter.cpp | 36 +++++++++++++++++ intern/audaspace/intern/AUD_FileWriter.h | 10 +++++ source/blender/blenkernel/intern/sequencer.c | 26 +++++++++--- source/blender/editors/sound/sound_ops.c | 11 ++++- 6 files changed, 132 insertions(+), 8 deletions(-) diff --git a/intern/audaspace/intern/AUD_C-API.cpp b/intern/audaspace/intern/AUD_C-API.cpp index 9100a277124..50b47650696 100644 --- a/intern/audaspace/intern/AUD_C-API.cpp +++ b/intern/audaspace/intern/AUD_C-API.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include "AUD_NULLDevice.h" #include "AUD_I3DDevice.h" @@ -1236,6 +1237,47 @@ const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned int lengt } } +const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate) +{ + try + { + AUD_SequencerFactory* f = dynamic_cast(sound->get()); + + f->setSpecs(specs.specs); + + std::vector > writers; + + int channels = specs.channels; + specs.channels = AUD_CHANNELS_MONO; + + for(int i = 0; i < channels; i++) + { + std::stringstream stream; + std::string fn = filename; + size_t index = fn.find_last_of('.'); + size_t index_slash = fn.find_last_of('/'); + size_t index_backslash = fn.find_last_of('\\'); + if((index == std::string::npos) || + ((index < index_slash) && (index_slash != std::string::npos)) || + ((index < index_backslash) && (index_backslash != std::string::npos))) + stream << filename << "_" << (i + 1); + else + stream << fn.substr(0, index) << "_" << (i + 1) << fn.substr(index); + writers.push_back(AUD_FileWriter::createWriter(stream.str(), specs, format, codec, bitrate)); + } + + AUD_Reference reader = f->createQualityReader(); + reader->seek(start); + AUD_FileWriter::writeReader(reader, writers, length, buffersize); + + return NULL; + } + catch(AUD_Exception& e) + { + return e.str; + } +} + AUD_Device* AUD_openMixdownDevice(AUD_DeviceSpecs specs, AUD_Sound* sequencer, float volume, float start) { try diff --git a/intern/audaspace/intern/AUD_C-API.h b/intern/audaspace/intern/AUD_C-API.h index 8388af2170d..a52a1fa8369 100644 --- a/intern/audaspace/intern/AUD_C-API.h +++ b/intern/audaspace/intern/AUD_C-API.h @@ -709,6 +709,21 @@ extern void* AUD_getSet(void* set); */ extern const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate); +/** + * Mixes a sound down into multiple files. + * \param sound The sound scene to mix down. + * \param start The start frame. + * \param length The count of frames to write. + * \param buffersize How many samples should be written at once. + * \param filename The file to write to, the channel number and an underscore are added at the beginning. + * \param specs The file's audio specification. + * \param format The file's container format. + * \param codec The codec used for encoding the audio data. + * \param bitrate The bitrate for encoding. + * \return An error message or NULL in case of success. + */ +extern const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate); + /** * Opens a read device and prepares it for mixdown of the sound scene. * \param specs Output audio specifications. diff --git a/intern/audaspace/intern/AUD_FileWriter.cpp b/intern/audaspace/intern/AUD_FileWriter.cpp index df76b667e3f..f74021acad1 100644 --- a/intern/audaspace/intern/AUD_FileWriter.cpp +++ b/intern/audaspace/intern/AUD_FileWriter.cpp @@ -93,3 +93,39 @@ void AUD_FileWriter::writeReader(AUD_Reference reader, AUD_Referenc writer->write(len, buf); } } + +void AUD_FileWriter::writeReader(AUD_Reference reader, std::vector >& writers, unsigned int length, unsigned int buffersize) +{ + AUD_Buffer buffer(buffersize * AUD_SAMPLE_SIZE(reader->getSpecs())); + AUD_Buffer buffer2(buffersize * sizeof(sample_t)); + sample_t* buf = buffer.getBuffer(); + sample_t* buf2 = buffer2.getBuffer(); + + int len; + bool eos = false; + int channels = reader->getSpecs().channels; + + for(unsigned int pos = 0; ((pos < length) || (length <= 0)) && !eos; pos += len) + { + len = buffersize; + if((len > length - pos) && (length > 0)) + len = length - pos; + reader->read(len, eos, buf); + + for(int channel = 0; channel < channels; channel++) + { + for(int i = 0; i < len; i++) + { + // clamping! + if(buf[i * channels + channel] > 1) + buf2[i] = 1; + else if(buf[i * channels + channel] < -1) + buf2[i] = -1; + else + buf2[i] = buf[i * channels + channel]; + } + + writers[channel]->write(len, buf2); + } + } +} diff --git a/intern/audaspace/intern/AUD_FileWriter.h b/intern/audaspace/intern/AUD_FileWriter.h index c9ee2b1ee12..385aba5ef45 100644 --- a/intern/audaspace/intern/AUD_FileWriter.h +++ b/intern/audaspace/intern/AUD_FileWriter.h @@ -31,6 +31,7 @@ #define __AUD_FILEWRITER_H__ #include +#include #include "AUD_Reference.h" @@ -68,6 +69,15 @@ public: * \param buffersize How many samples should be transfered at once. */ static void writeReader(AUD_Reference reader, AUD_Reference writer, unsigned int length, unsigned int buffersize); + + /** + * Writes a reader to several writers. + * \param reader The reader to read from. + * \param writers The writers to write to. + * \param length How many samples should be transfered. + * \param buffersize How many samples should be transfered at once. + */ + static void writeReader(AUD_Reference reader, std::vector >& writers, unsigned int length, unsigned int buffersize); }; #endif //__AUD_FILEWRITER_H__ diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 1c06f1da018..470e1a1c529 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -515,8 +515,17 @@ void build_seqar_cb(ListBase *seqbase, Sequence ***seqar, int *totseq, *seqar = tseqar; } +static int metaseq_start(Sequence *metaseq) +{ + return metaseq->start + metaseq->startofs; +} -static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq) +static int metaseq_end(Sequence *metaseq) +{ + return metaseq->start + metaseq->len - metaseq->endofs; +} + +static void seq_update_sound_bounds_recursive_rec(Scene *scene, Sequence *metaseq, int start, int end) { Sequence *seq; @@ -524,23 +533,28 @@ static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq) * since sound is played outside of evaluating the imbufs, */ for (seq = metaseq->seqbase.first; seq; seq = seq->next) { if (seq->type == SEQ_META) { - seq_update_sound_bounds_recursive(scene, seq); + seq_update_sound_bounds_recursive_rec(scene, seq, MAX2(start, metaseq_start(seq)), MIN2(end, metaseq_end(seq))); } else if (ELEM(seq->type, SEQ_SOUND, SEQ_SCENE)) { if (seq->scene_sound) { int startofs = seq->startofs; int endofs = seq->endofs; - if (seq->startofs + seq->start < metaseq->start + metaseq->startofs) - startofs = metaseq->start + metaseq->startofs - seq->start; + if (seq->startofs + seq->start < start) + startofs = start - seq->start; - if (seq->start + seq->len - seq->endofs > metaseq->start + metaseq->len - metaseq->endofs) - endofs = seq->start + seq->len - metaseq->start - metaseq->len + metaseq->endofs; + if (seq->start + seq->len - seq->endofs > end) + endofs = seq->start + seq->len - end; sound_move_scene_sound(scene, seq->scene_sound, seq->start + startofs, seq->start + seq->len - endofs, startofs); } } } } +static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq) +{ + seq_update_sound_bounds_recursive_rec(scene, metaseq, metaseq_start(metaseq), metaseq_end(metaseq)); +} + void calc_sequence_disp(Scene *scene, Sequence *seq) { if (seq->startofs && seq->startstill) seq->startstill = 0; diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index c238789446f..49eb85d62b4 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -318,6 +318,7 @@ static int sound_mixdown_exec(bContext *C, wmOperator *op) char filename[FILE_MAX]; Scene *scene; Main *bmain; + int split; int bitrate, accuracy; AUD_DeviceSpecs specs; @@ -333,6 +334,7 @@ static int sound_mixdown_exec(bContext *C, wmOperator *op) specs.format = RNA_enum_get(op->ptr, "format"); container = RNA_enum_get(op->ptr, "container"); codec = RNA_enum_get(op->ptr, "codec"); + split = RNA_boolean_get(op->ptr, "split_channels"); scene = CTX_data_scene(C); bmain = CTX_data_main(C); specs.channels = scene->r.ffcodecdata.audio_channels; @@ -341,8 +343,12 @@ static int sound_mixdown_exec(bContext *C, wmOperator *op) BLI_strncpy(filename, path, sizeof(filename)); BLI_path_abs(filename, bmain->name); - result = AUD_mixdown(scene->sound_scene, SFRA * specs.rate / FPS, (EFRA - SFRA) * specs.rate / FPS, - accuracy, filename, specs, container, codec, bitrate); + if(split) + result = AUD_mixdown_per_channel(scene->sound_scene, SFRA * specs.rate / FPS, (EFRA - SFRA) * specs.rate / FPS, + accuracy, filename, specs, container, codec, bitrate); + else + result = AUD_mixdown(scene->sound_scene, SFRA * specs.rate / FPS, (EFRA - SFRA) * specs.rate / FPS, + accuracy, filename, specs, container, codec, bitrate); if (result) { BKE_report(op->reports, RPT_ERROR, result); @@ -590,6 +596,7 @@ static void SOUND_OT_mixdown(wmOperatorType *ot) RNA_def_enum(ot->srna, "codec", codec_items, AUD_CODEC_FLAC, "Codec", "Audio Codec"); RNA_def_enum(ot->srna, "format", format_items, AUD_FORMAT_S16, "Format", "Sample format"); RNA_def_int(ot->srna, "bitrate", 192, 32, 512, "Bitrate", "Bitrate in kbit/s", 32, 512); + RNA_def_boolean(ot->srna, "split_channels", 0, "Split channels", "Each channel will be rendered into a mono file."); #endif // WITH_AUDASPACE } From 6e40b8b3cf33980d406bf8b6c405c112159926db Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Sat, 28 Apr 2012 13:37:44 +0000 Subject: [PATCH 152/158] Hopefully a fix for [#31097] glibc error when playing sound using BGE --- intern/audaspace/intern/AUD_Reference.h | 18 ++++++++++++++++ .../audaspace/intern/AUD_ReferenceHandler.cpp | 21 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/intern/audaspace/intern/AUD_Reference.h b/intern/audaspace/intern/AUD_Reference.h index 2e07417154b..0c9f02c0155 100644 --- a/intern/audaspace/intern/AUD_Reference.h +++ b/intern/audaspace/intern/AUD_Reference.h @@ -31,6 +31,7 @@ #include #include +#include // #define MEM_DEBUG @@ -49,8 +50,13 @@ private: * Saves the reference counts. */ static std::map m_references; + static pthread_mutex_t m_mutex; + static bool m_mutex_initialised; public: + + static pthread_mutex_t* getMutex(); + /** * Reference increment. * \param reference The reference. @@ -108,6 +114,7 @@ public: template AUD_Reference(U* reference) { + pthread_mutex_lock(AUD_ReferenceHandler::getMutex()); m_original = reference; m_reference = dynamic_cast(reference); AUD_ReferenceHandler::incref(m_original); @@ -115,6 +122,7 @@ public: if(m_reference != NULL) std::cerr << "+" << typeid(*m_reference).name() << std::endl; #endif + pthread_mutex_unlock(AUD_ReferenceHandler::getMutex()); } AUD_Reference() @@ -129,6 +137,7 @@ public: */ AUD_Reference(const AUD_Reference& ref) { + pthread_mutex_lock(AUD_ReferenceHandler::getMutex()); m_original = ref.m_original; m_reference = ref.m_reference; AUD_ReferenceHandler::incref(m_original); @@ -136,11 +145,13 @@ public: if(m_reference != NULL) std::cerr << "+" << typeid(*m_reference).name() << std::endl; #endif + pthread_mutex_unlock(AUD_ReferenceHandler::getMutex()); } template explicit AUD_Reference(const AUD_Reference& ref) { + pthread_mutex_lock(AUD_ReferenceHandler::getMutex()); m_original = ref.get(); m_reference = dynamic_cast(ref.get()); AUD_ReferenceHandler::incref(m_original); @@ -148,6 +159,7 @@ public: if(m_reference != NULL) std::cerr << "+" << typeid(*m_reference).name() << std::endl; #endif + pthread_mutex_unlock(AUD_ReferenceHandler::getMutex()); } /** @@ -156,12 +168,14 @@ public: */ ~AUD_Reference() { + pthread_mutex_lock(AUD_ReferenceHandler::getMutex()); #ifdef MEM_DEBUG if(m_reference != NULL) std::cerr << "-" << typeid(*m_reference).name() << std::endl; #endif if(AUD_ReferenceHandler::decref(m_original)) delete m_reference; + pthread_mutex_unlock(AUD_ReferenceHandler::getMutex()); } /** @@ -173,6 +187,8 @@ public: if(&ref == this) return *this; + pthread_mutex_lock(AUD_ReferenceHandler::getMutex()); + #ifdef MEM_DEBUG if(m_reference != NULL) std::cerr << "-" << typeid(*m_reference).name() << std::endl; @@ -188,6 +204,8 @@ public: std::cerr << "+" << typeid(*m_reference).name() << std::endl; #endif + pthread_mutex_unlock(AUD_ReferenceHandler::getMutex()); + return *this; } diff --git a/intern/audaspace/intern/AUD_ReferenceHandler.cpp b/intern/audaspace/intern/AUD_ReferenceHandler.cpp index 24f645df761..3e9f6707262 100644 --- a/intern/audaspace/intern/AUD_ReferenceHandler.cpp +++ b/intern/audaspace/intern/AUD_ReferenceHandler.cpp @@ -29,3 +29,24 @@ #include "AUD_Reference.h" std::map AUD_ReferenceHandler::m_references; +pthread_mutex_t AUD_ReferenceHandler::m_mutex; +bool AUD_ReferenceHandler::m_mutex_initialised = false; + +pthread_mutex_t *AUD_ReferenceHandler::getMutex() +{ + if(!m_mutex_initialised) + { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + + pthread_mutex_init(&m_mutex, &attr); + + pthread_mutexattr_destroy(&attr); + + m_mutex_initialised = true; + } + + return &m_mutex; +} + From 887d1533f81b0ee89975efd8162a011b99c976af Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 15:05:35 +0000 Subject: [PATCH 153/158] Correction to recent commmit related on splitting audio channels: descriptions shouldn't end with dot. --- source/blender/editors/sound/sound_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 49eb85d62b4..1bae6406c03 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -596,7 +596,7 @@ static void SOUND_OT_mixdown(wmOperatorType *ot) RNA_def_enum(ot->srna, "codec", codec_items, AUD_CODEC_FLAC, "Codec", "Audio Codec"); RNA_def_enum(ot->srna, "format", format_items, AUD_FORMAT_S16, "Format", "Sample format"); RNA_def_int(ot->srna, "bitrate", 192, 32, 512, "Bitrate", "Bitrate in kbit/s", 32, 512); - RNA_def_boolean(ot->srna, "split_channels", 0, "Split channels", "Each channel will be rendered into a mono file."); + RNA_def_boolean(ot->srna, "split_channels", 0, "Split channels", "Each channel will be rendered into a mono file"); #endif // WITH_AUDASPACE } From ef054e165cad35715a5b2388aac3db68a65ea275 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 15:14:16 +0000 Subject: [PATCH 154/158] style cleanup: format 'for' loop macros the same as for loops, some renaming to BLI_array macros. --- .../blender/blenkernel/intern/DerivedMesh.c | 2 +- .../blenkernel/intern/editderivedmesh.c | 6 +- source/blender/blenkernel/intern/ipo.c | 2 +- source/blender/blenkernel/intern/mesh.c | 22 +++---- .../blenkernel/intern/modifiers_bmesh.c | 4 +- source/blender/blenkernel/intern/object.c | 7 ++- source/blender/blenkernel/intern/sequencer.c | 5 +- .../blender/blenkernel/intern/subsurf_ccg.c | 10 ++-- source/blender/blenlib/BLI_array.h | 14 ++--- source/blender/blenlib/intern/bpath.c | 2 +- source/blender/blenloader/intern/readfile.c | 20 +++---- source/blender/blenloader/intern/writefile.c | 4 +- source/blender/bmesh/intern/bmesh_construct.c | 4 +- source/blender/bmesh/intern/bmesh_mesh_conv.c | 4 +- source/blender/bmesh/intern/bmesh_mods.c | 2 +- source/blender/bmesh/operators/bmo_bevel.c | 12 ++-- source/blender/bmesh/operators/bmo_connect.c | 12 ++-- source/blender/bmesh/operators/bmo_create.c | 12 ++-- source/blender/bmesh/operators/bmo_dupe.c | 4 +- source/blender/bmesh/operators/bmo_extrude.c | 6 +- .../bmesh/operators/bmo_join_triangles.c | 2 +- source/blender/bmesh/operators/bmo_mirror.c | 2 +- .../bmesh/operators/bmo_removedoubles.c | 10 ++-- .../blender/bmesh/operators/bmo_subdivide.c | 18 +++--- .../blender/bmesh/operators/bmo_triangulate.c | 4 +- source/blender/bmesh/operators/bmo_utils.c | 10 ++-- source/blender/editors/animation/keyframing.c | 3 +- .../blender/editors/armature/editarmature.c | 36 +++++------- .../editors/armature/editarmature_retarget.c | 2 +- source/blender/editors/armature/poseUtils.c | 6 +- source/blender/editors/armature/poseobject.c | 57 +++++++------------ source/blender/editors/curve/editcurve.c | 2 +- .../blender/editors/gpencil/gpencil_paint.c | 2 +- .../editors/interface/interface_handlers.c | 2 +- .../editors/interface/interface_layout.c | 4 +- .../editors/interface/interface_templates.c | 8 +-- .../editors/interface/interface_utils.c | 2 +- .../blender/editors/mesh/editmesh_loopcut.c | 4 +- source/blender/editors/mesh/editmesh_rip.c | 4 +- source/blender/editors/mesh/editmesh_select.c | 4 +- source/blender/editors/mesh/editmesh_slide.c | 2 +- source/blender/editors/mesh/mesh_navmesh.c | 2 +- source/blender/editors/mesh/meshtools.c | 13 ++--- source/blender/editors/object/object_add.c | 12 ++-- source/blender/editors/object/object_bake.c | 8 +-- .../editors/object/object_constraint.c | 21 +++---- source/blender/editors/object/object_edit.c | 25 ++++---- source/blender/editors/object/object_group.c | 8 +-- source/blender/editors/object/object_hook.c | 3 +- .../blender/editors/object/object_modifier.c | 2 +- .../blender/editors/object/object_relations.c | 41 +++++++------ source/blender/editors/object/object_select.c | 45 +++++++-------- .../blender/editors/object/object_transform.c | 27 +++++---- source/blender/editors/object/object_vgroup.c | 3 +- .../blender/editors/physics/particle_edit.c | 2 +- .../blender/editors/render/render_shading.c | 2 +- .../editors/sculpt_paint/paint_image.c | 2 +- .../editors/sculpt_paint/paint_stroke.c | 2 +- source/blender/editors/sound/sound_ops.c | 2 +- .../editors/space_logic/logic_buttons.c | 2 +- source/blender/editors/space_node/node_edit.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 7 +-- .../editors/space_sequencer/sequencer_edit.c | 20 +++---- .../space_sequencer/sequencer_select.c | 24 ++++---- .../blender/editors/space_time/space_time.c | 3 +- .../editors/space_view3d/view3d_select.c | 10 ++-- .../editors/space_view3d/view3d_snap.c | 6 +- .../editors/transform/transform_conversions.c | 5 +- source/blender/editors/uvedit/uvedit_draw.c | 20 +++---- source/blender/editors/uvedit/uvedit_ops.c | 12 ++-- .../editors/uvedit/uvedit_smart_stitch.c | 2 +- source/blender/makesrna/intern/rna_access.c | 12 ++-- source/blender/python/intern/bpy_rna.c | 24 ++++---- .../windowmanager/intern/wm_event_system.c | 5 +- .../windowmanager/intern/wm_operators.c | 9 ++- 75 files changed, 333 insertions(+), 388 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 511b4603791..0fd030be39c 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1223,7 +1223,7 @@ void DM_update_weight_mcol(Object *ob, DerivedMesh *dm, int const draw_flag, for (i=0; inumPolyData; i++, mp++) { ml = mloop + mp->loopstart; - BLI_array_growitems(wtcol_l, mp->totloop); + BLI_array_grow_items(wtcol_l, mp->totloop); for (j = 0; j < mp->totloop; j++, ml++, totloop++) { copy_v4_v4_char((char *)&wtcol_l[totloop], (char *)&wtcol_v[4 * ml->v]); diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 857f6e75e2c..263f89a363e 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -162,7 +162,7 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) /* no need to ensure the loop order, we know its ok */ else if (f->len == 3) { - BLI_array_growone(looptris); + BLI_array_grow_one(looptris); l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f); for (j=0; l; l=BM_iter_step(&liter), j++) { looptris[i][j] = l; @@ -171,7 +171,7 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) } else if (f->len == 4) { BMLoop *ltmp[4]; - BLI_array_growitems(looptris, 2); + BLI_array_grow_items(looptris, 2); l = BM_iter_new(&liter, bm, BM_LOOPS_OF_FACE, f); for (j=0; l; l=BM_iter_step(&liter), j++) { @@ -219,7 +219,7 @@ static void BMEdit_RecalcTessellation_intern(BMEditMesh *tm) BLI_addfilledge(&sf_ctx, firstv, v); totfilltri = BLI_edgefill_ex(&sf_ctx, FALSE, f->no); - BLI_array_growitems(looptris, totfilltri); + BLI_array_grow_items(looptris, totfilltri); for (efa = sf_ctx.fillfacebase.first; efa; efa=efa->next) { BMLoop *l1= efa->v1->tmp.p; diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 2fd1d291363..c33bb973385 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -1906,7 +1906,7 @@ void do_versions_ipos_to_animato(Main *main) AnimData *adt= BKE_id_add_animdata(id); - SEQ_BEGIN(ed, seq) { + SEQ_BEGIN (ed, seq) { IpoCurve *icu = (seq->ipo) ? seq->ipo->curve.first : NULL; short adrcode = SEQ_FAC1; diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 7509260d503..14ccd401a30 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1875,8 +1875,8 @@ void mesh_calc_normals(MVert *mverts, int numVerts, MLoop *mloop, MPoly *mpolys, BLI_array_empty(vertcos); BLI_array_empty(vertnos); - BLI_array_growitems(vertcos, mp->totloop); - BLI_array_growitems(vertnos, mp->totloop); + BLI_array_grow_items(vertcos, mp->totloop); + BLI_array_grow_items(vertnos, mp->totloop); for (j=0; j < mp->totloop; j++) { int vindex = ml[j].v; @@ -1885,7 +1885,7 @@ void mesh_calc_normals(MVert *mverts, int numVerts, MLoop *mloop, MPoly *mpolys, } BLI_array_empty(edgevecbuf); - BLI_array_growitems(edgevecbuf, mp->totloop); + BLI_array_grow_items(edgevecbuf, mp->totloop); accumulate_vertex_normals_poly(vertnos, pnors[i], vertcos, edgevecbuf, mp->totloop); } @@ -2422,8 +2422,8 @@ int mesh_recalcTessellation(CustomData *fdata, #ifdef USE_TESSFACE_SPEEDUP #define ML_TO_MF(i1, i2, i3) \ - BLI_array_growone(mface_to_poly_map); \ - BLI_array_growone(mface); \ + BLI_array_grow_one(mface_to_poly_map); \ + BLI_array_grow_one(mface); \ mface_to_poly_map[mface_index] = poly_index; \ mf= &mface[mface_index]; \ /* set loop indices, transformed to vert indices later */ \ @@ -2441,8 +2441,8 @@ int mesh_recalcTessellation(CustomData *fdata, /* ALMOST IDENTICAL TO DEFINE ABOVE (see EXCEPTION) */ #define ML_TO_MF_QUAD() \ - BLI_array_growone(mface_to_poly_map); \ - BLI_array_growone(mface); \ + BLI_array_grow_one(mface_to_poly_map); \ + BLI_array_grow_one(mface); \ mface_to_poly_map[mface_index] = poly_index; \ mf= &mface[mface_index]; \ /* set loop indices, transformed to vert indices later */ \ @@ -2500,10 +2500,10 @@ int mesh_recalcTessellation(CustomData *fdata, totfilltri = BLI_edgefill(&sf_ctx, FALSE); if (totfilltri) { - BLI_array_growitems(mface_to_poly_map, totfilltri); - BLI_array_growitems(mface, totfilltri); + BLI_array_grow_items(mface_to_poly_map, totfilltri); + BLI_array_grow_items(mface, totfilltri); if (poly_orig_index) { - BLI_array_growitems(mface_orig_index, totfilltri); + BLI_array_grow_items(mface_orig_index, totfilltri); } for (f = sf_ctx.fillfacebase.first; f; f = f->next, mf++) { @@ -2672,7 +2672,7 @@ int mesh_mpoly_to_mface(struct CustomData *fdata, struct CustomData *ldata, k = 0; for (i = 0; itotloop, 3, 4)) { - BLI_array_growone(mface); + BLI_array_grow_one(mface); mf = &mface[k]; mf->mat_nr = mp->mat_nr; diff --git a/source/blender/blenkernel/intern/modifiers_bmesh.c b/source/blender/blenkernel/intern/modifiers_bmesh.c index 573b8a725b3..99bb3468320 100644 --- a/source/blender/blenkernel/intern/modifiers_bmesh.c +++ b/source/blender/blenkernel/intern/modifiers_bmesh.c @@ -117,8 +117,8 @@ void DM_to_bmesh_ex(DerivedMesh *dm, BMesh *bm) BLI_array_empty(verts); BLI_array_empty(edges); - BLI_array_growitems(verts, mp->totloop); - BLI_array_growitems(edges, mp->totloop); + BLI_array_grow_items(verts, mp->totloop); + BLI_array_grow_items(edges, mp->totloop); ml = mloop + mp->loopstart; for (j = 0; j < mp->totloop; j++, ml++) { diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 6d3cce6ccfc..6b44ba976d5 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -625,10 +625,11 @@ void unlink_object(Object *ob) #endif if (sce->ed) { Sequence *seq; - SEQ_BEGIN(sce->ed, seq) - if (seq->scene_camera==ob) { - seq->scene_camera= NULL; + SEQ_BEGIN (sce->ed, seq) { + if (seq->scene_camera == ob) { + seq->scene_camera = NULL; } + } SEQ_END } } diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 470e1a1c529..9291cb90dff 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -259,8 +259,7 @@ void seq_free_editing(Scene *scene) if (ed == NULL) return; - SEQ_BEGIN(ed, seq) - { + SEQ_BEGIN (ed, seq) { seq_free_sequence(scene, seq); } SEQ_END @@ -363,7 +362,7 @@ unsigned int seq_hash_render_data(const SeqRenderData *a) /* ************************* iterator ************************** */ /* *************** (replaces old WHILE_SEQ) ********************* */ -/* **************** use now SEQ_BEGIN() SEQ_END ***************** */ +/* **************** use now SEQ_BEGIN () SEQ_END ***************** */ /* sequence strip iterator: * - builds a full array, recursively into meta strips */ diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 83225163ea3..129d3a3f698 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -314,7 +314,7 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, MLoop *ml = mloop + mp->loopstart; BLI_array_empty(fverts); - BLI_array_growitems(fverts, nverts); + BLI_array_grow_items(fverts, nverts); get_face_uv_map_vert(vmap, mpoly, ml, i, fverts); @@ -350,7 +350,7 @@ static int ss_sync_from_uv(CCGSubSurf *ss, CCGSubSurf *origss, DerivedMesh *dm, CCGFace *f; BLI_array_empty(fverts); - BLI_array_growitems(fverts, nverts); + BLI_array_grow_items(fverts, nverts); get_face_uv_map_vert(vmap, mpoly, ml, i, fverts); ccgSubSurf_syncFace(ss, SET_INT_IN_POINTER(i), nverts, fverts, &f); @@ -583,7 +583,7 @@ static void ss_sync_from_derivedmesh(CCGSubSurf *ss, DerivedMesh *dm, CCGFace *f; BLI_array_empty(fVerts); - BLI_array_growitems(fVerts, mp->totloop); + BLI_array_grow_items(fVerts, mp->totloop); ml = mloop + mp->loopstart; for (j = 0; j < mp->totloop; j++, ml++) { @@ -3150,13 +3150,13 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, *((int *)ccgSubSurf_getFaceUserData(ss, f)) = vertNum; BLI_array_empty(loopidx); - BLI_array_growitems(loopidx, numVerts); + BLI_array_grow_items(loopidx, numVerts); for (s = 0; s < numVerts; s++) { loopidx[s] = loopindex++; } BLI_array_empty(vertidx); - BLI_array_growitems(vertidx, numVerts); + BLI_array_grow_items(vertidx, numVerts); for (s = 0; s < numVerts; s++) { CCGVert *v = ccgSubSurf_getFaceVert(f, s); vertidx[s] = GET_INT_FROM_POINTER(ccgSubSurf_getVertVertHandle(v)); diff --git a/source/blender/blenlib/BLI_array.h b/source/blender/blenlib/BLI_array.h index dac0143b5b6..7069732eeb6 100644 --- a/source/blender/blenlib/BLI_array.h +++ b/source/blender/blenlib/BLI_array.h @@ -44,7 +44,7 @@ * int i; * * for (i=0; i<10; i++) { - * BLI_array_growone(arr); + * BLI_array_grow_one(arr); * arr[i] = something; * } * BLI_array_free(arr); @@ -116,32 +116,32 @@ ) /* grow an array by a specified number of items */ -#define BLI_array_growitems(arr, num) ( \ +#define BLI_array_grow_items(arr, num) ( \ ((void *)(arr) == NULL && (void *)(_##arr##_static) != NULL) ? \ ((arr = (void*)_##arr##_static), (_##arr##_count += num)) : \ _bli_array_grow_items(arr, num) \ ) /* returns length of array */ -#define BLI_array_growone(arr) BLI_array_growitems(arr, 1) +#define BLI_array_grow_one(arr) BLI_array_grow_items(arr, 1) /* appends an item to the array. */ #define BLI_array_append(arr, item) ( \ - (void) BLI_array_growone(arr), \ + (void) BLI_array_grow_one(arr), \ (void) (arr[_##arr##_count - 1] = item) \ ) /* appends an item to the array and returns a pointer to the item in the array. * item is not a pointer, but actual data value.*/ #define BLI_array_append_r(arr, item) ( \ - (void) BLI_array_growone(arr), \ + (void) BLI_array_grow_one(arr), \ (void) (arr[_##arr##_count - 1] = item), \ (&arr[_##arr##_count - 1]) \ ) #define BLI_array_reserve(arr, num) \ - BLI_array_growitems(arr, num), (void)(_##arr##_count -= (num)) + BLI_array_grow_items(arr, num), (void)(_##arr##_count -= (num)) #define BLI_array_free(arr) \ @@ -163,7 +163,7 @@ /* set the count of the array, doesn't actually increase the allocated array * size. don't use this unless you know what you're doing. */ -#define BLI_array_set_length(arr, count) \ +#define BLI_array_length_set(arr, count) \ _##arr##_count = (count) /* only to prevent unused warnings */ diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 7c3ad2c62a2..8534621ccf1 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -510,7 +510,7 @@ void bpath_traverse_id(Main *bmain, ID *id, BPathVisitor visit_cb, const int fla if (scene->ed) { Sequence *seq; - SEQ_BEGIN(scene->ed, seq) { + SEQ_BEGIN (scene->ed, seq) { if (SEQ_HAS_PATH(seq)) { if (ELEM(seq->type, SEQ_MOVIE, SEQ_SOUND)) { rewrite_path_fixed_dirfile(seq->strip->dir, seq->strip->stripdata->name, diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 545ba2f198f..9aa87a86b3e 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4841,7 +4841,7 @@ static void lib_link_scene(FileData *fd, Main *main) } } - SEQ_BEGIN(sce->ed, seq) { + SEQ_BEGIN (sce->ed, seq) { if (seq->ipo) seq->ipo= newlibadr_us(fd, sce->id.lib, seq->ipo); seq->scene_sound = NULL; if (seq->scene) { @@ -4972,7 +4972,7 @@ static void direct_link_scene(FileData *fd, Scene *sce) /* recursive link sequences, lb will be correctly initialized */ link_recurs_seq(fd, &ed->seqbase); - SEQ_BEGIN(ed, seq) { + SEQ_BEGIN (ed, seq) { seq->seq1= newdataadr(fd, seq->seq1); seq->seq2= newdataadr(fd, seq->seq2); seq->seq3= newdataadr(fd, seq->seq3); @@ -8994,7 +8994,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) while (sce) { ed= sce->ed; if (ed) { - SEQ_BEGIN(sce->ed, seq) { + SEQ_BEGIN (sce->ed, seq) { if (seq->type==SEQ_IMAGE || seq->type==SEQ_MOVIE) seq->flag |= SEQ_MAKE_PREMUL; } @@ -10409,7 +10409,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Sequence *seq; for (sce=main->scene.first; sce; sce=sce->id.next) { - SEQ_BEGIN(sce->ed, seq) { + SEQ_BEGIN (sce->ed, seq) { if (seq->blend_mode == 0) seq->blend_opacity = 100.0f; } @@ -10762,7 +10762,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) while (sce) { ed= sce->ed; if (ed) { - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (seq->strip && seq->strip->proxy) { seq->strip->proxy->quality =90; } @@ -10831,7 +10831,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (scene = main->scene.first; scene; scene = scene->id.next) { if (scene->ed && scene->ed->seqbasep) { - SEQ_BEGIN(scene->ed, seq) { + SEQ_BEGIN (scene->ed, seq) { if (seq->type == SEQ_HD_SOUND) { char str[FILE_MAX]; BLI_join_dirfile(str, sizeof(str), seq->strip->dir, seq->strip->stripdata->name); @@ -11801,7 +11801,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if ((sce->r.ffcodecdata.flags & FFMPEG_MULTIPLEX_AUDIO) == 0) sce->r.ffcodecdata.audio_codec = 0x0; // CODEC_ID_NONE - SEQ_BEGIN(sce->ed, seq) { + SEQ_BEGIN (sce->ed, seq) { seq->volume = 1.0f; } SEQ_END @@ -12070,7 +12070,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (scene= main->scene.first; scene; scene=scene->id.next) { if (scene) { Sequence *seq; - SEQ_BEGIN(scene->ed, seq) { + SEQ_BEGIN (scene->ed, seq) { if (seq->sat==0.0f) { seq->sat= 1.0f; } @@ -12545,7 +12545,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (scene=main->scene.first; scene; scene=scene->id.next) { scene->r.ffcodecdata.audio_channels = 2; scene->audio.volume = 1.0f; - SEQ_BEGIN(scene->ed, seq) { + SEQ_BEGIN (scene->ed, seq) { seq->pitch = 1.0f; } SEQ_END @@ -14220,7 +14220,7 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce) if (sce->ed) { Sequence *seq; - SEQ_BEGIN(sce->ed, seq) { + SEQ_BEGIN (sce->ed, seq) { if (seq->scene) expand_doit(fd, mainvar, seq->scene); if (seq->scene_camera) expand_doit(fd, mainvar, seq->scene_camera); if (seq->sound) expand_doit(fd, mainvar, seq->sound); diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index ab620e983d5..42736b6b787 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2108,13 +2108,13 @@ static void write_scenes(WriteData *wd, ListBase *scebase) /* reset write flags too */ - SEQ_BEGIN(ed, seq) { + SEQ_BEGIN (ed, seq) { if (seq->strip) seq->strip->done= 0; writestruct(wd, DATA, "Sequence", 1, seq); } SEQ_END - SEQ_BEGIN(ed, seq) { + SEQ_BEGIN (ed, seq) { if (seq->strip && seq->strip->done==0) { /* write strip with 'done' at 0 because readfile */ diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index cbdd5dd6983..c2d5d93cbc3 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -871,8 +871,8 @@ BMesh *BM_mesh_copy(BMesh *bm_old) BLI_array_empty(loops); BLI_array_empty(edges); - BLI_array_growitems(loops, f->len); - BLI_array_growitems(edges, f->len); + BLI_array_grow_items(loops, f->len); + BLI_array_grow_items(edges, f->len); l = BM_iter_new(&liter, bm_old, BM_LOOPS_OF_FACE, f); for (j = 0; j < f->len; j++, l = BM_iter_step(&liter)) { diff --git a/source/blender/bmesh/intern/bmesh_mesh_conv.c b/source/blender/bmesh/intern/bmesh_mesh_conv.c index f72efe8ab5f..351fb8e941b 100644 --- a/source/blender/bmesh/intern/bmesh_mesh_conv.c +++ b/source/blender/bmesh/intern/bmesh_mesh_conv.c @@ -282,8 +282,8 @@ void BM_mesh_bm_from_me(BMesh *bm, Mesh *me, int set_key, int act_key_nr) BLI_array_empty(fedges); BLI_array_empty(verts); - BLI_array_growitems(fedges, mpoly->totloop); - BLI_array_growitems(verts, mpoly->totloop); + BLI_array_grow_items(fedges, mpoly->totloop); + BLI_array_grow_items(verts, mpoly->totloop); for (j = 0; j < mpoly->totloop; j++) { ml = &me->mloop[mpoly->loopstart + j]; diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c index a5e761af783..5f3836cc413 100644 --- a/source/blender/bmesh/intern/bmesh_mods.c +++ b/source/blender/bmesh/intern/bmesh_mods.c @@ -771,7 +771,7 @@ int BM_face_validate(BMFace *face, FILE *err) fflush(err); } - BLI_array_growitems(verts, face->len); + BLI_array_grow_items(verts, face->len); BM_ITER_ELEM_INDEX (l, &iter, face, BM_LOOPS_OF_FACE, i) { verts[i] = l->v; if (l->e->v1 == l->e->v2) { diff --git a/source/blender/bmesh/operators/bmo_bevel.c b/source/blender/bmesh/operators/bmo_bevel.c index 46dd7606940..b6b54b82f3d 100644 --- a/source/blender/bmesh/operators/bmo_bevel.c +++ b/source/blender/bmesh/operators/bmo_bevel.c @@ -242,7 +242,7 @@ void bmo_bevel_exec(BMesh *bm, BMOperator *op) if (!BMO_elem_flag_test(bm, e, EDGE_OLD)) { BM_elem_index_set(e, BLI_array_count(etags)); /* set_dirty! */ - BLI_array_growone(etags); + BLI_array_grow_one(etags); BMO_elem_flag_enable(bm, e, EDGE_OLD); } @@ -256,11 +256,11 @@ void bmo_bevel_exec(BMesh *bm, BMOperator *op) BM_ITER_ELEM (l2, &liter2, l->f, BM_LOOPS_OF_FACE) { BM_elem_index_set(l2, BLI_array_count(tags)); /* set_loop */ - BLI_array_growone(tags); + BLI_array_grow_one(tags); if (!BMO_elem_flag_test(bm, l2->e, EDGE_OLD)) { BM_elem_index_set(l2->e, BLI_array_count(etags)); /* set_dirty! */ - BLI_array_growone(etags); + BLI_array_grow_one(etags); BMO_elem_flag_enable(bm, l2->e, EDGE_OLD); } @@ -291,7 +291,7 @@ void bmo_bevel_exec(BMesh *bm, BMOperator *op) } if (!BLI_smallhash_haskey(&hash, (intptr_t)e)) { - BLI_array_growone(etags); + BLI_array_grow_one(etags); BM_elem_index_set(e, BLI_array_count(etags) - 1); /* set_dirty! */ BLI_smallhash_insert(&hash, (intptr_t)e, NULL); BMO_elem_flag_enable(bm, e, EDGE_OLD); @@ -309,11 +309,11 @@ void bmo_bevel_exec(BMesh *bm, BMOperator *op) /* create tags for all loops in l-> */ BM_ITER_ELEM (l2, &liter2, l->f, BM_LOOPS_OF_FACE) { - BLI_array_growone(tags); + BLI_array_grow_one(tags); BM_elem_index_set(l2, BLI_array_count(tags) - 1); /* set_loop */ if (!BLI_smallhash_haskey(&hash, (intptr_t)l2->e)) { - BLI_array_growone(etags); + BLI_array_grow_one(etags); BM_elem_index_set(l2->e, BLI_array_count(etags) - 1); /* set_dirty! */ BLI_smallhash_insert(&hash, (intptr_t)l2->e, NULL); BMO_elem_flag_enable(bm, l2->e, EDGE_OLD); diff --git a/source/blender/bmesh/operators/bmo_connect.c b/source/blender/bmesh/operators/bmo_connect.c index 3c1f10be4c4..b8abe112c4d 100644 --- a/source/blender/bmesh/operators/bmo_connect.c +++ b/source/blender/bmesh/operators/bmo_connect.c @@ -71,10 +71,10 @@ void bmo_connectverts_exec(BMesh *bm, BMOperator *op) } if (lastl != l->prev && lastl != l->next) { - BLI_array_growone(loops); + BLI_array_grow_one(loops); loops[BLI_array_count(loops) - 1] = lastl; - BLI_array_growone(loops); + BLI_array_grow_one(loops); loops[BLI_array_count(loops) - 1] = l; } @@ -87,10 +87,10 @@ void bmo_connectverts_exec(BMesh *bm, BMOperator *op) } if (BLI_array_count(loops) > 2) { - BLI_array_growone(loops); + BLI_array_grow_one(loops); loops[BLI_array_count(loops) - 1] = loops[BLI_array_count(loops) - 2]; - BLI_array_growone(loops); + BLI_array_grow_one(loops); loops[BLI_array_count(loops) - 1] = loops[0]; } @@ -101,10 +101,10 @@ void bmo_connectverts_exec(BMesh *bm, BMOperator *op) continue; } - BLI_array_growone(verts); + BLI_array_grow_one(verts); verts[BLI_array_count(verts) - 1] = loops[i * 2]->v; - BLI_array_growone(verts); + BLI_array_grow_one(verts); verts[BLI_array_count(verts) - 1] = loops[i * 2 + 1]->v; } diff --git a/source/blender/bmesh/operators/bmo_create.c b/source/blender/bmesh/operators/bmo_create.c index f2ba110b43d..6f08ab421f3 100644 --- a/source/blender/bmesh/operators/bmo_create.c +++ b/source/blender/bmesh/operators/bmo_create.c @@ -766,7 +766,7 @@ static EPath *edge_find_shortest_path(BMesh *bm, BMOperator *op, BMEdge *edge, E i = 0; BLI_array_empty(verts); for (i = 0, node = path->nodes.first; node; node = node->next, i++) { - BLI_array_growone(verts); + BLI_array_grow_one(verts); verts[i] = node->v; } @@ -999,7 +999,7 @@ void bmo_edgenet_fill_exec(BMesh *bm, BMOperator *op) } edata[BM_elem_index_get(e)].ftag++; - BLI_array_growone(edges); + BLI_array_grow_one(edges); edges[i++] = e; BLI_array_append(verts, node->v); @@ -1009,7 +1009,7 @@ void bmo_edgenet_fill_exec(BMesh *bm, BMOperator *op) vote_on_winding(edge, path->nodes.last, winding); } - BLI_array_growone(edges); + BLI_array_grow_one(edges); edges[i++] = edge; edata[BM_elem_index_get(edge)].ftag++; @@ -1157,7 +1157,7 @@ void bmo_edgenet_prepare(BMesh *bm, BMOperator *op) i = 0; while (e) { BMO_elem_flag_enable(bm, e, EDGE_VIS); - BLI_array_growone(edges); + BLI_array_grow_one(edges); edges[i] = e; e = edge_next(bm, e); @@ -1166,11 +1166,11 @@ void bmo_edgenet_prepare(BMesh *bm, BMOperator *op) if (!count) { edges1 = edges; - BLI_array_set_length(edges1, BLI_array_count(edges)); + BLI_array_length_set(edges1, BLI_array_count(edges)); } else { edges2 = edges; - BLI_array_set_length(edges2, BLI_array_count(edges)); + BLI_array_length_set(edges2, BLI_array_count(edges)); } BLI_array_empty(edges); diff --git a/source/blender/bmesh/operators/bmo_dupe.c b/source/blender/bmesh/operators/bmo_dupe.c index 36d446a0a8c..0659a42c26d 100644 --- a/source/blender/bmesh/operators/bmo_dupe.c +++ b/source/blender/bmesh/operators/bmo_dupe.c @@ -277,8 +277,8 @@ static void copy_mesh(BMOperator *op, BMesh *source, BMesh *target) BLI_array_empty(vtar); BLI_array_empty(edar); - BLI_array_growitems(vtar, f->len); - BLI_array_growitems(edar, f->len); + BLI_array_grow_items(vtar, f->len); + BLI_array_grow_items(edar, f->len); copy_face(op, source, f, target, vtar, edar, vhash, ehash); BMO_elem_flag_enable(source, f, DUPE_DONE); diff --git a/source/blender/bmesh/operators/bmo_extrude.c b/source/blender/bmesh/operators/bmo_extrude.c index 19e2dd85b0e..4fced09c588 100644 --- a/source/blender/bmesh/operators/bmo_extrude.c +++ b/source/blender/bmesh/operators/bmo_extrude.c @@ -58,7 +58,7 @@ void bmo_extrude_face_indiv_exec(BMesh *bm, BMOperator *op) BMO_ITER (f, &siter, bm, op, "faces", BM_FACE) { BLI_array_empty(edges); - BLI_array_growitems(edges, f->len); + BLI_array_grow_items(edges, f->len); i = 0; firstv = lastv = NULL; @@ -573,12 +573,12 @@ static void solidify_add_thickness(BMesh *bm, const float dist) continue; } - BLI_array_growitems(verts, f->len); + BLI_array_grow_items(verts, f->len); BM_ITER_ELEM_INDEX (l, &loopIter, f, BM_LOOPS_OF_FACE, i) { verts[i] = l->v->co; } - BLI_array_growitems(face_angles, f->len); + BLI_array_grow_items(face_angles, f->len); angle_poly_v3(face_angles, (const float **)verts, f->len); i = 0; diff --git a/source/blender/bmesh/operators/bmo_join_triangles.c b/source/blender/bmesh/operators/bmo_join_triangles.c index 582039fc1a2..d780e309118 100644 --- a/source/blender/bmesh/operators/bmo_join_triangles.c +++ b/source/blender/bmesh/operators/bmo_join_triangles.c @@ -293,7 +293,7 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op) measure = measure_facepair(v1, v2, v3, v4, limit); if (measure < limit) { - BLI_array_growone(jedges); + BLI_array_grow_one(jedges); jedges[i].e = e; jedges[i].weight = measure; diff --git a/source/blender/bmesh/operators/bmo_mirror.c b/source/blender/bmesh/operators/bmo_mirror.c index cf1669d441e..53c51dfd483 100644 --- a/source/blender/bmesh/operators/bmo_mirror.c +++ b/source/blender/bmesh/operators/bmo_mirror.c @@ -71,7 +71,7 @@ void bmo_mirror_exec(BMesh *bm, BMOperator *op) i = 0; /* v2 = BM_iter_new(&iter, bm, BM_VERTS_OF_MESH, NULL); */ /* UNUSED */ BMO_ITER (v, &siter, bm, &dupeop, "newout", BM_VERT) { - BLI_array_growone(vmap); + BLI_array_grow_one(vmap); vmap[i] = v; /* v2 = BM_iter_step(&iter); */ /* UNUSED */ i++; diff --git a/source/blender/bmesh/operators/bmo_removedoubles.c b/source/blender/bmesh/operators/bmo_removedoubles.c index 149f2537a12..70dcc6fa3ae 100644 --- a/source/blender/bmesh/operators/bmo_removedoubles.c +++ b/source/blender/bmesh/operators/bmo_removedoubles.c @@ -191,8 +191,8 @@ void bmo_weldverts_exec(BMesh *bm, BMOperator *op) continue; } - BLI_array_growone(edges); - BLI_array_growone(loops); + BLI_array_grow_one(edges); + BLI_array_grow_one(loops); edges[a] = e2; loops[a] = l; @@ -393,7 +393,7 @@ void bmo_collapse_exec(BMesh *bm, BMOperator *op) INIT_MINMAX(min, max); for (tot = 0; e; tot++, e = BMW_step(&walker)) { - BLI_array_growone(edges); + BLI_array_grow_one(edges); edges[tot] = e; DO_MINMAX(e->v1->co, min, max); @@ -454,7 +454,7 @@ static void bmo_collapsecon_do_layer(BMesh *bm, BMOperator *op, int layer) CustomData_data_initminmax(type, &min, &max); for (tot = 0; l2; tot++, l2 = BMW_step(&walker)) { - BLI_array_growone(blocks); + BLI_array_grow_one(blocks); blocks[tot] = CustomData_bmesh_get_layer_n(&bm->ldata, l2->head.data, layer); CustomData_data_dominmax(type, blocks[tot], &min, &max); } @@ -501,7 +501,7 @@ void bmesh_finddoubles_common(BMesh *bm, BMOperator *op, BMOperator *optarget, c i = 0; BMO_ITER (v, &oiter, bm, op, "verts", BM_VERT) { - BLI_array_growone(verts); + BLI_array_grow_one(verts); verts[i++] = v; } diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c index 7da02a594d5..d96d0f6c74d 100644 --- a/source/blender/bmesh/operators/bmo_subdivide.c +++ b/source/blender/bmesh/operators/bmo_subdivide.c @@ -778,8 +778,8 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) BLI_array_empty(edges); BLI_array_empty(verts); - BLI_array_growitems(edges, face->len); - BLI_array_growitems(verts, face->len); + BLI_array_grow_items(edges, face->len); + BLI_array_grow_items(verts, face->len); matched = 0; @@ -825,7 +825,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) } } if (matched) { - BLI_array_growone(facedata); + BLI_array_grow_one(facedata); b = BLI_array_count(facedata) - 1; facedata[b].pat = pat; facedata[b].start = verts[i]; @@ -861,7 +861,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) } } if (matched) { - BLI_array_growone(facedata); + BLI_array_grow_one(facedata); j = BLI_array_count(facedata) - 1; BMO_elem_flag_enable(bm, face, SUBD_SPLIT); @@ -877,7 +877,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) } if (!matched && totesel) { - BLI_array_growone(facedata); + BLI_array_grow_one(facedata); j = BLI_array_count(facedata) - 1; BMO_elem_flag_enable(bm, face, SUBD_SPLIT); @@ -918,7 +918,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) /* for case of two edges, connecting them shouldn't be too hard */ BM_ITER_ELEM (l, &liter, face, BM_LOOPS_OF_FACE) { - BLI_array_growone(loops); + BLI_array_grow_one(loops); loops[BLI_array_count(loops) - 1] = l; } @@ -951,10 +951,10 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) b += numcuts - 1; for (j = 0; j < numcuts; j++) { - BLI_array_growone(splits); + BLI_array_grow_one(splits); splits[BLI_array_count(splits) - 1] = loops[a]; - BLI_array_growone(splits); + BLI_array_grow_one(splits); splits[BLI_array_count(splits) - 1] = loops[b]; b = (b - 1) % vlen; @@ -989,7 +989,7 @@ void bmo_esubd_exec(BMesh *bm, BMOperator *op) } for (j = 0; j < face->len; j++) { - BLI_array_growone(verts); + BLI_array_grow_one(verts); } j = 0; diff --git a/source/blender/bmesh/operators/bmo_triangulate.c b/source/blender/bmesh/operators/bmo_triangulate.c index 7fd6cf6769c..9632a79b7dd 100644 --- a/source/blender/bmesh/operators/bmo_triangulate.c +++ b/source/blender/bmesh/operators/bmo_triangulate.c @@ -59,8 +59,8 @@ void bmo_triangulate_exec(BMesh *bm, BMOperator *op) BLI_array_empty(projectverts); BLI_array_empty(newfaces); - BLI_array_growitems(projectverts, face->len * 3); - BLI_array_growitems(newfaces, face->len); + BLI_array_grow_items(projectverts, face->len * 3); + BLI_array_grow_items(newfaces, face->len); BM_face_triangulate(bm, face, projectverts, EDGE_NEW, FACE_NEW, newfaces, use_beauty); diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index 3cfa70f6e6c..8409c5b76b8 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -348,7 +348,7 @@ void bmo_righthandfaces_exec(BMesh *bm, BMOperator *op) * stack (if we use simple function recursion, we'd end up overloading * the stack on large meshes). */ - BLI_array_growone(fstack); + BLI_array_grow_one(fstack); fstack[0] = startf; BMO_elem_flag_enable(bm, startf, FACE_VIS); @@ -382,7 +382,7 @@ void bmo_righthandfaces_exec(BMesh *bm, BMOperator *op) } if (i == maxi) { - BLI_array_growone(fstack); + BLI_array_grow_one(fstack); maxi++; } @@ -420,7 +420,7 @@ void bmo_vertexsmooth_exec(BMesh *bm, BMOperator *op) i = 0; BMO_ITER (v, &siter, bm, op, "verts", BM_VERT) { - BLI_array_growone(cos); + BLI_array_grow_one(cos); co = cos[i]; j = 0; @@ -1035,7 +1035,7 @@ void bmo_face_reverseuvs_exec(BMesh *bm, BMOperator *op) int i; BLI_array_empty(uvs); - BLI_array_growitems(uvs, fs->len); + BLI_array_grow_items(uvs, fs->len); BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) { MLoopUV *luv = CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPUV); @@ -1141,7 +1141,7 @@ void bmo_face_reversecolors_exec(BMesh *bm, BMOperator *op) int i; BLI_array_empty(cols); - BLI_array_growitems(cols, fs->len); + BLI_array_grow_items(cols, fs->len); BM_ITER_ELEM_INDEX (lf, &l_iter, fs, BM_LOOPS_OF_FACE, i) { cols[i] = *((MLoopCol *)CustomData_bmesh_get(&bm->ldata, lf->head.data, CD_MLOOPCOL)); diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 47972ca2c6f..dcaa4073bae 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -1353,8 +1353,7 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) float cfra= (float)CFRA; // XXX for now, don't bother about all the yucky offset crap // XXX more comprehensive tests will be needed - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { ID *id= (ID *)ob; FCurve *fcu, *fcn; short success= 0; diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index c529ad66d73..cd698bbf09f 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -755,8 +755,7 @@ static int pose_visual_transform_apply_exec (bContext *C, wmOperator *UNUSED(op) * * TODO, loop over children before parents if multiple bones * at once are to be predictable*/ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { float delta_mat[4][4]; /* chan_mat already contains the delta transform from rest pose to pose-mode pose @@ -922,7 +921,7 @@ int join_armature_exec(bContext *C, wmOperator *UNUSED(op)) pose= ob->pose; ob->mode &= ~OB_MODE_POSE; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { if ((base->object->type==OB_ARMATURE) && (base->object!=ob)) { bArmature *curarm= base->object->data; @@ -1193,7 +1192,7 @@ static int separate_armature_exec (bContext *C, wmOperator *UNUSED(op)) /* 1) only edit-base selected */ // TODO: use context iterators for this? - CTX_DATA_BEGIN(C, Base *, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (base->object==obedit) base->flag |= 1; else base->flag &= ~1; } @@ -2816,8 +2815,7 @@ static int armature_fill_bones_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* loop over all bones, and only consider if visible */ - CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, visible_bones) { if (!(ebone->flag & BONE_CONNECTED) && (ebone->flag & BONE_ROOTSEL)) fill_add_joint(ebone, 0, &points); if (ebone->flag & BONE_TIPSEL) @@ -3530,8 +3528,7 @@ static int armature_subdivide_exec(bContext *C, wmOperator *op) /* loop over all editable bones */ // XXX the old code did this in reverse order though! - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { for (i=numcuts+1; i>1; i--) { /* compute cut ratio first */ float cutratio= 1.0f / (float)i; @@ -3819,7 +3816,7 @@ static int armature_parent_set_exec(bContext *C, wmOperator *op) */ /* parent selected bones to the active one */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { if (ELEM(ebone, actbone, actmirb) == 0) { if (ebone->flag & BONE_SELECTED) bone_connect_to_new_parent(arm->edbo, ebone, actbone, val); @@ -3844,7 +3841,7 @@ static int armature_parent_set_invoke(bContext *C, wmOperator *UNUSED(op), wmEve uiLayout *layout= uiPupMenuLayout(pup); int allchildbones = 0; - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { if (ebone != actbone) { if (ebone->parent != actbone) allchildbones= 1; } @@ -3903,7 +3900,7 @@ static int armature_parent_clear_exec(bContext *C, wmOperator *op) bArmature *arm= (bArmature *)ob->data; int val = RNA_enum_get(op->ptr, "type"); - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { editbone_clear_parent(ebone, val); } CTX_DATA_END; @@ -3939,7 +3936,7 @@ void ARMATURE_OT_parent_clear(wmOperatorType *ot) static int armature_select_inverse_exec(bContext *C, wmOperator *UNUSED(op)) { /* Set the flags */ - CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, visible_bones) { /* ignore bone if selection can't change */ if ((ebone->flag & BONE_UNSELECTABLE) == 0) { /* select bone */ @@ -3981,7 +3978,7 @@ static int armature_de_select_all_exec(bContext *C, wmOperator *op) } /* Set the flags */ - CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, visible_bones) { /* ignore bone if selection can't change */ if ((ebone->flag & BONE_UNSELECTABLE) == 0) { switch (action) { @@ -4215,7 +4212,7 @@ static int armature_align_bones_exec(bContext *C, wmOperator *op) */ /* align selected bones to the active one */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { if (ELEM(ebone, actbone, actmirb) == 0) { if (ebone->flag & BONE_SELECTED) bone_align_to_bone(arm->edbo, ebone, actbone); @@ -4904,8 +4901,7 @@ static int pose_clear_transform_generic_exec(bContext *C, wmOperator *op, } /* only clear relevant transforms for selected bones */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { /* run provided clearing function */ clear_func(pchan); @@ -5046,7 +5042,7 @@ static int pose_de_select_all_exec(bContext *C, wmOperator *op) } /* Set the flags */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { /* select pchan only if selectable, but deselect works always */ switch (action) { case SEL_SELECT: @@ -5435,8 +5431,7 @@ static int armature_flip_names_exec (bContext *C, wmOperator *UNUSED(op)) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { flip_side_name(newname, ebone->name, TRUE); // 1 = do strip off number extensions ED_armature_bone_rename(arm, ebone->name, newname); } @@ -5480,8 +5475,7 @@ static int armature_autoside_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { BLI_strncpy(newname, ebone->name, sizeof(newname)); if (bone_autoside_name(newname, 1, axis, ebone->head[axis], ebone->tail[axis])) ED_armature_bone_rename(arm, ebone->name, newname); diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c index 7e4d76cb794..77b035024a9 100644 --- a/source/blender/editors/armature/editarmature_retarget.c +++ b/source/blender/editors/armature/editarmature_retarget.c @@ -2555,7 +2555,7 @@ void BIF_retargetArmature(bContext *C) printf("Reeb Graph created\n"); - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { Object *ob = base->object; if (ob->type==OB_ARMATURE) { diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c index 1a9ff73e5dc..88d219137f7 100644 --- a/source/blender/editors/armature/poseUtils.c +++ b/source/blender/editors/armature/poseUtils.c @@ -131,8 +131,7 @@ void poseAnim_mapping_get (bContext *C, ListBase *pfLinks, Object *ob, bAction * /* for each Pose-Channel which gets affected, get the F-Curves for that channel * and set the relevant transform flags... */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { fcurves_to_pchan_links_get(pfLinks, ob, act, pchan); } CTX_DATA_END; @@ -141,8 +140,7 @@ void poseAnim_mapping_get (bContext *C, ListBase *pfLinks, Object *ob, bAction * * i.e. if nothing selected, do whole pose */ if (pfLinks->first == NULL) { - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, visible_pose_bones) { fcurves_to_pchan_links_get(pfLinks, ob, act, pchan); } CTX_DATA_END; diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 043383d79a3..f54cdb330e3 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -216,8 +216,7 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* set up path data for bones being calculated */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { /* verify makes sure that the selected bone has a bone with the appropriate settings */ animviz_verify_motionpaths(op->reports, scene, ob, pchan); } @@ -324,8 +323,7 @@ static int pose_select_constraint_target_exec(bContext *C, wmOperator *UNUSED(op bConstraint *con; int found= 0; - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { if (pchan->bone->flag & BONE_SELECTED) { for (con= pchan->constraints.first; con; con= con->next) { bConstraintTypeInfo *cti= constraint_get_typeinfo(con); @@ -387,8 +385,7 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op) int add_to_sel = RNA_boolean_get(op->ptr, "extend"); int found= 0; - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { curbone= pchan->bone; if ((curbone->flag & BONE_UNSELECTABLE)==0) { @@ -505,8 +502,7 @@ static short pose_select_same_group (bContext *C, Object *ob, short extend) */ group_flags= MEM_callocN(numGroups+1, "pose_select_same_group"); - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { /* keep track of group as group to use later? */ if (pchan->bone->flag & BONE_SELECTED) { group_flags[pchan->agrp_index] = 1; @@ -522,8 +518,7 @@ static short pose_select_same_group (bContext *C, Object *ob, short extend) /* small optimization: only loop through bones a second time if there are any groups tagged */ if (tagged) { /* only if group matches (and is not selected or current bone) */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) { /* check if the group used by this bone is counted */ if (group_flags[pchan->agrp_index]) { @@ -552,8 +547,7 @@ static short pose_select_same_layer (bContext *C, Object *ob, short extend) return 0; /* figure out what bones are selected */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { /* keep track of layers to use later? */ if (pchan->bone->flag & BONE_SELECTED) layers |= pchan->bone->layer; @@ -567,8 +561,7 @@ static short pose_select_same_layer (bContext *C, Object *ob, short extend) return 0; /* select bones that are on same layers as layers flag */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { /* if bone is on a suitable layer, and the bone can have its selection changed, select it */ if ((layers & pchan->bone->layer) && (pchan->bone->flag & BONE_UNSELECTABLE)==0) { pchan->bone->flag |= BONE_SELECTED; @@ -598,8 +591,7 @@ static int pose_select_same_keyingset(bContext *C, Object *ob, short extend) /* if not extending selection, deselect all selected first */ if (extend == 0) { - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) pchan->bone->flag &= ~BONE_SELECTED; } @@ -1403,8 +1395,7 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) pose_add_group(ob); /* add selected bones to group then */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { pchan->agrp_index= pose->active_group; done= 1; } @@ -1457,8 +1448,7 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *UNUSED(op)) return OPERATOR_CANCELLED; /* find selected bones to remove from all bone groups */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { if (pchan->agrp_index) { pchan->agrp_index= 0; done= 1; @@ -1660,8 +1650,7 @@ static void pose_group_select(bContext *C, Object *ob, int select) { bPose *pose= ob->pose; - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, visible_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) { if (select) { if (pchan->agrp_index == pose->active_group) @@ -1765,8 +1754,7 @@ static int pose_flip_names_exec (bContext *C, wmOperator *UNUSED(op)) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { char newname[MAXBONENAME]; flip_side_name(newname, pchan->name, TRUE); ED_armature_bone_rename(arm, pchan->name, newname); @@ -1812,8 +1800,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op) arm= ob->data; /* loop through selected bones, auto-naming them */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { BLI_strncpy(newname, pchan->name, sizeof(newname)); if (bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis])) ED_armature_bone_rename(arm, pchan->name, newname); @@ -1862,8 +1849,7 @@ static int pose_bone_rotmode_exec (bContext *C, wmOperator *op) int mode = RNA_enum_get(op->ptr, "type"); /* set rotation mode of selected bones */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { pchan->rotmode = mode; } CTX_DATA_END; @@ -2046,8 +2032,7 @@ static int pose_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *evt) int layers[32]= {0}; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ @@ -2080,8 +2065,7 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op) RNA_boolean_get_array(op->ptr, "layers", layers); /* set layers of pchans based on the values set in the operator props */ - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { /* get pointer for pchan, and write flags this way */ RNA_pointer_create((ID *)ob->data, &RNA_Bone, pchan->bone, &ptr); RNA_boolean_set_array(&ptr, "layers", layers); @@ -2121,8 +2105,7 @@ static int armature_bone_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev int layers[32]= {0}; /* hardcoded for now - we can only have 32 armature layers, so this should be fine... */ /* get layers that are active already */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { short bit; /* loop over the bits for this pchan's layers, adding layers where they're needed */ @@ -2152,8 +2135,7 @@ static int armature_bone_layers_exec (bContext *C, wmOperator *op) RNA_boolean_get_array(op->ptr, "layers", layers); /* set layers of pchans based on the values set in the operator props */ - CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) - { + CTX_DATA_BEGIN (C, EditBone *, ebone, selected_editable_bones) { /* get pointer for pchan, and write flags this way */ RNA_pointer_create((ID *)arm, &RNA_EditBone, ebone, &ptr); RNA_boolean_set_array(&ptr, "layers", layers); @@ -2195,8 +2177,7 @@ static int pose_flip_quats_exec (bContext *C, wmOperator *UNUSED(op)) KeyingSet *ks = ANIM_builtin_keyingset_get_named(NULL, ANIM_KS_LOC_ROT_SCALE_ID); /* loop through all selected pchans, flipping and keying (as needed) */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { /* only if bone is using quaternion rotation */ if (pchan->rotmode == ROT_MODE_QUAT) { /* quaternions have 720 degree range */ diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 0b21e514f0e..d339af39b22 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -6071,7 +6071,7 @@ int join_curve_exec(bContext *C, wmOperator *UNUSED(op)) /* trasnform all selected curves inverse in obact */ invert_m4_m4(imat, ob->obmat); - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { if (base->object->type==ob->type) { if (base->object != ob) { diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index c366de6fa43..303ca89b168 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -1611,7 +1611,7 @@ static int gpencil_draw_exec (bContext *C, wmOperator *op) /* loop over the stroke RNA elements recorded (i.e. progress of mouse movement), * setting the relevant values in context at each step, then applying */ - RNA_BEGIN(op->ptr, itemptr, "stroke") { + RNA_BEGIN (op->ptr, itemptr, "stroke") { float mousef[2]; //printf("\t\tGP - stroke elem\n"); diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index e64446be84b..42005c0888c 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -781,7 +781,7 @@ static void ui_add_smart_controller(bContext *C, uiBut *from, uiBut *to) act_to = (bActuator *)(to->poin); /* (1) get the object */ - CTX_DATA_BEGIN(C, Object *, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { for (sens_iter = ob_iter->sensors.first; sens_iter; sens_iter = sens_iter->next) { if (&(sens_iter->links) == sens_from_links) { ob = ob_iter; diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 67e295503c2..31bc9497ab5 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1265,7 +1265,7 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, const char *s const int skip_filter = !but->changed; /* build a temporary list of relevant items first */ - RNA_PROP_BEGIN(&but->rnasearchpoin, itemptr, but->rnasearchprop) { + RNA_PROP_BEGIN (&but->rnasearchpoin, itemptr, but->rnasearchprop) { if (flag & PROP_ID_SELF_CHECK) if (itemptr.data == but->rnapoin.id.data) continue; @@ -1333,7 +1333,7 @@ static void search_id_collection(StructRNA *ptype, PointerRNA *ptr, PropertyRNA *prop = NULL; - RNA_STRUCT_BEGIN(ptr, iprop) { + RNA_STRUCT_BEGIN (ptr, iprop) { /* if it's a collection and has same pointer type, we've got it */ if (RNA_property_type(iprop) == PROP_COLLECTION) { srna = RNA_property_pointer_type(ptr, iprop); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index d0f760d16fb..bafd85e9451 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -2362,7 +2362,7 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, const char * if (ptr->data && prop) { /* create list items */ - RNA_PROP_BEGIN(ptr, itemptr, prop) { + RNA_PROP_BEGIN (ptr, itemptr, prop) { /* create button */ if (!(i % 9)) row = uiLayoutRow(col, 0); @@ -2384,7 +2384,7 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, const char * if (ptr->data && prop) { /* create list items */ - RNA_PROP_BEGIN(ptr, itemptr, prop) { + RNA_PROP_BEGIN (ptr, itemptr, prop) { found = (activei == i); if (found) { @@ -2446,7 +2446,7 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, const char * if (ptr->data && prop) { /* create list items */ - RNA_PROP_BEGIN(ptr, itemptr, prop) { + RNA_PROP_BEGIN (ptr, itemptr, prop) { if (i >= pa->list_scroll && i < pa->list_scroll + items) list_item_row(C, col, ptr, &itemptr, i, rnaicon, activeptr, activeprop, prop_list); @@ -2703,7 +2703,7 @@ static void template_keymap_item_properties(uiLayout *layout, const char *title, flow = uiLayoutColumnFlow(layout, 2, 0); - RNA_STRUCT_BEGIN(ptr, prop) { + RNA_STRUCT_BEGIN (ptr, prop) { int flag = RNA_property_flag(prop); if (flag & PROP_HIDDEN) diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index c903040a6b9..9220491a60c 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -139,7 +139,7 @@ int uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, int (*check_prop)(Pointe assert(ELEM3(label_align, '\0', 'H', 'V')); - RNA_STRUCT_BEGIN(ptr, prop) { + RNA_STRUCT_BEGIN (ptr, prop) { flag = RNA_property_flag(prop); if (flag & PROP_HIDDEN || (check_prop && check_prop(ptr, prop) == FALSE)) continue; diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c index 12174d5b9fa..beb5345ca9b 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.c +++ b/source/blender/editors/mesh/editmesh_loopcut.c @@ -240,7 +240,7 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) edgering_find_order(lasteed, eed, lastv1, v); lastv1 = v[0][0]; - BLI_array_growitems(edges, previewlines); + BLI_array_grow_items(edges, previewlines); for (i = 1; i <= previewlines; i++) { co[0][0] = (v[0][1]->co[0] - v[0][0]->co[0]) * (i / ((float)previewlines + 1)) + v[0][0]->co[0]; @@ -265,7 +265,7 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) edgering_find_order(lasteed, startedge, lastv1, v); - BLI_array_growitems(edges, previewlines); + BLI_array_grow_items(edges, previewlines); for (i = 1; i <= previewlines; i++) { if (!v[0][0] || !v[0][1] || !v[1][0] || !v[1][1]) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index b5f486947b4..b490dbe49c8 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -263,7 +263,7 @@ static EdgeLoopPair *edbm_ripsel_looptag_helper(BMesh *bm) uid_start = uid; uid = uid_end + bm->totedge; - BLI_array_growone(eloop_pairs); + BLI_array_grow_one(eloop_pairs); lp = &eloop_pairs[BLI_array_count(eloop_pairs) - 1]; BM_edge_loop_pair(e_last, &lp->l_a, &lp->l_b); /* no need to check, we know this will be true */ @@ -277,7 +277,7 @@ static EdgeLoopPair *edbm_ripsel_looptag_helper(BMesh *bm) } /* null terminate */ - BLI_array_growone(eloop_pairs); + BLI_array_grow_one(eloop_pairs); lp = &eloop_pairs[BLI_array_count(eloop_pairs) - 1]; lp->l_a = lp->l_b = NULL; diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 05352938aba..0a0eb7964f6 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -2307,7 +2307,7 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) BLI_array_empty(stack); i = 1; - BLI_array_growone(stack); + BLI_array_grow_one(stack); stack[i - 1] = f; while (i) { @@ -2330,7 +2330,7 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op) /* invalidate: edge too sharp */ if (angle < sharp) { - BLI_array_growone(stack); + BLI_array_grow_one(stack); stack[i] = l2->f; i++; } diff --git a/source/blender/editors/mesh/editmesh_slide.c b/source/blender/editors/mesh/editmesh_slide.c index 3cbb099a0a9..6c3af98dee9 100644 --- a/source/blender/editors/mesh/editmesh_slide.c +++ b/source/blender/editors/mesh/editmesh_slide.c @@ -505,7 +505,7 @@ static int vtx_slide_set_frame(VertexSlideOp *vso) BM_ITER_ELEM_INDEX (edge, &iter, sel_vtx, BM_EDGES_OF_VERT, idx) { curr_vert = BM_edge_other_vert(edge, sel_vtx); if (curr_vert) { - BLI_array_growone(vtx_frame); + BLI_array_grow_one(vtx_frame); copy_v3_v3(vtx_frame[idx], curr_vert->co); diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c index 71aaacb7e49..d9f35aaeedd 100644 --- a/source/blender/editors/mesh/mesh_navmesh.c +++ b/source/blender/editors/mesh/mesh_navmesh.c @@ -430,7 +430,7 @@ static int navmesh_create_exec(bContext *C, wmOperator *op) LinkNode *obs = NULL; Base *navmeshBase = NULL; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { if (base->object->type == OB_MESH) { if (base->object->body_type == OB_BODY_TYPE_NAVMESH) { if (!navmeshBase || base == scene->basact) { diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index b3ac3069cd9..d8e9dea598c 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -122,7 +122,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) } /* count & check */ - CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { if (base->object->type == OB_MESH) { me = base->object->data; @@ -198,8 +198,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) } /* first pass over objects - copying materials and vertexgroups across */ - CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases) - { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { /* only act if a mesh, and not the one we're joining to */ if ((ob != base->object) && (base->object->type == OB_MESH)) { me = base->object->data; @@ -299,8 +298,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) /* inverse transform for all selected meshes in this object */ invert_m4_m4(imat, ob->obmat); - CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases) - { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { /* only join if this is a mesh */ if (base->object->type == OB_MESH) { me = base->object->data; @@ -569,7 +567,7 @@ int join_mesh_shapes_exec(bContext *C, wmOperator *op) KeyBlock *kb; int ok = 0, nonequal_verts = 0; - CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { if (base->object == ob) continue; if (base->object->type == OB_MESH) { @@ -601,8 +599,7 @@ int join_mesh_shapes_exec(bContext *C, wmOperator *op) } /* now ready to add new keys from selected meshes */ - CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases) - { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { if (base->object == ob) continue; if (base->object->type == OB_MESH) { diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index ba527e6fa6a..082b6f6dc93 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -906,7 +906,7 @@ static int object_delete_exec(bContext *C, wmOperator *op) if (CTX_data_edit_object(C)) return OPERATOR_CANCELLED; - CTX_DATA_BEGIN(C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { /* if (base->object->type==OB_LAMP) islamp= 1; */ @@ -972,7 +972,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) int a; /* XXX check object pointers */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { object_relink(ob); } CTX_DATA_END; @@ -1189,7 +1189,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) clear_id_newpoins(); - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { make_object_duplilist_real(C, scene, base, use_base_parent, use_hierarchy); /* dependencies were changed */ @@ -1294,7 +1294,7 @@ static int convert_exec(bContext *C, wmOperator *op) /* don't forget multiple users! */ /* reset flags */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { ob= base->object; ob->flag &= ~OB_DONE; @@ -1305,7 +1305,7 @@ static int convert_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { ob= base->object; if (ob->flag & OB_DONE || !IS_TAGGED(ob->data)) { @@ -1879,7 +1879,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) clear_id_newpoins(); clear_sca_new_poins(); /* sensor/contr/act */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { Base *basen= object_add_duplicate_internal(bmain, scene, base, dupflag); /* note that this is safe to do with this context iterator, diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 8b22b4613b8..dffcaad42fd 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -922,7 +922,7 @@ static int multiresbake_check(bContext *C, wmOperator *op) MultiresModifierData *mmd; int ok= 1, a; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { ob= base->object; if (ob->type != OB_MESH) { @@ -1079,7 +1079,7 @@ static int multiresbake_image_exec_locked(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; if (scene->r.bake_flag&R_BAKE_CLEAR) { /* clear images */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { Mesh *me; ob= base->object; @@ -1090,7 +1090,7 @@ static int multiresbake_image_exec_locked(bContext *C, wmOperator *op) CTX_DATA_END; } - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { MultiresBakeRender bkr= {0}; ob= base->object; @@ -1139,7 +1139,7 @@ static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) bkj->use_lores_mesh= scene->r.bake_flag&R_BAKE_LORES_MESH; bkj->bake_clear= scene->r.bake_flag&R_BAKE_CLEAR; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { MultiresBakerJobData *data; DerivedMesh *lores_dm; int lvl; diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index ec3567454df..158d323b802 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -1150,8 +1150,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op)) Object *ob= object_pose_armature_get(CTX_data_active_object(C)); /* free constraints for all selected bones */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { free_constraints(&pchan->constraints); pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST); } @@ -1188,8 +1187,7 @@ static int object_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op)) Scene *scene= CTX_data_scene(C); /* do freeing */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { free_constraints(&ob->constraints); DAG_id_tag_update(&ob->id, OB_RECALC_OB); } @@ -1231,8 +1229,7 @@ static int pose_constraint_copy_exec(bContext *C, wmOperator *op) } /* copy all constraints from active posebone to all selected posebones */ - CTX_DATA_BEGIN(C, bPoseChannel*, chan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, chan, selected_pose_bones) { /* if we're not handling the object we're copying from, copy all constraints over */ if (pchan != chan) { copy_constraints(&chan->constraints, &pchan->constraints, TRUE); @@ -1272,8 +1269,7 @@ static int object_constraint_copy_exec(bContext *C, wmOperator *UNUSED(op)) Object *obact = ED_object_active_context(C); /* copy all constraints from active object to all selected objects */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { /* if we're not handling the object we're copying from, copy all constraints over */ if (obact != ob) { copy_constraints(&ob->constraints, &obact->constraints, TRUE); @@ -1363,8 +1359,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if the active Object is Armature, and we can search for bones, do so... */ if ((obact->type == OB_ARMATURE) && (only_ob == 0)) { /* search in list of selected Pose-Channels for target */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { /* just use the first one that we encounter, as long as it is not the active one */ if (pchan != pchanact) { *tar_ob= obact; @@ -1380,8 +1375,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if not yet found, try selected Objects... */ if (found == 0) { /* search in selected objects context */ - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { /* just use the first object we encounter (that isn't the active object) * and which fulfills the criteria for the object-target that we've got */ @@ -1776,8 +1770,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *UNUSED(op)) Object *ob= object_pose_armature_get(CTX_data_active_object(C)); /* only remove IK Constraints */ - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { + CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { bConstraint *con, *next; // TODO: should we be checking if these contraints were local before we try and remove them? diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 69ced0c0f8a..3043900bce4 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -180,7 +180,7 @@ static int object_hide_view_set_exec(bContext *C, wmOperator *op) short changed = 0; const int unselected= RNA_boolean_get(op->ptr, "unselected"); - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (!unselected) { if (base->flag & SELECT) { base->flag &= ~SELECT; @@ -236,7 +236,7 @@ static int object_hide_render_clear_exec(bContext *C, wmOperator *UNUSED(op)) short changed= 0; /* XXX need a context loop to handle such cases */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->restrictflag & OB_RESTRICT_RENDER) { ob->restrictflag &= ~OB_RESTRICT_RENDER; changed= 1; @@ -270,7 +270,7 @@ static int object_hide_render_set_exec(bContext *C, wmOperator *op) { const int unselected= RNA_boolean_get(op->ptr, "unselected"); - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (!unselected) { if (base->flag & SELECT) { base->object->restrictflag |= OB_RESTRICT_RENDER; @@ -1108,8 +1108,7 @@ void ED_objects_recalculate_paths(bContext *C, Scene *scene) ListBase targets = {NULL, NULL}; /* loop over objects in scene */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { /* set flag to force recalc, then grab the relevant bones to target */ ob->avs.recalc |= ANIMVIZ_RECALC_PATHS; animviz_get_object_motionpaths(ob, &targets); @@ -1129,7 +1128,7 @@ static int object_calculate_paths_exec (bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); /* set up path data for bones being calculated */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { /* verify makes sure that the selected bone has a bone with the appropriate settings */ animviz_verify_motionpaths(op->reports, scene, ob, NULL); @@ -1167,7 +1166,7 @@ void OBJECT_OT_paths_calculate (wmOperatorType *ot) void ED_objects_clear_paths(bContext *C) { /* loop over objects in scene */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->mpath) { animviz_free_motionpath(ob->mpath); @@ -1215,7 +1214,7 @@ static int shade_smooth_exec(bContext *C, wmOperator *op) int clear= (strcmp(op->idname, "OBJECT_OT_shade_flat") == 0); int done= 0; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->type==OB_MESH) { mesh_set_smooth_flag(ob, !clear); @@ -1632,7 +1631,7 @@ static int game_property_copy_exec(bContext *C, wmOperator *op) prop = BLI_findlink(&ob->prop, propid-1); if (prop) { - CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { if (ob != ob_iter) set_ob_property(ob_iter, prop); } CTX_DATA_END; @@ -1640,7 +1639,7 @@ static int game_property_copy_exec(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { if (ob != ob_iter) { if (type == COPY_PROPERTIES_REPLACE) copy_properties(&ob_iter->prop, &ob->prop); @@ -1679,7 +1678,7 @@ void OBJECT_OT_game_property_copy(wmOperatorType *ot) static int game_property_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { free_properties(&ob_iter->prop); } CTX_DATA_END; @@ -1707,7 +1706,7 @@ static int logicbricks_copy_exec(bContext *C, wmOperator *UNUSED(op)) { Object *ob=ED_object_active_context(C); - CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { if (ob != ob_iter) { /* first: free all logic */ free_sensors(&ob_iter->sensors); @@ -1763,7 +1762,7 @@ static int game_physics_copy_exec(bContext *C, wmOperator *UNUSED(op)) { Object *ob=ED_object_active_context(C); - CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { if (ob != ob_iter) { ob_iter->gameflag = ob->gameflag; ob_iter->gameflag2 = ob->gameflag2; diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 3867b1e34cb..97367b2e340 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -75,7 +75,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) for (group= bmain->group.first; group; group=group->id.next) { if (object_in_group(ob, group)) { /* Assign groups to selected objects */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { if (base->object->dup_group != group) add_to_group(group, base->object, scene, base); else @@ -127,7 +127,7 @@ static int objects_remove_active_exec(bContext *C, wmOperator *op) for (group= bmain->group.first; group; group=group->id.next) { if (object_in_group(ob, group)) { /* Assign groups to selected objects */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { rem_from_group(group, base->object, scene, base); ok = 1; } @@ -164,7 +164,7 @@ static int group_objects_remove_exec(bContext *C, wmOperator *UNUSED(op)) Scene *scene= CTX_data_scene(C); Group *group= NULL; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { group = NULL; while ((group = find_group(base->object, group))) rem_from_group(group, base->object, scene, base); @@ -203,7 +203,7 @@ static int group_create_exec(bContext *C, wmOperator *op) group= add_group(name); - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { add_to_group(group, base->object, scene, base); } CTX_DATA_END; diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index f4d8cd5ae11..495f0b40802 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -483,8 +483,7 @@ static int object_add_hook_selob_exec(bContext *C, wmOperator *op) Object *obedit = CTX_data_edit_object(C); Object *obsel=NULL; - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { if (ob != obedit) { obsel = ob; break; diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 445047ac321..6eb1ad3a13d 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -1119,7 +1119,7 @@ static int multires_reshape_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN(C, Object*, selob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, selob, selected_editable_objects) { if (selob->type == OB_MESH && selob != ob) { secondob= selob; break; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 40e852ebf7c..624d6e52926 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -211,7 +211,7 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob != obedit) { ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; par= obedit->parent; @@ -428,8 +428,7 @@ void ED_object_parent_clear(bContext *C, int type) Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->parent == NULL) continue; @@ -674,8 +673,7 @@ static int parent_set_exec(bContext *C, wmOperator *op) int partype= RNA_enum_get(op->ptr, "type"); int ok = 1; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (!ED_object_parent_set(op->reports, bmain, scene, ob, par, partype)) { ok = 0; break; @@ -756,7 +754,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op) par->recalc |= OB_RECALC_OB; /* context iterator */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob != par) { if (BKE_object_parent_loop_check(par, ob)) { BKE_report(op->reports, RPT_ERROR, "Loop in parents"); @@ -807,7 +805,7 @@ static int object_slow_parent_clear_exec(bContext *C, wmOperator *UNUSED(op)) Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->parent) { if (ob->partype & PARSLOW) { ob->partype -= PARSLOW; @@ -849,7 +847,7 @@ static int object_slow_parent_set_exec(bContext *C, wmOperator *UNUSED(op)) Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->parent) ob->partype |= PARSLOW; @@ -900,7 +898,7 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "Operation cannot be performed in EditMode"); return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { bConstraint *con, *pcon; /* remove track-object for old track */ @@ -966,7 +964,7 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bDampTrackConstraint *data; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob!=obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_DAMPTRACK); @@ -985,7 +983,7 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bTrackToConstraint *data; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob!=obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO); @@ -1006,7 +1004,7 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bLockTrackConstraint *data; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob!=obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_LOCKTRACK); @@ -1060,7 +1058,7 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op) if (!RNA_struct_property_is_set(op->ptr, "layers")) { /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN(C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { lay |= base->lay; } CTX_DATA_END; @@ -1109,7 +1107,7 @@ static int move_to_layer_exec(bContext *C, wmOperator *op) if (v3d && v3d->localvd) { /* now we can move out of localview. */ /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN(C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { lay= base->lay & ~v3d->lay; base->lay= lay; base->object->lay= lay; @@ -1122,7 +1120,7 @@ static int move_to_layer_exec(bContext *C, wmOperator *op) else { /* normal non localview operation */ /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN(C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { /* upper byte is used for local view */ local= base->lay & 0xFF000000; base->lay= lay + local; @@ -1204,8 +1202,7 @@ static int make_links_scene_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN(C, Base*, base, selected_bases) - { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { if (!object_in_scene(base->object, scene_to)) { Base *nbase= MEM_mallocN( sizeof(Base), "newbase"); *nbase= *base; @@ -1265,7 +1262,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) ob= ED_object_active_context(C); - CTX_DATA_BEGIN(C, Object*, obt, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, obt, selected_editable_objects) { if (ob != obt) { if (allow_make_links_data(event, ob, obt)) { switch (event) { @@ -1728,21 +1725,21 @@ static int make_local_exec(bContext *C, wmOperator *op) clear_id_newpoins(); - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { if (ob->id.lib) id_make_local(&ob->id, 0); } CTX_DATA_END; /* maybe object pointers */ - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { if (ob->id.lib==NULL) { ID_NEW(ob->parent); } } CTX_DATA_END; - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { id= ob->data; if (id && mode>1) { @@ -1770,7 +1767,7 @@ static int make_local_exec(bContext *C, wmOperator *op) CTX_DATA_END; if (mode>1) { - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { if (ob->type==OB_LAMP) { la= ob->data; diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 388766f5fa3..386541c5262 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -144,13 +144,13 @@ static int object_select_by_type_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (base->object->type==obtype) { ED_base_object_select(base, BA_SELECT); } @@ -218,7 +218,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; @@ -263,7 +263,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) else return OPERATOR_CANCELLED; - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (nr==1) { // XXX old animation system //if (base->object->ipo==ipo) base->flag |= SELECT; @@ -386,7 +386,7 @@ static short select_grouped_children(bContext *C, Object *ob, int recursive) { short changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if (ob == base->object->parent) { if (!(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); @@ -444,7 +444,7 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in return 0; else if (group_count == 1) { group = ob_groups[0]; - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (!(base->flag & SELECT) && object_in_group(base->object, group)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -498,7 +498,7 @@ static short select_grouped_siblings(bContext *C, Object *ob) { short changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if ((base->object->parent==ob->parent) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -512,7 +512,7 @@ static short select_grouped_type(bContext *C, Object *ob) { short changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if ((base->object->type == ob->type) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -526,7 +526,7 @@ static short select_grouped_layer(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if ((base->lay & ob->lay) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -540,7 +540,7 @@ static short select_grouped_index_object(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if ((base->object->index == ob->index) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -554,7 +554,7 @@ static short select_grouped_color(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if (!(base->flag & SELECT) && (compare_v3v3(base->object->col, ob->col, 0.005f))) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -580,7 +580,7 @@ static short select_grouped_gameprops(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { if (!(base->flag & SELECT) && (objects_share_gameprop(base->object, ob))) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -602,8 +602,7 @@ static short select_grouped_keyingset(bContext *C, Object *UNUSED(ob)) /* select each object that Keying Set refers to */ // TODO: perhaps to be more in line with the rest of these, we should only take objects // if the passed in object is included in this too - CTX_DATA_BEGIN(C, Base*, base, selectable_bases) - { + CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { /* only check for this object if it isn't selected already, to limit time wasted */ if ((base->flag & SELECT) == 0) { KS_Path *ksp; @@ -636,7 +635,7 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); changed = 1; } @@ -701,13 +700,13 @@ static int object_select_by_layer_exec(bContext *C, wmOperator *op) layernum = RNA_int_get(op->ptr, "layers"); if (extend == 0) { - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (base->lay == (1<< (layernum -1))) ED_base_object_select(base, BA_SELECT); } @@ -750,7 +749,7 @@ static int object_select_all_exec(bContext *C, wmOperator *op) if (action == SEL_TOGGLE) { action = SEL_SELECT; - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (base->flag & SELECT) { action = SEL_DESELECT; break; @@ -759,7 +758,7 @@ static int object_select_all_exec(bContext *C, wmOperator *op) CTX_DATA_END; } - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { switch (action) { case SEL_SELECT: ED_base_object_select(base, BA_SELECT); @@ -822,7 +821,7 @@ static int object_select_same_group_exec(bContext *C, wmOperator *op) if (!group) return OPERATOR_PASS_THROUGH; - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (!(base->flag & SELECT) && object_in_group(base->object, group)) ED_base_object_select(base, BA_SELECT); } @@ -859,7 +858,7 @@ static int object_select_mirror_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); - CTX_DATA_BEGIN(C, Base*, primbase, selected_bases) { + CTX_DATA_BEGIN (C, Base*, primbase, selected_bases) { char tmpname[MAXBONENAME]; flip_side_name(tmpname, primbase->object->id.name+2, TRUE); @@ -915,14 +914,14 @@ static int object_select_random_exec(bContext *C, wmOperator *op) extend= RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } percent = RNA_float_get(op->ptr, "percent")/100.0f; - CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base*, base, visible_bases) { if (BLI_frand() < percent) { ED_base_object_select(base, BA_SELECT); } diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 55954790687..d0fc4f79817 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -227,8 +227,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, /* operate on selected objects only if they aren't in weight-paint mode * (so that object-transform clearing won't be applied at same time as bone-clearing) */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (!(ob->mode & OB_MODE_WEIGHT_PAINT)) { /* run provided clearing function */ clear_func(ob); @@ -320,8 +319,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op)) float *v1, *v3; float mat[3][3]; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->parent) { /* vectors pointed to by v1 and v3 will get modified */ v1= ob->loc; @@ -385,7 +383,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo int a, change = 0; /* first check if we can execute */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (ob->type==OB_MESH) { if (ID_REAL_USERS(ob->data) > 1) { @@ -428,7 +426,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo CTX_DATA_END; /* now execute */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { /* calculate rotation/scale matrix */ if (apply_scale && apply_rot) @@ -569,7 +567,7 @@ static int visual_transform_apply_exec(bContext *C, wmOperator *UNUSED(op)) Scene *scene= CTX_data_scene(C); int change = 0; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { where_is_object(scene, ob); object_apply_mat4(ob, ob->obmat, TRUE, TRUE); where_is_object(scene, ob); @@ -711,7 +709,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } /* reset flags */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { ob->flag &= ~OB_DONE; } CTX_DATA_END; @@ -723,7 +721,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) ((ID *)tob->dup_group)->flag &= ~LIB_DOIT; } - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if ((ob->flag & OB_DONE)==0) { int do_inverse_offset = FALSE; ob->flag |= OB_DONE; @@ -896,11 +894,12 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) ignore_parent_tx(bmain, scene, ob); /* other users? */ - CTX_DATA_BEGIN(C, Object*, ob_other, selected_editable_objects) { - if ( (ob_other->flag & OB_DONE)==0 && - ( (ob->data && (ob->data == ob_other->data)) || - (ob->dup_group==ob_other->dup_group && (ob->transflag|ob_other->transflag) & OB_DUPLIGROUP) ) - ) { + CTX_DATA_BEGIN (C, Object*, ob_other, selected_editable_objects) { + if ((ob_other->flag & OB_DONE) == 0 && + ((ob->data && (ob->data == ob_other->data)) || + (ob->dup_group == ob_other->dup_group && + (ob->transflag | ob_other->transflag) & OB_DUPLIGROUP))) + { ob_other->flag |= OB_DONE; DAG_id_tag_update(&ob_other->id, OB_RECALC_OB|OB_RECALC_DATA); diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index e74819f10bf..1ddbc86a73f 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -2713,8 +2713,7 @@ static int vertex_group_copy_to_selected_exec(bContext *C, wmOperator *op) int change= 0; int fail= 0; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) - { + CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { if (obact != ob) { if (ED_vgroup_copy_array(ob, obact)) change++; else fail++; diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 4f8f2ea3642..131034848de 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3671,7 +3671,7 @@ static int brush_edit_exec(bContext *C, wmOperator *op) if (!brush_edit_init(C, op)) return OPERATOR_CANCELLED; - RNA_BEGIN(op->ptr, itemptr, "stroke") { + RNA_BEGIN (op->ptr, itemptr, "stroke") { brush_edit_apply(C, op, &itemptr); } RNA_END; diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 6722ac5e686..bced6f07564 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -329,7 +329,7 @@ static int material_slot_copy_exec(bContext *C, wmOperator *UNUSED(op)) if (!ob || !(matar = give_matarar(ob))) return OPERATOR_CANCELLED; - CTX_DATA_BEGIN(C, Object *, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { if (ob != ob_iter && give_matarar(ob_iter)) { if (ob->data != ob_iter->data) assign_matarar(ob_iter, matar, ob->totcol); diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 55cf827fea6..ac327b56fb9 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -5038,7 +5038,7 @@ static int paint_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - RNA_BEGIN(op->ptr, itemptr, "stroke") { + RNA_BEGIN (op->ptr, itemptr, "stroke") { paint_apply(C, op, &itemptr); } RNA_END; diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index fb640346a99..9fe941253f6 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -377,7 +377,7 @@ int paint_stroke_exec(bContext *C, wmOperator *op) stroke->stroke_started = 1; } - RNA_BEGIN(op->ptr, itemptr, "stroke") { + RNA_BEGIN (op->ptr, itemptr, "stroke") { stroke->update_step(C, stroke, &itemptr); } RNA_END; diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 1bae6406c03..73dfde8fd6f 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -221,7 +221,7 @@ static int sound_update_animation_flags_exec(bContext *C, wmOperator *UNUSED(op) struct FCurve* fcu; char driven; - SEQ_BEGIN(scene->ed, seq) { + SEQ_BEGIN (scene->ed, seq) { fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "volume", 0, &driven); if (fcu || driven) seq->flag |= SEQ_AUDIO_VOLUME_ANIMATED; diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c index 16fe48f314a..22df7432ecb 100644 --- a/source/blender/editors/space_logic/logic_buttons.c +++ b/source/blender/editors/space_logic/logic_buttons.c @@ -104,7 +104,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) float mcoords[256][2]; int i= 0; - RNA_BEGIN(op->ptr, itemptr, "path") { + RNA_BEGIN (op->ptr, itemptr, "path") { float loc[2]; RNA_float_get_array(&itemptr, "loc", loc); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 247dd0c1fa7..f38e3e0d272 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2651,7 +2651,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) float mcoords[256][2]; int i= 0; - RNA_BEGIN(op->ptr, itemptr, "path") { + RNA_BEGIN (op->ptr, itemptr, "path") { float loc[2]; RNA_float_get_array(&itemptr, "loc", loc); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index dfa733deac6..09d974fe4b8 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -188,7 +188,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) else if (RNA_struct_find_property(op->ptr, "files")) { /* used for image strip */ /* best guess, first images name */ - RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_BEGIN (op->ptr, itemptr, "files") { char *name = RNA_string_get_alloc(&itemptr, "name", NULL, 0); BLI_strncpy(seq_load->name, name, sizeof(seq_load->name)); MEM_freeN(name); @@ -420,8 +420,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad BLI_split_dir_part(seq_load.path, dir_only, sizeof(dir_only)); - RNA_BEGIN(op->ptr, itemptr, "files") - { + RNA_BEGIN (op->ptr, itemptr, "files") { RNA_string_get(&itemptr, "name", file_only); BLI_join_dirfile(seq_load.path, sizeof(seq_load.path), dir_only, file_only); @@ -595,7 +594,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) strip = seq->strip; se = strip->stripdata; - RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_BEGIN (op->ptr, itemptr, "files") { char *filename = RNA_string_get_alloc(&itemptr, "name", NULL, 0); BLI_strncpy(se->name, filename, sizeof(se->name)); MEM_freeN(filename); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 5bd1ba4dcf2..d2b1cccfefc 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -201,7 +201,7 @@ static void seq_proxy_build_job(const bContext *C) WM_jobs_callbacks(steve, proxy_startjob, NULL, NULL, proxy_endjob); } - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if ((seq->flag & SELECT)) { context = seq_proxy_rebuild_context(pj->main, pj->scene, seq); link = BLI_genericNodeN(context); @@ -461,8 +461,7 @@ void deselect_all_seq(Scene *scene) if (ed == NULL) return; - SEQP_BEGIN(ed, seq) - { + SEQP_BEGIN (ed, seq) { seq->flag &= ~SEQ_ALLSEL; } SEQ_END @@ -845,7 +844,7 @@ static int insert_gap(Scene *scene, int gap, int cfra) if (ed == NULL) return 0; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (seq->startdisp >= cfra) { seq->start += gap; calc_sequence(scene, seq); @@ -871,8 +870,7 @@ static void UNUSED_FUNCTION(touch_seq_files) (Scene * scene) WM_cursor_wait(1); - SEQP_BEGIN(ed, seq) - { + SEQP_BEGIN (ed, seq) { if (seq->flag & SELECT) { if (seq->type == SEQ_MOVIE) { if (seq->strip && seq->strip->stripdata) { @@ -899,8 +897,7 @@ static void set_filter_seq(Scene *scene) if (okee("Set Deinterlace") == 0) return; - SEQP_BEGIN(ed, seq) - { + SEQP_BEGIN (ed, seq) { if (seq->flag & SELECT) { if (seq->type == SEQ_MOVIE) { seq->flag |= SEQ_FILTERY; @@ -935,8 +932,7 @@ static void UNUSED_FUNCTION(seq_remap_paths) (Scene * scene) if (strcmp(to, from) == 0) return; - SEQP_BEGIN(ed, seq) - { + SEQP_BEGIN (ed, seq) { if (seq->flag & SELECT) { if (strncmp(seq->strip->dir, from, strlen(from)) == 0) { printf("found %s\n", seq->strip->dir); @@ -1481,7 +1477,7 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) BLI_movelisttolist(ed->seqbasep, &newlist); if (cut_side != SEQ_SIDE_BOTH) { - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (cut_side == SEQ_SIDE_LEFT) { if (seq->startdisp >= cut_frame) { seq->flag &= ~SEQ_ALLSEL; @@ -3014,7 +3010,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op) } seq->strip->stripdata = se = MEM_callocN(len * sizeof(StripElem), "stripelem"); - RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_BEGIN (op->ptr, itemptr, "files") { char *filename = RNA_string_get_alloc(&itemptr, "name", NULL, 0); BLI_strncpy(se->name, filename, sizeof(se->name)); MEM_freeN(filename); diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 2447ca6cfbe..f326052ea60 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -362,7 +362,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) deselect_all_seq(scene); UI_view2d_region_to_view(v2d, event->mval[0], event->mval[1], &x, NULL); - SEQP_BEGIN(ed, seq) + SEQP_BEGIN (ed, seq) { if (x < CFRA) { if (seq->enddisp < CFRA) { @@ -940,7 +940,7 @@ static short select_grouped_type(Editing *ed, Sequence *actseq) Sequence *seq; short changed = FALSE; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (seq->type == actseq->type) { seq->flag |= SELECT; changed = TRUE; @@ -957,7 +957,7 @@ static short select_grouped_type_basic(Editing *ed, Sequence *actseq) short changed = FALSE; short is_sound = SEQ_IS_SOUND(actseq); - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (is_sound ? SEQ_IS_SOUND(seq) : !SEQ_IS_SOUND(seq)) { seq->flag |= SELECT; changed = TRUE; @@ -974,7 +974,7 @@ static short select_grouped_type_effect(Editing *ed, Sequence *actseq) short changed = FALSE; short is_effect = SEQ_IS_EFFECT(actseq); - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (is_effect ? SEQ_IS_EFFECT(seq) : !SEQ_IS_EFFECT(seq)) { seq->flag |= SELECT; changed = TRUE; @@ -995,7 +995,7 @@ static short select_grouped_data(Editing *ed, Sequence *actseq) return changed; if (SEQ_HAS_PATH(actseq) && dir) { - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (SEQ_HAS_PATH(seq) && seq->strip && strcmp(seq->strip->dir, dir) == 0) { seq->flag |= SELECT; changed = TRUE; @@ -1005,7 +1005,7 @@ static short select_grouped_data(Editing *ed, Sequence *actseq) } else if (actseq->type == SEQ_SCENE) { Scene *sce = actseq->scene; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (seq->type == SEQ_SCENE && seq->scene == sce) { seq->flag |= SELECT; changed = TRUE; @@ -1015,7 +1015,7 @@ static short select_grouped_data(Editing *ed, Sequence *actseq) } else if (actseq->type == SEQ_MOVIECLIP) { MovieClip *clip = actseq->clip; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (seq->type == SEQ_MOVIECLIP && seq->clip == clip) { seq->flag |= SELECT; changed = TRUE; @@ -1037,14 +1037,14 @@ static short select_grouped_effect(Editing *ed, Sequence *actseq) for (i = 0; i <= SEQ_EFFECT_MAX; i++) effects[i] = FALSE; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (ELEM3(actseq, seq->seq1, seq->seq2, seq->seq3)) { effects[seq->type] = TRUE; } } SEQ_END; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (effects[seq->type]) { if (seq->seq1) seq->seq1->flag |= SELECT; if (seq->seq2) seq->seq2->flag |= SELECT; @@ -1062,7 +1062,7 @@ static short select_grouped_time_overlap(Editing *ed, Sequence *actseq) Sequence *seq; short changed = FALSE; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { if (!((seq->startdisp >= actseq->enddisp) || (seq->enddisp < actseq->startdisp))) { seq->flag |= SELECT; changed = TRUE; @@ -1083,7 +1083,7 @@ static short select_grouped_effect_link(Editing *ed, Sequence *actseq) int machine = actseq->machine; SeqIterator iter; - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { seq->tmp= NULL; } SEQ_END; @@ -1153,7 +1153,7 @@ static int sequencer_select_grouped_exec(bContext *C, wmOperator *op) } if (extend == 0) { - SEQP_BEGIN(ed, seq) { + SEQP_BEGIN (ed, seq) { seq->flag &= ~SELECT; changed = TRUE; } diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index fbb3f3c609f..674dd670cf7 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -357,8 +357,7 @@ static void time_draw_keyframes(const bContext *C, SpaceTime *stime, ARegion *ar short active_done = 0; /* draw keyframes from all selected objects */ - CTX_DATA_BEGIN(C, Object*, obsel, selected_objects) - { + CTX_DATA_BEGIN (C, Object*, obsel, selected_objects) { /* last arg is 0, since onlysel doesn't apply here... */ time_draw_idblock_keyframes(v2d, (ID *)obsel, 0); diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index d7e992e70e9..e1bbc0e1545 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -830,7 +830,7 @@ static int view3d_lasso_select_exec(bContext *C, wmOperator *op) int i = 0; int mcords[1024][2]; - RNA_BEGIN(op->ptr, itemptr, "path") { + RNA_BEGIN (op->ptr, itemptr, "path") { float loc[2]; RNA_float_get_array(&itemptr, "loc", loc); @@ -975,7 +975,7 @@ static int object_select_menu_exec(bContext *C, wmOperator *op) const char *name = object_mouse_select_menu_data[name_index].idname; if (!extend) { - CTX_DATA_BEGIN(C, Base *, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if (base->flag & SELECT) { ED_base_object_select(base, BA_DESELECT); changed = 1; @@ -984,7 +984,7 @@ static int object_select_menu_exec(bContext *C, wmOperator *op) CTX_DATA_END; } - CTX_DATA_BEGIN(C, Base *, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { /* this is a bit dodjy, there should only be ONE object with this name, but library objects can mess this up */ if (strcmp(name, base->object->id.name + 2) == 0) { ED_base_object_activate(C, base); @@ -1051,7 +1051,7 @@ static Base *object_mouse_select_menu(bContext *C, ViewContext *vc, unsigned int short ok; LinkNode *linklist = NULL; - CTX_DATA_BEGIN(C, Base *, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { ok = FALSE; /* two selection methods, the CTRL select uses max dist of 15 */ @@ -1829,7 +1829,7 @@ static int do_object_pose_box_select(bContext *C, ViewContext *vc, rcti *rect, i if (extend == 0 && select) { if (bone_only) { - CTX_DATA_BEGIN(C, bPoseChannel *, pchan, visible_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, visible_pose_bones) { if ((pchan->bone->flag & BONE_UNSELECTABLE) == 0) { pchan->bone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL); } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 1c1fa4c7fac..2c301dc8abc 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -557,7 +557,7 @@ static int snap_sel_to_grid(bContext *C, wmOperator *UNUSED(op)) else { struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOCATION_ID); - CTX_DATA_BEGIN(C, Object *, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm = ob->data; @@ -691,7 +691,7 @@ static int snap_sel_to_curs(bContext *C, wmOperator *UNUSED(op)) else { struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOCATION_ID); - CTX_DATA_BEGIN(C, Object *, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm = ob->data; @@ -928,7 +928,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op)) } } else { - CTX_DATA_BEGIN(C, Object *, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { copy_v3_v3(vec, ob->obmat[3]); /* special case for camera -- snap to bundles */ diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index ebbc2ca9267..bdae2c0c84f 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5289,8 +5289,7 @@ static void createTransObject(bContext *C, TransInfo *t) td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransOb"); tx = t->ext = MEM_callocN(t->total*sizeof(TransDataExtension), "TransObExtension"); - CTX_DATA_BEGIN(C, Base*, base, selected_bases) - { + CTX_DATA_BEGIN (C, Base*, base, selected_bases) { Object *ob= base->object; td->flag = TD_SELECTED; @@ -5396,7 +5395,7 @@ static void createTransNodeData(bContext *C, TransInfo *t) td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransNode TransData"); td2d = t->data2d = MEM_callocN(t->total*sizeof(TransData2D), "TransNode TransData2D"); - CTX_DATA_BEGIN(C, bNode *, selnode, selected_nodes) + CTX_DATA_BEGIN (C, bNode *, selnode, selected_nodes) NodeToTransData(td++, td2d++, selnode); CTX_DATA_END } diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c index 987f6b250cb..fb7e2254e45 100644 --- a/source/blender/editors/uvedit/uvedit_draw.c +++ b/source/blender/editors/uvedit/uvedit_draw.c @@ -186,8 +186,8 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe BLI_array_empty(tf_uv); BLI_array_empty(tf_uvorig); - BLI_array_growitems(tf_uv, efa->len); - BLI_array_growitems(tf_uvorig, efa->len); + BLI_array_grow_items(tf_uv, efa->len); + BLI_array_grow_items(tf_uvorig, efa->len); i = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -236,8 +236,8 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe BLI_array_empty(tf_uv); BLI_array_empty(tf_uvorig); - BLI_array_growitems(tf_uv, efa->len); - BLI_array_growitems(tf_uvorig, efa->len); + BLI_array_grow_items(tf_uv, efa->len); + BLI_array_grow_items(tf_uvorig, efa->len); i = 0; BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) { @@ -303,12 +303,12 @@ static void draw_uvs_stretch(SpaceImage *sima, Scene *scene, BMEditMesh *em, MTe BLI_array_empty(ang); BLI_array_empty(av); BLI_array_empty(auv); - BLI_array_growitems(tf_uv, nverts); - BLI_array_growitems(tf_uvorig, nverts); - BLI_array_growitems(uvang, nverts); - BLI_array_growitems(ang, nverts); - BLI_array_growitems(av, nverts); - BLI_array_growitems(auv, nverts); + BLI_array_grow_items(tf_uv, nverts); + BLI_array_grow_items(tf_uvorig, nverts); + BLI_array_grow_items(uvang, nverts); + BLI_array_grow_items(ang, nverts); + BLI_array_grow_items(av, nverts); + BLI_array_grow_items(auv, nverts); BM_ITER_ELEM_INDEX (l, &liter, efa, BM_LOOPS_OF_FACE, i) { luv = CustomData_bmesh_get(&bm->ldata, l->head.data, CD_MLOOPUV); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 7883fac3ec2..a30274c0f2c 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -1756,8 +1756,8 @@ static int mouse_select(bContext *C, const float co[2], int extend, int loop) } /* mark 1 vertex as being hit */ - BLI_array_growitems(hitv, hit.efa->len); - BLI_array_growitems(hituv, hit.efa->len); + BLI_array_grow_items(hitv, hit.efa->len); + BLI_array_grow_items(hituv, hit.efa->len); for (i = 0; i < hit.efa->len; i++) { hitv[i] = 0xFFFFFFFF; } @@ -1777,8 +1777,8 @@ static int mouse_select(bContext *C, const float co[2], int extend, int loop) } /* mark 2 edge vertices as being hit */ - BLI_array_growitems(hitv, hit.efa->len); - BLI_array_growitems(hituv, hit.efa->len); + BLI_array_grow_items(hitv, hit.efa->len); + BLI_array_grow_items(hituv, hit.efa->len); fill_vn_i(hitv, hit.efa->len, 0xFFFFFFFF); hitv[hit.lindex] = hit.vert1; @@ -1802,8 +1802,8 @@ static int mouse_select(bContext *C, const float co[2], int extend, int loop) /* mark all face vertices as being hit */ - BLI_array_growitems(hitv, hit.efa->len); - BLI_array_growitems(hituv, hit.efa->len); + BLI_array_grow_items(hitv, hit.efa->len); + BLI_array_grow_items(hituv, hit.efa->len); i = 0; BM_ITER_ELEM (l, &liter, hit.efa, BM_LOOPS_OF_FACE) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c index 36b1e77e5e5..e1b2d87c4f2 100644 --- a/source/blender/editors/uvedit/uvedit_smart_stitch.c +++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c @@ -1162,7 +1162,7 @@ static int stitch_init(bContext *C, wmOperator *op) EDBM_index_arrays_init(em, 0, 0, 1); - RNA_BEGIN(op->ptr, itemptr, "selection") { + RNA_BEGIN (op->ptr, itemptr, "selection") { faceIndex = RNA_int_get(&itemptr, "face_index"); elementIndex = RNA_int_get(&itemptr, "element_index"); efa = EDBM_face_at_index(em, faceIndex); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index a0335402060..18edcf1344f 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -615,7 +615,7 @@ PropertyRNA *RNA_struct_find_nested(PointerRNA *ptr, StructRNA *srna) { PropertyRNA *prop = NULL; - RNA_STRUCT_BEGIN(ptr, iprop) { + RNA_STRUCT_BEGIN (ptr, iprop) { /* This assumes that there can only be one user of this nested struct */ if (RNA_property_pointer_type(ptr, iprop) == srna) { prop = iprop; @@ -637,7 +637,7 @@ int RNA_struct_contains_property(PointerRNA *ptr, PropertyRNA *prop_test) iterprop = RNA_struct_iterator_property(ptr->type); - RNA_PROP_BEGIN(ptr, itemptr, iterprop) { + RNA_PROP_BEGIN (ptr, itemptr, iterprop) { /* PropertyRNA *prop= itemptr.data; */ if (prop_test == (PropertyRNA *)itemptr.data) { found = TRUE; @@ -684,7 +684,7 @@ FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier) func = NULL; - RNA_PROP_BEGIN(&tptr, funcptr, iterprop) { + RNA_PROP_BEGIN (&tptr, funcptr, iterprop) { if (strcmp(identifier, RNA_function_identifier(funcptr.data)) == 0) { func = funcptr.data; break; @@ -3128,7 +3128,7 @@ static int rna_raw_access(ReportList *reports, PointerRNA *ptr, PropertyRNA *pro } /* no item property pointer, can still be id property, or * property of a type derived from the collection pointer type */ - RNA_PROP_BEGIN(ptr, itemptr, prop) { + RNA_PROP_BEGIN (ptr, itemptr, prop) { if (itemptr.data) { if (itemprop) { /* we got the property already */ @@ -4499,7 +4499,7 @@ char *RNA_pointer_as_string(bContext *C, PointerRNA *ptr) BLI_dynstr_append(dynstr, "{"); - RNA_STRUCT_BEGIN(ptr, prop) { + RNA_STRUCT_BEGIN (ptr, prop) { propname = RNA_property_identifier(prop); if (strcmp(propname, "rna_type") == 0) @@ -4542,7 +4542,7 @@ char *RNA_pointer_as_string_keywords_ex(bContext *C, PointerRNA *ptr, PointerRNA PropertyRNA *prop_default; char *buf_default; - RNA_PROP_BEGIN(ptr, propptr, iterprop) { + RNA_PROP_BEGIN (ptr, propptr, iterprop) { prop = propptr.data; flag = RNA_property_flag(prop); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 7259ea8e2f5..7c8f28d0979 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1424,7 +1424,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha totkw = kw ? PyDict_Size(kw) : 0; - RNA_STRUCT_BEGIN(ptr, prop) { + RNA_STRUCT_BEGIN (ptr, prop) { arg_name = RNA_property_identifier(prop); if (strcmp(arg_name, "rna_type") == 0) continue; @@ -2203,7 +2203,7 @@ int pyrna_prop_collection_subscript_str_lib_pair_ptr(BPy_PropertyRNA *self, PyOb /* lib is either a valid poniter or NULL, * either way can do direct comparison with id.lib */ - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { ID *id = itemptr.data; /* always an ID */ if (id->lib == lib && (strncmp(keyname, id->name + 2, sizeof(id->name) - 2) == 0)) { found = TRUE; @@ -3346,7 +3346,7 @@ static void pyrna_dir_members_rna(PyObject *list, PointerRNA *ptr) RNA_pointer_create(NULL, &RNA_Struct, ptr->type, &tptr); iterprop = RNA_struct_find_property(&tptr, "functions"); - RNA_PROP_BEGIN(&tptr, itemptr, iterprop) { + RNA_PROP_BEGIN (&tptr, itemptr, iterprop) { idname = RNA_function_identifier(itemptr.data); pystring = PyUnicode_FromString(idname); @@ -3365,7 +3365,7 @@ static void pyrna_dir_members_rna(PyObject *list, PointerRNA *ptr) iterprop = RNA_struct_iterator_property(ptr->type); - RNA_PROP_BEGIN(ptr, itemptr, iterprop) { + RNA_PROP_BEGIN (ptr, itemptr, iterprop) { nameptr = RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { @@ -3980,7 +3980,7 @@ static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self) char name[256], *nameptr; int namelen; - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { nameptr = RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { @@ -4017,7 +4017,7 @@ static PyObject *pyrna_prop_collection_items(BPy_PropertyRNA *self) int namelen; int i = 0; - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { if (itemptr.data) { /* add to python list */ item = PyTuple_New(2); @@ -4189,7 +4189,7 @@ static PyObject *pyrna_prop_collection_find(BPy_PropertyRNA *self, PyObject *key PYRNA_PROP_CHECK_OBJ(self); - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { nameptr = RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { @@ -4220,7 +4220,7 @@ static void foreach_attr_type(BPy_PropertyRNA *self, const char *attr, *attr_signed = FALSE; /* note: this is fail with zero length lists, so don't let this get caled in that case */ - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { prop = RNA_struct_find_property(&itemptr, attr); *raw_type = RNA_property_raw_type(prop); *attr_tot = RNA_property_array_length(&itemptr, prop); @@ -6401,7 +6401,7 @@ static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self) PyObject *ret = PyList_New(0); PyObject *item; - RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { + RNA_PROP_BEGIN (&self->ptr, itemptr, self->prop) { StructRNA *srna = itemptr.data; StructRNA *srna_base = RNA_struct_base(itemptr.data); /* skip own operators, these double up [#29666] */ @@ -7189,7 +7189,7 @@ void pyrna_alloc_types(void) RNA_blender_rna_pointer_create(&ptr); prop = RNA_struct_find_property(&ptr, "structs"); - RNA_PROP_BEGIN(&ptr, itemptr, prop) { + RNA_PROP_BEGIN (&ptr, itemptr, prop) { PyObject *item = pyrna_struct_Subtype(&itemptr); if (item == NULL) { if (PyErr_Occurred()) { @@ -7217,7 +7217,7 @@ void pyrna_free_types(void) prop = RNA_struct_find_property(&ptr, "structs"); - RNA_PROP_BEGIN(&ptr, itemptr, prop) { + RNA_PROP_BEGIN (&ptr, itemptr, prop) { StructRNA *srna = srna_from_ptr(&itemptr); void *py_ptr = RNA_struct_py_type_get(srna); @@ -7477,7 +7477,7 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla /* loop over all structs */ - RNA_PROP_BEGIN(&ptr_rna, itemptr, prop_rna) { + RNA_PROP_BEGIN (&ptr_rna, itemptr, prop_rna) { srna_iter = itemptr.data; if (pyrna_srna_contains_pointer_prop_srna(srna_iter, srna, &prop_identifier)) { break; diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index ae02ff33950..78ad364b8e8 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -691,8 +691,7 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P if (properties) { otmacro = ot->macro.first; - RNA_STRUCT_BEGIN(properties, prop) - { + RNA_STRUCT_BEGIN (properties, prop) { if (otmacro == NULL) break; @@ -761,7 +760,7 @@ int WM_operator_last_properties_init(wmOperator *op) iterprop = RNA_struct_iterator_property(op->type->srna); - RNA_PROP_BEGIN(op->ptr, itemptr, iterprop) { + RNA_PROP_BEGIN (op->ptr, itemptr, iterprop) { PropertyRNA *prop = itemptr.data; if ((RNA_property_flag(prop) & PROP_SKIP_SAVE) == 0) { if (!RNA_property_is_set(op->ptr, prop)) { /* don't override a setting already set */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 52a73988039..7fbdce097a9 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -589,7 +589,7 @@ void WM_operator_properties_alloc(PointerRNA **ptr, IDProperty **properties, con void WM_operator_properties_sanitize(PointerRNA *ptr, const short no_context) { - RNA_STRUCT_BEGIN(ptr, prop) { + RNA_STRUCT_BEGIN (ptr, prop) { switch (RNA_property_type(prop)) { case PROP_ENUM: if (no_context) @@ -622,7 +622,7 @@ void WM_operator_properties_reset(wmOperator *op) PropertyRNA *iterprop; iterprop = RNA_struct_iterator_property(op->type->srna); - RNA_PROP_BEGIN(op->ptr, itemptr, iterprop) { + RNA_PROP_BEGIN (op->ptr, itemptr, iterprop) { PropertyRNA *prop = itemptr.data; if ((RNA_property_flag(prop) & PROP_SKIP_SAVE) == 0) { @@ -1796,7 +1796,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) BLO_library_append_named_part_ex(C, mainl, &bh, name, idcode, flag); } else { - RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_BEGIN (op->ptr, itemptr, "files") { RNA_string_get(&itemptr, "name", name); BLO_library_append_named_part_ex(C, mainl, &bh, name, idcode, flag); } @@ -2774,8 +2774,7 @@ int WM_gesture_lines_cancel(bContext *C, wmOperator *op) static int gesture_lasso_exec(bContext *C, wmOperator *op) { - RNA_BEGIN(op->ptr, itemptr, "path") - { + RNA_BEGIN (op->ptr, itemptr, "path") { float loc[2]; RNA_float_get_array(&itemptr, "loc", loc); From e2c453b5f9d3a0a26333b6585f07ebf9e3a24819 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 15:42:27 +0000 Subject: [PATCH 155/158] style cleanup: editors / mesh & object --- source/blender/editors/mesh/editmesh_rip.c | 6 +- source/blender/editors/mesh/editmesh_select.c | 2 +- source/blender/editors/mesh/editmesh_slide.c | 14 +- source/blender/editors/mesh/mesh_intern.h | 2 +- source/blender/editors/mesh/mesh_navmesh.c | 2 +- source/blender/editors/object/object_add.c | 681 ++++++------- source/blender/editors/object/object_bake.c | 818 ++++++++-------- .../editors/object/object_constraint.c | 458 ++++----- source/blender/editors/object/object_edit.c | 705 +++++++------- source/blender/editors/object/object_group.c | 90 +- source/blender/editors/object/object_hook.c | 318 +++---- source/blender/editors/object/object_intern.h | 2 +- .../blender/editors/object/object_lattice.c | 196 ++-- .../blender/editors/object/object_modifier.c | 422 ++++----- source/blender/editors/object/object_ops.c | 42 +- .../blender/editors/object/object_relations.c | 824 ++++++++-------- source/blender/editors/object/object_select.c | 320 +++---- .../blender/editors/object/object_shapekey.c | 166 ++-- .../blender/editors/object/object_transform.c | 272 +++--- source/blender/editors/object/object_vgroup.c | 891 +++++++++--------- 20 files changed, 3117 insertions(+), 3114 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_rip.c b/source/blender/editors/mesh/editmesh_rip.c index b490dbe49c8..b74e8797d72 100644 --- a/source/blender/editors/mesh/editmesh_rip.c +++ b/source/blender/editors/mesh/editmesh_rip.c @@ -112,9 +112,9 @@ static float edbm_rip_edge_side_measure(BMEdge *e, BMLoop *e_l, score = len_v2v2(e_v1_co, e_v2_co); if (dist_to_line_segment_v2(fmval_tweak, e_v1_co, e_v2_co) > - dist_to_line_segment_v2(fmval, e_v1_co, e_v2_co)) + dist_to_line_segment_v2(fmval, e_v1_co, e_v2_co)) { - return score; + return score; } else { return -score; @@ -348,7 +348,7 @@ static int edbm_rip_call_edgesplit(BMEditMesh *em, wmOperator *op) BMOperator bmop; if (!EDBM_op_init(em, &bmop, op, "edgesplit edges=%he verts=%hv use_verts=%b", - BM_ELEM_TAG, BM_ELEM_SELECT, TRUE)) { + BM_ELEM_TAG, BM_ELEM_SELECT, TRUE)) { return FALSE; } BMO_op_exec(em->bm, &bmop); diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c index 0a0eb7964f6..32e70e798fe 100644 --- a/source/blender/editors/mesh/editmesh_select.c +++ b/source/blender/editors/mesh/editmesh_select.c @@ -1512,7 +1512,7 @@ int mouse_mesh(bContext *C, const int mval[2], short extend) vc.obedit->actcol = efa->mat_nr + 1; vc.em->mat_nr = efa->mat_nr; - WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING, NULL); + WM_event_add_notifier(C, NC_MATERIAL | ND_SHADING, NULL); } diff --git a/source/blender/editors/mesh/editmesh_slide.c b/source/blender/editors/mesh/editmesh_slide.c index 6c3af98dee9..a82f34a4649 100644 --- a/source/blender/editors/mesh/editmesh_slide.c +++ b/source/blender/editors/mesh/editmesh_slide.c @@ -88,7 +88,7 @@ typedef struct VertexSlideOp { int disk_edges; /* Edges */ - BMEdge** edge_frame; + BMEdge **edge_frame; /* Slide Frame Endpoints */ float (*vtx_frame)[3]; @@ -194,7 +194,7 @@ static void vtx_slide_confirm(bContext *C, wmOperator *op) { VertexSlideOp *vso = op->customdata; BMEditMesh *em = BMEdit_FromObject(vso->obj); - BMesh* bm = em->bm; + BMesh *bm = em->bm; /* Select new edge */ BM_edge_select_set(bm, vso->sel_edge, TRUE); @@ -204,7 +204,7 @@ static void vtx_slide_confirm(bContext *C, wmOperator *op) if (vso->snap_n_merge) { float other_d; - BMVert* other = BM_edge_other_vert(vso->sel_edge, vso->start_vtx); + BMVert *other = BM_edge_other_vert(vso->sel_edge, vso->start_vtx); other_d = len_v3v3(vso->interp, other->co); /* Only snap if within threshold */ @@ -339,12 +339,12 @@ static void vtx_slide_draw(const bContext *C, ARegion *UNUSED(ar), void *arg) } } -static BMEdge* vtx_slide_nrst_in_frame(VertexSlideOp *vso, const float mval[2]) +static BMEdge *vtx_slide_nrst_in_frame(VertexSlideOp *vso, const float mval[2]) { - BMEdge* cl_edge = NULL; + BMEdge *cl_edge = NULL; if (vso->disk_edges > 0) { int i = 0; - BMEdge* edge = NULL; + BMEdge *edge = NULL; float v1_proj[3], v2_proj[3]; float dist = 0; @@ -481,7 +481,7 @@ static int vtx_slide_set_frame(VertexSlideOp *vso) { BMEdge *edge; float (*vtx_frame)[3] = NULL; - BMEdge** edge_frame = NULL; + BMEdge **edge_frame = NULL; BMVert *curr_vert = NULL; BLI_array_declare(vtx_frame); BLI_array_declare(edge_frame); diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 70ae9704d3e..b6403f33bc9 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -106,7 +106,7 @@ void MESH_OT_duplicate(struct wmOperatorType *ot); extern int EM_view3d_poll(struct bContext *C); -struct wmKeyMap* knifetool_modal_keymap(struct wmKeyConfig *keyconf); +struct wmKeyMap *knifetool_modal_keymap(struct wmKeyConfig *keyconf); /* ******************* knifetool.c */ diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c index d9f35aaeedd..43cd89af3ac 100644 --- a/source/blender/editors/mesh/mesh_navmesh.c +++ b/source/blender/editors/mesh/mesh_navmesh.c @@ -430,7 +430,7 @@ static int navmesh_create_exec(bContext *C, wmOperator *op) LinkNode *obs = NULL; Base *navmeshBase = NULL; - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { if (base->object->type == OB_MESH) { if (base->object->body_type == OB_BODY_TYPE_NAVMESH) { if (!navmeshBase || base == scene->basact) { diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 082b6f6dc93..21c9f776b94 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -111,8 +111,8 @@ void ED_object_location_from_view(bContext *C, float *loc) { - View3D *v3d= CTX_wm_view3d(C); - Scene *scene= CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + Scene *scene = CTX_data_scene(C); float *cursor; cursor = give_cursor(scene, v3d); @@ -122,11 +122,11 @@ void ED_object_location_from_view(bContext *C, float *loc) void ED_object_rotation_from_view(bContext *C, float *rot) { - RegionView3D *rv3d= CTX_wm_region_view3d(C); + RegionView3D *rv3d = CTX_wm_region_view3d(C); if (rv3d) { float quat[4]; copy_qt_qt(quat, rv3d->viewquat); - quat[0]= -quat[0]; + quat[0] = -quat[0]; quat_to_eul(rot, quat); } else { @@ -136,8 +136,8 @@ void ED_object_rotation_from_view(bContext *C, float *rot) void ED_object_base_init_transform(bContext *C, Base *base, float *loc, float *rot) { - Object *ob= base->object; - Scene *scene= CTX_data_scene(C); + Object *ob = base->object; + Scene *scene = CTX_data_scene(C); if (!scene) return; @@ -195,19 +195,19 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) if (do_editmode) { prop = RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", - "Enter editmode when adding this object"); - RNA_def_property_flag(prop, PROP_HIDDEN|PROP_SKIP_SAVE); + "Enter editmode when adding this object"); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } prop = RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", - "Location for the newly added object", -FLT_MAX, FLT_MAX); + "Location for the newly added object", -FLT_MAX, FLT_MAX); RNA_def_property_flag(prop, PROP_SKIP_SAVE); prop = RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", - "Rotation for the newly added object", (float)-M_PI * 2.0f, (float)M_PI * 2.0f); + "Rotation for the newly added object", (float)-M_PI * 2.0f, (float)M_PI * 2.0f); RNA_def_property_flag(prop, PROP_SKIP_SAVE); prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", ""); - RNA_def_property_flag(prop, PROP_HIDDEN|PROP_SKIP_SAVE); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } static void object_add_generic_invoke_options(bContext *C, wmOperator *op) @@ -229,14 +229,14 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) int a, values[20], layer; if (v3d) { - layer = (v3d->scenelock && !v3d->localvd)? scene->layact: v3d->layact; + layer = (v3d->scenelock && !v3d->localvd) ? scene->layact : v3d->layact; } else { layer = scene->layact; } - for (a=0; a<20; a++) { - values[a]= (layer & (1<ptr, "layers", values); @@ -250,7 +250,7 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(ev } int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, - float *rot, int *enter_editmode, unsigned int *layer, int *is_view_aligned) + float *rot, int *enter_editmode, unsigned int *layer, int *is_view_aligned) { View3D *v3d = CTX_wm_view3d(C); int a, layer_values[20]; @@ -263,8 +263,8 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, if (RNA_struct_property_is_set(op->ptr, "layers")) { RNA_boolean_get_array(op->ptr, "layers", layer_values); - *layer= 0; - for (a=0; a<20; a++) { + *layer = 0; + for (a = 0; a < 20; a++) { if (layer_values[a]) *layer |= (1 << a); else @@ -314,18 +314,18 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, /* for object add primitive operators */ /* do not call undo push in this function (users of this function have to) */ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, - int enter_editmode, unsigned int layer) + int enter_editmode, unsigned int layer) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *ob; /* for as long scene has editmode... */ if (CTX_data_edit_object(C)) - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); /* freedata, and undo */ + ED_object_exit_editmode(C, EM_FREEDATA | EM_FREEUNDO | EM_WAITCURSOR | EM_DO_UNDO); /* freedata, and undo */ /* deselects all, sets scene->basact */ - ob= add_object(scene, type); + ob = add_object(scene, type); BASACT->lay = ob->lay = layer; /* editor level activate, notifiers */ ED_base_object_activate(C, BASACT); @@ -342,7 +342,7 @@ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, if (enter_editmode) ED_object_enter_editmode(C, EM_IGNORE_LAYER); - WM_event_add_notifier(C, NC_SCENE|ND_LAYER_CONTENT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, scene); return ob; } @@ -376,7 +376,7 @@ void OBJECT_OT_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", object_type_items, 0, "Type", ""); @@ -414,20 +414,20 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return NULL; - if (type==PFIELD_GUIDE) { - ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); + if (type == PFIELD_GUIDE) { + ob = ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); rename_id(&ob->id, "CurveGuide"); - ((Curve*)ob->data)->flag |= CU_PATH|CU_3D; + ((Curve *)ob->data)->flag |= CU_PATH | CU_3D; ED_object_enter_editmode(C, 0); ED_object_new_primitive_matrix(C, ob, loc, rot, mat); - BLI_addtail(object_editcurve_get(ob), add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_PATH, 1)); + BLI_addtail(object_editcurve_get(ob), add_nurbs_primitive(C, mat, CU_NURBS | CU_PRIM_PATH, 1)); if (!enter_editmode) ED_object_exit_editmode(C, EM_FREEDATA); } else { - ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); + ob = ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, "Field"); switch (type) { @@ -438,7 +438,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) } } - ob->pd= object_add_collision_fields(type); + ob->pd = object_add_collision_fields(type); DAG_scene_sort(CTX_data_main(C), CTX_data_scene(C)); @@ -468,7 +468,7 @@ void OBJECT_OT_effector_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->prop = RNA_def_enum(ot->srna, "type", field_type_items, 0, "Type", ""); @@ -480,7 +480,7 @@ void OBJECT_OT_effector_add(wmOperatorType *ot) static int object_camera_add_exec(bContext *C, wmOperator *op) { View3D *v3d = CTX_wm_view3d(C); - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; int enter_editmode; unsigned int layer; @@ -494,12 +494,12 @@ static int object_camera_add_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); + ob = ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); if (v3d) { if (v3d->camera == NULL) v3d->camera = ob; - if (v3d->scenelock && scene->camera==NULL) { + if (v3d->scenelock && scene->camera == NULL) { scene->camera = ob; } } @@ -521,12 +521,12 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ED_object_add_generic_props(ot, TRUE); /* hide this for cameras, default */ - prop= RNA_struct_type_find_property(ot->srna, "view_align"); + prop = RNA_struct_type_find_property(ot->srna, "view_align"); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -535,9 +535,9 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) /* ***************** add primitives *************** */ static int object_metaball_add_exec(bContext *C, wmOperator *op) { - Object *obedit= CTX_data_edit_object(C); + Object *obedit = CTX_data_edit_object(C); /*MetaElem *elem;*/ /*UNUSED*/ - int newob= 0; + int newob = 0; int enter_editmode; unsigned int layer; float loc[3], rot[3]; @@ -548,8 +548,8 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - if (obedit==NULL || obedit->type!=OB_MBALL) { - obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); + if (obedit == NULL || obedit->type != OB_MBALL) { + obedit = ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); newob = 1; } else DAG_id_tag_update(&obedit->id, OB_RECALC_DATA); @@ -563,21 +563,21 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) ED_object_exit_editmode(C, EM_FREEDATA); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, obedit); return OPERATOR_FINISHED; } static int object_metaball_add_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) { - Object *obedit= CTX_data_edit_object(C); + Object *obedit = CTX_data_edit_object(C); uiPopupMenu *pup; uiLayout *layout; object_add_generic_invoke_options(C, op); - pup= uiPupMenuBegin(C, op->type->name, ICON_NONE); - layout= uiPupMenuLayout(pup); + pup = uiPupMenuBegin(C, op->type->name, ICON_NONE); + layout = uiPupMenuLayout(pup); if (!obedit || obedit->type == OB_MBALL) uiItemsEnumO(layout, op->type->idname, "type"); else @@ -600,7 +600,7 @@ void OBJECT_OT_metaball_add(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", metaelem_type_items, 0, "Primitive", ""); ED_object_add_generic_props(ot, TRUE); @@ -608,7 +608,7 @@ void OBJECT_OT_metaball_add(wmOperatorType *ot) static int object_add_text_exec(bContext *C, wmOperator *op) { - Object *obedit= CTX_data_edit_object(C); + Object *obedit = CTX_data_edit_object(C); int enter_editmode; unsigned int layer; float loc[3], rot[3]; @@ -617,12 +617,12 @@ static int object_add_text_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - if (obedit && obedit->type==OB_FONT) + if (obedit && obedit->type == OB_FONT) return OPERATOR_CANCELLED; - obedit= ED_object_add_type(C, OB_FONT, loc, rot, enter_editmode, layer); + obedit = ED_object_add_type(C, OB_FONT, loc, rot, enter_editmode, layer); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, obedit); return OPERATOR_FINISHED; } @@ -640,16 +640,16 @@ void OBJECT_OT_text_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ED_object_add_generic_props(ot, TRUE); } static int object_armature_add_exec(bContext *C, wmOperator *op) { - Object *obedit= CTX_data_edit_object(C); - View3D *v3d= CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); - int newob= 0; + Object *obedit = CTX_data_edit_object(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d = CTX_wm_region_view3d(C); + int newob = 0; int enter_editmode; unsigned int layer; float loc[3], rot[3]; @@ -658,14 +658,14 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { - obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); + if ((obedit == NULL) || (obedit->type != OB_ARMATURE)) { + obedit = ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); ED_object_enter_editmode(C, 0); newob = 1; } else DAG_id_tag_update(&obedit->id, OB_RECALC_DATA); - if (obedit==NULL) { + if (obedit == NULL) { BKE_report(op->reports, RPT_ERROR, "Cannot create editmode armature"); return OPERATOR_CANCELLED; } @@ -677,7 +677,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) if (newob && !enter_editmode) ED_object_exit_editmode(C, EM_FREEDATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, obedit); return OPERATOR_FINISHED; } @@ -695,7 +695,7 @@ void OBJECT_OT_armature_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ED_object_add_generic_props(ot, TRUE); } @@ -714,10 +714,10 @@ static const char *get_lamp_defname(int type) static int object_lamp_add_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; Lamp *la; - int type= RNA_enum_get(op->ptr, "type"); + int type = RNA_enum_get(op->ptr, "type"); int enter_editmode; unsigned int layer; float loc[3], rot[3]; @@ -726,16 +726,16 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); - la= (Lamp*)ob->data; + ob = ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); + la = (Lamp *)ob->data; - la->type= type; + la->type = type; rename_id(&ob->id, get_lamp_defname(type)); rename_id(&la->id, get_lamp_defname(type)); if (scene_use_new_shading_nodes(scene)) { ED_node_shader_default(scene, &la->id); - la->use_nodes= 1; + la->use_nodes = 1; } return OPERATOR_FINISHED; @@ -762,7 +762,7 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", lamp_type_items, 0, "Type", ""); @@ -772,7 +772,7 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) static int group_instance_add_exec(bContext *C, wmOperator *op) { - Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); + Group *group = BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); int enter_editmode; unsigned int layer; @@ -783,18 +783,18 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; if (group) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); - rename_id(&ob->id, group->id.name+2); - ob->dup_group= group; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); + rename_id(&ob->id, group->id.name + 2); + ob->dup_group = group; ob->transflag |= OB_DUPLIGROUP; id_lib_extern(&group->id); /* works without this except if you try render right after, see: 22027 */ DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -814,7 +814,7 @@ static int object_speaker_add_exec(bContext *C, wmOperator *op) if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL)) return OPERATOR_CANCELLED; - ob= ED_object_add_type(C, OB_SPEAKER, loc, rot, FALSE, layer); + ob = ED_object_add_type(C, OB_SPEAKER, loc, rot, FALSE, layer); /* to make it easier to start using this immediately in NLA, a default sound clip is created * ready to be moved around to retime the sound and/or make new sound clips @@ -834,7 +834,7 @@ static int object_speaker_add_exec(bContext *C, wmOperator *op) strcpy(nlt->name, "SoundTrack"); BKE_nlastrip_validate_name(adt, strip); - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_ANIMATION | ND_NLA | NA_EDITED, NULL); } return OPERATOR_FINISHED; @@ -852,7 +852,7 @@ void OBJECT_OT_speaker_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ED_object_add_generic_props(ot, TRUE); } @@ -874,10 +874,10 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); + prop = RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); RNA_def_enum_funcs(prop, RNA_group_itemf); ot->prop = prop; ED_object_add_generic_props(ot, FALSE); @@ -892,21 +892,21 @@ void ED_base_object_free_and_unlink(Main *bmain, Scene *scene, Base *base) DAG_id_type_tag(bmain, ID_OB); BLI_remlink(&scene->base, base); free_libblock_us(&bmain->object, base->object); - if (scene->basact==base) scene->basact= NULL; + if (scene->basact == base) scene->basact = NULL; MEM_freeN(base); } static int object_delete_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - const short use_global= RNA_boolean_get(op->ptr, "use_global"); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + const short use_global = RNA_boolean_get(op->ptr, "use_global"); /* int islamp= 0; */ /* UNUSED */ if (CTX_data_edit_object(C)) return OPERATOR_CANCELLED; - CTX_DATA_BEGIN (C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_bases) { /* if (base->object->type==OB_LAMP) islamp= 1; */ @@ -920,9 +920,9 @@ static int object_delete_exec(bContext *C, wmOperator *op) Scene *scene_iter; Base *base_other; - for (scene_iter= bmain->scene.first; scene_iter; scene_iter= scene_iter->id.next) { + for (scene_iter = bmain->scene.first; scene_iter; scene_iter = scene_iter->id.next) { if (scene_iter != scene && !(scene_iter->id.lib)) { - base_other= object_in_scene(base->object, scene_iter); + base_other = object_in_scene(base->object, scene_iter); if (base_other) { ED_base_object_free_and_unlink(bmain, scene_iter, base_other); } @@ -937,8 +937,8 @@ static int object_delete_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); - WM_event_add_notifier(C, NC_SCENE|ND_LAYER_CONTENT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene); + WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, scene); return OPERATOR_FINISHED; } @@ -956,7 +956,7 @@ void OBJECT_OT_delete(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "use_global", 0, "Delete Globally", "Remove object from all scenes"); } @@ -966,81 +966,81 @@ void OBJECT_OT_delete(wmOperatorType *ot) /* after copying objects, copied data should get new pointers */ static void copy_object_set_idnew(bContext *C, int dupflag) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); Material *ma, *mao; ID *id; int a; /* XXX check object pointers */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { object_relink(ob); } CTX_DATA_END; /* materials */ - if ( dupflag & USER_DUP_MAT) { - mao= bmain->mat.first; + if (dupflag & USER_DUP_MAT) { + mao = bmain->mat.first; while (mao) { if (mao->id.newid) { - ma= (Material *)mao->id.newid; + ma = (Material *)mao->id.newid; if (dupflag & USER_DUP_TEX) { - for (a=0; amtex[a]) { - id= (ID *)ma->mtex[a]->tex; + id = (ID *)ma->mtex[a]->tex; if (id) { ID_NEW_US(ma->mtex[a]->tex) - else ma->mtex[a]->tex= copy_texture(ma->mtex[a]->tex); + else ma->mtex[a]->tex = copy_texture(ma->mtex[a]->tex); id->us--; } } } } #if 0 // XXX old animation system - id= (ID *)ma->ipo; + id = (ID *)ma->ipo; if (id) { ID_NEW_US(ma->ipo) - else ma->ipo= copy_ipo(ma->ipo); + else ma->ipo = copy_ipo(ma->ipo); id->us--; } #endif // XXX old animation system } - mao= mao->id.next; + mao = mao->id.next; } } #if 0 // XXX old animation system - /* lamps */ - if ( dupflag & USER_DUP_IPO) { - Lamp *la= bmain->lamp.first; + /* lamps */ + if (dupflag & USER_DUP_IPO) { + Lamp *la = bmain->lamp.first; while (la) { if (la->id.newid) { - Lamp *lan= (Lamp *)la->id.newid; - id= (ID *)lan->ipo; + Lamp *lan = (Lamp *)la->id.newid; + id = (ID *)lan->ipo; if (id) { ID_NEW_US(lan->ipo) - else lan->ipo= copy_ipo(lan->ipo); + else lan->ipo = copy_ipo(lan->ipo); id->us--; } } - la= la->id.next; + la = la->id.next; } } /* ipos */ - ipo= bmain->ipo.first; + ipo = bmain->ipo.first; while (ipo) { - if (ipo->id.lib==NULL && ipo->id.newid) { - Ipo *ipon= (Ipo *)ipo->id.newid; + if (ipo->id.lib == NULL && ipo->id.newid) { + Ipo *ipon = (Ipo *)ipo->id.newid; IpoCurve *icu; - for (icu= ipon->curve.first; icu; icu= icu->next) { + for (icu = ipon->curve.first; icu; icu = icu->next) { if (icu->driver) { ID_NEW(icu->driver->ob); } } } - ipo= ipo->id.next; + ipo = ipo->id.next; } #endif // XXX old animation system @@ -1057,42 +1057,42 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base, { ListBase *lb; DupliObject *dob; - GHash *dupli_gh= NULL, *parent_gh= NULL; + GHash *dupli_gh = NULL, *parent_gh = NULL; if (!(base->object->transflag & OB_DUPLI)) return; - lb= object_duplilist(scene, base->object); + lb = object_duplilist(scene, base->object); if (use_hierarchy || use_base_parent) { - dupli_gh= BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "make_object_duplilist_real dupli_gh"); - parent_gh= BLI_ghash_new(BLI_ghashutil_pairhash, BLI_ghashutil_paircmp, "make_object_duplilist_real parent_gh"); + dupli_gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "make_object_duplilist_real dupli_gh"); + parent_gh = BLI_ghash_new(BLI_ghashutil_pairhash, BLI_ghashutil_paircmp, "make_object_duplilist_real parent_gh"); } - for (dob= lb->first; dob; dob= dob->next) { + for (dob = lb->first; dob; dob = dob->next) { Base *basen; - Object *ob= copy_object(dob->ob); + Object *ob = copy_object(dob->ob); /* font duplis can have a totcol without material, we get them from parent * should be implemented better... */ - if (ob->mat==NULL) ob->totcol= 0; + if (ob->mat == NULL) ob->totcol = 0; - basen= MEM_dupallocN(base); - basen->flag &= ~(OB_FROMDUPLI|OB_FROMGROUP); - ob->flag= basen->flag; - basen->lay= base->lay; - BLI_addhead(&scene->base, basen); /* addhead: othwise eternal loop */ - basen->object= ob; + basen = MEM_dupallocN(base); + basen->flag &= ~(OB_FROMDUPLI | OB_FROMGROUP); + ob->flag = basen->flag; + basen->lay = base->lay; + BLI_addhead(&scene->base, basen); /* addhead: othwise eternal loop */ + basen->object = ob; /* make sure apply works */ BKE_free_animdata(&ob->id); ob->adt = NULL; - ob->parent= NULL; - ob->constraints.first= ob->constraints.last= NULL; - ob->disp.first= ob->disp.last= NULL; + ob->parent = NULL; + ob->constraints.first = ob->constraints.last = NULL; + ob->disp.first = ob->disp.last = NULL; ob->transflag &= ~OB_DUPLI; - ob->lay= base->lay; + ob->lay = base->lay; copy_m4_m4(ob->obmat, dob->mat); object_apply_mat4(ob, ob->obmat, FALSE, FALSE); @@ -1104,13 +1104,13 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base, } if (use_hierarchy) { - for (dob= lb->first; dob; dob= dob->next) { + for (dob = lb->first; dob; dob = dob->next) { /* original parents */ - Object *ob_src= dob->ob; - Object *ob_src_par= ob_src->parent; + Object *ob_src = dob->ob; + Object *ob_src_par = ob_src->parent; - Object *ob_dst= BLI_ghash_lookup(dupli_gh, dob); - Object *ob_dst_par= NULL; + Object *ob_dst = BLI_ghash_lookup(dupli_gh, dob); + Object *ob_dst_par = NULL; /* find parent that was also made real */ if (ob_src_par) { @@ -1121,19 +1121,19 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base, if (ob_dst_par) { /* allow for all possible parent types */ - ob_dst->partype= ob_src->partype; + ob_dst->partype = ob_src->partype; BLI_strncpy(ob_dst->parsubstr, ob_src->parsubstr, sizeof(ob_dst->parsubstr)); - ob_dst->par1= ob_src->par1; - ob_dst->par2= ob_src->par2; - ob_dst->par3= ob_src->par3; + ob_dst->par1 = ob_src->par1; + ob_dst->par2 = ob_src->par2; + ob_dst->par3 = ob_src->par3; copy_m4_m4(ob_dst->parentinv, ob_src->parentinv); - ob_dst->parent= ob_dst_par; + ob_dst->parent = ob_dst_par; } else if (use_base_parent) { - ob_dst->parent= base->object; - ob_dst->partype= PAROBJECT; + ob_dst->parent = base->object; + ob_dst->partype = PAROBJECT; } if (ob_dst->parent) { @@ -1151,12 +1151,12 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base, else if (use_base_parent) { /* since we are ignoring the internal hierarchy - parent all to the * base object */ - for (dob= lb->first; dob; dob= dob->next) { + for (dob = lb->first; dob; dob = dob->next) { /* original parents */ - Object *ob_dst= BLI_ghash_lookup(dupli_gh, dob); + Object *ob_dst = BLI_ghash_lookup(dupli_gh, dob); - ob_dst->parent= base->object; - ob_dst->partype= PAROBJECT; + ob_dst->parent = base->object; + ob_dst->partype = PAROBJECT; /* similer to the code above, see comments */ invert_m4_m4(ob_dst->parentinv, dob->mat); @@ -1181,26 +1181,26 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base, static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); - const short use_base_parent= RNA_boolean_get(op->ptr, "use_base_parent"); - const short use_hierarchy= RNA_boolean_get(op->ptr, "use_hierarchy"); + const short use_base_parent = RNA_boolean_get(op->ptr, "use_base_parent"); + const short use_hierarchy = RNA_boolean_get(op->ptr, "use_hierarchy"); clear_id_newpoins(); - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { make_object_duplilist_real(C, scene, base, use_base_parent, use_hierarchy); /* dependencies were changed */ - WM_event_add_notifier(C, NC_OBJECT|ND_PARENT, base->object); + WM_event_add_notifier(C, NC_OBJECT | ND_PARENT, base->object); } CTX_DATA_END; DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_SCENE, scene); - WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); + WM_main_add_notifier(NC_OBJECT | ND_DRAW, NULL); return OPERATOR_FINISHED; } @@ -1219,7 +1219,7 @@ void OBJECT_OT_duplicates_make_real(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "use_base_parent", 0, "Parent", "Parent newly created objects to the original duplicator"); RNA_def_boolean(ot->srna, "use_hierarchy", 0, "Keep Hierarchy", "Maintain parent child relationships"); @@ -1227,15 +1227,16 @@ void OBJECT_OT_duplicates_make_real(wmOperatorType *ot) /**************************** Convert **************************/ -static EnumPropertyItem convert_target_items[]= { +static EnumPropertyItem convert_target_items[] = { {OB_CURVE, "CURVE", ICON_OUTLINER_OB_CURVE, "Curve from Mesh/Text", ""}, {OB_MESH, "MESH", ICON_OUTLINER_OB_MESH, "Mesh from Curve/Meta/Surf/Text", ""}, - {0, NULL, 0, NULL, NULL}}; + {0, NULL, 0, NULL, NULL} +}; static void curvetomesh(Scene *scene, Object *ob) { if (ob->disp.first == NULL) - makeDispListCurveTypes(scene, ob, 0); /* force creation */ + makeDispListCurveTypes(scene, ob, 0); /* force creation */ nurbs_to_mesh(ob); /* also does users */ @@ -1245,8 +1246,8 @@ static void curvetomesh(Scene *scene, Object *ob) static int convert_poll(bContext *C) { - Object *obact= CTX_data_active_object(C); - Scene *scene= CTX_data_scene(C); + Object *obact = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT) && !(obact->id.lib)); } @@ -1258,16 +1259,16 @@ static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) Base *basen; if (ob == NULL) { - ob= base->object; + ob = base->object; } - obn= copy_object(ob); - obn->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + obn = copy_object(ob); + obn->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; - basen= MEM_mallocN(sizeof(Base), "duplibase"); - *basen= *base; - BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ - basen->object= obn; + basen = MEM_mallocN(sizeof(Base), "duplibase"); + *basen = *base; + BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ + basen->object = obn; basen->flag |= SELECT; obn->flag |= SELECT; base->flag &= ~SELECT; @@ -1278,24 +1279,24 @@ static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) static int convert_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Base *basen=NULL, *basact=NULL, *basedel=NULL; - Object *ob, *ob1, *newob, *obact= CTX_data_active_object(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Base *basen = NULL, *basact = NULL, *basedel = NULL; + Object *ob, *ob1, *newob, *obact = CTX_data_active_object(C); DerivedMesh *dm; Curve *cu; Nurb *nu; MetaBall *mb; Mesh *me; - const short target= RNA_enum_get(op->ptr, "target"); - const short keep_original= RNA_boolean_get(op->ptr, "keep_original"); - int a, mballConverted= 0; + const short target = RNA_enum_get(op->ptr, "target"); + const short keep_original = RNA_boolean_get(op->ptr, "keep_original"); + int a, mballConverted = 0; /* don't forget multiple users! */ /* reset flags */ - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { + ob = base->object; ob->flag &= ~OB_DONE; /* flag data thats not been edited (only needed for !keep_original) */ @@ -1305,8 +1306,8 @@ static int convert_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { + ob = base->object; if (ob->flag & OB_DONE || !IS_TAGGED(ob->data)) { if (ob->type != target) { @@ -1319,23 +1320,23 @@ static int convert_exec(bContext *C, wmOperator *op) /* When 2 objects with linked data are selected, converting both * would keep modifiers on all but the converted object [#26003] */ if (ob->type == OB_MESH) { - object_free_modifiers(ob); /* after derivedmesh calls! */ + object_free_modifiers(ob); /* after derivedmesh calls! */ } } } - else if (ob->type==OB_MESH && target == OB_CURVE) { + else if (ob->type == OB_MESH && target == OB_CURVE) { ob->flag |= OB_DONE; if (keep_original) { - basen= duplibase_for_convert(scene, base, NULL); - newob= basen->object; + basen = duplibase_for_convert(scene, base, NULL); + newob = basen->object; /* decrement original mesh's usage count */ - me= newob->data; + me = newob->data; me->id.us--; /* make a new copy of the mesh */ - newob->data= copy_mesh(me); + newob->data = copy_mesh(me); } else { newob = ob; @@ -1343,33 +1344,33 @@ static int convert_exec(bContext *C, wmOperator *op) mesh_to_curve(scene, newob); - if (newob->type==OB_CURVE) - object_free_modifiers(newob); /* after derivedmesh calls! */ + if (newob->type == OB_CURVE) + object_free_modifiers(newob); /* after derivedmesh calls! */ } - else if (ob->type==OB_MESH && ob->modifiers.first) { /* converting a mesh with no modifiers causes a segfault */ + else if (ob->type == OB_MESH && ob->modifiers.first) { /* converting a mesh with no modifiers causes a segfault */ ob->flag |= OB_DONE; if (keep_original) { - basen= duplibase_for_convert(scene, base, NULL); - newob= basen->object; + basen = duplibase_for_convert(scene, base, NULL); + newob = basen->object; /* decrement original mesh's usage count */ - me= newob->data; + me = newob->data; me->id.us--; /* make a new copy of the mesh */ - newob->data= copy_mesh(me); + newob->data = copy_mesh(me); } else { newob = ob; - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; } /* make new mesh data from the original copy */ /* note: get the mesh from the original, not from the copy in some * cases this doesnt give correct results (when MDEF is used for eg) */ - dm= mesh_get_derived_final(scene, newob, CD_MASK_MESH); + dm = mesh_get_derived_final(scene, newob, CD_MASK_MESH); /* dm= mesh_create_derived_no_deform(ob1, NULL); this was called original (instead of get_derived). man o man why! (ton) */ DM_to_mesh(dm, newob->data, newob); @@ -1377,64 +1378,64 @@ static int convert_exec(bContext *C, wmOperator *op) /* re-tessellation is called by DM_to_mesh */ dm->release(dm); - object_free_modifiers(newob); /* after derivedmesh calls! */ + object_free_modifiers(newob); /* after derivedmesh calls! */ } - else if (ob->type==OB_FONT) { + else if (ob->type == OB_FONT) { ob->flag |= OB_DONE; if (keep_original) { - basen= duplibase_for_convert(scene, base, NULL); - newob= basen->object; + basen = duplibase_for_convert(scene, base, NULL); + newob = basen->object; /* decrement original curve's usage count */ ((Curve *)newob->data)->id.us--; /* make a new copy of the curve */ - newob->data= copy_curve(ob->data); + newob->data = copy_curve(ob->data); } else { - newob= ob; + newob = ob; } - cu= newob->data; + cu = newob->data; if (!newob->disp.first) makeDispListCurveTypes(scene, newob, 0); - newob->type= OB_CURVE; - cu->type= OB_CURVE; + newob->type = OB_CURVE; + cu->type = OB_CURVE; if (cu->vfont) { cu->vfont->id.us--; - cu->vfont= NULL; + cu->vfont = NULL; } if (cu->vfontb) { cu->vfontb->id.us--; - cu->vfontb= NULL; + cu->vfontb = NULL; } if (cu->vfonti) { cu->vfonti->id.us--; - cu->vfonti= NULL; + cu->vfonti = NULL; } if (cu->vfontbi) { cu->vfontbi->id.us--; - cu->vfontbi= NULL; + cu->vfontbi = NULL; } if (!keep_original) { /* other users */ - if (cu->id.us>1) { - for (ob1= bmain->object.first; ob1; ob1=ob1->id.next) { - if (ob1->data==ob->data) { - ob1->type= OB_CURVE; - ob1->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + if (cu->id.us > 1) { + for (ob1 = bmain->object.first; ob1; ob1 = ob1->id.next) { + if (ob1->data == ob->data) { + ob1->type = OB_CURVE; + ob1->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; } } } } - for (nu=cu->nurb.first; nu; nu=nu->next) - nu->charidx= 0; + for (nu = cu->nurb.first; nu; nu = nu->next) + nu->charidx = 0; if (target == OB_MESH) { curvetomesh(scene, newob); @@ -1448,17 +1449,17 @@ static int convert_exec(bContext *C, wmOperator *op) if (target == OB_MESH) { if (keep_original) { - basen= duplibase_for_convert(scene, base, NULL); - newob= basen->object; + basen = duplibase_for_convert(scene, base, NULL); + newob = basen->object; /* decrement original curve's usage count */ ((Curve *)newob->data)->id.us--; /* make a new copy of the curve */ - newob->data= copy_curve(ob->data); + newob->data = copy_curve(ob->data); } else { - newob= ob; + newob = ob; /* meshes doesn't use displist */ freedisplist(&newob->disp); @@ -1467,13 +1468,13 @@ static int convert_exec(bContext *C, wmOperator *op) curvetomesh(scene, newob); } } - else if (ob->type==OB_MBALL && target == OB_MESH) { + else if (ob->type == OB_MBALL && target == OB_MESH) { Object *baseob; base->flag &= ~SELECT; ob->flag &= ~SELECT; - baseob= find_basis_mball(scene, ob); + baseob = find_basis_mball(scene, ob); if (ob != baseob) { /* if motherball is converting it would be marked as done later */ @@ -1487,29 +1488,29 @@ static int convert_exec(bContext *C, wmOperator *op) if (!(baseob->flag & OB_DONE)) { baseob->flag |= OB_DONE; - basen= duplibase_for_convert(scene, base, baseob); - newob= basen->object; + basen = duplibase_for_convert(scene, base, baseob); + newob = basen->object; - mb= newob->data; + mb = newob->data; mb->id.us--; - newob->data= add_mesh("Mesh"); - newob->type= OB_MESH; + newob->data = add_mesh("Mesh"); + newob->type = OB_MESH; - me= newob->data; - me->totcol= mb->totcol; + me = newob->data; + me->totcol = mb->totcol; if (newob->totcol) { - me->mat= MEM_dupallocN(mb->mat); - for (a=0; atotcol; a++) id_us_plus((ID *)me->mat[a]); + me->mat = MEM_dupallocN(mb->mat); + for (a = 0; a < newob->totcol; a++) id_us_plus((ID *)me->mat[a]); } mball_to_mesh(&baseob->disp, newob->data); if (obact->type == OB_MBALL) { - basact= basen; + basact = basen; } - mballConverted= 1; + mballConverted = 1; } } else { @@ -1522,10 +1523,10 @@ static int convert_exec(bContext *C, wmOperator *op) if (basen) { if (ob == obact) { /* store new active base to update BASACT */ - basact= basen; + basact = basen; } - basen= NULL; + basen = NULL; } if (!keep_original && (ob->flag & OB_DONE)) { @@ -1545,11 +1546,11 @@ static int convert_exec(bContext *C, wmOperator *op) if (!keep_original) { if (mballConverted) { - Base *base= scene->base.first, *tmpbase; + Base *base = scene->base.first, *tmpbase; while (base) { - ob= base->object; - tmpbase= base; - base= base->next; + ob = base->object; + tmpbase = base; + base = base->next; if (ob->type == OB_MBALL) { ED_base_object_free_and_unlink(bmain, scene, tmpbase); @@ -1567,16 +1568,16 @@ static int convert_exec(bContext *C, wmOperator *op) if (basact) { /* active base was changed */ ED_base_object_activate(C, basact); - BASACT= basact; + BASACT = basact; } else if (BASACT->object->flag & OB_DONE) { - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, BASACT->object); - WM_event_add_notifier(C, NC_OBJECT|ND_DATA, BASACT->object); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, BASACT->object); + WM_event_add_notifier(C, NC_OBJECT | ND_DATA, BASACT->object); } DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, scene); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); return OPERATOR_FINISHED; } @@ -1595,7 +1596,7 @@ void OBJECT_OT_convert(wmOperatorType *ot) ot->poll = convert_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "target", convert_target_items, OB_MESH, "Target", "Type of object to convert to"); @@ -1614,28 +1615,28 @@ void OBJECT_OT_convert(wmOperatorType *ot) /* leaves selection of base/object unaltered */ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base, int dupflag) { - Base *basen= NULL; + Base *basen = NULL; Material ***matarar; Object *ob, *obn; ID *id; int a, didit; - ob= base->object; + ob = base->object; if (ob->mode & OB_MODE_POSE) { ; /* nothing? */ } else { - obn= copy_object(ob); - obn->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + obn = copy_object(ob); + obn->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; - basen= MEM_mallocN(sizeof(Base), "duplibase"); - *basen= *base; - BLI_addhead(&scene->base, basen); /* addhead: prevent eternal loop */ - basen->object= obn; + basen = MEM_mallocN(sizeof(Base), "duplibase"); + *basen = *base; + BLI_addhead(&scene->base, basen); /* addhead: prevent eternal loop */ + basen->object = obn; if (basen->flag & OB_FROMGROUP) { Group *group; - for (group= bmain->group.first; group; group= group->id.next) { + for (group = bmain->group.first; group; group = group->id.next) { if (object_in_group(ob, group)) add_to_group(group, obn, scene, basen); } @@ -1647,11 +1648,11 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base } if (dupflag & USER_DUP_MAT) { - for (a=0; atotcol; a++) { - id= (ID *)obn->mat[a]; + for (a = 0; a < obn->totcol; a++) { + id = (ID *)obn->mat[a]; if (id) { ID_NEW_US(obn->mat[a]) - else obn->mat[a]= copy_material(obn->mat[a]); + else obn->mat[a] = copy_material(obn->mat[a]); id->us--; if (dupflag & USER_DUP_ACT) { @@ -1662,11 +1663,11 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base } if (dupflag & USER_DUP_PSYS) { ParticleSystem *psys; - for (psys=obn->particlesystem.first; psys; psys=psys->next) { - id= (ID*) psys->part; + for (psys = obn->particlesystem.first; psys; psys = psys->next) { + id = (ID *) psys->part; if (id) { ID_NEW_US(psys->part) - else psys->part= psys_copy_settings(psys->part); + else psys->part = psys_copy_settings(psys->part); if (dupflag & USER_DUP_ACT) { BKE_copy_animdata_id_action(&psys->part->id); @@ -1677,71 +1678,71 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base } } - id= obn->data; - didit= 0; + id = obn->data; + didit = 0; switch (obn->type) { case OB_MESH: if (dupflag & USER_DUP_MESH) { - ID_NEW_US2( obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_mesh(obn->data); + obn->data = copy_mesh(obn->data); if (obn->fluidsimSettings) { obn->fluidsimSettings->orgMesh = (Mesh *)obn->data; } - didit= 1; + didit = 1; } id->us--; } break; case OB_CURVE: if (dupflag & USER_DUP_CURVE) { - ID_NEW_US2(obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_curve(obn->data); - didit= 1; + obn->data = copy_curve(obn->data); + didit = 1; } id->us--; } break; case OB_SURF: if (dupflag & USER_DUP_SURF) { - ID_NEW_US2( obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_curve(obn->data); - didit= 1; + obn->data = copy_curve(obn->data); + didit = 1; } id->us--; } break; case OB_FONT: if (dupflag & USER_DUP_FONT) { - ID_NEW_US2( obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_curve(obn->data); - didit= 1; + obn->data = copy_curve(obn->data); + didit = 1; } id->us--; } break; case OB_MBALL: if (dupflag & USER_DUP_MBALL) { - ID_NEW_US2(obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_mball(obn->data); - didit= 1; + obn->data = copy_mball(obn->data); + didit = 1; } id->us--; } break; case OB_LAMP: if (dupflag & USER_DUP_LAMP) { - ID_NEW_US2(obn->data ) + ID_NEW_US2(obn->data) else { - obn->data= copy_lamp(obn->data); - didit= 1; + obn->data = copy_lamp(obn->data); + didit = 1; } id->us--; } @@ -1751,44 +1752,44 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base obn->recalc |= OB_RECALC_DATA; if (obn->pose) obn->pose->flag |= POSE_RECALC; - if (dupflag & USER_DUP_ARM) { - ID_NEW_US2(obn->data ) - else { - obn->data= copy_armature(obn->data); - armature_rebuild_pose(obn, obn->data); - didit= 1; - } - id->us--; + if (dupflag & USER_DUP_ARM) { + ID_NEW_US2(obn->data) + else { + obn->data = copy_armature(obn->data); + armature_rebuild_pose(obn, obn->data); + didit = 1; } + id->us--; + } - break; + break; case OB_LATTICE: - if (dupflag!=0) { - ID_NEW_US2(obn->data ) + if (dupflag != 0) { + ID_NEW_US2(obn->data) else { - obn->data= copy_lattice(obn->data); - didit= 1; + obn->data = copy_lattice(obn->data); + didit = 1; } id->us--; } break; case OB_CAMERA: - if (dupflag!=0) { - ID_NEW_US2(obn->data ) + if (dupflag != 0) { + ID_NEW_US2(obn->data) else { - obn->data= copy_camera(obn->data); - didit= 1; + obn->data = copy_camera(obn->data); + didit = 1; } id->us--; } break; case OB_SPEAKER: - if (dupflag!=0) { - ID_NEW_US2(obn->data ) + if (dupflag != 0) { + ID_NEW_US2(obn->data) else { - obn->data= copy_speaker(obn->data); - didit= 1; + obn->data = copy_speaker(obn->data); + didit = 1; } id->us--; } @@ -1805,13 +1806,13 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base BKE_copy_animdata_id_action((ID *)obn->data); if (key) { - BKE_copy_animdata_id_action((ID*)key); + BKE_copy_animdata_id_action((ID *)key); } /* Update the duplicated action in the action actuators */ for (act = obn->actuators.first; act; act = act->next) { if (act->type == ACT_ACTION) { - bActionActuator* actact = (bActionActuator*) act->data; + bActionActuator *actact = (bActionActuator *) act->data; if (ob->adt && actact->act == ob->adt->action) { actact->act = obn->adt->action; } @@ -1820,13 +1821,13 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base } if (dupflag & USER_DUP_MAT) { - matarar= give_matarar(obn); + matarar = give_matarar(obn); if (matarar) { - for (a=0; atotcol; a++) { - id= (ID *)(*matarar)[a]; + for (a = 0; a < obn->totcol; a++) { + id = (ID *)(*matarar)[a]; if (id) { - ID_NEW_US( (*matarar)[a] ) - else (*matarar)[a]= copy_material((*matarar)[a]); + ID_NEW_US( (*matarar)[a]) + else (*matarar)[a] = copy_material((*matarar)[a]); id->us--; } @@ -1847,14 +1848,14 @@ Base *ED_object_add_duplicate(Main *bmain, Scene *scene, Base *base, int dupflag Object *ob; clear_id_newpoins(); - clear_sca_new_poins(); /* sensor/contr/act */ + clear_sca_new_poins(); /* sensor/contr/act */ - basen= object_add_duplicate_internal(bmain, scene, base, dupflag); + basen = object_add_duplicate_internal(bmain, scene, base, dupflag); if (basen == NULL) { return NULL; } - ob= basen->object; + ob = basen->object; /* link own references to the newly duplicated data [#26816] */ object_relink(ob); @@ -1871,16 +1872,16 @@ Base *ED_object_add_duplicate(Main *bmain, Scene *scene, Base *base, int dupflag /* contextual operator dupli */ static int duplicate_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - int linked= RNA_boolean_get(op->ptr, "linked"); - int dupflag= (linked)? 0: U.dupflag; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + int linked = RNA_boolean_get(op->ptr, "linked"); + int dupflag = (linked) ? 0 : U.dupflag; clear_id_newpoins(); - clear_sca_new_poins(); /* sensor/contr/act */ + clear_sca_new_poins(); /* sensor/contr/act */ - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { - Base *basen= object_add_duplicate_internal(bmain, scene, base, dupflag); + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { + Base *basen = object_add_duplicate_internal(bmain, scene, base, dupflag); /* note that this is safe to do with this context iterator, * the list is made in advance */ @@ -1891,7 +1892,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) } /* new object becomes active */ - if (BASACT==base) + if (BASACT == base) ED_base_object_activate(C, basen); if (basen->object->data) { @@ -1905,7 +1906,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); return OPERATOR_FINISHED; } @@ -1924,11 +1925,11 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* to give to transform */ RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data"); - prop= RNA_def_enum(ot->srna, "mode", transform_mode_types, TFM_TRANSLATION, "Mode", ""); + prop = RNA_def_enum(ot->srna, "mode", transform_mode_types, TFM_TRANSLATION, "Mode", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -1937,36 +1938,36 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) static int add_named_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Base *basen, *base; Object *ob; - int linked= RNA_boolean_get(op->ptr, "linked"); - int dupflag= (linked)? 0: U.dupflag; - char name[MAX_ID_NAME-2]; + int linked = RNA_boolean_get(op->ptr, "linked"); + int dupflag = (linked) ? 0 : U.dupflag; + char name[MAX_ID_NAME - 2]; /* find object, create fake base */ RNA_string_get(op->ptr, "name", name); - ob= (Object *)find_id("OB", name); - if (ob==NULL) + ob = (Object *)find_id("OB", name); + if (ob == NULL) return OPERATOR_CANCELLED; - base= MEM_callocN(sizeof(Base), "duplibase"); - base->object= ob; - base->flag= ob->flag; + base = MEM_callocN(sizeof(Base), "duplibase"); + base->object = ob; + base->flag = ob->flag; /* prepare dupli */ clear_id_newpoins(); - clear_sca_new_poins(); /* sensor/contr/act */ + clear_sca_new_poins(); /* sensor/contr/act */ - basen= object_add_duplicate_internal(bmain, scene, base, dupflag); + basen = object_add_duplicate_internal(bmain, scene, base, dupflag); if (basen == NULL) { MEM_freeN(base); return OPERATOR_CANCELLED; } - basen->lay= basen->object->lay= scene->lay; + basen->lay = basen->object->lay = scene->lay; ED_object_location_from_view(C, basen->object->loc); ED_base_object_activate(C, basen); @@ -1978,7 +1979,7 @@ static int add_named_exec(bContext *C, wmOperator *op) MEM_freeN(base); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); return OPERATOR_FINISHED; } @@ -1995,10 +1996,10 @@ void OBJECT_OT_add_named(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data"); - RNA_def_string(ot->srna, "name", "Cube", MAX_ID_NAME-2, "Name", "Object name to add"); + RNA_def_string(ot->srna, "name", "Cube", MAX_ID_NAME - 2, "Name", "Object name to add"); } @@ -2006,7 +2007,7 @@ void OBJECT_OT_add_named(wmOperatorType *ot) /**************************** Join *************************/ static int join_poll(bContext *C) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); if (!ob || ob->id.lib) return 0; @@ -2019,8 +2020,8 @@ static int join_poll(bContext *C) static int join_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - Object *ob= CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *ob = CTX_data_active_object(C); if (scene->obedit) { BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode"); @@ -2053,13 +2054,13 @@ void OBJECT_OT_join(wmOperatorType *ot) ot->poll = join_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /**************************** Join as Shape Key*************************/ static int join_shapes_poll(bContext *C) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); if (!ob || ob->id.lib) return 0; @@ -2072,8 +2073,8 @@ static int join_shapes_poll(bContext *C) static int join_shapes_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - Object *ob= CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); + Object *ob = CTX_data_active_object(C); if (scene->obedit) { BKE_report(op->reports, RPT_ERROR, "This data does not support joining in editmode"); @@ -2102,5 +2103,5 @@ void OBJECT_OT_join_shapes(wmOperatorType *ot) ot->poll = join_shapes_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index dffcaad42fd..9e8381a72c6 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -115,9 +115,9 @@ typedef void (*MPassKnownData)(DerivedMesh *lores_dm, DerivedMesh *hires_dm, con const int face_index, const int lvl, const float st[2], float tangmat[3][3], const int x, const int y); -typedef void* (*MInitBakeData)(MultiresBakeRender *bkr, Image* ima); -typedef void (*MApplyBakeData)(void *bake_data); -typedef void (*MFreeBakeData)(void *bake_data); +typedef void * (*MInitBakeData)(MultiresBakeRender *bkr, Image *ima); +typedef void (*MApplyBakeData)(void *bake_data); +typedef void (*MFreeBakeData)(void *bake_data); typedef struct { MVert *mvert; @@ -157,25 +157,25 @@ typedef struct { static void multiresbake_get_normal(const MResolvePixelData *data, float norm[], const int face_num, const int vert_index) { - unsigned int indices[]= {data->mface[face_num].v1, data->mface[face_num].v2, - data->mface[face_num].v3, data->mface[face_num].v4}; - const int smoothnormal= (data->mface[face_num].flag & ME_SMOOTH); + unsigned int indices[] = {data->mface[face_num].v1, data->mface[face_num].v2, + data->mface[face_num].v3, data->mface[face_num].v4}; + const int smoothnormal = (data->mface[face_num].flag & ME_SMOOTH); if (!smoothnormal) { /* flat */ if (data->precomputed_normals) { - copy_v3_v3(norm, &data->precomputed_normals[3*face_num]); + copy_v3_v3(norm, &data->precomputed_normals[3 * face_num]); } else { float nor[3]; float *p0, *p1, *p2; - const int iGetNrVerts= data->mface[face_num].v4!=0 ? 4 : 3; + const int iGetNrVerts = data->mface[face_num].v4 != 0 ? 4 : 3; - p0= data->mvert[indices[0]].co; - p1= data->mvert[indices[1]].co; - p2= data->mvert[indices[2]].co; + p0 = data->mvert[indices[0]].co; + p1 = data->mvert[indices[1]].co; + p2 = data->mvert[indices[2]].co; - if (iGetNrVerts==4) { - float *p3= data->mvert[indices[3]].co; + if (iGetNrVerts == 4) { + float *p3 = data->mvert[indices[3]].co; normal_quad_v3(nor, p0, p1, p2, p3); } else { @@ -186,7 +186,7 @@ static void multiresbake_get_normal(const MResolvePixelData *data, float norm[], } } else { - short *no= data->mvert[indices[vert_index]].no; + short *no = data->mvert[indices[vert_index]].no; normal_short_to_float_v3(norm, no); normalize_v3(norm); @@ -198,15 +198,15 @@ static void init_bake_rast(MBakeRast *bake_rast, const ImBuf *ibuf, const MResol memset(bake_rast, 0, sizeof(MBakeRast)); bake_rast->texels = ibuf->userdata; - bake_rast->w= ibuf->x; - bake_rast->h= ibuf->y; - bake_rast->data= data; - bake_rast->flush_pixel= flush_pixel; + bake_rast->w = ibuf->x; + bake_rast->h = ibuf->y; + bake_rast->data = data; + bake_rast->flush_pixel = flush_pixel; } static void flush_pixel(const MResolvePixelData *data, const int x, const int y) { - float st[2]= {(x+0.5f)/data->w, (y+0.5f)/data->h}; + float st[2] = {(x + 0.5f) / data->w, (y + 0.5f) / data->h}; float *st0, *st1, *st2; float *tang0, *tang1, *tang2; float no0[3], no1[3], no2[3]; @@ -214,37 +214,37 @@ static void flush_pixel(const MResolvePixelData *data, const int x, const int y) float u, v, w, sign; int r; - const int i0= data->i0; - const int i1= data->i1; - const int i2= data->i2; + const int i0 = data->i0; + const int i1 = data->i1; + const int i2 = data->i2; - st0= data->mtface[data->face_index].uv[i0]; - st1= data->mtface[data->face_index].uv[i1]; - st2= data->mtface[data->face_index].uv[i2]; + st0 = data->mtface[data->face_index].uv[i0]; + st1 = data->mtface[data->face_index].uv[i1]; + st2 = data->mtface[data->face_index].uv[i2]; - tang0= data->pvtangent + data->face_index*16 + i0*4; - tang1= data->pvtangent + data->face_index*16 + i1*4; - tang2= data->pvtangent + data->face_index*16 + i2*4; + tang0 = data->pvtangent + data->face_index * 16 + i0 * 4; + tang1 = data->pvtangent + data->face_index * 16 + i1 * 4; + tang2 = data->pvtangent + data->face_index * 16 + i2 * 4; - multiresbake_get_normal(data, no0, data->face_index, i0); /* can optimize these 3 into one call */ + multiresbake_get_normal(data, no0, data->face_index, i0); /* can optimize these 3 into one call */ multiresbake_get_normal(data, no1, data->face_index, i1); multiresbake_get_normal(data, no2, data->face_index, i2); resolve_tri_uv(fUV, st, st0, st1, st2); - u= fUV[0]; - v= fUV[1]; - w= 1-u-v; + u = fUV[0]; + v = fUV[1]; + w = 1 - u - v; /* the sign is the same at all face vertices for any non degenerate face. * Just in case we clamp the interpolated value though. */ - sign= (tang0[3]*u + tang1[3]*v + tang2[3]*w)<0 ? (-1.0f) : 1.0f; + sign = (tang0[3] * u + tang1[3] * v + tang2[3] * w) < 0 ? (-1.0f) : 1.0f; /* this sequence of math is designed specifically as is with great care * to be compatible with our shader. Please don't change without good reason. */ - for (r= 0; r<3; r++) { - from_tang[0][r]= tang0[r]*u + tang1[r]*v + tang2[r]*w; - from_tang[2][r]= no0[r]*u + no1[r]*v + no2[r]*w; + for (r = 0; r < 3; r++) { + from_tang[0][r] = tang0[r] * u + tang1[r] * v + tang2[r] * w; + from_tang[2][r] = no0[r] * u + no1[r] * v + no2[r] * w; } cross_v3_v3v3(from_tang[1], from_tang[2], from_tang[0]); /* B = sign * cross(N, T) */ @@ -258,13 +258,13 @@ static void flush_pixel(const MResolvePixelData *data, const int x, const int y) static void set_rast_triangle(const MBakeRast *bake_rast, const int x, const int y) { - const int w= bake_rast->w; - const int h= bake_rast->h; + const int w = bake_rast->w; + const int h = bake_rast->h; - if (x>=0 && x=0 && ytexels[y*w+x])==0) { + if (x >= 0 && x < w && y >= 0 && y < h) { + if ((bake_rast->texels[y * w + x]) == 0) { flush_pixel(bake_rast->data, x, y); - bake_rast->texels[y*w+x]= FILTER_MASK_USED; + bake_rast->texels[y * w + x] = FILTER_MASK_USED; } } } @@ -274,35 +274,35 @@ static void rasterize_half(const MBakeRast *bake_rast, const float s0_l, const float t0_l, const float s1_l, const float t1_l, const int y0_in, const int y1_in, const int is_mid_right) { - const int s_stable= fabsf(t1_s-t0_s)>FLT_EPSILON ? 1 : 0; - const int l_stable= fabsf(t1_l-t0_l)>FLT_EPSILON ? 1 : 0; - const int w= bake_rast->w; - const int h= bake_rast->h; + const int s_stable = fabsf(t1_s - t0_s) > FLT_EPSILON ? 1 : 0; + const int l_stable = fabsf(t1_l - t0_l) > FLT_EPSILON ? 1 : 0; + const int w = bake_rast->w; + const int h = bake_rast->h; int y, y0, y1; - if (y1_in<=0 || y0_in>=h) + if (y1_in <= 0 || y0_in >= h) return; - y0= y0_in<0 ? 0 : y0_in; - y1= y1_in>=h ? h : y1_in; + y0 = y0_in < 0 ? 0 : y0_in; + y1 = y1_in >= h ? h : y1_in; - for (y= y0; y0 && iXl=w?w:iXr; + if (iXr > 0 && iXl < w) { + iXl = iXl < 0 ? 0 : iXl; + iXr = iXr >= w ? w : iXr; - for (x= iXl; xw; - const int h= bake_rast->h; - float slo= st0_in[0]*w - 0.5f; - float tlo= st0_in[1]*h - 0.5f; - float smi= st1_in[0]*w - 0.5f; - float tmi= st1_in[1]*h - 0.5f; - float shi= st2_in[0]*w - 0.5f; - float thi= st2_in[1]*h - 0.5f; - int is_mid_right= 0, ylo, yhi, yhi_beg; + const int w = bake_rast->w; + const int h = bake_rast->h; + float slo = st0_in[0] * w - 0.5f; + float tlo = st0_in[1] * h - 0.5f; + float smi = st1_in[0] * w - 0.5f; + float tmi = st1_in[1] * h - 0.5f; + float shi = st2_in[0] * w - 0.5f; + float thi = st2_in[1] * h - 0.5f; + int is_mid_right = 0, ylo, yhi, yhi_beg; /* skip degenerates */ - if ((slo==smi && tlo==tmi) || (slo==shi && tlo==thi) || (smi==shi && tmi==thi)) + if ((slo == smi && tlo == tmi) || (slo == shi && tlo == thi) || (smi == shi && tmi == thi)) return; /* sort by T */ - if (tlo>tmi && tlo>thi) { + if (tlo > tmi && tlo > thi) { SWAP(float, shi, slo); SWAP(float, thi, tlo); } - else if (tmi>thi) { + else if (tmi > thi) { SWAP(float, shi, smi); SWAP(float, thi, tmi); } - if (tlo>tmi) { + if (tlo > tmi) { SWAP(float, slo, smi); SWAP(float, tlo, tmi); } /* check if mid point is to the left or to the right of the lo-hi edge */ - is_mid_right= (-(shi-slo)*(tmi-thi) + (thi-tlo)*(smi-shi))>0 ? 1 : 0; - ylo= (int) ceilf(tlo); - yhi_beg= (int) ceilf(tmi); - yhi= (int) ceilf(thi); + is_mid_right = (-(shi - slo) * (tmi - thi) + (thi - tlo) * (smi - shi)) > 0 ? 1 : 0; + ylo = (int) ceilf(tlo); + yhi_beg = (int) ceilf(tmi); + yhi = (int) ceilf(thi); /*if (fTmi>ceilf(fTlo))*/ rasterize_half(bake_rast, slo, tlo, smi, tmi, slo, tlo, shi, thi, ylo, yhi_beg, is_mid_right); @@ -360,69 +360,69 @@ static int multiresbake_test_break(MultiresBakeRender *bkr) return G.afbreek; } -static void do_multires_bake(MultiresBakeRender *bkr, Image* ima, MPassKnownData passKnownData, +static void do_multires_bake(MultiresBakeRender *bkr, Image *ima, MPassKnownData passKnownData, MInitBakeData initBakeData, MApplyBakeData applyBakeData, MFreeBakeData freeBakeData) { - DerivedMesh *dm= bkr->lores_dm; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - const int lvl= bkr->lvl; - const int tot_face= dm->getNumTessFaces(dm); - MVert *mvert= dm->getVertArray(dm); - MFace *mface= dm->getTessFaceArray(dm); - MTFace *mtface= dm->getTessFaceDataArray(dm, CD_MTFACE); - float *pvtangent= NULL; + DerivedMesh *dm = bkr->lores_dm; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); + const int lvl = bkr->lvl; + const int tot_face = dm->getNumTessFaces(dm); + MVert *mvert = dm->getVertArray(dm); + MFace *mface = dm->getTessFaceArray(dm); + MTFace *mtface = dm->getTessFaceDataArray(dm, CD_MTFACE); + float *pvtangent = NULL; if (CustomData_get_layer_index(&dm->faceData, CD_TANGENT) == -1) DM_add_tangent_layer(dm); - pvtangent= DM_get_tessface_data_layer(dm, CD_TANGENT); + pvtangent = DM_get_tessface_data_layer(dm, CD_TANGENT); if (tot_face > 0) { /* sanity check */ - int f= 0; + int f = 0; MBakeRast bake_rast; - MResolvePixelData data={NULL}; + MResolvePixelData data = {NULL}; - data.mface= mface; - data.mvert= mvert; - data.mtface= mtface; - data.pvtangent= pvtangent; - data.precomputed_normals= dm->getTessFaceDataArray(dm, CD_NORMAL); /* don't strictly need this */ - data.w= ibuf->x; - data.h= ibuf->y; - data.lores_dm= dm; - data.hires_dm= bkr->hires_dm; - data.lvl= lvl; - data.pass_data= passKnownData; + data.mface = mface; + data.mvert = mvert; + data.mtface = mtface; + data.pvtangent = pvtangent; + data.precomputed_normals = dm->getTessFaceDataArray(dm, CD_NORMAL); /* don't strictly need this */ + data.w = ibuf->x; + data.h = ibuf->y; + data.lores_dm = dm; + data.hires_dm = bkr->hires_dm; + data.lvl = lvl; + data.pass_data = passKnownData; if (initBakeData) - data.bake_data= initBakeData(bkr, ima); + data.bake_data = initBakeData(bkr, ima); init_bake_rast(&bake_rast, ibuf, &data, flush_pixel); - for (f= 0; ftpage!=ima) + if (mtfate->tpage != ima) continue; - data.face_index= f; + data.face_index = f; /* might support other forms of diagonal splits later on such as * split by shortest diagonal.*/ - verts[0][0]=0; - verts[1][0]=1; - verts[2][0]=2; + verts[0][0] = 0; + verts[1][0] = 1; + verts[2][0] = 2; - verts[0][1]=0; - verts[1][1]=2; - verts[2][1]=3; + verts[0][1] = 0; + verts[1][1] = 2; + verts[2][1] = 3; - nr_tris= mface[f].v4!=0 ? 2 : 1; - for (t= 0; tbaked_faces++; if (bkr->do_update) - *bkr->do_update= 1; + *bkr->do_update = 1; if (bkr->progress) - *bkr->progress= ((float)bkr->baked_objects + (float)bkr->baked_faces / tot_face) / bkr->tot_obj; + *bkr->progress = ((float)bkr->baked_objects + (float)bkr->baked_faces / tot_face) / bkr->tot_obj; } if (applyBakeData) @@ -452,13 +452,13 @@ static void interp_bilinear_quad_data(float data[4][3], float u, float v, float float vec[3]; copy_v3_v3(res, data[0]); - mul_v3_fl(res, (1-u)*(1-v)); + mul_v3_fl(res, (1 - u) * (1 - v)); copy_v3_v3(vec, data[1]); - mul_v3_fl(vec, u*(1-v)); add_v3_v3(res, vec); + mul_v3_fl(vec, u * (1 - v)); add_v3_v3(res, vec); copy_v3_v3(vec, data[2]); - mul_v3_fl(vec, u*v); add_v3_v3(res, vec); + mul_v3_fl(vec, u * v); add_v3_v3(res, vec); copy_v3_v3(vec, data[3]); - mul_v3_fl(vec, (1-u)*v); add_v3_v3(res, vec); + mul_v3_fl(vec, (1 - u) * v); add_v3_v3(res, vec); } static void interp_barycentric_tri_data(float data[3][3], float u, float v, float res[3]) @@ -470,7 +470,7 @@ static void interp_barycentric_tri_data(float data[3][3], float u, float v, floa copy_v3_v3(vec, data[1]); mul_v3_fl(vec, v); add_v3_v3(res, vec); copy_v3_v3(vec, data[2]); - mul_v3_fl(vec, 1.0f-u-v); add_v3_v3(res, vec); + mul_v3_fl(vec, 1.0f - u - v); add_v3_v3(res, vec); } /* mode = 0: interpolate normals, @@ -481,14 +481,14 @@ static void interp_bilinear_grid(DMGridData *grid, int grid_size, float crn_x, f float u, v; float data[4][3]; - x0= (int) crn_x; - x1= x0>=(grid_size-1) ? (grid_size-1) : (x0+1); + x0 = (int) crn_x; + x1 = x0 >= (grid_size - 1) ? (grid_size - 1) : (x0 + 1); - y0= (int) crn_y; - y1= y0>=(grid_size-1) ? (grid_size-1) : (y0+1); + y0 = (int) crn_y; + y1 = y0 >= (grid_size - 1) ? (grid_size - 1) : (y0 + 1); - u= crn_x-x0; - v= crn_y-y0; + u = crn_x - x0; + v = crn_y - y0; if (mode == 0) { copy_v3_v3(data[0], grid[y0 * grid_size + x0].no); @@ -516,30 +516,30 @@ static void get_ccgdm_data(DerivedMesh *lodm, DerivedMesh *hidm, const int *orig lodm->getTessFace(lodm, face_index, &mface); - grid_size= hidm->getGridSize(hidm); - grid_data= hidm->getGridData(hidm); - grid_offset= hidm->getGridOffset(hidm); + grid_size = hidm->getGridSize(hidm); + grid_data = hidm->getGridData(hidm); + grid_offset = hidm->getGridOffset(hidm); - face_side= (grid_size<<1)-1; + face_side = (grid_size << 1) - 1; - if (lvl==0) { - g_index= grid_offset[face_index]; - S= mdisp_rot_face_to_crn(mface.v4 ? 4 : 3, face_side, u*(face_side-1), v*(face_side-1), &crn_x, &crn_y); + if (lvl == 0) { + g_index = grid_offset[face_index]; + S = mdisp_rot_face_to_crn(mface.v4 ? 4 : 3, face_side, u * (face_side - 1), v * (face_side - 1), &crn_x, &crn_y); } else { - int side= (1 << (lvl-1)) + 1; - int grid_index= origindex[face_index]; - int loc_offs= face_index % (1<<(2*lvl)); - int cell_index= loc_offs % ((side-1)*(side-1)); - int cell_side= grid_size / (side-1); - int row= cell_index / (side-1); - int col= cell_index % (side-1); + int side = (1 << (lvl - 1)) + 1; + int grid_index = origindex[face_index]; + int loc_offs = face_index % (1 << (2 * lvl)); + int cell_index = loc_offs % ((side - 1) * (side - 1)); + int cell_side = grid_size / (side - 1); + int row = cell_index / (side - 1); + int col = cell_index % (side - 1); - S= face_index / (1<<(2*(lvl-1))) - grid_offset[grid_index]; - g_index= grid_offset[grid_index]; + S = face_index / (1 << (2 * (lvl - 1))) - grid_offset[grid_index]; + g_index = grid_offset[grid_index]; - crn_y= (row * cell_side) + u * cell_side; - crn_x= (col * cell_side) + v * cell_side; + crn_y = (row * cell_side) + u * cell_side; + crn_x = (col * cell_side) + v * cell_side; } CLAMP(crn_x, 0.0f, grid_size); @@ -597,95 +597,95 @@ static void interp_barycentric_mface(DerivedMesh *dm, MFace *mface, const float static void *init_heights_data(MultiresBakeRender *bkr, Image *ima) { MHeightBakeData *height_data; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - DerivedMesh *lodm= bkr->lores_dm; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); + DerivedMesh *lodm = bkr->lores_dm; - height_data= MEM_callocN(sizeof(MHeightBakeData), "MultiresBake heightData"); + height_data = MEM_callocN(sizeof(MHeightBakeData), "MultiresBake heightData"); - height_data->ima= ima; - height_data->heights= MEM_callocN(sizeof(float)*ibuf->x*ibuf->y, "MultiresBake heights"); - height_data->height_max= -FLT_MAX; - height_data->height_min= FLT_MAX; + height_data->ima = ima; + height_data->heights = MEM_callocN(sizeof(float) * ibuf->x * ibuf->y, "MultiresBake heights"); + height_data->height_max = -FLT_MAX; + height_data->height_min = FLT_MAX; if (!bkr->use_lores_mesh) { - SubsurfModifierData smd= {{NULL}}; - int ss_lvl= bkr->tot_lvl - bkr->lvl; + SubsurfModifierData smd = {{NULL}}; + int ss_lvl = bkr->tot_lvl - bkr->lvl; CLAMP(ss_lvl, 0, 6); - smd.levels= smd.renderLevels= ss_lvl; - smd.flags|= eSubsurfModifierFlag_SubsurfUv; + smd.levels = smd.renderLevels = ss_lvl; + smd.flags |= eSubsurfModifierFlag_SubsurfUv; if (bkr->simple) - smd.subdivType= ME_SIMPLE_SUBSURF; + smd.subdivType = ME_SIMPLE_SUBSURF; - height_data->ssdm= subsurf_make_derived_from_derived(bkr->lores_dm, &smd, 0, NULL, 0, 0, 0); + height_data->ssdm = subsurf_make_derived_from_derived(bkr->lores_dm, &smd, 0, NULL, 0, 0, 0); } - height_data->origindex= lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX); + height_data->origindex = lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX); - return (void*)height_data; + return (void *)height_data; } static void *init_normal_data(MultiresBakeRender *bkr, Image *UNUSED(ima)) { MNormalBakeData *normal_data; - DerivedMesh *lodm= bkr->lores_dm; + DerivedMesh *lodm = bkr->lores_dm; - normal_data= MEM_callocN(sizeof(MNormalBakeData), "MultiresBake normalData"); + normal_data = MEM_callocN(sizeof(MNormalBakeData), "MultiresBake normalData"); - normal_data->origindex= lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX); + normal_data->origindex = lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX); - return (void*)normal_data; + return (void *)normal_data; } static void free_normal_data(void *bake_data) { - MNormalBakeData *normal_data= (MNormalBakeData*)bake_data; + MNormalBakeData *normal_data = (MNormalBakeData *)bake_data; MEM_freeN(normal_data); } static void apply_heights_data(void *bake_data) { - MHeightBakeData *height_data= (MHeightBakeData*)bake_data; - ImBuf *ibuf= BKE_image_get_ibuf(height_data->ima, NULL); + MHeightBakeData *height_data = (MHeightBakeData *)bake_data; + ImBuf *ibuf = BKE_image_get_ibuf(height_data->ima, NULL); int x, y, i; - float height, *heights= height_data->heights; - float min= height_data->height_min, max= height_data->height_max; + float height, *heights = height_data->heights; + float min = height_data->height_min, max = height_data->height_max; - for (x= 0; xx; x++) { - for (y =0; yy; y++) { - i= ibuf->x*y + x; + for (x = 0; x < ibuf->x; x++) { + for (y = 0; y < ibuf->y; y++) { + i = ibuf->x * y + x; - if (((char*)ibuf->userdata)[i] != FILTER_MASK_USED) + if (((char *)ibuf->userdata)[i] != FILTER_MASK_USED) continue; if (ibuf->rect_float) { - float *rrgbf= ibuf->rect_float + i*4; + float *rrgbf = ibuf->rect_float + i * 4; - if (max-min > 1e-5f) height= (heights[i]-min)/(max-min); - else height= 0; + if (max - min > 1e-5f) height = (heights[i] - min) / (max - min); + else height = 0; - rrgbf[0]=rrgbf[1]=rrgbf[2]= height; + rrgbf[0] = rrgbf[1] = rrgbf[2] = height; } else { - char *rrgb= (char*)ibuf->rect + i*4; + char *rrgb = (char *)ibuf->rect + i * 4; - if (max-min > 1e-5f) height= (heights[i]-min)/(max-min); - else height= 0; + if (max - min > 1e-5f) height = (heights[i] - min) / (max - min); + else height = 0; - rrgb[0]=rrgb[1]=rrgb[2]= FTOCHAR(height); + rrgb[0] = rrgb[1] = rrgb[2] = FTOCHAR(height); } } } - ibuf->userflags= IB_RECT_INVALID; + ibuf->userflags = IB_RECT_INVALID; } static void free_heights_data(void *bake_data) { - MHeightBakeData *height_data= (MHeightBakeData*)bake_data; + MHeightBakeData *height_data = (MHeightBakeData *)bake_data; if (height_data->ssdm) height_data->ssdm->release(height_data->ssdm); @@ -704,23 +704,23 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, const int face_index, const int lvl, const float st[2], float UNUSED(tangmat[3][3]), const int x, const int y) { - MTFace *mtface= CustomData_get_layer(&lores_dm->faceData, CD_MTFACE); + MTFace *mtface = CustomData_get_layer(&lores_dm->faceData, CD_MTFACE); MFace mface; - Image *ima= mtface[face_index].tpage; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - MHeightBakeData *height_data= (MHeightBakeData*)bake_data; + Image *ima = mtface[face_index].tpage; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); + MHeightBakeData *height_data = (MHeightBakeData *)bake_data; float uv[2], *st0, *st1, *st2, *st3; - int pixel= ibuf->x*y + x; + int pixel = ibuf->x * y + x; float vec[3], p0[3], p1[3], n[3], len; lores_dm->getTessFace(lores_dm, face_index, &mface); - st0= mtface[face_index].uv[0]; - st1= mtface[face_index].uv[1]; - st2= mtface[face_index].uv[2]; + st0 = mtface[face_index].uv[0]; + st1 = mtface[face_index].uv[1]; + st2 = mtface[face_index].uv[2]; if (mface.v4) { - st3= mtface[face_index].uv[3]; + st3 = mtface[face_index].uv[3]; resolve_quad_uv(uv, st, st0, st1, st2, st3); } else @@ -748,21 +748,21 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, } sub_v3_v3v3(vec, p1, p0); - len= dot_v3v3(n, vec); + len = dot_v3v3(n, vec); - height_data->heights[pixel]= len; - if (lenheight_min) height_data->height_min= len; - if (len>height_data->height_max) height_data->height_max= len; + height_data->heights[pixel] = len; + if (len < height_data->height_min) height_data->height_min = len; + if (len > height_data->height_max) height_data->height_max = len; if (ibuf->rect_float) { - float *rrgbf= ibuf->rect_float + pixel*4; - rrgbf[3]= 1.0f; + float *rrgbf = ibuf->rect_float + pixel * 4; + rrgbf[3] = 1.0f; - ibuf->userflags= IB_RECT_INVALID; + ibuf->userflags = IB_RECT_INVALID; } else { - char *rrgb= (char*)ibuf->rect + pixel*4; - rrgb[3]= 255; + char *rrgb = (char *)ibuf->rect + pixel * 4; + rrgb[3] = 255; } } @@ -775,23 +775,23 @@ static void apply_tangmat_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, const int face_index, const int lvl, const float st[2], float tangmat[3][3], const int x, const int y) { - MTFace *mtface= CustomData_get_layer(&lores_dm->faceData, CD_MTFACE); + MTFace *mtface = CustomData_get_layer(&lores_dm->faceData, CD_MTFACE); MFace mface; - Image *ima= mtface[face_index].tpage; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); - MNormalBakeData *normal_data= (MNormalBakeData*)bake_data; + Image *ima = mtface[face_index].tpage; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); + MNormalBakeData *normal_data = (MNormalBakeData *)bake_data; float uv[2], *st0, *st1, *st2, *st3; - int pixel= ibuf->x*y + x; - float n[3], vec[3], tmp[3]= {0.5, 0.5, 0.5}; + int pixel = ibuf->x * y + x; + float n[3], vec[3], tmp[3] = {0.5, 0.5, 0.5}; lores_dm->getTessFace(lores_dm, face_index, &mface); - st0= mtface[face_index].uv[0]; - st1= mtface[face_index].uv[1]; - st2= mtface[face_index].uv[2]; + st0 = mtface[face_index].uv[0]; + st1 = mtface[face_index].uv[1]; + st2 = mtface[face_index].uv[2]; if (mface.v4) { - st3= mtface[face_index].uv[3]; + st3 = mtface[face_index].uv[3]; resolve_quad_uv(uv, st, st0, st1, st2, st3); } else @@ -808,59 +808,59 @@ static void apply_tangmat_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, add_v3_v3(vec, tmp); if (ibuf->rect_float) { - float *rrgbf= ibuf->rect_float + pixel*4; - rrgbf[0]= vec[0]; - rrgbf[1]= vec[1]; - rrgbf[2]= vec[2]; - rrgbf[3]= 1.0f; + float *rrgbf = ibuf->rect_float + pixel * 4; + rrgbf[0] = vec[0]; + rrgbf[1] = vec[1]; + rrgbf[2] = vec[2]; + rrgbf[3] = 1.0f; - ibuf->userflags= IB_RECT_INVALID; + ibuf->userflags = IB_RECT_INVALID; } else { - unsigned char *rrgb= (unsigned char *)ibuf->rect + pixel*4; + unsigned char *rrgb = (unsigned char *)ibuf->rect + pixel * 4; rgb_float_to_uchar(rrgb, vec); - rrgb[3]= 255; + rrgb[3] = 255; } } static void count_images(MultiresBakeRender *bkr) { int a, totface; - DerivedMesh *dm= bkr->lores_dm; - MTFace *mtface= CustomData_get_layer(&dm->faceData, CD_MTFACE); + DerivedMesh *dm = bkr->lores_dm; + MTFace *mtface = CustomData_get_layer(&dm->faceData, CD_MTFACE); - bkr->image.first= bkr->image.last= NULL; - bkr->tot_image= 0; + bkr->image.first = bkr->image.last = NULL; + bkr->tot_image = 0; - totface= dm->getNumTessFaces(dm); + totface = dm->getNumTessFaces(dm); - for (a= 0; aid.flag&= ~LIB_DOIT; + for (a = 0; a < totface; a++) + mtface[a].tpage->id.flag &= ~LIB_DOIT; - for (a= 0; aid.flag&LIB_DOIT)==0) { - LinkData *data= BLI_genericNodeN(ima); + for (a = 0; a < totface; a++) { + Image *ima = mtface[a].tpage; + if ((ima->id.flag & LIB_DOIT) == 0) { + LinkData *data = BLI_genericNodeN(ima); BLI_addtail(&bkr->image, data); bkr->tot_image++; - ima->id.flag|= LIB_DOIT; + ima->id.flag |= LIB_DOIT; } } - for (a= 0; aid.flag&= ~LIB_DOIT; + for (a = 0; a < totface; a++) + mtface[a].tpage->id.flag &= ~LIB_DOIT; } static void bake_images(MultiresBakeRender *bkr) { LinkData *link; - for (link= bkr->image.first; link; link= link->next) { - Image *ima= (Image*)link->data; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); + for (link = bkr->image.first; link; link = link->next) { + Image *ima = (Image *)link->data; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); - if (ibuf->x>0 && ibuf->y>0) { - ibuf->userdata= MEM_callocN(ibuf->y*ibuf->x, "MultiresBake imbuf mask"); + if (ibuf->x > 0 && ibuf->y > 0) { + ibuf->userdata = MEM_callocN(ibuf->y * ibuf->x, "MultiresBake imbuf mask"); switch (bkr->mode) { case RE_BAKE_NORMALS: @@ -873,7 +873,7 @@ static void bake_images(MultiresBakeRender *bkr) } } - ima->id.flag|= LIB_DOIT; + ima->id.flag |= LIB_DOIT; } } @@ -881,28 +881,28 @@ static void finish_images(MultiresBakeRender *bkr) { LinkData *link; - for (link= bkr->image.first; link; link= link->next) { - Image *ima= (Image*)link->data; - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); + for (link = bkr->image.first; link; link = link->next) { + Image *ima = (Image *)link->data; + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); - if (ibuf->x<=0 || ibuf->y<=0) + if (ibuf->x <= 0 || ibuf->y <= 0) continue; RE_bake_ibuf_filter(ibuf, (char *)ibuf->userdata, bkr->bake_filter); - ibuf->userflags|= IB_BITMAPDIRTY; + ibuf->userflags |= IB_BITMAPDIRTY; if (ibuf->rect_float) - ibuf->userflags|= IB_RECT_INVALID; + ibuf->userflags |= IB_RECT_INVALID; if (ibuf->mipmap[0]) { - ibuf->userflags|= IB_MIPMAP_INVALID; + ibuf->userflags |= IB_MIPMAP_INVALID; imb_freemipmapImBuf(ibuf); } if (ibuf->userdata) { MEM_freeN(ibuf->userdata); - ibuf->userdata= NULL; + ibuf->userdata = NULL; } } } @@ -916,38 +916,38 @@ static void multiresbake_start(MultiresBakeRender *bkr) static int multiresbake_check(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; Mesh *me; MultiresModifierData *mmd; - int ok= 1, a; + int ok = 1, a; - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { + ob = base->object; if (ob->type != OB_MESH) { BKE_report(op->reports, RPT_ERROR, "Basking of multires data only works with active object which is a mesh"); - ok= 0; + ok = 0; break; } - me= (Mesh*)ob->data; - mmd= get_multires_modifier(scene, ob, 0); + me = (Mesh *)ob->data; + mmd = get_multires_modifier(scene, ob, 0); /* Multi-resolution should be and be last in the stack */ if (ok && mmd) { ModifierData *md; - ok= mmd->totlvl>0; + ok = mmd->totlvl > 0; - for (md = (ModifierData*)mmd->modifier.next; md && ok; md = md->next) { + for (md = (ModifierData *)mmd->modifier.next; md && ok; md = md->next) { if (modifier_isEnabled(scene, md, eModifierMode_Realtime)) { - ok= 0; + ok = 0; } } } - else ok= 0; + else ok = 0; if (!ok) { BKE_report(op->reports, RPT_ERROR, "Multires data baking requires multi-resolution object"); @@ -958,7 +958,7 @@ static int multiresbake_check(bContext *C, wmOperator *op) if (!me->mtpoly) { BKE_report(op->reports, RPT_ERROR, "Mesh should be unwrapped before multires data baking"); - ok= 0; + ok = 0; } else { a = me->totpoly; @@ -968,22 +968,22 @@ static int multiresbake_check(bContext *C, wmOperator *op) if (!ima) { BKE_report(op->reports, RPT_ERROR, "You should have active texture to use multires baker"); - ok= 0; + ok = 0; } else { - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); if (!ibuf) { BKE_report(op->reports, RPT_ERROR, "Baking should happend to image with image buffer"); - ok= 0; + ok = 0; } else { - if (ibuf->rect==NULL && ibuf->rect_float==NULL) - ok= 0; + if (ibuf->rect == NULL && ibuf->rect_float == NULL) + ok = 0; - if (ibuf->rect_float && !(ibuf->channels==0 || ibuf->channels==4)) - ok= 0; + if (ibuf->rect_float && !(ibuf->channels == 0 || ibuf->channels == 4)) + ok = 0; if (!ok) BKE_report(op->reports, RPT_ERROR, "Baking to unsupported image type"); @@ -1003,23 +1003,23 @@ static int multiresbake_check(bContext *C, wmOperator *op) static DerivedMesh *multiresbake_create_loresdm(Scene *scene, Object *ob, int *lvl) { DerivedMesh *dm; - MultiresModifierData *mmd= get_multires_modifier(scene, ob, 0); - Mesh *me= (Mesh*)ob->data; + MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); + Mesh *me = (Mesh *)ob->data; - *lvl= mmd->lvl; + *lvl = mmd->lvl; - if (*lvl==0) { - DerivedMesh *tmp_dm= CDDM_from_mesh(me, ob); - dm= CDDM_copy(tmp_dm); + if (*lvl == 0) { + DerivedMesh *tmp_dm = CDDM_from_mesh(me, ob); + dm = CDDM_copy(tmp_dm); tmp_dm->release(tmp_dm); } else { - MultiresModifierData tmp_mmd= *mmd; - DerivedMesh *cddm= CDDM_from_mesh(me, ob); + MultiresModifierData tmp_mmd = *mmd; + DerivedMesh *cddm = CDDM_from_mesh(me, ob); - tmp_mmd.lvl= *lvl; - tmp_mmd.sculptlvl= *lvl; - dm= multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0); + tmp_mmd.lvl = *lvl; + tmp_mmd.sculptlvl = *lvl; + dm = multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0); cddm->release(cddm); } @@ -1028,18 +1028,18 @@ static DerivedMesh *multiresbake_create_loresdm(Scene *scene, Object *ob, int *l static DerivedMesh *multiresbake_create_hiresdm(Scene *scene, Object *ob, int *lvl, int *simple) { - Mesh *me= (Mesh*)ob->data; - MultiresModifierData *mmd= get_multires_modifier(scene, ob, 0); - MultiresModifierData tmp_mmd= *mmd; - DerivedMesh *cddm= CDDM_from_mesh(me, ob); + Mesh *me = (Mesh *)ob->data; + MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); + MultiresModifierData tmp_mmd = *mmd; + DerivedMesh *cddm = CDDM_from_mesh(me, ob); DerivedMesh *dm; - *lvl= mmd->totlvl; - *simple= mmd->simple; + *lvl = mmd->totlvl; + *simple = mmd->simple; - tmp_mmd.lvl= mmd->totlvl; - tmp_mmd.sculptlvl= mmd->totlvl; - dm= multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0); + tmp_mmd.lvl = mmd->totlvl; + tmp_mmd.sculptlvl = mmd->totlvl; + dm = multires_dm_create_from_derived(&tmp_mmd, 1, cddm, ob, 0); cddm->release(cddm); return dm; @@ -1048,67 +1048,67 @@ static DerivedMesh *multiresbake_create_hiresdm(Scene *scene, Object *ob, int *l static void clear_images(MTFace *mtface, int totface) { int a; - const float vec_alpha[4]= {0.0f, 0.0f, 0.0f, 0.0f}; - const float vec_solid[4]= {0.0f, 0.0f, 0.0f, 1.0f}; + const float vec_alpha[4] = {0.0f, 0.0f, 0.0f, 0.0f}; + const float vec_solid[4] = {0.0f, 0.0f, 0.0f, 1.0f}; - for (a= 0; aid.flag&= ~LIB_DOIT; + for (a = 0; a < totface; a++) + mtface[a].tpage->id.flag &= ~LIB_DOIT; - for (a= 0; aid.flag&LIB_DOIT)==0) { - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); + if ((ima->id.flag & LIB_DOIT) == 0) { + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); IMB_rectfill(ibuf, (ibuf->planes == R_IMF_PLANES_RGBA) ? vec_alpha : vec_solid); - ima->id.flag|= LIB_DOIT; + ima->id.flag |= LIB_DOIT; } } - for (a= 0; aid.flag&= ~LIB_DOIT; + for (a = 0; a < totface; a++) + mtface[a].tpage->id.flag &= ~LIB_DOIT; } static int multiresbake_image_exec_locked(bContext *C, wmOperator *op) { Object *ob; - Scene *scene= CTX_data_scene(C); - int objects_baked= 0; + Scene *scene = CTX_data_scene(C); + int objects_baked = 0; if (!multiresbake_check(C, op)) return OPERATOR_CANCELLED; - if (scene->r.bake_flag&R_BAKE_CLEAR) { /* clear images */ - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + if (scene->r.bake_flag & R_BAKE_CLEAR) { /* clear images */ + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { Mesh *me; - ob= base->object; - me= (Mesh*)ob->data; + ob = base->object; + me = (Mesh *)ob->data; clear_images(me->mtface, me->totface); } CTX_DATA_END; } - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { - MultiresBakeRender bkr= {0}; + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { + MultiresBakeRender bkr = {0}; - ob= base->object; + ob = base->object; multires_force_update(ob); /* copy data stored in job descriptor */ - bkr.bake_filter= scene->r.bake_filter; - bkr.mode= scene->r.bake_mode; - bkr.use_lores_mesh= scene->r.bake_flag&R_BAKE_LORES_MESH; + bkr.bake_filter = scene->r.bake_filter; + bkr.mode = scene->r.bake_mode; + bkr.use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; /* create low-resolution DM (to bake to) and hi-resolution DM (to bake from) */ - bkr.lores_dm= multiresbake_create_loresdm(scene, ob, &bkr.lvl); + bkr.lores_dm = multiresbake_create_loresdm(scene, ob, &bkr.lvl); if (!bkr.lores_dm) continue; - bkr.hires_dm= multiresbake_create_hiresdm(scene, ob, &bkr.tot_lvl, &bkr.simple); + bkr.hires_dm = multiresbake_create_hiresdm(scene, ob, &bkr.tot_lvl, &bkr.simple); multiresbake_start(&bkr); @@ -1130,20 +1130,20 @@ static int multiresbake_image_exec_locked(bContext *C, wmOperator *op) /* Multiresbake adopted for job-system executing */ static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; /* backup scene settings, so their changing in UI would take no effect on baker */ - bkj->bake_filter= scene->r.bake_filter; - bkj->mode= scene->r.bake_mode; - bkj->use_lores_mesh= scene->r.bake_flag&R_BAKE_LORES_MESH; - bkj->bake_clear= scene->r.bake_flag&R_BAKE_CLEAR; + bkj->bake_filter = scene->r.bake_filter; + bkj->mode = scene->r.bake_mode; + bkj->use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; + bkj->bake_clear = scene->r.bake_flag & R_BAKE_CLEAR; - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { MultiresBakerJobData *data; DerivedMesh *lores_dm; int lvl; - ob= base->object; + ob = base->object; multires_force_update(ob); @@ -1151,7 +1151,7 @@ static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) if (!lores_dm) continue; - data= MEM_callocN(sizeof(MultiresBakerJobData), "multiresBaker derivedMesh_data"); + data = MEM_callocN(sizeof(MultiresBakerJobData), "multiresBaker derivedMesh_data"); data->lores_dm = lores_dm; data->lvl = lvl; data->hires_dm = multiresbake_create_hiresdm(scene, ob, &data->tot_lvl, &data->simple); @@ -1164,42 +1164,42 @@ static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) static void multiresbake_startjob(void *bkv, short *stop, short *do_update, float *progress) { MultiresBakerJobData *data; - MultiresBakeJob *bkj= bkv; - int baked_objects= 0, tot_obj; + MultiresBakeJob *bkj = bkv; + int baked_objects = 0, tot_obj; - tot_obj= BLI_countlist(&bkj->data); + tot_obj = BLI_countlist(&bkj->data); if (bkj->bake_clear) { /* clear images */ - for (data= bkj->data.first; data; data= data->next) { - DerivedMesh *dm= data->lores_dm; - MTFace *mtface= CustomData_get_layer(&dm->faceData, CD_MTFACE); + for (data = bkj->data.first; data; data = data->next) { + DerivedMesh *dm = data->lores_dm; + MTFace *mtface = CustomData_get_layer(&dm->faceData, CD_MTFACE); clear_images(mtface, dm->getNumTessFaces(dm)); } } - for (data= bkj->data.first; data; data= data->next) { - MultiresBakeRender bkr= {0}; + for (data = bkj->data.first; data; data = data->next) { + MultiresBakeRender bkr = {0}; /* copy data stored in job descriptor */ - bkr.bake_filter= bkj->bake_filter; - bkr.mode= bkj->mode; - bkr.use_lores_mesh= bkj->use_lores_mesh; + bkr.bake_filter = bkj->bake_filter; + bkr.mode = bkj->mode; + bkr.use_lores_mesh = bkj->use_lores_mesh; /* create low-resolution DM (to bake to) and hi-resolution DM (to bake from) */ - bkr.lores_dm= data->lores_dm; - bkr.hires_dm= data->hires_dm; - bkr.tot_lvl= data->tot_lvl; - bkr.lvl= data->lvl; - bkr.simple= data->simple; + bkr.lores_dm = data->lores_dm; + bkr.hires_dm = data->hires_dm; + bkr.tot_lvl = data->tot_lvl; + bkr.lvl = data->lvl; + bkr.simple = data->simple; /* needed for proper progress bar */ - bkr.tot_obj= tot_obj; - bkr.baked_objects= baked_objects; + bkr.tot_obj = tot_obj; + bkr.baked_objects = baked_objects; - bkr.stop= stop; - bkr.do_update= do_update; - bkr.progress= progress; + bkr.stop = stop; + bkr.do_update = do_update; + bkr.progress = progress; multiresbake_start(&bkr); @@ -1211,16 +1211,16 @@ static void multiresbake_startjob(void *bkv, short *stop, short *do_update, floa static void multiresbake_freejob(void *bkv) { - MultiresBakeJob *bkj= bkv; + MultiresBakeJob *bkj = bkv; MultiresBakerJobData *data, *next; - data= bkj->data.first; + data = bkj->data.first; while (data) { - next= data->next; + next = data->next; data->lores_dm->release(data->lores_dm); data->hires_dm->release(data->hires_dm); MEM_freeN(data); - data= next; + data = next; } MEM_freeN(bkj); @@ -1228,14 +1228,14 @@ static void multiresbake_freejob(void *bkv) static int multiresbake_image_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); MultiresBakeJob *bkr; wmJob *steve; if (!multiresbake_check(C, op)) return OPERATOR_CANCELLED; - bkr= MEM_callocN(sizeof(MultiresBakeJob), "MultiresBakeJob data"); + bkr = MEM_callocN(sizeof(MultiresBakeJob), "MultiresBakeJob data"); init_multiresbake_job(C, bkr); if (!bkr->data.first) { @@ -1244,12 +1244,12 @@ static int multiresbake_image_exec(bContext *C, wmOperator *op) } /* setup job */ - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Multires Bake", WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY|WM_JOB_PROGRESS); + steve = WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Multires Bake", WM_JOB_EXCL_RENDER | WM_JOB_PRIORITY | WM_JOB_PROGRESS); WM_jobs_customdata(steve, bkr, multiresbake_freejob); WM_jobs_timer(steve, 0.2, NC_IMAGE, 0); /* TODO - only draw bake image, can we enforce this */ WM_jobs_callbacks(steve, multiresbake_startjob, NULL, NULL, NULL); - G.afbreek= 0; + G.afbreek = 0; WM_jobs_start(CTX_wm_manager(C), steve); WM_cursor_wait(0); @@ -1294,12 +1294,12 @@ typedef struct BakeRender { /* use by exec and invoke */ static int test_bake_internal(bContext *C, ReportList *reports) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); - if ((scene->r.bake_flag & R_BAKE_TO_ACTIVE) && CTX_data_active_object(C)==NULL) { + if ((scene->r.bake_flag & R_BAKE_TO_ACTIVE) && CTX_data_active_object(C) == NULL) { BKE_report(reports, RPT_ERROR, "No active object"); } - else if (scene->r.bake_mode==RE_BAKE_AO && scene->world==NULL) { + else if (scene->r.bake_mode == RE_BAKE_AO && scene->world == NULL) { BKE_report(reports, RPT_ERROR, "No world set up"); } else { @@ -1311,23 +1311,23 @@ static int test_bake_internal(bContext *C, ReportList *reports) static void init_bake_internal(BakeRender *bkr, bContext *C) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); /* get editmode results */ ED_object_exit_editmode(C, 0); /* 0 = does not exit editmode */ - bkr->sa= BKE_screen_find_big_area(CTX_wm_screen(C), SPACE_IMAGE, 10); /* can be NULL */ - bkr->main= CTX_data_main(C); - bkr->scene= scene; - bkr->actob= (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL; - bkr->re= RE_NewRender("_Bake View_"); + bkr->sa = BKE_screen_find_big_area(CTX_wm_screen(C), SPACE_IMAGE, 10); /* can be NULL */ + bkr->main = CTX_data_main(C); + bkr->scene = scene; + bkr->actob = (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL; + bkr->re = RE_NewRender("_Bake View_"); - if (scene->r.bake_mode==RE_BAKE_AO) { + if (scene->r.bake_mode == RE_BAKE_AO) { /* If raytracing or AO is disabled, switch it on temporarily for baking. */ bkr->prev_wo_amb_occ = (scene->world->mode & WO_AMB_OCC) != 0; scene->world->mode |= WO_AMB_OCC; } - if (scene->r.bake_mode==RE_BAKE_AO || bkr->actob) { + if (scene->r.bake_mode == RE_BAKE_AO || bkr->actob) { bkr->prev_r_raytrace = (scene->r.mode & R_RAYTRACE) != 0; scene->r.mode |= R_RAYTRACE; } @@ -1338,20 +1338,20 @@ static void finish_bake_internal(BakeRender *bkr) RE_Database_Free(bkr->re); /* restore raytrace and AO */ - if (bkr->scene->r.bake_mode==RE_BAKE_AO) + if (bkr->scene->r.bake_mode == RE_BAKE_AO) if (bkr->prev_wo_amb_occ == 0) bkr->scene->world->mode &= ~WO_AMB_OCC; - if (bkr->scene->r.bake_mode==RE_BAKE_AO || bkr->actob) + if (bkr->scene->r.bake_mode == RE_BAKE_AO || bkr->actob) if (bkr->prev_r_raytrace == 0) bkr->scene->r.mode &= ~R_RAYTRACE; - if (bkr->result==BAKE_RESULT_OK) { + if (bkr->result == BAKE_RESULT_OK) { Image *ima; /* force OpenGL reload and mipmap recalc */ - for (ima= G.main->image.first; ima; ima= ima->id.next) { - if (ima->ok==IMA_OK_LOADED) { - ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); + for (ima = G.main->image.first; ima; ima = ima->id.next) { + if (ima->ok == IMA_OK_LOADED) { + ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL); if (ibuf) { if (ibuf->userflags & IB_BITMAPDIRTY) { GPU_free_image(ima); @@ -1361,7 +1361,7 @@ static void finish_bake_internal(BakeRender *bkr) /* freed when baking is done, but if its canceled we need to free here */ if (ibuf->userdata) { MEM_freeN(ibuf->userdata); - ibuf->userdata= NULL; + ibuf->userdata = NULL; } } } @@ -1371,52 +1371,52 @@ static void finish_bake_internal(BakeRender *bkr) static void *do_bake_render(void *bake_v) { - BakeRender *bkr= bake_v; + BakeRender *bkr = bake_v; - bkr->result= RE_bake_shade_all_selected(bkr->re, bkr->scene->r.bake_mode, bkr->actob, NULL, bkr->progress); - bkr->ready= 1; + bkr->result = RE_bake_shade_all_selected(bkr->re, bkr->scene->r.bake_mode, bkr->actob, NULL, bkr->progress); + bkr->ready = 1; return NULL; } static void bake_startjob(void *bkv, short *stop, short *do_update, float *progress) { - BakeRender *bkr= bkv; - Scene *scene= bkr->scene; - Main *bmain= bkr->main; + BakeRender *bkr = bkv; + Scene *scene = bkr->scene; + Main *bmain = bkr->main; - bkr->stop= stop; - bkr->do_update= do_update; - bkr->progress= progress; + bkr->stop = stop; + bkr->do_update = do_update; + bkr->progress = progress; RE_test_break_cb(bkr->re, NULL, thread_break); - G.afbreek= 0; /* blender_test_break uses this global */ + G.afbreek = 0; /* blender_test_break uses this global */ RE_Database_Baking(bkr->re, bmain, scene, scene->lay, scene->r.bake_mode, bkr->actob); /* baking itself is threaded, cannot use test_break in threads. we also update optional imagewindow */ - bkr->result= RE_bake_shade_all_selected(bkr->re, scene->r.bake_mode, bkr->actob, bkr->do_update, bkr->progress); + bkr->result = RE_bake_shade_all_selected(bkr->re, scene->r.bake_mode, bkr->actob, bkr->do_update, bkr->progress); } static void bake_update(void *bkv) { - BakeRender *bkr= bkv; + BakeRender *bkr = bkv; - if (bkr->sa && bkr->sa->spacetype==SPACE_IMAGE) { /* in case the user changed while baking */ - SpaceImage *sima= bkr->sa->spacedata.first; + if (bkr->sa && bkr->sa->spacetype == SPACE_IMAGE) { /* in case the user changed while baking */ + SpaceImage *sima = bkr->sa->spacedata.first; if (sima) - sima->image= RE_bake_shade_get_image(); + sima->image = RE_bake_shade_get_image(); } } static void bake_freejob(void *bkv) { - BakeRender *bkr= bkv; + BakeRender *bkr = bkv; finish_bake_internal(bkr); - if (bkr->result==BAKE_RESULT_NO_OBJECTS) + if (bkr->result == BAKE_RESULT_NO_OBJECTS) BKE_report(bkr->reports, RPT_ERROR, "No objects or images found to bake to"); - else if (bkr->result==BAKE_RESULT_FEEDBACK_LOOP) + else if (bkr->result == BAKE_RESULT_FEEDBACK_LOOP) BKE_report(bkr->reports, RPT_WARNING, "Feedback loop detected"); MEM_freeN(bkr); @@ -1427,8 +1427,8 @@ static void bake_freejob(void *bkv) static int objects_bake_render_modal(bContext *C, wmOperator *UNUSED(op), wmEvent *event) { /* no running blender, remove handler and pass through */ - if (0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) - return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; + if (0 == WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) + return OPERATOR_FINISHED | OPERATOR_PASS_THROUGH; /* running render */ switch (event->type) { @@ -1441,7 +1441,7 @@ static int objects_bake_render_modal(bContext *C, wmOperator *UNUSED(op), wmEven static int is_multires_bake(Scene *scene) { - if ( ELEM(scene->r.bake_mode, RE_BAKE_NORMALS, RE_BAKE_DISPLACEMENT)) + if (ELEM(scene->r.bake_mode, RE_BAKE_NORMALS, RE_BAKE_DISPLACEMENT)) return scene->r.bake_flag & R_BAKE_MULTIRES; return 0; @@ -1449,34 +1449,34 @@ static int is_multires_bake(Scene *scene) static int objects_bake_render_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(_event)) { - Scene *scene= CTX_data_scene(C); - int result= OPERATOR_CANCELLED; + Scene *scene = CTX_data_scene(C); + int result = OPERATOR_CANCELLED; if (is_multires_bake(scene)) { - result= multiresbake_image_exec(C, op); + result = multiresbake_image_exec(C, op); } else { /* only one render job at a time */ if (WM_jobs_test(CTX_wm_manager(C), scene)) return OPERATOR_CANCELLED; - if (test_bake_internal(C, op->reports)==0) { + if (test_bake_internal(C, op->reports) == 0) { return OPERATOR_CANCELLED; } else { - BakeRender *bkr= MEM_callocN(sizeof(BakeRender), "render bake"); + BakeRender *bkr = MEM_callocN(sizeof(BakeRender), "render bake"); wmJob *steve; init_bake_internal(bkr, C); - bkr->reports= op->reports; + bkr->reports = op->reports; /* setup job */ - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Texture Bake", WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY|WM_JOB_PROGRESS); + steve = WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Texture Bake", WM_JOB_EXCL_RENDER | WM_JOB_PRIORITY | WM_JOB_PROGRESS); WM_jobs_customdata(steve, bkr, bake_freejob); WM_jobs_timer(steve, 0.2, NC_IMAGE, 0); /* TODO - only draw bake image, can we enforce this */ WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update, NULL); - G.afbreek= 0; + G.afbreek = 0; G.rendering = 1; WM_jobs_start(CTX_wm_manager(C), steve); @@ -1487,10 +1487,10 @@ static int objects_bake_render_invoke(bContext *C, wmOperator *op, wmEvent *UNUS WM_event_add_modal_handler(C, op); } - result= OPERATOR_RUNNING_MODAL; + result = OPERATOR_RUNNING_MODAL; } - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_RENDER_RESULT, scene); return result; } @@ -1498,35 +1498,35 @@ static int objects_bake_render_invoke(bContext *C, wmOperator *op, wmEvent *UNUS static int bake_image_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - int result= OPERATOR_CANCELLED; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + int result = OPERATOR_CANCELLED; if (is_multires_bake(scene)) { - result= multiresbake_image_exec_locked(C, op); + result = multiresbake_image_exec_locked(C, op); } else { - if (test_bake_internal(C, op->reports)==0) { + if (test_bake_internal(C, op->reports) == 0) { return OPERATOR_CANCELLED; } else { ListBase threads; - BakeRender bkr= {NULL}; + BakeRender bkr = {NULL}; init_bake_internal(&bkr, C); - bkr.reports= op->reports; + bkr.reports = op->reports; RE_test_break_cb(bkr.re, NULL, thread_break); - G.afbreek= 0; /* blender_test_break uses this global */ + G.afbreek = 0; /* blender_test_break uses this global */ - RE_Database_Baking(bkr.re, bmain, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE)? OBACT: NULL); + RE_Database_Baking(bkr.re, bmain, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL); /* baking itself is threaded, cannot use test_break in threads */ BLI_init_threads(&threads, do_bake_render, 1); - bkr.ready= 0; + bkr.ready = 0; BLI_insert_thread(&threads, &bkr); - while (bkr.ready==0) { + while (bkr.ready == 0) { PIL_sleep_ms(50); if (bkr.ready) break; @@ -1537,18 +1537,18 @@ static int bake_image_exec(bContext *C, wmOperator *op) } BLI_end_threads(&threads); - if (bkr.result==BAKE_RESULT_NO_OBJECTS) + if (bkr.result == BAKE_RESULT_NO_OBJECTS) BKE_report(op->reports, RPT_ERROR, "No valid images found to bake to"); - else if (bkr.result==BAKE_RESULT_FEEDBACK_LOOP) + else if (bkr.result == BAKE_RESULT_FEEDBACK_LOOP) BKE_report(op->reports, RPT_ERROR, "Feedback loop detected"); finish_bake_internal(&bkr); - result= OPERATOR_FINISHED; + result = OPERATOR_FINISHED; } } - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_RENDER_RESULT, scene); return result; } diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 158d323b802..a865b1d015d 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -81,7 +81,7 @@ /* -------------- Get Active Constraint Data ---------------------- */ /* if object in posemode, active bone constraints, else object constraints */ -ListBase *get_active_constraints (Object *ob) +ListBase *get_active_constraints(Object *ob) { if (ob == NULL) return NULL; @@ -100,10 +100,10 @@ ListBase *get_active_constraints (Object *ob) } /* Find the list that a given constraint belongs to, and/or also get the posechannel this is from (if applicable) */ -ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_r) +ListBase *get_constraint_lb(Object *ob, bConstraint *con, bPoseChannel **pchan_r) { if (pchan_r) - *pchan_r= NULL; + *pchan_r = NULL; if (ELEM(NULL, ob, con)) return NULL; @@ -120,11 +120,11 @@ ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_ /* try each bone in order * NOTE: it's not possible to directly look up the active bone yet, so this will have to do */ - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { if ((BLI_findindex(&pchan->constraints, con) != -1)) { if (pchan_r) - *pchan_r= pchan; + *pchan_r = pchan; return &pchan->constraints; } @@ -136,7 +136,7 @@ ListBase *get_constraint_lb (Object *ob, bConstraint *con, bPoseChannel **pchan_ } /* single constraint */ -bConstraint *get_active_constraint (Object *ob) +bConstraint *get_active_constraint(Object *ob) { return constraints_get_active(get_active_constraints(ob)); } @@ -146,25 +146,25 @@ bConstraint *get_active_constraint (Object *ob) /* ------------- PyConstraints ------------------ */ /* this callback sets the text-file to be used for selected menu item */ -static void validate_pyconstraint_cb (void *arg1, void *arg2) +static void validate_pyconstraint_cb(void *arg1, void *arg2) { bPythonConstraint *data = arg1; - Text *text= NULL; + Text *text = NULL; int index = *((int *)arg2); int i; /* exception for no script */ if (index) { /* innovative use of a for...loop to search */ - for (text=G.main->text.first, i=1; text && index!=i; i++, text=text->id.next); + for (text = G.main->text.first, i = 1; text && index != i; i++, text = text->id.next) ; } data->text = text; } /* this returns a string for the list of usable pyconstraint script names */ -static char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) +static char *buildmenu_pyconstraints(Text *con_text, int *pyconindex) { - DynStr *pupds= BLI_dynstr_new(); + DynStr *pupds = BLI_dynstr_new(); Text *text; char *str; char buf[64]; @@ -176,16 +176,16 @@ static char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) /* init active-index first */ if (con_text == NULL) - *pyconindex= 0; + *pyconindex = 0; /* loop through markers, adding them */ - for (text=G.main->text.first, i=1; text; i++, text=text->id.next) { + for (text = G.main->text.first, i = 1; text; i++, text = text->id.next) { /* this is important to ensure that right script is shown as active */ if (text == con_text) *pyconindex = i; /* only include valid pyconstraint scripts */ if (BPY_is_pyconstraint(text)) { - BLI_dynstr_append(pupds, text->id.name+2); + BLI_dynstr_append(pupds, text->id.name + 2); sprintf(buf, "%%x%d", i); BLI_dynstr_append(pupds, buf); @@ -196,7 +196,7 @@ static char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) } /* convert to normal MEM_malloc'd string */ - str= BLI_dynstr_get_cstring(pupds); + str = BLI_dynstr_get_cstring(pupds); BLI_dynstr_free(pupds); return str; @@ -205,14 +205,14 @@ static char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) #if 0 // UNUSED, until pyconstraints are added back. /* this callback gets called when the 'refresh' button of a pyconstraint gets pressed */ -static void update_pyconstraint_cb (void *arg1, void *arg2) +static void update_pyconstraint_cb(void *arg1, void *arg2) { #ifndef WITH_PYTHON (void)arg1; /* unused */ (void)arg2; /* unused */ #else - Object *owner= (Object *)arg1; - bConstraint *con= (bConstraint *)arg2; + Object *owner = (Object *)arg1; + bConstraint *con = (bConstraint *)arg2; if (owner && con) BPY_pyconstraint_update(owner, con); #endif @@ -220,30 +220,30 @@ static void update_pyconstraint_cb (void *arg1, void *arg2) #endif // UNUSED /* helper function for add_constriant - sets the last target for the active constraint */ -static void set_constraint_nth_target (bConstraint *con, Object *target, const char subtarget[], int index) +static void set_constraint_nth_target(bConstraint *con, Object *target, const char subtarget[], int index) { - bConstraintTypeInfo *cti= constraint_get_typeinfo(con); + bConstraintTypeInfo *cti = constraint_get_typeinfo(con); ListBase targets = {NULL, NULL}; bConstraintTarget *ct; int num_targets, i; if (cti && cti->get_constraint_targets) { cti->get_constraint_targets(con, &targets); - num_targets= BLI_countlist(&targets); + num_targets = BLI_countlist(&targets); if (index < 0) { if (abs(index) < num_targets) - index= num_targets - abs(index); + index = num_targets - abs(index); else - index= num_targets - 1; + index = num_targets - 1; } else if (index >= num_targets) { - index= num_targets - 1; + index = num_targets - 1; } - for (ct=targets.first, i=0; ct; ct= ct->next, i++) { + for (ct = targets.first, i = 0; ct; ct = ct->next, i++) { if (i == index) { - ct->tar= target; + ct->tar = target; BLI_strncpy(ct->subtarget, subtarget, sizeof(ct->subtarget)); break; } @@ -259,13 +259,13 @@ static void set_constraint_nth_target (bConstraint *con, Object *target, const c /* checks validity of object pointers, and NULLs, * if Bone doesnt exist it sets the CONSTRAINT_DISABLE flag. */ -static void test_constraints (Object *owner, bPoseChannel *pchan) +static void test_constraints(Object *owner, bPoseChannel *pchan) { bConstraint *curcon; - ListBase *conlist= NULL; + ListBase *conlist = NULL; int type; - if (owner==NULL) return; + if (owner == NULL) return; /* Check parents */ if (pchan) { @@ -293,8 +293,8 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) /* Check all constraints - is constraint valid? */ if (conlist) { - for (curcon = conlist->first; curcon; curcon=curcon->next) { - bConstraintTypeInfo *cti= constraint_get_typeinfo(curcon); + for (curcon = conlist->first; curcon; curcon = curcon->next) { + bConstraintTypeInfo *cti = constraint_get_typeinfo(curcon); ListBase targets = {NULL, NULL}; bConstraintTarget *ct; @@ -339,7 +339,7 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) bPivotConstraint *data = curcon->data; /* target doesn't have to exist, but if it is non-null, it must exist! */ - if (data->tar && exist_object(data->tar)==0) { + if (data->tar && exist_object(data->tar) == 0) { data->tar = NULL; curcon->flag |= CONSTRAINT_DISABLE; } @@ -363,26 +363,26 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) bFollowPathConstraint *data = curcon->data; /* don't allow track/up axes to be the same */ - if (data->upflag==data->trackflag) + if (data->upflag == data->trackflag) curcon->flag |= CONSTRAINT_DISABLE; - if (data->upflag+3==data->trackflag) + if (data->upflag + 3 == data->trackflag) curcon->flag |= CONSTRAINT_DISABLE; } else if (curcon->type == CONSTRAINT_TYPE_TRACKTO) { bTrackToConstraint *data = curcon->data; /* don't allow track/up axes to be the same */ - if (data->reserved2==data->reserved1) + if (data->reserved2 == data->reserved1) curcon->flag |= CONSTRAINT_DISABLE; - if (data->reserved2+3==data->reserved1) + if (data->reserved2 + 3 == data->reserved1) curcon->flag |= CONSTRAINT_DISABLE; } else if (curcon->type == CONSTRAINT_TYPE_LOCKTRACK) { bLockTrackConstraint *data = curcon->data; - if (data->lockflag==data->trackflag) + if (data->lockflag == data->trackflag) curcon->flag |= CONSTRAINT_DISABLE; - if (data->lockflag+3==data->trackflag) + if (data->lockflag + 3 == data->trackflag) curcon->flag |= CONSTRAINT_DISABLE; } else if (curcon->type == CONSTRAINT_TYPE_SPLINEIK) { @@ -391,7 +391,7 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) /* if the number of points does not match the amount required by the chain length, * free the points array and request a rebind... */ - if ((data->points == NULL) || (data->numpoints != data->chainlen+1)) { + if ((data->points == NULL) || (data->numpoints != data->chainlen + 1)) { /* free the points array */ if (data->points) { MEM_freeN(data->points); @@ -405,15 +405,15 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) else if (curcon->type == CONSTRAINT_TYPE_FOLLOWTRACK) { bFollowTrackConstraint *data = curcon->data; - if ((data->flag&CAMERASOLVER_ACTIVECLIP)==0) { + if ((data->flag & CAMERASOLVER_ACTIVECLIP) == 0) { if (data->clip != NULL && data->track[0]) { - MovieTracking *tracking= &data->clip->tracking; + MovieTracking *tracking = &data->clip->tracking; MovieTrackingObject *tracking_object; if (data->object[0]) - tracking_object= BKE_tracking_named_object(tracking, data->object); + tracking_object = BKE_tracking_named_object(tracking, data->object); else - tracking_object= BKE_tracking_get_camera_object(tracking); + tracking_object = BKE_tracking_get_camera_object(tracking); if (!tracking_object) { curcon->flag |= CONSTRAINT_DISABLE; @@ -429,13 +429,13 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) else if (curcon->type == CONSTRAINT_TYPE_CAMERASOLVER) { bCameraSolverConstraint *data = curcon->data; - if ((data->flag&CAMERASOLVER_ACTIVECLIP)==0 && data->clip == NULL) + if ((data->flag & CAMERASOLVER_ACTIVECLIP) == 0 && data->clip == NULL) curcon->flag |= CONSTRAINT_DISABLE; } else if (curcon->type == CONSTRAINT_TYPE_OBJECTSOLVER) { bObjectSolverConstraint *data = curcon->data; - if ((data->flag&CAMERASOLVER_ACTIVECLIP)==0 && data->clip == NULL) + if ((data->flag & CAMERASOLVER_ACTIVECLIP) == 0 && data->clip == NULL) curcon->flag |= CONSTRAINT_DISABLE; } @@ -444,7 +444,7 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) cti->get_constraint_targets(curcon, &targets); /* disable and clear constraints targets that are incorrect */ - for (ct= targets.first; ct; ct= ct->next) { + for (ct = targets.first; ct; ct = ct->next) { /* general validity checks (for those constraints that need this) */ if (exist_object(ct->tar) == 0) { /* object doesn't exist, but constraint requires target */ @@ -475,11 +475,11 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) if (ELEM3(curcon->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_SPLINEIK)) { if (ct->tar) { if (ct->tar->type != OB_CURVE) { - ct->tar= NULL; + ct->tar = NULL; curcon->flag |= CONSTRAINT_DISABLE; } else { - Curve *cu= ct->tar->data; + Curve *cu = ct->tar->data; /* auto-set 'Path' setting on curve so this works */ cu->flag |= CU_PATH; @@ -496,15 +496,15 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) } } -void object_test_constraints (Object *owner) +void object_test_constraints(Object *owner) { if (owner->constraints.first) test_constraints(owner, NULL); - if (owner->type==OB_ARMATURE && owner->pose) { + if (owner->type == OB_ARMATURE && owner->pose) { bPoseChannel *pchan; - for (pchan= owner->pose->chanbase.first; pchan; pchan= pchan->next) { + for (pchan = owner->pose->chanbase.first; pchan; pchan = pchan->next) { if (pchan->constraints.first) test_constraints(owner, pchan); } @@ -514,8 +514,8 @@ void object_test_constraints (Object *owner) /************************ generic functions for operators using constraint names and data context *********************/ -#define EDIT_CONSTRAINT_OWNER_OBJECT 0 -#define EDIT_CONSTRAINT_OWNER_BONE 1 +#define EDIT_CONSTRAINT_OWNER_OBJECT 0 +#define EDIT_CONSTRAINT_OWNER_BONE 1 static EnumPropertyItem constraint_owner_items[] = { {EDIT_CONSTRAINT_OWNER_OBJECT, "OBJECT", 0, "Object", "Edit a constraint on the active object"}, @@ -525,11 +525,11 @@ static EnumPropertyItem constraint_owner_items[] = { static int edit_constraint_poll_generic(bContext *C, StructRNA *rna_type) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", rna_type); - Object *ob= (ptr.id.data) ? ptr.id.data : ED_object_active_context(C); + PointerRNA ptr = CTX_data_pointer_get_type(C, "constraint", rna_type); + Object *ob = (ptr.id.data) ? ptr.id.data : ED_object_active_context(C); if (!ob || ob->id.lib) return 0; - if (ptr.id.data && ((ID*)ptr.id.data)->lib) return 0; + if (ptr.id.data && ((ID *)ptr.id.data)->lib) return 0; return 1; } @@ -547,8 +547,8 @@ static void edit_constraint_properties(wmOperatorType *ot) static int edit_constraint_invoke_properties(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); - Object *ob= (ptr.id.data)?ptr.id.data:ED_object_active_context(C); + PointerRNA ptr = CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); + Object *ob = (ptr.id.data) ? ptr.id.data : ED_object_active_context(C); bConstraint *con; ListBase *list; @@ -577,7 +577,7 @@ static bConstraint *edit_constraint_property_get(wmOperator *op, Object *ob, int char constraint_name[MAX_NAME]; int owner = RNA_enum_get(op->ptr, "owner"); bConstraint *con; - ListBase *list=NULL; + ListBase *list = NULL; RNA_string_get(op->ptr, "constraint", constraint_name); @@ -585,7 +585,7 @@ static bConstraint *edit_constraint_property_get(wmOperator *op, Object *ob, int list = &ob->constraints; } else if (owner == EDIT_CONSTRAINT_OWNER_BONE) { - bPoseChannel *pchan= get_active_posechannel(ob); + bPoseChannel *pchan = get_active_posechannel(ob); if (pchan) list = &pchan->constraints; else { @@ -615,11 +615,11 @@ static bConstraint *edit_constraint_property_get(wmOperator *op, Object *ob, int /* ---------- Distance-Dependent Constraints ---------- */ /* StretchTo, Limit Distance */ -static int stretchto_reset_exec (bContext *C, wmOperator *op) +static int stretchto_reset_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_STRETCHTO); - bStretchToConstraint *data= (con) ? (bStretchToConstraint *)con->data : NULL; + bStretchToConstraint *data = (con) ? (bStretchToConstraint *)con->data : NULL; /* despite 3 layers of checks, we may still not be able to find a constraint */ if (data == NULL) @@ -629,7 +629,7 @@ static int stretchto_reset_exec (bContext *C, wmOperator *op) data->orglength = 0.0f; ED_object_constraint_update(ob); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } @@ -641,7 +641,7 @@ static int stretchto_reset_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(e return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_stretchto_reset (wmOperatorType *ot) +void CONSTRAINT_OT_stretchto_reset(wmOperatorType *ot) { /* identifiers */ ot->name = "Reset Original Length"; @@ -653,16 +653,16 @@ void CONSTRAINT_OT_stretchto_reset (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } -static int limitdistance_reset_exec (bContext *C, wmOperator *op) +static int limitdistance_reset_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_DISTLIMIT); - bDistLimitConstraint *data= (con) ? (bDistLimitConstraint *)con->data : NULL; + bDistLimitConstraint *data = (con) ? (bDistLimitConstraint *)con->data : NULL; /* despite 3 layers of checks, we may still not be able to find a constraint */ if (data == NULL) @@ -672,7 +672,7 @@ static int limitdistance_reset_exec (bContext *C, wmOperator *op) data->dist = 0.0f; ED_object_constraint_update(ob); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } @@ -684,7 +684,7 @@ static int limitdistance_reset_invoke(bContext *C, wmOperator *op, wmEvent *UNUS return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_limitdistance_reset (wmOperatorType *ot) +void CONSTRAINT_OT_limitdistance_reset(wmOperatorType *ot) { /* identifiers */ ot->name = "Reset Distance"; @@ -696,16 +696,16 @@ void CONSTRAINT_OT_limitdistance_reset (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } /* ------------- Child-Of Constraint ------------------ */ -static void child_get_inverse_matrix (Scene *scene, Object *ob, bConstraint *con, float invmat[4][4]) +static void child_get_inverse_matrix(Scene *scene, Object *ob, bConstraint *con, float invmat[4][4]) { bConstraint *lastcon = NULL; - bPoseChannel *pchan= NULL; + bPoseChannel *pchan = NULL; /* nullify inverse matrix first */ unit_m4(invmat); @@ -713,13 +713,13 @@ static void child_get_inverse_matrix (Scene *scene, Object *ob, bConstraint *con /* try to find a pose channel - assume that this is the constraint owner */ // TODO: get from context instead? if (ob && ob->pose) - pchan= get_active_posechannel(ob); + pchan = get_active_posechannel(ob); /* calculate/set inverse matrix: - * We just calculate all transform-stack eval up to but not including this constraint. - * This is because inverse should just inverse correct for just the constraint's influence - * when it gets applied; that is, at the time of application, we don't know anything about - * what follows. + * We just calculate all transform-stack eval up to but not including this constraint. + * This is because inverse should just inverse correct for just the constraint's influence + * when it gets applied; that is, at the time of application, we don't know anything about + * what follows. */ if (pchan) { float imat[4][4], tmat[4][4]; @@ -781,23 +781,23 @@ static void child_get_inverse_matrix (Scene *scene, Object *ob, bConstraint *con } /* ChildOf Constraint - set inverse callback */ -static int childof_set_inverse_exec (bContext *C, wmOperator *op) +static int childof_set_inverse_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_CHILDOF); - bChildOfConstraint *data= (con) ? (bChildOfConstraint *)con->data : NULL; + bChildOfConstraint *data = (con) ? (bChildOfConstraint *)con->data : NULL; /* despite 3 layers of checks, we may still not be able to find a constraint */ if (data == NULL) { - printf("DEBUG: Child-Of Set Inverse - object = '%s'\n", (ob)? ob->id.name+2 : ""); + printf("DEBUG: Child-Of Set Inverse - object = '%s'\n", (ob) ? ob->id.name + 2 : ""); BKE_report(op->reports, RPT_ERROR, "Couldn't find constraint data for Child-Of Set Inverse"); return OPERATOR_CANCELLED; } child_get_inverse_matrix(scene, ob, con, data->invmat); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -810,7 +810,7 @@ static int childof_set_inverse_invoke(bContext *C, wmOperator *op, wmEvent *UNUS return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_childof_set_inverse (wmOperatorType *ot) +void CONSTRAINT_OT_childof_set_inverse(wmOperatorType *ot) { /* identifiers */ ot->name = "Set Inverse"; @@ -822,18 +822,18 @@ void CONSTRAINT_OT_childof_set_inverse (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } /* ChildOf Constraint - clear inverse callback */ -static int childof_clear_inverse_exec (bContext *C, wmOperator *op) +static int childof_clear_inverse_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_CHILDOF); - bChildOfConstraint *data= (con) ? (bChildOfConstraint *)con->data : NULL; + bChildOfConstraint *data = (con) ? (bChildOfConstraint *)con->data : NULL; - if (data==NULL) { + if (data == NULL) { BKE_report(op->reports, RPT_ERROR, "Childof constraint not found"); return OPERATOR_CANCELLED; } @@ -841,7 +841,7 @@ static int childof_clear_inverse_exec (bContext *C, wmOperator *op) /* simply clear the matrix */ unit_m4(data->invmat); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -854,7 +854,7 @@ static int childof_clear_inverse_invoke(bContext *C, wmOperator *op, wmEvent *UN return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_childof_clear_inverse (wmOperatorType *ot) +void CONSTRAINT_OT_childof_clear_inverse(wmOperatorType *ot) { /* identifiers */ ot->name = "Clear Inverse"; @@ -866,29 +866,29 @@ void CONSTRAINT_OT_childof_clear_inverse (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } /* ------------- Object Solver Constraint ------------------ */ -static int objectsolver_set_inverse_exec (bContext *C, wmOperator *op) +static int objectsolver_set_inverse_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_OBJECTSOLVER); - bObjectSolverConstraint *data= (con) ? (bObjectSolverConstraint *)con->data : NULL; + bObjectSolverConstraint *data = (con) ? (bObjectSolverConstraint *)con->data : NULL; /* despite 3 layers of checks, we may still not be able to find a constraint */ if (data == NULL) { - printf("DEBUG: Child-Of Set Inverse - object = '%s'\n", (ob)? ob->id.name+2 : ""); + printf("DEBUG: Child-Of Set Inverse - object = '%s'\n", (ob) ? ob->id.name + 2 : ""); BKE_report(op->reports, RPT_ERROR, "Couldn't find constraint data for Child-Of Set Inverse"); return OPERATOR_CANCELLED; } child_get_inverse_matrix(scene, ob, con, data->invmat); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -901,7 +901,7 @@ static int objectsolver_set_inverse_invoke(bContext *C, wmOperator *op, wmEvent return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_objectsolver_set_inverse (wmOperatorType *ot) +void CONSTRAINT_OT_objectsolver_set_inverse(wmOperatorType *ot) { /* identifiers */ ot->name = "Set Inverse"; @@ -913,17 +913,17 @@ void CONSTRAINT_OT_objectsolver_set_inverse (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } -static int objectsolver_clear_inverse_exec (bContext *C, wmOperator *op) +static int objectsolver_clear_inverse_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, CONSTRAINT_TYPE_OBJECTSOLVER); - bObjectSolverConstraint *data= (con) ? (bObjectSolverConstraint *)con->data : NULL; + bObjectSolverConstraint *data = (con) ? (bObjectSolverConstraint *)con->data : NULL; - if (data==NULL) { + if (data == NULL) { BKE_report(op->reports, RPT_ERROR, "Childof constraint not found"); return OPERATOR_CANCELLED; } @@ -931,7 +931,7 @@ static int objectsolver_clear_inverse_exec (bContext *C, wmOperator *op) /* simply clear the matrix */ unit_m4(data->invmat); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -944,7 +944,7 @@ static int objectsolver_clear_inverse_invoke(bContext *C, wmOperator *op, wmEven return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_objectsolver_clear_inverse (wmOperatorType *ot) +void CONSTRAINT_OT_objectsolver_clear_inverse(wmOperatorType *ot) { /* identifiers */ ot->name = "Clear Inverse"; @@ -956,7 +956,7 @@ void CONSTRAINT_OT_objectsolver_clear_inverse (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } @@ -981,7 +981,7 @@ void ED_object_constraint_update(Object *ob) object_test_constraints(ob); - if (ob->type==OB_ARMATURE) DAG_id_tag_update(&ob->id, OB_RECALC_DATA|OB_RECALC_OB); + if (ob->type == OB_ARMATURE) DAG_id_tag_update(&ob->id, OB_RECALC_DATA | OB_RECALC_OB); else DAG_id_tag_update(&ob->id, OB_RECALC_OB); } @@ -989,23 +989,23 @@ void ED_object_constraint_dependency_update(Main *bmain, Scene *scene, Object *o { ED_object_constraint_update(ob); - if (ob->pose) ob->pose->flag |= POSE_RECALC; // checks & sorts pose channels + if (ob->pose) ob->pose->flag |= POSE_RECALC; // checks & sorts pose channels DAG_scene_sort(bmain, scene); } static int constraint_poll(bContext *C) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); + PointerRNA ptr = CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); return (ptr.id.data && ptr.data); } -static int constraint_delete_exec (bContext *C, wmOperator *UNUSED(op)) +static int constraint_delete_exec(bContext *C, wmOperator *UNUSED(op)) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); - Object *ob= ptr.id.data; - bConstraint *con= ptr.data; + PointerRNA ptr = CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); + Object *ob = ptr.id.data; + bConstraint *con = ptr.data; ListBase *lb = get_constraint_lb(ob, con, NULL); - const short is_ik= ELEM(con->type, CONSTRAINT_TYPE_KINEMATIC, CONSTRAINT_TYPE_SPLINEIK); + const short is_ik = ELEM(con->type, CONSTRAINT_TYPE_KINEMATIC, CONSTRAINT_TYPE_SPLINEIK); /* free the constraint */ if (remove_constraint(lb, con)) { @@ -1020,7 +1020,7 @@ static int constraint_delete_exec (bContext *C, wmOperator *UNUSED(op)) } /* notifiers */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_REMOVED, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT | NA_REMOVED, ob); return OPERATOR_FINISHED; } @@ -1030,7 +1030,7 @@ static int constraint_delete_exec (bContext *C, wmOperator *UNUSED(op)) } } -void CONSTRAINT_OT_delete (wmOperatorType *ot) +void CONSTRAINT_OT_delete(wmOperatorType *ot) { /* identifiers */ ot->name = "Delete Constraint"; @@ -1042,23 +1042,23 @@ void CONSTRAINT_OT_delete (wmOperatorType *ot) ot->poll = constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } -static int constraint_move_down_exec (bContext *C, wmOperator *op) +static int constraint_move_down_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, 0); if (con && con->next) { - ListBase *conlist= get_constraint_lb(ob, con, NULL); - bConstraint *nextCon= con->next; + ListBase *conlist = get_constraint_lb(ob, con, NULL); + bConstraint *nextCon = con->next; /* insert the nominated constraint after the one that used to be after it */ BLI_remlink(conlist, con); BLI_insertlinkafter(conlist, nextCon, con); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -1075,7 +1075,7 @@ static int constraint_move_down_invoke(bContext *C, wmOperator *op, wmEvent *UNU } -void CONSTRAINT_OT_move_down (wmOperatorType *ot) +void CONSTRAINT_OT_move_down(wmOperatorType *ot) { /* identifiers */ ot->name = "Move Constraint Down"; @@ -1088,25 +1088,25 @@ void CONSTRAINT_OT_move_down (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } -static int constraint_move_up_exec (bContext *C, wmOperator *op) +static int constraint_move_up_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); bConstraint *con = edit_constraint_property_get(op, ob, 0); if (con && con->prev) { - ListBase *conlist= get_constraint_lb(ob, con, NULL); - bConstraint *prevCon= con->prev; + ListBase *conlist = get_constraint_lb(ob, con, NULL); + bConstraint *prevCon = con->prev; /* insert the nominated constraint before the one that used to be before it */ BLI_remlink(conlist, con); BLI_insertlinkbefore(conlist, prevCon, con); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -1122,7 +1122,7 @@ static int constraint_move_up_invoke(bContext *C, wmOperator *op, wmEvent *UNUSE return OPERATOR_CANCELLED; } -void CONSTRAINT_OT_move_up (wmOperatorType *ot) +void CONSTRAINT_OT_move_up(wmOperatorType *ot) { /* identifiers */ ot->name = "Move Constraint Up"; @@ -1135,7 +1135,7 @@ void CONSTRAINT_OT_move_up (wmOperatorType *ot) ot->poll = edit_constraint_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_constraint_properties(ot); } @@ -1145,25 +1145,25 @@ void CONSTRAINT_OT_move_up (wmOperatorType *ot) static int pose_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *ob= object_pose_armature_get(CTX_data_active_object(C)); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *ob = object_pose_armature_get(CTX_data_active_object(C)); /* free constraints for all selected bones */ - CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { free_constraints(&pchan->constraints); - pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST); + pchan->constflag &= ~(PCHAN_HAS_IK | PCHAN_HAS_SPLINEIK | PCHAN_HAS_CONST); } CTX_DATA_END; /* force depsgraph to get recalculated since relationships removed */ - DAG_scene_sort(bmain, scene); /* sort order of objects */ + DAG_scene_sort(bmain, scene); /* sort order of objects */ /* note, calling BIK_clear_data() isn't needed here */ /* do updates */ DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, ob); return OPERATOR_FINISHED; } @@ -1183,21 +1183,21 @@ void POSE_OT_constraints_clear(wmOperatorType *ot) static int object_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); /* do freeing */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { free_constraints(&ob->constraints); DAG_id_tag_update(&ob->id, OB_RECALC_OB); } CTX_DATA_END; /* force depsgraph to get recalculated since relationships removed */ - DAG_scene_sort(bmain, scene); /* sort order of objects */ + DAG_scene_sort(bmain, scene); /* sort order of objects */ /* do updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } @@ -1218,7 +1218,7 @@ void OBJECT_OT_constraints_clear(wmOperatorType *ot) static int pose_constraint_copy_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); bPoseChannel *pchan = CTX_data_active_pose_bone(C); @@ -1229,7 +1229,7 @@ static int pose_constraint_copy_exec(bContext *C, wmOperator *op) } /* copy all constraints from active posebone to all selected posebones */ - CTX_DATA_BEGIN (C, bPoseChannel*, chan, selected_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, chan, selected_pose_bones) { /* if we're not handling the object we're copying from, copy all constraints over */ if (pchan != chan) { copy_constraints(&chan->constraints, &pchan->constraints, TRUE); @@ -1240,9 +1240,9 @@ static int pose_constraint_copy_exec(bContext *C, wmOperator *op) CTX_DATA_END; /* force depsgraph to get recalculated since new relationships added */ - DAG_scene_sort(bmain, scene); /* sort order of objects/bones */ + DAG_scene_sort(bmain, scene); /* sort order of objects/bones */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } @@ -1259,17 +1259,17 @@ void POSE_OT_constraints_copy(wmOperatorType *ot) ot->poll = ED_operator_posemode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_constraint_copy_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); Object *obact = ED_object_active_context(C); /* copy all constraints from active object to all selected objects */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { /* if we're not handling the object we're copying from, copy all constraints over */ if (obact != ob) { copy_constraints(&ob->constraints, &obact->constraints, TRUE); @@ -1279,10 +1279,10 @@ static int object_constraint_copy_exec(bContext *C, wmOperator *UNUSED(op)) CTX_DATA_END; /* force depsgraph to get recalculated since new relationships added */ - DAG_scene_sort(bmain, scene); /* sort order of objects */ + DAG_scene_sort(bmain, scene); /* sort order of objects */ /* notifiers for updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT | NA_ADDED, NULL); return OPERATOR_FINISHED; } @@ -1299,7 +1299,7 @@ void OBJECT_OT_constraints_copy(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /************************ add constraint operators *********************/ @@ -1307,25 +1307,25 @@ void OBJECT_OT_constraints_copy(wmOperatorType *ot) /* get the Object and/or PoseChannel to use as target */ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_ob, bPoseChannel **tar_pchan, short add) { - Object *obact= ED_object_active_context(C); - bPoseChannel *pchanact= get_active_posechannel(obact); - short only_curve= 0, only_mesh= 0, only_ob= 0; - short found= 0; + Object *obact = ED_object_active_context(C); + bPoseChannel *pchanact = get_active_posechannel(obact); + short only_curve = 0, only_mesh = 0, only_ob = 0; + short found = 0; /* clear tar_ob and tar_pchan fields before use * - assume for now that both always exist... */ - *tar_ob= NULL; - *tar_pchan= NULL; + *tar_ob = NULL; + *tar_pchan = NULL; /* check if constraint type doesn't requires a target * - if so, no need to get any targets */ switch (con_type) { /* no-target constraints --------------------------- */ - /* null constraint - shouldn't even be added! */ + /* null constraint - shouldn't even be added! */ case CONSTRAINT_TYPE_NULL: - /* limit constraints - no targets needed */ + /* limit constraints - no targets needed */ case CONSTRAINT_TYPE_LOCLIMIT: case CONSTRAINT_TYPE_ROTLIMIT: case CONSTRAINT_TYPE_SIZELIMIT: @@ -1334,37 +1334,37 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* restricted target-type constraints -------------- */ /* NOTE: for these, we cannot try to add a target object if no valid ones are found, since that doesn't work */ - /* curve-based constraints - set the only_curve and only_ob flags */ + /* curve-based constraints - set the only_curve and only_ob flags */ case CONSTRAINT_TYPE_CLAMPTO: case CONSTRAINT_TYPE_FOLLOWPATH: case CONSTRAINT_TYPE_SPLINEIK: - only_curve= 1; - only_ob= 1; - add= 0; + only_curve = 1; + only_ob = 1; + add = 0; break; - /* mesh only? */ + /* mesh only? */ case CONSTRAINT_TYPE_SHRINKWRAP: - only_mesh= 1; - only_ob= 1; - add= 0; + only_mesh = 1; + only_ob = 1; + add = 0; break; - /* object only - add here is ok? */ + /* object only - add here is ok? */ case CONSTRAINT_TYPE_RIGIDBODYJOINT: - only_ob= 1; + only_ob = 1; break; } /* if the active Object is Armature, and we can search for bones, do so... */ if ((obact->type == OB_ARMATURE) && (only_ob == 0)) { /* search in list of selected Pose-Channels for target */ - CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { /* just use the first one that we encounter, as long as it is not the active one */ if (pchan != pchanact) { - *tar_ob= obact; - *tar_pchan= pchan; - found= 1; + *tar_ob = obact; + *tar_pchan = pchan; + found = 1; break; } @@ -1375,22 +1375,22 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if not yet found, try selected Objects... */ if (found == 0) { /* search in selected objects context */ - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { /* just use the first object we encounter (that isn't the active object) * and which fulfills the criteria for the object-target that we've got */ if ( (ob != obact) && - ((!only_curve) || (ob->type == OB_CURVE)) && - ((!only_mesh) || (ob->type == OB_MESH)) ) + ((!only_curve) || (ob->type == OB_CURVE)) && + ((!only_mesh) || (ob->type == OB_MESH)) ) { /* set target */ - *tar_ob= ob; - found= 1; + *tar_ob = ob; + found = 1; /* perform some special operations on the target */ if (only_curve) { /* Curve-Path option must be enabled for follow-path constraints to be able to work */ - Curve *cu= (Curve *)ob->data; + Curve *cu = (Curve *)ob->data; cu->flag |= CU_PATH; } @@ -1402,17 +1402,17 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* if still not found, add a new empty to act as a target (if allowed) */ if ((found == 0) && (add)) { - Scene *scene= CTX_data_scene(C); - Base *base= BASACT, *newbase=NULL; + Scene *scene = CTX_data_scene(C); + Base *base = BASACT, *newbase = NULL; Object *obt; /* add new target object */ - obt= add_object(scene, OB_EMPTY); + obt = add_object(scene, OB_EMPTY); /* set layers OK */ - newbase= BASACT; - newbase->lay= base->lay; - obt->lay= newbase->lay; + newbase = BASACT; + newbase->lay = base->lay; + obt->lay = newbase->lay; /* transform cent to global coords for loc */ if (pchanact) { @@ -1429,12 +1429,12 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o } /* restore, add_object sets active */ - BASACT= base; + BASACT = base; base->flag |= SELECT; /* make our new target the new object */ - *tar_ob= obt; - found= 1; + *tar_ob = obt; + found = 1; } /* return whether there's any target */ @@ -1444,16 +1444,16 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* used by add constraint operators to add the constraint required */ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase *list, int type, short setTarget) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); bPoseChannel *pchan; bConstraint *con; if (list == &ob->constraints) { - pchan= NULL; + pchan = NULL; } else { - pchan= get_active_posechannel(ob); + pchan = get_active_posechannel(ob); /* ensure not to confuse object/pose adding */ if (pchan == NULL) { @@ -1488,8 +1488,8 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase * - apart from the buttons-window add buttons, we shouldn't add in this way */ if (setTarget) { - Object *tar_ob= NULL; - bPoseChannel *tar_pchan= NULL; + Object *tar_ob = NULL; + bPoseChannel *tar_pchan = NULL; /* get the target objects, adding them as need be */ if (get_new_constraint_target(C, type, &tar_ob, &tar_pchan, 1)) { @@ -1509,7 +1509,7 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase { #ifdef WITH_PYTHON char *menustr; - int scriptint= 0; + int scriptint = 0; /* popup a list of usable scripts */ menustr = buildmenu_pyconstraints(NULL, &scriptint); // XXX scriptint = pupmenu(menustr); @@ -1539,17 +1539,17 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase /* force depsgraph to get recalculated since new relationships added */ - DAG_scene_sort(bmain, scene); /* sort order of objects */ + DAG_scene_sort(bmain, scene); /* sort order of objects */ - if ((ob->type==OB_ARMATURE) && (pchan)) { - ob->pose->flag |= POSE_RECALC; /* sort pose channels */ - DAG_id_tag_update(&ob->id, OB_RECALC_DATA|OB_RECALC_OB); + if ((ob->type == OB_ARMATURE) && (pchan)) { + ob->pose->flag |= POSE_RECALC; /* sort pose channels */ + DAG_id_tag_update(&ob->id, OB_RECALC_DATA | OB_RECALC_OB); } else DAG_id_tag_update(&ob->id, OB_RECALC_DATA); /* notifiers for updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_ADDED, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT | NA_ADDED, ob); return OPERATOR_FINISHED; } @@ -1559,9 +1559,9 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase /* dummy operator callback */ static int object_constraint_add_exec(bContext *C, wmOperator *op) { - Object *ob=ED_object_active_context(C); - int type= RNA_enum_get(op->ptr, "type"); - short with_targets= 0; + Object *ob = ED_object_active_context(C); + int type = RNA_enum_get(op->ptr, "type"); + short with_targets = 0; if (!ob) { BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to"); @@ -1572,7 +1572,7 @@ static int object_constraint_add_exec(bContext *C, wmOperator *op) * operator name included 'with_targets', since the menu doesn't allow multiple properties */ if (strstr(op->idname, "with_targets")) - with_targets= 1; + with_targets = 1; return constraint_add_exec(C, op, ob, &ob->constraints, type, with_targets); } @@ -1580,9 +1580,9 @@ static int object_constraint_add_exec(bContext *C, wmOperator *op) /* dummy operator callback */ static int pose_constraint_add_exec(bContext *C, wmOperator *op) { - Object *ob= object_pose_armature_get(ED_object_active_context(C)); - int type= RNA_enum_get(op->ptr, "type"); - short with_targets= 0; + Object *ob = object_pose_armature_get(ED_object_active_context(C)); + int type = RNA_enum_get(op->ptr, "type"); + short with_targets = 0; if (!ob) { BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to"); @@ -1593,7 +1593,7 @@ static int pose_constraint_add_exec(bContext *C, wmOperator *op) * operator name included 'with_targets', since the menu doesn't allow multiple properties */ if (strstr(op->idname, "with_targets")) - with_targets= 1; + with_targets = 1; return constraint_add_exec(C, op, ob, get_active_constraints(ob), type, with_targets); } @@ -1613,7 +1613,7 @@ void OBJECT_OT_constraint_add(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); @@ -1632,7 +1632,7 @@ void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); @@ -1651,7 +1651,7 @@ void POSE_OT_constraint_add(wmOperatorType *ot) ot->poll = ED_operator_posemode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); @@ -1670,7 +1670,7 @@ void POSE_OT_constraint_add_with_targets(wmOperatorType *ot) ot->poll = ED_operator_posemode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); @@ -1683,14 +1683,14 @@ void POSE_OT_constraint_add_with_targets(wmOperatorType *ot) /* present menu with options + validation for targets to use */ static int pose_ik_add_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(evt)) { - Object *ob= object_pose_armature_get(CTX_data_active_object(C)); - bPoseChannel *pchan= get_active_posechannel(ob); - bConstraint *con= NULL; + Object *ob = object_pose_armature_get(CTX_data_active_object(C)); + bPoseChannel *pchan = get_active_posechannel(ob); + bConstraint *con = NULL; uiPopupMenu *pup; uiLayout *layout; - Object *tar_ob= NULL; - bPoseChannel *tar_pchan= NULL; + Object *tar_ob = NULL; + bPoseChannel *tar_pchan = NULL; /* must have active bone */ if (ELEM(NULL, ob, pchan)) { @@ -1699,8 +1699,8 @@ static int pose_ik_add_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(evt)) } /* bone must not have any constraints already */ - for (con= pchan->constraints.first; con; con= con->next) { - if (con->type==CONSTRAINT_TYPE_KINEMATIC) break; + for (con = pchan->constraints.first; con; con = con->next) { + if (con->type == CONSTRAINT_TYPE_KINEMATIC) break; } if (con) { BKE_report(op->reports, RPT_ERROR, "Bone already has IK Constraint"); @@ -1708,8 +1708,8 @@ static int pose_ik_add_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(evt)) } /* prepare popup menu to choose targetting options */ - pup= uiPupMenuBegin(C, "Add IK", ICON_NONE); - layout= uiPupMenuLayout(pup); + pup = uiPupMenuBegin(C, "Add IK", ICON_NONE); + layout = uiPupMenuLayout(pup); /* the type of targets we'll set determines the menu entries to show... */ if (get_new_constraint_target(C, CONSTRAINT_TYPE_KINEMATIC, &tar_ob, &tar_pchan, 0)) { @@ -1736,8 +1736,8 @@ static int pose_ik_add_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(evt)) /* call constraint_add_exec() to add the IK constraint */ static int pose_ik_add_exec(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); - int with_targets= RNA_boolean_get(op->ptr, "with_targets"); + Object *ob = CTX_data_active_object(C); + int with_targets = RNA_boolean_get(op->ptr, "with_targets"); /* add the constraint - all necessary checks should have been done by the invoke() callback already... */ return constraint_add_exec(C, op, ob, get_active_constraints(ob), CONSTRAINT_TYPE_KINEMATIC, with_targets); @@ -1756,7 +1756,7 @@ void POSE_OT_ik_add(wmOperatorType *ot) ot->poll = ED_operator_posemode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "with_targets", 1, "With Targets", "Assign IK Constraint with targets derived from the select bones/objects"); @@ -1767,20 +1767,20 @@ void POSE_OT_ik_add(wmOperatorType *ot) /* remove IK constraints from selected bones */ static int pose_ik_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= object_pose_armature_get(CTX_data_active_object(C)); + Object *ob = object_pose_armature_get(CTX_data_active_object(C)); /* only remove IK Constraints */ - CTX_DATA_BEGIN (C, bPoseChannel*, pchan, selected_pose_bones) { + CTX_DATA_BEGIN (C, bPoseChannel *, pchan, selected_pose_bones) { bConstraint *con, *next; // TODO: should we be checking if these contraints were local before we try and remove them? - for (con= pchan->constraints.first; con; con= next) { - next= con->next; - if (con->type==CONSTRAINT_TYPE_KINEMATIC) { + for (con = pchan->constraints.first; con; con = next) { + next = con->next; + if (con->type == CONSTRAINT_TYPE_KINEMATIC) { remove_constraint(&pchan->constraints, con); } } - pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_TARGET); + pchan->constflag &= ~(PCHAN_HAS_IK | PCHAN_HAS_TARGET); } CTX_DATA_END; @@ -1788,7 +1788,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *UNUSED(op)) DAG_id_tag_update(&ob->id, OB_RECALC_DATA); /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT|NA_REMOVED, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_CONSTRAINT | NA_REMOVED, ob); return OPERATOR_FINISHED; } @@ -1805,6 +1805,6 @@ void POSE_OT_ik_clear(wmOperatorType *ot) ot->poll = ED_operator_posemode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 3043900bce4..874b04fe87d 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -101,7 +101,7 @@ #include "WM_api.h" #include "WM_types.h" -#include "object_intern.h" // own include +#include "object_intern.h" // own include /* ************* XXX **************** */ static void error(const char *UNUSED(arg)) {} @@ -109,7 +109,8 @@ static void waitcursor(int UNUSED(val)) {} static int pupmenu(const char *UNUSED(msg)) {return 0;} /* port over here */ -static void error_libdata(void) {} +static void error_libdata(void) { +} Object *ED_object_context(bContext *C) { @@ -120,10 +121,10 @@ Object *ED_object_context(bContext *C) * note: context can be NULL when called from a enum with PROP_ENUM_NO_CONTEXT */ Object *ED_object_active_context(bContext *C) { - Object *ob= NULL; + Object *ob = NULL; if (C) { - ob= ED_object_context(C); - if (!ob) ob= CTX_data_active_object(C); + ob = ED_object_context(C); + if (!ob) ob = CTX_data_active_object(C); } return ob; } @@ -132,15 +133,15 @@ Object *ED_object_active_context(bContext *C) /* ********* clear/set restrict view *********/ static int object_hide_view_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - ScrArea *sa= CTX_wm_area(C); - View3D *v3d= sa->spacedata.first; - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + ScrArea *sa = CTX_wm_area(C); + View3D *v3d = sa->spacedata.first; + Scene *scene = CTX_data_scene(C); Base *base; int changed = 0; /* XXX need a context loop to handle such cases */ - for (base = FIRSTBASE; base; base=base->next) { + for (base = FIRSTBASE; base; base = base->next) { if ((base->lay & v3d->lay) && base->object->restrictflag & OB_RESTRICT_VIEW) { base->flag |= SELECT; base->object->flag = base->flag; @@ -151,7 +152,7 @@ static int object_hide_view_clear_exec(bContext *C, wmOperator *UNUSED(op)) if (changed) { DAG_id_type_tag(bmain, ID_OB); DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); } return OPERATOR_FINISHED; @@ -170,24 +171,24 @@ void OBJECT_OT_hide_view_clear(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_hide_view_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); short changed = 0; - const int unselected= RNA_boolean_get(op->ptr, "unselected"); + const int unselected = RNA_boolean_get(op->ptr, "unselected"); - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (!unselected) { if (base->flag & SELECT) { base->flag &= ~SELECT; base->object->flag = base->flag; base->object->restrictflag |= OB_RESTRICT_VIEW; changed = 1; - if (base==BASACT) { + if (base == BASACT) { ED_base_object_activate(C, NULL); } } @@ -205,7 +206,7 @@ static int object_hide_view_set_exec(bContext *C, wmOperator *op) DAG_id_type_tag(bmain, ID_OB); DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); } @@ -224,7 +225,7 @@ void OBJECT_OT_hide_view_set(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects"); @@ -233,19 +234,19 @@ void OBJECT_OT_hide_view_set(wmOperatorType *ot) /* 99% same as above except no need for scene refreshing (TODO, update render preview) */ static int object_hide_render_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - short changed= 0; + short changed = 0; /* XXX need a context loop to handle such cases */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->restrictflag & OB_RESTRICT_RENDER) { ob->restrictflag &= ~OB_RESTRICT_RENDER; - changed= 1; + changed = 1; } } CTX_DATA_END; if (changed) - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + WM_event_add_notifier(C, NC_SPACE | ND_SPACE_OUTLINER, NULL); return OPERATOR_FINISHED; } @@ -263,14 +264,14 @@ void OBJECT_OT_hide_render_clear(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_hide_render_set_exec(bContext *C, wmOperator *op) { - const int unselected= RNA_boolean_get(op->ptr, "unselected"); + const int unselected = RNA_boolean_get(op->ptr, "unselected"); - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (!unselected) { if (base->flag & SELECT) { base->object->restrictflag |= OB_RESTRICT_RENDER; @@ -283,7 +284,7 @@ static int object_hide_render_set_exec(bContext *C, wmOperator *op) } } CTX_DATA_END; - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + WM_event_add_notifier(C, NC_SPACE | ND_SPACE_OUTLINER, NULL); return OPERATOR_FINISHED; } @@ -299,7 +300,7 @@ void OBJECT_OT_hide_render_set(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects"); } @@ -310,19 +311,19 @@ void ED_object_exit_editmode(bContext *C, int flag) { /* Note! only in exceptional cases should 'EM_DO_UNDO' NOT be in the flag */ - Scene *scene= CTX_data_scene(C); - Object *obedit= CTX_data_edit_object(C); + Scene *scene = CTX_data_scene(C); + Object *obedit = CTX_data_edit_object(C); int freedata = flag & EM_FREEDATA; - if (obedit==NULL) return; + if (obedit == NULL) return; if (flag & EM_WAITCURSOR) waitcursor(1); - if (obedit->type==OB_MESH) { - Mesh *me= obedit->data; + if (obedit->type == OB_MESH) { + Mesh *me = obedit->data; // if (EM_texFaceCheck()) - if (me->edit_btmesh->bm->totvert>MESH_MAX_VERTS) { + if (me->edit_btmesh->bm->totvert > MESH_MAX_VERTS) { error("Too many vertices"); return; } @@ -332,14 +333,14 @@ void ED_object_exit_editmode(bContext *C, int flag) if (freedata) { EDBM_mesh_free(me->edit_btmesh); MEM_freeN(me->edit_btmesh); - me->edit_btmesh= NULL; + me->edit_btmesh = NULL; } if (obedit->restore_mode & OB_MODE_WEIGHT_PAINT) { mesh_octree_table(NULL, NULL, NULL, 'e'); mesh_mirrtopo_table(NULL, 'e'); } } - else if (obedit->type==OB_ARMATURE) { + else if (obedit->type == OB_ARMATURE) { ED_armature_from_edit(obedit); if (freedata) ED_armature_edit_free(obedit); @@ -348,15 +349,15 @@ void ED_object_exit_editmode(bContext *C, int flag) load_editNurb(obedit); if (freedata) free_editNurb(obedit); } - else if (obedit->type==OB_FONT && freedata) { + else if (obedit->type == OB_FONT && freedata) { load_editText(obedit); if (freedata) free_editText(obedit); } - else if (obedit->type==OB_LATTICE) { + else if (obedit->type == OB_LATTICE) { load_editLatt(obedit); if (freedata) free_editLatt(obedit); } - else if (obedit->type==OB_MBALL) { + else if (obedit->type == OB_MBALL) { load_editMball(obedit); if (freedata) free_editMball(obedit); } @@ -367,11 +368,11 @@ void ED_object_exit_editmode(bContext *C, int flag) PTCacheID *pid; /* for example; displist make is different in editmode */ - scene->obedit= NULL; // XXX for context + scene->obedit = NULL; // XXX for context /* flag object caches as outdated */ BKE_ptcache_ids_from_object(&pidlist, obedit, NULL, 0); - for (pid=pidlist.first; pid; pid=pid->next) { + for (pid = pidlist.first; pid; pid = pid->next) { if (pid->type != PTCACHE_TYPE_PARTICLES) /* particles don't need reset on geometry change */ pid->cache->flag |= PTCACHE_OUTDATED; } @@ -380,14 +381,14 @@ void ED_object_exit_editmode(bContext *C, int flag) BKE_ptcache_object_reset(scene, obedit, PTCACHE_RESET_OUTDATED); /* also flush ob recalc, doesn't take much overhead, but used for particles */ - DAG_id_tag_update(&obedit->id, OB_RECALC_OB|OB_RECALC_DATA); + DAG_id_tag_update(&obedit->id, OB_RECALC_OB | OB_RECALC_DATA); if (flag & EM_DO_UNDO) ED_undo_push(C, "Editmode"); if (flag & EM_WAITCURSOR) waitcursor(0); - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, scene); obedit->mode &= ~OB_MODE_EDIT; } @@ -396,27 +397,27 @@ void ED_object_exit_editmode(bContext *C, int flag) void ED_object_enter_editmode(bContext *C, int flag) { - Scene *scene= CTX_data_scene(C); - Base *base= NULL; + Scene *scene = CTX_data_scene(C); + Base *base = NULL; Object *ob; - ScrArea *sa= CTX_wm_area(C); - View3D *v3d= NULL; - int ok= 0; + ScrArea *sa = CTX_wm_area(C); + View3D *v3d = NULL; + int ok = 0; if (scene->id.lib) return; - if (sa && sa->spacetype==SPACE_VIEW3D) - v3d= sa->spacedata.first; + if (sa && sa->spacetype == SPACE_VIEW3D) + v3d = sa->spacedata.first; - if ((flag & EM_IGNORE_LAYER)==0) { - base= CTX_data_active_base(C); /* active layer checked here for view3d */ + if ((flag & EM_IGNORE_LAYER) == 0) { + base = CTX_data_active_base(C); /* active layer checked here for view3d */ - if (base==NULL) return; - else if (v3d && (base->lay & v3d->lay)==0) return; - else if (!v3d && (base->lay & scene->lay)==0) return; + if (base == NULL) return; + else if (v3d && (base->lay & v3d->lay) == 0) return; + else if (!v3d && (base->lay & scene->lay) == 0) return; } else { - base= scene->basact; + base = scene->basact; } if (ELEM3(NULL, base, base->object, base->object->data)) return; @@ -434,14 +435,14 @@ void ED_object_enter_editmode(bContext *C, int flag) /* note, when switching scenes the object can have editmode data but * not be scene->obedit: bug 22954, this avoids calling self eternally */ - if ((ob->restore_mode & OB_MODE_EDIT)==0) + if ((ob->restore_mode & OB_MODE_EDIT) == 0) ED_object_toggle_modes(C, ob->mode); - ob->mode= OB_MODE_EDIT; + ob->mode = OB_MODE_EDIT; - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { BMEditMesh *em; - ok= 1; + ok = 1; scene->obedit = ob; /* context sees this */ EDBM_mesh_make(CTX_data_tool_settings(C), scene, ob); @@ -455,10 +456,10 @@ void ED_object_enter_editmode(bContext *C, int flag) BM_mesh_select_mode_flush(em->bm); } - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_MESH, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_MESH, scene); } - else if (ob->type==OB_ARMATURE) { - bArmature *arm= base->object->data; + else if (ob->type == OB_ARMATURE) { + bArmature *arm = base->object->data; if (!arm) return; /* * The function object_data_is_libdata make a problem here, the @@ -472,50 +473,50 @@ void ED_object_enter_editmode(bContext *C, int flag) error_libdata(); return; } - ok=1; - scene->obedit= ob; + ok = 1; + scene->obedit = ob; ED_armature_to_edit(ob); /* to ensure all goes in restposition and without striding */ - DAG_id_tag_update(&ob->id, OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME); // XXX: should this be OB_RECALC_DATA? + DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME); // XXX: should this be OB_RECALC_DATA? - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_ARMATURE, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_ARMATURE, scene); } - else if (ob->type==OB_FONT) { - scene->obedit= ob; // XXX for context - ok= 1; + else if (ob->type == OB_FONT) { + scene->obedit = ob; // XXX for context + ok = 1; make_editText(ob); - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_TEXT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_TEXT, scene); } - else if (ob->type==OB_MBALL) { - scene->obedit= ob; // XXX for context - ok= 1; + else if (ob->type == OB_MBALL) { + scene->obedit = ob; // XXX for context + ok = 1; make_editMball(ob); - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_MBALL, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_MBALL, scene); } - else if (ob->type==OB_LATTICE) { - scene->obedit= ob; // XXX for context - ok= 1; + else if (ob->type == OB_LATTICE) { + scene->obedit = ob; // XXX for context + ok = 1; make_editLatt(ob); - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_LATTICE, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_LATTICE, scene); } - else if (ob->type==OB_SURF || ob->type==OB_CURVE) { - ok= 1; - scene->obedit= ob; // XXX for context + else if (ob->type == OB_SURF || ob->type == OB_CURVE) { + ok = 1; + scene->obedit = ob; // XXX for context make_editNurb(ob); - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_CURVE, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_EDITMODE_CURVE, scene); } if (ok) { DAG_id_tag_update(&ob->id, OB_RECALC_DATA); } else { - scene->obedit= NULL; // XXX for context + scene->obedit = NULL; // XXX for context ob->mode &= ~OB_MODE_EDIT; - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene); + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, scene); } if (flag & EM_DO_UNDO) ED_undo_push(C, "Enter Editmode"); @@ -529,7 +530,7 @@ static int editmode_toggle_exec(bContext *C, wmOperator *UNUSED(op)) if (!CTX_data_edit_object(C)) ED_object_enter_editmode(C, EM_WAITCURSOR); else - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* had EM_DO_UNDO but op flag calls undo too [#24685] */ + ED_object_exit_editmode(C, EM_FREEDATA | EM_FREEUNDO | EM_WAITCURSOR); /* had EM_DO_UNDO but op flag calls undo too [#24685] */ ED_space_image_uv_sculpt_update(CTX_wm_manager(C), toolsettings); @@ -567,18 +568,18 @@ void OBJECT_OT_editmode_toggle(wmOperatorType *ot) ot->poll = editmode_toggle_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* *************************** */ static int posemode_exec(bContext *C, wmOperator *UNUSED(op)) { - Base *base= CTX_data_active_base(C); + Base *base = CTX_data_active_base(C); - if (base->object->type==OB_ARMATURE) { - if (base->object==CTX_data_edit_object(C)) { - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + if (base->object->type == OB_ARMATURE) { + if (base->object == CTX_data_edit_object(C)) { + ED_object_exit_editmode(C, EM_FREEDATA | EM_DO_UNDO); ED_armature_enter_posemode(C, base); } else if (base->object->mode & OB_MODE_POSE) @@ -604,7 +605,7 @@ void OBJECT_OT_posemode_toggle(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flag */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) @@ -612,53 +613,53 @@ static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) //XXX no longer used - to be removed - replaced by game_properties_copy_exec bProperty *prop; Base *base; - int nr, tot=0; + int nr, tot = 0; char *str; - prop= ob->prop.first; + prop = ob->prop.first; while (prop) { tot++; - prop= prop->next; + prop = prop->next; } - str= MEM_callocN(50 + 33*tot, "copymenu prop"); + str = MEM_callocN(50 + 33 * tot, "copymenu prop"); if (tot) strcpy(str, "Copy Property %t|Replace All|Merge All|%l"); else strcpy(str, "Copy Property %t|Clear All (no properties on active)"); - tot= 0; - prop= ob->prop.first; + tot = 0; + prop = ob->prop.first; while (prop) { tot++; strcat(str, "|"); strcat(str, prop->name); - prop= prop->next; + prop = prop->next; } - nr= pupmenu(str); + nr = pupmenu(str); - if ( nr==1 || nr==2 ) { - for (base= FIRSTBASE; base; base= base->next) { - if ((base != BASACT) &&(TESTBASELIB(v3d, base))) { - if (nr==1) { /* replace */ - copy_properties( &base->object->prop, &ob->prop ); + if (nr == 1 || nr == 2) { + for (base = FIRSTBASE; base; base = base->next) { + if ((base != BASACT) && (TESTBASELIB(v3d, base))) { + if (nr == 1) { /* replace */ + copy_properties(&base->object->prop, &ob->prop); } else { - for (prop = ob->prop.first; prop; prop= prop->next ) { + for (prop = ob->prop.first; prop; prop = prop->next) { set_ob_property(base->object, prop); } } } } } - else if (nr>0) { - prop = BLI_findlink(&ob->prop, nr-4); /* account for first 3 menu items & menu index starting at 1*/ + else if (nr > 0) { + prop = BLI_findlink(&ob->prop, nr - 4); /* account for first 3 menu items & menu index starting at 1*/ if (prop) { - for (base= FIRSTBASE; base; base= base->next) { - if ((base != BASACT) &&(TESTBASELIB(v3d, base))) { + for (base = FIRSTBASE; base; base = base->next) { + if ((base != BASACT) && (TESTBASELIB(v3d, base))) { set_ob_property(base->object, prop); } } @@ -673,7 +674,7 @@ static void copymenu_logicbricks(Scene *scene, View3D *v3d, Object *ob) //XXX no longer used - to be removed - replaced by logicbricks_copy_exec Base *base; - for (base= FIRSTBASE; base; base= base->next) { + for (base = FIRSTBASE; base; base = base->next) { if (base->object != ob) { if (TESTBASELIB(v3d, base)) { @@ -692,12 +693,12 @@ static void copymenu_logicbricks(Scene *scene, View3D *v3d, Object *ob) set_sca_new_poins_ob(base->object); /* some menu settings */ - base->object->scavisflag= ob->scavisflag; - base->object->scaflag= ob->scaflag; + base->object->scavisflag = ob->scavisflag; + base->object->scaflag = ob->scaflag; /* set the initial state */ - base->object->state= ob->state; - base->object->init_state= ob->init_state; + base->object->state = ob->state; + base->object->init_state = ob->init_state; } } } @@ -706,42 +707,42 @@ static void copymenu_logicbricks(Scene *scene, View3D *v3d, Object *ob) /* both pointers should exist */ static void copy_texture_space(Object *to, Object *ob) { - float *poin1= NULL, *poin2= NULL; - short texflag= 0; + float *poin1 = NULL, *poin2 = NULL; + short texflag = 0; - if (ob->type==OB_MESH) { - texflag= ((Mesh *)ob->data)->texflag; - poin2= ((Mesh *)ob->data)->loc; + if (ob->type == OB_MESH) { + texflag = ((Mesh *)ob->data)->texflag; + poin2 = ((Mesh *)ob->data)->loc; } else if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { - texflag= ((Curve *)ob->data)->texflag; - poin2= ((Curve *)ob->data)->loc; + texflag = ((Curve *)ob->data)->texflag; + poin2 = ((Curve *)ob->data)->loc; } - else if (ob->type==OB_MBALL) { - texflag= ((MetaBall *)ob->data)->texflag; - poin2= ((MetaBall *)ob->data)->loc; + else if (ob->type == OB_MBALL) { + texflag = ((MetaBall *)ob->data)->texflag; + poin2 = ((MetaBall *)ob->data)->loc; } else return; - if (to->type==OB_MESH) { - ((Mesh *)to->data)->texflag= texflag; - poin1= ((Mesh *)to->data)->loc; + if (to->type == OB_MESH) { + ((Mesh *)to->data)->texflag = texflag; + poin1 = ((Mesh *)to->data)->loc; } else if (ELEM3(to->type, OB_CURVE, OB_SURF, OB_FONT)) { - ((Curve *)to->data)->texflag= texflag; - poin1= ((Curve *)to->data)->loc; + ((Curve *)to->data)->texflag = texflag; + poin1 = ((Curve *)to->data)->loc; } - else if (to->type==OB_MBALL) { - ((MetaBall *)to->data)->texflag= texflag; - poin1= ((MetaBall *)to->data)->loc; + else if (to->type == OB_MBALL) { + ((MetaBall *)to->data)->texflag = texflag; + poin1 = ((MetaBall *)to->data)->loc; } else return; - memcpy(poin1, poin2, 9*sizeof(float)); /* this was noted in DNA_mesh, curve, mball */ + memcpy(poin1, poin2, 9 * sizeof(float)); /* this was noted in DNA_mesh, curve, mball */ - if (to->type==OB_MESH) { + if (to->type == OB_MESH) { /* pass */ } else if (to->type == OB_MBALL) { @@ -760,125 +761,125 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) Base *base; Curve *cu, *cu1; Nurb *nu; - int do_scene_sort= 0; + int do_scene_sort = 0; if (scene->id.lib) return; - if (!(ob=OBACT)) return; + if (!(ob = OBACT)) return; if (scene->obedit) { // XXX get from context /* obedit_copymenu(); */ return; } - if (event==9) { + if (event == 9) { copymenu_properties(scene, v3d, ob); return; } - else if (event==10) { + else if (event == 10) { copymenu_logicbricks(scene, v3d, ob); return; } - else if (event==24) { + else if (event == 24) { /* moved to object_link_modifiers */ /* copymenu_modifiers(bmain, scene, v3d, ob); */ return; } - for (base= FIRSTBASE; base; base= base->next) { + for (base = FIRSTBASE; base; base = base->next) { if (base != BASACT) { if (TESTBASELIB(v3d, base)) { base->object->recalc |= OB_RECALC_OB; - if (event==1) { /* loc */ + if (event == 1) { /* loc */ copy_v3_v3(base->object->loc, ob->loc); copy_v3_v3(base->object->dloc, ob->dloc); } - else if (event==2) { /* rot */ + else if (event == 2) { /* rot */ copy_v3_v3(base->object->rot, ob->rot); copy_v3_v3(base->object->drot, ob->drot); copy_qt_qt(base->object->quat, ob->quat); copy_qt_qt(base->object->dquat, ob->dquat); } - else if (event==3) { /* size */ + else if (event == 3) { /* size */ copy_v3_v3(base->object->size, ob->size); copy_v3_v3(base->object->dscale, ob->dscale); } - else if (event==4) { /* drawtype */ - base->object->dt= ob->dt; - base->object->dtx= ob->dtx; - base->object->empty_drawtype= ob->empty_drawtype; - base->object->empty_drawsize= ob->empty_drawsize; + else if (event == 4) { /* drawtype */ + base->object->dt = ob->dt; + base->object->dtx = ob->dtx; + base->object->empty_drawtype = ob->empty_drawtype; + base->object->empty_drawsize = ob->empty_drawsize; } - else if (event==5) { /* time offs */ - base->object->sf= ob->sf; + else if (event == 5) { /* time offs */ + base->object->sf = ob->sf; } - else if (event==6) { /* dupli */ - base->object->dupon= ob->dupon; - base->object->dupoff= ob->dupoff; - base->object->dupsta= ob->dupsta; - base->object->dupend= ob->dupend; + else if (event == 6) { /* dupli */ + base->object->dupon = ob->dupon; + base->object->dupoff = ob->dupoff; + base->object->dupsta = ob->dupsta; + base->object->dupend = ob->dupend; base->object->transflag &= ~OB_DUPLI; base->object->transflag |= (ob->transflag & OB_DUPLI); - base->object->dup_group= ob->dup_group; + base->object->dup_group = ob->dup_group; if (ob->dup_group) id_lib_extern(&ob->dup_group->id); } - else if (event==7) { /* mass */ - base->object->mass= ob->mass; + else if (event == 7) { /* mass */ + base->object->mass = ob->mass; } - else if (event==8) { /* damping */ - base->object->damping= ob->damping; - base->object->rdamping= ob->rdamping; + else if (event == 8) { /* damping */ + base->object->damping = ob->damping; + base->object->rdamping = ob->rdamping; } - else if (event==11) { /* all physical attributes */ + else if (event == 11) { /* all physical attributes */ base->object->gameflag = ob->gameflag; base->object->inertia = ob->inertia; base->object->formfactor = ob->formfactor; - base->object->damping= ob->damping; - base->object->rdamping= ob->rdamping; - base->object->min_vel= ob->min_vel; - base->object->max_vel= ob->max_vel; + base->object->damping = ob->damping; + base->object->rdamping = ob->rdamping; + base->object->min_vel = ob->min_vel; + base->object->max_vel = ob->max_vel; if (ob->gameflag & OB_BOUNDS) { base->object->collision_boundtype = ob->collision_boundtype; } - base->object->margin= ob->margin; - base->object->bsoft= copy_bulletsoftbody(ob->bsoft); + base->object->margin = ob->margin; + base->object->bsoft = copy_bulletsoftbody(ob->bsoft); } - else if (event==17) { /* tex space */ + else if (event == 17) { /* tex space */ copy_texture_space(base->object, ob); } - else if (event==18) { /* font settings */ + else if (event == 18) { /* font settings */ - if (base->object->type==ob->type) { - cu= ob->data; - cu1= base->object->data; - - cu1->spacemode= cu->spacemode; - cu1->spacing= cu->spacing; - cu1->linedist= cu->linedist; - cu1->shear= cu->shear; - cu1->fsize= cu->fsize; - cu1->xof= cu->xof; - cu1->yof= cu->yof; - cu1->textoncurve= cu->textoncurve; - cu1->wordspace= cu->wordspace; - cu1->ulpos= cu->ulpos; - cu1->ulheight= cu->ulheight; + if (base->object->type == ob->type) { + cu = ob->data; + cu1 = base->object->data; + + cu1->spacemode = cu->spacemode; + cu1->spacing = cu->spacing; + cu1->linedist = cu->linedist; + cu1->shear = cu->shear; + cu1->fsize = cu->fsize; + cu1->xof = cu->xof; + cu1->yof = cu->yof; + cu1->textoncurve = cu->textoncurve; + cu1->wordspace = cu->wordspace; + cu1->ulpos = cu->ulpos; + cu1->ulheight = cu->ulheight; if (cu1->vfont) cu1->vfont->id.us--; - cu1->vfont= cu->vfont; + cu1->vfont = cu->vfont; id_us_plus((ID *)cu1->vfont); if (cu1->vfontb) cu1->vfontb->id.us--; - cu1->vfontb= cu->vfontb; + cu1->vfontb = cu->vfontb; id_us_plus((ID *)cu1->vfontb); if (cu1->vfonti) cu1->vfonti->id.us--; - cu1->vfonti= cu->vfonti; + cu1->vfonti = cu->vfonti; id_us_plus((ID *)cu1->vfonti); if (cu1->vfontbi) cu1->vfontbi->id.us--; - cu1->vfontbi= cu->vfontbi; + cu1->vfontbi = cu->vfontbi; id_us_plus((ID *)cu1->vfontbi); BKE_text_to_curve(bmain, scene, base->object, 0); /* needed? */ @@ -889,43 +890,43 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) base->object->recalc |= OB_RECALC_DATA; } } - else if (event==19) { /* bevel settings */ + else if (event == 19) { /* bevel settings */ if (ELEM(base->object->type, OB_CURVE, OB_FONT)) { - cu= ob->data; - cu1= base->object->data; + cu = ob->data; + cu1 = base->object->data; - cu1->bevobj= cu->bevobj; - cu1->taperobj= cu->taperobj; - cu1->width= cu->width; - cu1->bevresol= cu->bevresol; - cu1->ext1= cu->ext1; - cu1->ext2= cu->ext2; + cu1->bevobj = cu->bevobj; + cu1->taperobj = cu->taperobj; + cu1->width = cu->width; + cu1->bevresol = cu->bevresol; + cu1->ext1 = cu->ext1; + cu1->ext2 = cu->ext2; base->object->recalc |= OB_RECALC_DATA; } } - else if (event==25) { /* curve resolution */ + else if (event == 25) { /* curve resolution */ if (ELEM(base->object->type, OB_CURVE, OB_FONT)) { - cu= ob->data; - cu1= base->object->data; + cu = ob->data; + cu1 = base->object->data; - cu1->resolu= cu->resolu; - cu1->resolu_ren= cu->resolu_ren; + cu1->resolu = cu->resolu; + cu1->resolu_ren = cu->resolu_ren; - nu= cu1->nurb.first; + nu = cu1->nurb.first; while (nu) { - nu->resolu= cu1->resolu; - nu= nu->next; + nu->resolu = cu1->resolu; + nu = nu->next; } base->object->recalc |= OB_RECALC_DATA; } } - else if (event==21) { - if (base->object->type==OB_MESH) { + else if (event == 21) { + if (base->object->type == OB_MESH) { ModifierData *md = modifiers_findByType(ob, eModifierType_Subsurf); if (md) { @@ -941,42 +942,42 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) } } } - else if (event==22) { + else if (event == 22) { /* Copy the constraint channels over */ copy_constraints(&base->object->constraints, &ob->constraints, TRUE); - do_scene_sort= 1; + do_scene_sort = 1; } - else if (event==23) { - base->object->softflag= ob->softflag; + else if (event == 23) { + base->object->softflag = ob->softflag; if (base->object->soft) sbFree(base->object->soft); - base->object->soft= copy_softbody(ob->soft); + base->object->soft = copy_softbody(ob->soft); if (!modifiers_findByType(base->object, eModifierType_Softbody)) { BLI_addhead(&base->object->modifiers, modifier_new(eModifierType_Softbody)); } } - else if (event==26) { + else if (event == 26) { #if 0 // XXX old animation system copy_nlastrips(&base->object->nlastrips, &ob->nlastrips); #endif // XXX old animation system } - else if (event==27) { /* autosmooth */ - if (base->object->type==OB_MESH) { - Mesh *me= ob->data; - Mesh *cme= base->object->data; - cme->smoothresh= me->smoothresh; + else if (event == 27) { /* autosmooth */ + if (base->object->type == OB_MESH) { + Mesh *me = ob->data; + Mesh *cme = base->object->data; + cme->smoothresh = me->smoothresh; if (me->flag & ME_AUTOSMOOTH) cme->flag |= ME_AUTOSMOOTH; else cme->flag &= ~ME_AUTOSMOOTH; } } - else if (event==28) { /* UV orco */ + else if (event == 28) { /* UV orco */ if (ELEM(base->object->type, OB_CURVE, OB_SURF)) { - cu= ob->data; - cu1= base->object->data; + cu = ob->data; + cu1 = base->object->data; if (cu->flag & CU_UV_ORCO) cu1->flag |= CU_UV_ORCO; @@ -984,13 +985,13 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) cu1->flag &= ~CU_UV_ORCO; } } - else if (event==29) { /* protected bits */ - base->object->protectflag= ob->protectflag; + else if (event == 29) { /* protected bits */ + base->object->protectflag = ob->protectflag; } - else if (event==30) { /* index object */ - base->object->index= ob->index; + else if (event == 30) { /* index object */ + base->object->index = ob->index; } - else if (event==31) { /* object color */ + else if (event == 31) { /* object color */ copy_v4_v4(base->object->col, ob->col); } } @@ -1003,13 +1004,13 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) DAG_ids_flush_update(bmain, 0); } -static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(copy_attr_menu) (Main * bmain, Scene * scene, View3D * v3d) { Object *ob; short event; char str[512]; - if (!(ob=OBACT)) return; + if (!(ob = OBACT)) return; if (scene->obedit) { // XXX get from context // if (ob->type == OB_MESH) @@ -1028,8 +1029,8 @@ static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v "Time Offset%x5|Dupli%x6|Object Color%x31|%l|Mass%x7|Damping%x8|All Physical Attributes%x11|Properties%x9|" "Logic Bricks%x10|Protected Transform%x29|%l"); - strcat (str, "|Object Constraints%x22"); - strcat (str, "|NLA Strips%x26"); + strcat(str, "|Object Constraints%x22"); + strcat(str, "|NLA Strips%x26"); // XXX if (OB_TYPE_SUPPORT_MATERIAL(ob->type)) { // strcat(str, "|Texture Space%x17"); @@ -1039,10 +1040,10 @@ static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v if (ob->type == OB_CURVE) strcat(str, "|Bevel Settings%x19|UV Orco%x28"); if ((ob->type == OB_FONT) || (ob->type == OB_CURVE)) { - strcat(str, "|Curve Resolution%x25"); + strcat(str, "|Curve Resolution%x25"); } - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { strcat(str, "|Subsurf Settings%x21|AutoSmooth%x27"); } @@ -1050,12 +1051,12 @@ static void UNUSED_FUNCTION(copy_attr_menu)(Main *bmain, Scene *scene, View3D *v strcat(str, "|Pass Index%x30"); - if (ob->type==OB_MESH || ob->type==OB_CURVE || ob->type==OB_LATTICE || ob->type==OB_SURF) { + if (ob->type == OB_MESH || ob->type == OB_CURVE || ob->type == OB_LATTICE || ob->type == OB_SURF) { strcat(str, "|Modifiers ...%x24"); } - event= pupmenu(str); - if (event<= 0) return; + event = pupmenu(str); + if (event <= 0) return; copy_attr(bmain, scene, v3d, event); } @@ -1074,7 +1075,7 @@ static int forcefield_toggle_exec(bContext *C, wmOperator *UNUSED(op)) else ob->pd->forcefield = 0; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL); return OPERATOR_FINISHED; } @@ -1092,7 +1093,7 @@ void OBJECT_OT_forcefield_toggle(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* ********************************************** */ @@ -1108,7 +1109,7 @@ void ED_objects_recalculate_paths(bContext *C, Scene *scene) ListBase targets = {NULL, NULL}; /* loop over objects in scene */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { /* set flag to force recalc, then grab the relevant bones to target */ ob->avs.recalc |= ANIMVIZ_RECALC_PATHS; animviz_get_object_motionpaths(ob, &targets); @@ -1123,12 +1124,12 @@ void ED_objects_recalculate_paths(bContext *C, Scene *scene) /* For the object with pose/action: create path curves for selected bones * This recalculates the WHOLE path within the pchan->pathsf and pchan->pathef range */ -static int object_calculate_paths_exec (bContext *C, wmOperator *op) +static int object_calculate_paths_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); /* set up path data for bones being calculated */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { /* verify makes sure that the selected bone has a bone with the appropriate settings */ animviz_verify_motionpaths(op->reports, scene, ob, NULL); @@ -1140,12 +1141,12 @@ static int object_calculate_paths_exec (bContext *C, wmOperator *op) ED_objects_recalculate_paths(C, scene); /* notifiers for updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_POSE, NULL); return OPERATOR_FINISHED; } -void OBJECT_OT_paths_calculate (wmOperatorType *ot) +void OBJECT_OT_paths_calculate(wmOperatorType *ot) { /* identifiers */ ot->name = "Calculate Object Paths"; @@ -1157,7 +1158,7 @@ void OBJECT_OT_paths_calculate (wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* --------- */ @@ -1166,11 +1167,11 @@ void OBJECT_OT_paths_calculate (wmOperatorType *ot) void ED_objects_clear_paths(bContext *C) { /* loop over objects in scene */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->mpath) { animviz_free_motionpath(ob->mpath); - ob->mpath= NULL; + ob->mpath = NULL; ob->avs.path_bakeflag &= ~MOTIONPATH_BAKE_HAS_PATHS; } } @@ -1178,18 +1179,18 @@ void ED_objects_clear_paths(bContext *C) } /* operator callback for this */ -static int object_clear_paths_exec (bContext *C, wmOperator *UNUSED(op)) +static int object_clear_paths_exec(bContext *C, wmOperator *UNUSED(op)) { /* use the backend function for this */ ED_objects_clear_paths(C); /* notifiers for updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_POSE, NULL); return OPERATOR_FINISHED; } -void OBJECT_OT_paths_clear (wmOperatorType *ot) +void OBJECT_OT_paths_clear(wmOperatorType *ot) { /* identifiers */ ot->name = "Clear Object Paths"; @@ -1201,7 +1202,7 @@ void OBJECT_OT_paths_clear (wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } @@ -1211,36 +1212,36 @@ static int shade_smooth_exec(bContext *C, wmOperator *op) { Curve *cu; Nurb *nu; - int clear= (strcmp(op->idname, "OBJECT_OT_shade_flat") == 0); - int done= 0; + int clear = (strcmp(op->idname, "OBJECT_OT_shade_flat") == 0); + int done = 0; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { mesh_set_smooth_flag(ob, !clear); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); - done= 1; + done = 1; } else if (ELEM(ob->type, OB_SURF, OB_CURVE)) { - cu= ob->data; + cu = ob->data; - for (nu=cu->nurb.first; nu; nu=nu->next) { + for (nu = cu->nurb.first; nu; nu = nu->next) { if (!clear) nu->flag |= ME_SMOOTH; else nu->flag &= ~ME_SMOOTH; } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); - done= 1; + done = 1; } } CTX_DATA_END; - return (done)? OPERATOR_FINISHED: OPERATOR_CANCELLED; + return (done) ? OPERATOR_FINISHED : OPERATOR_CANCELLED; } static int shade_poll(bContext *C) @@ -1260,7 +1261,7 @@ void OBJECT_OT_shade_flat(wmOperatorType *ot) ot->exec = shade_smooth_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } void OBJECT_OT_shade_smooth(wmOperatorType *ot) @@ -1275,12 +1276,12 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) ot->exec = shade_smooth_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* ********************** */ -static void UNUSED_FUNCTION(image_aspect)(Scene *scene, View3D *v3d) +static void UNUSED_FUNCTION(image_aspect) (Scene * scene, View3D * v3d) { /* all selected objects with an image map: scale in image aspect */ Base *base; @@ -1290,42 +1291,42 @@ static void UNUSED_FUNCTION(image_aspect)(Scene *scene, View3D *v3d) float x, y, space; int a, b, done; - if (scene->obedit) return; // XXX get from context + if (scene->obedit) return; // XXX get from context if (scene->id.lib) return; - for (base= FIRSTBASE; base; base= base->next) { + for (base = FIRSTBASE; base; base = base->next) { if (TESTBASELIB(v3d, base)) { - ob= base->object; - done= 0; + ob = base->object; + done = 0; - for (a=1; a<=ob->totcol; a++) { - ma= give_current_material(ob, a); + for (a = 1; a <= ob->totcol; a++) { + ma = give_current_material(ob, a); if (ma) { - for (b=0; bmtex[b] && ma->mtex[b]->tex) { - tex= ma->mtex[b]->tex; - if (tex->type==TEX_IMAGE && tex->ima) { - ImBuf *ibuf= BKE_image_get_ibuf(tex->ima, NULL); + tex = ma->mtex[b]->tex; + if (tex->type == TEX_IMAGE && tex->ima) { + ImBuf *ibuf = BKE_image_get_ibuf(tex->ima, NULL); /* texturespace */ - space= 1.0; - if (ob->type==OB_MESH) { + space = 1.0; + if (ob->type == OB_MESH) { float size[3]; mesh_get_texspace(ob->data, NULL, NULL, size); - space= size[0]/size[1]; + space = size[0] / size[1]; } else if (ELEM3(ob->type, OB_CURVE, OB_FONT, OB_SURF)) { - Curve *cu= ob->data; - space= cu->size[0]/cu->size[1]; + Curve *cu = ob->data; + space = cu->size[0] / cu->size[1]; } - x= ibuf->x/space; - y= ibuf->y; + x = ibuf->x / space; + y = ibuf->y; - if (x>y) ob->size[0]= ob->size[1]*x/y; - else ob->size[1]= ob->size[0]*y/x; + if (x > y) ob->size[0] = ob->size[1] * x / y; + else ob->size[1] = ob->size[0] * y / x; - done= 1; + done = 1; DAG_id_tag_update(&ob->id, OB_RECALC_OB); } } @@ -1343,9 +1344,9 @@ static void UNUSED_FUNCTION(image_aspect)(Scene *scene, View3D *v3d) static EnumPropertyItem *object_mode_set_itemsf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free) { EnumPropertyItem *input = object_mode_items; - EnumPropertyItem *item= NULL; + EnumPropertyItem *item = NULL; Object *ob; - int totitem= 0; + int totitem = 0; if (!C) /* needed for docs */ return object_mode_items; @@ -1368,7 +1369,7 @@ static EnumPropertyItem *object_mode_set_itemsf(bContext *C, PointerRNA *UNUSED( RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } @@ -1403,23 +1404,23 @@ static int object_mode_set_compat(bContext *UNUSED(C), wmOperator *op, Object *o return 1; switch (ob->type) { - case OB_MESH: - if (mode & (OB_MODE_EDIT|OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_PARTICLE_EDIT)) - return 1; - return 0; - case OB_CURVE: - case OB_SURF: - case OB_FONT: - case OB_MBALL: - if (mode & (OB_MODE_EDIT)) - return 1; - return 0; - case OB_LATTICE: - if (mode & (OB_MODE_EDIT|OB_MODE_WEIGHT_PAINT)) - return 1; - case OB_ARMATURE: - if (mode & (OB_MODE_EDIT|OB_MODE_POSE)) - return 1; + case OB_MESH: + if (mode & (OB_MODE_EDIT | OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT | OB_MODE_PARTICLE_EDIT)) + return 1; + return 0; + case OB_CURVE: + case OB_SURF: + case OB_FONT: + case OB_MBALL: + if (mode & (OB_MODE_EDIT)) + return 1; + return 0; + case OB_LATTICE: + if (mode & (OB_MODE_EDIT | OB_MODE_WEIGHT_PAINT)) + return 1; + case OB_ARMATURE: + if (mode & (OB_MODE_EDIT | OB_MODE_POSE)) + return 1; } } @@ -1428,7 +1429,7 @@ static int object_mode_set_compat(bContext *UNUSED(C), wmOperator *op, Object *o static int object_mode_set_exec(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); ObjectMode mode = RNA_enum_get(op->ptr, "mode"); ObjectMode restore_mode = (ob) ? ob->mode : OB_MODE_OBJECT; int toggle = RNA_boolean_get(op->ptr, "toggle"); @@ -1475,7 +1476,7 @@ void OBJECT_OT_mode_set(wmOperatorType *ot) /* flags */ ot->flag = 0; /* no register/undo here, leave it to operators being called */ - prop= RNA_def_enum(ot->srna, "mode", object_mode_items, OB_MODE_OBJECT, "Mode", ""); + prop = RNA_def_enum(ot->srna, "mode", object_mode_items, OB_MODE_OBJECT, "Mode", ""); RNA_def_enum_funcs(prop, object_mode_set_itemsf); RNA_def_boolean(ot->srna, "toggle", 0, "Toggle", ""); @@ -1505,12 +1506,12 @@ void ED_object_toggle_modes(bContext *C, int mode) static int game_property_new(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); bProperty *prop; char name[MAX_NAME]; - int type= RNA_enum_get(op->ptr, "type"); + int type = RNA_enum_get(op->ptr, "type"); - prop= new_property(type); + prop = new_property(type); BLI_addtail(&ob->prop, prop); RNA_string_get(op->ptr, "name", name); @@ -1537,7 +1538,7 @@ void OBJECT_OT_game_property_new(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", gameproperty_type_items, GPROP_FLOAT, "Type", "Type of game property to add"); RNA_def_string(ot->srna, "name", "", MAX_NAME, "Name", "Name of the game property to add"); @@ -1545,14 +1546,14 @@ void OBJECT_OT_game_property_new(wmOperatorType *ot) static int game_property_remove(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); bProperty *prop; - int index= RNA_int_get(op->ptr, "index"); + int index = RNA_int_get(op->ptr, "index"); if (!ob) return OPERATOR_CANCELLED; - prop= BLI_findlink(&ob->prop, index); + prop = BLI_findlink(&ob->prop, index); if (prop) { BLI_remlink(&ob->prop, prop); @@ -1578,16 +1579,16 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Property index to remove ", 0, INT_MAX); } -#define COPY_PROPERTIES_REPLACE 1 -#define COPY_PROPERTIES_MERGE 2 -#define COPY_PROPERTIES_COPY 3 +#define COPY_PROPERTIES_REPLACE 1 +#define COPY_PROPERTIES_MERGE 2 +#define COPY_PROPERTIES_COPY 3 -static EnumPropertyItem game_properties_copy_operations[] ={ +static EnumPropertyItem game_properties_copy_operations[] = { {COPY_PROPERTIES_REPLACE, "REPLACE", 0, "Replace Properties", ""}, {COPY_PROPERTIES_MERGE, "MERGE", 0, "Merge Properties", ""}, {COPY_PROPERTIES_COPY, "COPY", 0, "Copy a Property", ""}, @@ -1598,40 +1599,40 @@ static EnumPropertyItem gameprops_items[]= { static EnumPropertyItem *gameprops_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free) { - Object *ob= ED_object_active_context(C); + Object *ob = ED_object_active_context(C); EnumPropertyItem tmp = {0, "", 0, "", ""}; - EnumPropertyItem *item= NULL; + EnumPropertyItem *item = NULL; bProperty *prop; - int a, totitem= 0; + int a, totitem = 0; if (!ob) return gameprops_items; - for (a=1, prop= ob->prop.first; prop; prop=prop->next, a++) { - tmp.value= a; - tmp.identifier= prop->name; - tmp.name= prop->name; + for (a = 1, prop = ob->prop.first; prop; prop = prop->next, a++) { + tmp.value = a; + tmp.identifier = prop->name; + tmp.name = prop->name; RNA_enum_item_add(&item, &totitem, &tmp); } RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } static int game_property_copy_exec(bContext *C, wmOperator *op) { - Object *ob=ED_object_active_context(C); + Object *ob = ED_object_active_context(C); bProperty *prop; int type = RNA_enum_get(op->ptr, "operation"); - int propid= RNA_enum_get(op->ptr, "property"); + int propid = RNA_enum_get(op->ptr, "property"); if (propid > 0) { /* copy */ - prop = BLI_findlink(&ob->prop, propid-1); + prop = BLI_findlink(&ob->prop, propid - 1); if (prop) { - CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { if (ob != ob_iter) set_ob_property(ob_iter, prop); } CTX_DATA_END; @@ -1639,14 +1640,14 @@ static int game_property_copy_exec(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { if (ob != ob_iter) { if (type == COPY_PROPERTIES_REPLACE) copy_properties(&ob_iter->prop, &ob->prop); /* merge - the default when calling with no argument */ else - for (prop = ob->prop.first; prop; prop= prop->next) + for (prop = ob->prop.first; prop; prop = prop->next) set_ob_property(ob_iter, prop); } } @@ -1668,17 +1669,17 @@ void OBJECT_OT_game_property_copy(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "operation", game_properties_copy_operations, 3, "Operation", ""); - prop=RNA_def_enum(ot->srna, "property", gameprops_items, 0, "Property", "Properties to copy"); + prop = RNA_def_enum(ot->srna, "property", gameprops_items, 0, "Property", "Properties to copy"); RNA_def_enum_funcs(prop, gameprops_itemf); ot->prop = prop; } static int game_property_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { free_properties(&ob_iter->prop); } CTX_DATA_END; @@ -1697,16 +1698,16 @@ void OBJECT_OT_game_property_clear(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /************************ Copy Logic Bricks ***********************/ static int logicbricks_copy_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob=ED_object_active_context(C); + Object *ob = ED_object_active_context(C); - CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { if (ob != ob_iter) { /* first: free all logic */ free_sensors(&ob_iter->sensors); @@ -1723,16 +1724,16 @@ static int logicbricks_copy_exec(bContext *C, wmOperator *UNUSED(op)) set_sca_new_poins_ob(ob_iter); /* some menu settings */ - ob_iter->scavisflag= ob->scavisflag; - ob_iter->scaflag= ob->scaflag; + ob_iter->scavisflag = ob->scavisflag; + ob_iter->scaflag = ob->scaflag; /* set the initial state */ - ob_iter->state= ob->state; - ob_iter->init_state= ob->init_state; + ob_iter->state = ob->state; + ob_iter->init_state = ob->init_state; - if (ob_iter->totcol==ob->totcol) { - ob_iter->actcol= ob->actcol; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter); + if (ob_iter->totcol == ob->totcol) { + ob_iter->actcol = ob->actcol; + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob_iter); } } } @@ -1755,14 +1756,14 @@ void OBJECT_OT_logic_bricks_copy(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int game_physics_copy_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob=ED_object_active_context(C); + Object *ob = ED_object_active_context(C); - CTX_DATA_BEGIN (C, Object*, ob_iter, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_iter, selected_editable_objects) { if (ob != ob_iter) { ob_iter->gameflag = ob->gameflag; ob_iter->gameflag2 = ob->gameflag2; @@ -1782,7 +1783,7 @@ static int game_physics_copy_exec(bContext *C, wmOperator *UNUSED(op)) ob_iter->bsoft = copy_bulletsoftbody(ob->bsoft); if (ob->restrictflag & OB_RESTRICT_RENDER) ob_iter->restrictflag |= OB_RESTRICT_RENDER; - else + else ob_iter->restrictflag &= ~OB_RESTRICT_RENDER; } } @@ -1803,5 +1804,5 @@ void OBJECT_OT_game_physics_copy(struct wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 97367b2e340..702671d8d9b 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -61,9 +61,9 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *ob= OBACT; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *ob = OBACT; Group *group; int ok = 0, cycle = 0; @@ -72,10 +72,10 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) /* linking to same group requires its own loop so we can avoid * looking up the active objects groups each time */ - for (group= bmain->group.first; group; group=group->id.next) { + for (group = bmain->group.first; group; group = group->id.next) { if (object_in_group(ob, group)) { /* Assign groups to selected objects */ - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { if (base->object->dup_group != group) add_to_group(group, base->object, scene, base); else @@ -91,7 +91,7 @@ static int objects_add_active_exec(bContext *C, wmOperator *op) BKE_report(op->reports, RPT_WARNING, "Skipped some groups because of cycle detected"); DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_GROUP|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_GROUP | NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -108,14 +108,14 @@ void GROUP_OT_objects_add_active(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int objects_remove_active_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *ob= OBACT; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *ob = OBACT; Group *group; int ok = 0; @@ -124,10 +124,10 @@ static int objects_remove_active_exec(bContext *C, wmOperator *op) /* linking to same group requires its own loop so we can avoid * looking up the active objects groups each time */ - for (group= bmain->group.first; group; group=group->id.next) { + for (group = bmain->group.first; group; group = group->id.next) { if (object_in_group(ob, group)) { /* Assign groups to selected objects */ - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { rem_from_group(group, base->object, scene, base); ok = 1; } @@ -138,7 +138,7 @@ static int objects_remove_active_exec(bContext *C, wmOperator *op) if (!ok) BKE_report(op->reports, RPT_ERROR, "Active Object contains no groups"); DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_GROUP|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_GROUP | NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -155,16 +155,16 @@ void GROUP_OT_objects_remove_active(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int group_objects_remove_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Group *group= NULL; + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Group *group = NULL; - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { group = NULL; while ((group = find_group(base->object, group))) rem_from_group(group, base->object, scene, base); @@ -172,7 +172,7 @@ static int group_objects_remove_exec(bContext *C, wmOperator *UNUSED(op)) CTX_DATA_END; DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_GROUP|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_GROUP | NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -189,27 +189,27 @@ void GROUP_OT_objects_remove(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int group_create_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Group *group= NULL; - char name[MAX_ID_NAME-2]; /* id name */ + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Group *group = NULL; + char name[MAX_ID_NAME - 2]; /* id name */ RNA_string_get(op->ptr, "name", name); - group= add_group(name); + group = add_group(name); - CTX_DATA_BEGIN (C, Base*, base, selected_editable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { add_to_group(group, base->object, scene, base); } CTX_DATA_END; DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_GROUP|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_GROUP | NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -226,26 +226,26 @@ void GROUP_OT_create(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - RNA_def_string(ot->srna, "name", "Group", MAX_ID_NAME-2, "Name", "Name of the new group"); + RNA_def_string(ot->srna, "name", "Group", MAX_ID_NAME - 2, "Name", "Name of the new group"); } /****************** properties window operators *********************/ static int group_add_exec(bContext *C, wmOperator *UNUSED(op)) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_context(C); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_context(C); Group *group; if (ob == NULL) return OPERATOR_CANCELLED; - group= add_group("Group"); + group = add_group("Group"); add_to_group(group, ob, scene, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -261,21 +261,21 @@ void OBJECT_OT_group_add(wmOperatorType *ot) ot->exec = group_add_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int group_link_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_context(C); - Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_context(C); + Group *group = BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); if (ELEM(NULL, ob, group)) return OPERATOR_CANCELLED; add_to_group(group, ob, scene, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -294,26 +294,26 @@ void OBJECT_OT_group_link(wmOperatorType *ot) ot->invoke = WM_enum_search_invoke; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); + prop = RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); RNA_def_enum_funcs(prop, RNA_group_local_itemf); ot->prop = prop; } static int group_remove_exec(bContext *C, wmOperator *UNUSED(op)) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_context(C); - Group *group= CTX_data_pointer_get_type(C, "group", &RNA_Group).data; + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_context(C); + Group *group = CTX_data_pointer_get_type(C, "group", &RNA_Group).data; if (!ob || !group) return OPERATOR_CANCELLED; rem_from_group(group, ob, scene, NULL); /* base will be used if found */ - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -328,6 +328,6 @@ void OBJECT_OT_group_remove(wmOperatorType *ot) ot->exec = group_remove_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 495f0b40802..4ffc3e8c19f 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -76,27 +76,27 @@ static int return_editmesh_indexar(BMEditMesh *em, int *tot, int **indexar, floa { BMVert *eve; BMIter iter; - int *index, nr, totvert=0; + int *index, nr, totvert = 0; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) totvert++; } - if (totvert==0) return 0; + if (totvert == 0) return 0; - *indexar= index= MEM_mallocN(4*totvert, "hook indexar"); - *tot= totvert; - nr= 0; + *indexar = index = MEM_mallocN(4 * totvert, "hook indexar"); + *tot = totvert; + nr = 0; zero_v3(cent); BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { - *index= nr; index++; + *index = nr; index++; add_v3_v3(cent, eve->co); } nr++; } - mul_v3_fl(cent, 1.0f/(float)totvert); + mul_v3_fl(cent, 1.0f / (float)totvert); return totvert; } @@ -106,8 +106,8 @@ static int return_editmesh_vgroup(Object *obedit, BMEditMesh *em, char *name, fl zero_v3(cent); if (obedit->actdef) { - const int defgrp_index= obedit->actdef-1; - int totvert=0; + const int defgrp_index = obedit->actdef - 1; + int totvert = 0; MDeformVert *dvert; BMVert *eve; @@ -115,7 +115,7 @@ static int return_editmesh_vgroup(Object *obedit, BMEditMesh *em, char *name, fl /* find the vertices */ BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - dvert= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dvert = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); if (dvert) { if (defvert_find_weight(dvert, defgrp_index) > 0.0f) { @@ -127,7 +127,7 @@ static int return_editmesh_vgroup(Object *obedit, BMEditMesh *em, char *name, fl if (totvert) { bDeformGroup *dg = BLI_findlink(&obedit->defbase, defgrp_index); BLI_strncpy(name, dg->name, sizeof(dg->name)); - mul_v3_fl(cent, 1.0f/(float)totvert); + mul_v3_fl(cent, 1.0f / (float)totvert); return 1; } } @@ -137,19 +137,19 @@ static int return_editmesh_vgroup(Object *obedit, BMEditMesh *em, char *name, fl static void select_editbmesh_hook(Object *ob, HookModifierData *hmd) { - Mesh *me= ob->data; - BMEditMesh *em= me->edit_btmesh; + Mesh *me = ob->data; + BMEditMesh *em = me->edit_btmesh; BMVert *eve; BMIter iter; - int index=0, nr=0; + int index = 0, nr = 0; if (hmd->indexar == NULL) return; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - if (nr==hmd->indexar[index]) { + if (nr == hmd->indexar[index]) { BM_vert_select_set(em->bm, eve, TRUE); - if (index < hmd->totindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; @@ -161,31 +161,31 @@ static void select_editbmesh_hook(Object *ob, HookModifierData *hmd) static int return_editlattice_indexar(Lattice *editlatt, int *tot, int **indexar, float *cent) { BPoint *bp; - int *index, nr, totvert=0, a; + int *index, nr, totvert = 0, a; /* count */ - a= editlatt->pntsu*editlatt->pntsv*editlatt->pntsw; - bp= editlatt->def; + a = editlatt->pntsu * editlatt->pntsv * editlatt->pntsw; + bp = editlatt->def; while (a--) { if (bp->f1 & SELECT) { - if (bp->hide==0) totvert++; + if (bp->hide == 0) totvert++; } bp++; } - if (totvert==0) return 0; + if (totvert == 0) return 0; - *indexar= index= MEM_mallocN(4*totvert, "hook indexar"); - *tot= totvert; - nr= 0; + *indexar = index = MEM_mallocN(4 * totvert, "hook indexar"); + *tot = totvert; + nr = 0; zero_v3(cent); - a= editlatt->pntsu*editlatt->pntsv*editlatt->pntsw; - bp= editlatt->def; + a = editlatt->pntsu * editlatt->pntsv * editlatt->pntsw; + bp = editlatt->def; while (a--) { if (bp->f1 & SELECT) { - if (bp->hide==0) { - *index= nr; index++; + if (bp->hide == 0) { + *index = nr; index++; add_v3_v3(cent, bp->vec); } } @@ -193,25 +193,25 @@ static int return_editlattice_indexar(Lattice *editlatt, int *tot, int **indexar nr++; } - mul_v3_fl(cent, 1.0f/(float)totvert); + mul_v3_fl(cent, 1.0f / (float)totvert); return totvert; } static void select_editlattice_hook(Object *obedit, HookModifierData *hmd) { - Lattice *lt= obedit->data, *editlt; + Lattice *lt = obedit->data, *editlt; BPoint *bp; - int index=0, nr=0, a; + int index = 0, nr = 0, a; - editlt= lt->editlatt->latt; + editlt = lt->editlatt->latt; /* count */ - a= editlt->pntsu*editlt->pntsv*editlt->pntsw; - bp= editlt->def; + a = editlt->pntsu * editlt->pntsv * editlt->pntsw; + bp = editlt->def; while (a--) { - if (hmd->indexar[index]==nr) { + if (hmd->indexar[index] == nr) { bp->f1 |= SELECT; - if (index < hmd->totindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; bp++; @@ -220,16 +220,16 @@ static void select_editlattice_hook(Object *obedit, HookModifierData *hmd) static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, float *cent) { - ListBase *editnurb= object_editcurve_get(obedit); + ListBase *editnurb = object_editcurve_get(obedit); Nurb *nu; BPoint *bp; BezTriple *bezt; - int *index, a, nr, totvert=0; + int *index, a, nr, totvert = 0; - for (nu= editnurb->first; nu; nu= nu->next) { + for (nu = editnurb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { - bezt= nu->bezt; - a= nu->pntsu; + bezt = nu->bezt; + a = nu->pntsu; while (a--) { if (bezt->f1 & SELECT) totvert++; if (bezt->f2 & SELECT) totvert++; @@ -238,38 +238,38 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo } } else { - bp= nu->bp; - a= nu->pntsu*nu->pntsv; + bp = nu->bp; + a = nu->pntsu * nu->pntsv; while (a--) { if (bp->f1 & SELECT) totvert++; bp++; } } } - if (totvert==0) return 0; + if (totvert == 0) return 0; - *indexar= index= MEM_mallocN(4*totvert, "hook indexar"); - *tot= totvert; - nr= 0; + *indexar = index = MEM_mallocN(4 * totvert, "hook indexar"); + *tot = totvert; + nr = 0; zero_v3(cent); - for (nu= editnurb->first; nu; nu= nu->next) { + for (nu = editnurb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { - bezt= nu->bezt; - a= nu->pntsu; + bezt = nu->bezt; + a = nu->pntsu; while (a--) { if (bezt->f1 & SELECT) { - *index= nr; index++; + *index = nr; index++; add_v3_v3(cent, bezt->vec[0]); } nr++; if (bezt->f2 & SELECT) { - *index= nr; index++; + *index = nr; index++; add_v3_v3(cent, bezt->vec[1]); } nr++; if (bezt->f3 & SELECT) { - *index= nr; index++; + *index = nr; index++; add_v3_v3(cent, bezt->vec[2]); } nr++; @@ -277,11 +277,11 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo } } else { - bp= nu->bp; - a= nu->pntsu*nu->pntsv; + bp = nu->bp; + a = nu->pntsu * nu->pntsv; while (a--) { if (bp->f1 & SELECT) { - *index= nr; index++; + *index = nr; index++; add_v3_v3(cent, bp->vec); } nr++; @@ -290,21 +290,21 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo } } - mul_v3_fl(cent, 1.0f/(float)totvert); + mul_v3_fl(cent, 1.0f / (float)totvert); return totvert; } static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int **indexar, char *name, float *cent_r) { - *indexar= NULL; - *tot= 0; - name[0]= 0; + *indexar = NULL; + *tot = 0; + name[0] = 0; switch (obedit->type) { case OB_MESH: { - Mesh *me= obedit->data; + Mesh *me = obedit->data; BMEditMesh *em; @@ -314,7 +314,7 @@ static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int * em = me->edit_btmesh; /* check selected vertices first */ - if ( return_editmesh_indexar(em, tot, indexar, cent_r)) { + if (return_editmesh_indexar(em, tot, indexar, cent_r)) { return 1; } else { @@ -327,7 +327,7 @@ static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int * return return_editcurve_indexar(obedit, tot, indexar, cent_r); case OB_LATTICE: { - Lattice *lt= obedit->data; + Lattice *lt = obedit->data; return return_editlattice_indexar(lt->editlatt->latt, tot, indexar, cent_r); } default: @@ -337,30 +337,30 @@ static int object_hook_index_array(Scene *scene, Object *obedit, int *tot, int * static void select_editcurve_hook(Object *obedit, HookModifierData *hmd) { - ListBase *editnurb= object_editcurve_get(obedit); + ListBase *editnurb = object_editcurve_get(obedit); Nurb *nu; BPoint *bp; BezTriple *bezt; - int index=0, a, nr=0; + int index = 0, a, nr = 0; - for (nu= editnurb->first; nu; nu= nu->next) { + for (nu = editnurb->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { - bezt= nu->bezt; - a= nu->pntsu; + bezt = nu->bezt; + a = nu->pntsu; while (a--) { if (nr == hmd->indexar[index]) { bezt->f1 |= SELECT; - if (indextotindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; if (nr == hmd->indexar[index]) { bezt->f2 |= SELECT; - if (indextotindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; if (nr == hmd->indexar[index]) { bezt->f3 |= SELECT; - if (indextotindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; @@ -368,12 +368,12 @@ static void select_editcurve_hook(Object *obedit, HookModifierData *hmd) } } else { - bp= nu->bp; - a= nu->pntsu*nu->pntsv; + bp = nu->bp; + a = nu->pntsu * nu->pntsv; while (a--) { if (nr == hmd->indexar[index]) { bp->f1 |= SELECT; - if (indextotindex-1) index++; + if (index < hmd->totindex - 1) index++; } nr++; bp++; @@ -387,17 +387,17 @@ static void object_hook_select(Object *ob, HookModifierData *hmd) if (hmd->indexar == NULL) return; - if (ob->type==OB_MESH) select_editbmesh_hook(ob, hmd); - else if (ob->type==OB_LATTICE) select_editlattice_hook(ob, hmd); - else if (ob->type==OB_CURVE) select_editcurve_hook(ob, hmd); - else if (ob->type==OB_SURF) select_editcurve_hook(ob, hmd); + if (ob->type == OB_MESH) select_editbmesh_hook(ob, hmd); + else if (ob->type == OB_LATTICE) select_editlattice_hook(ob, hmd); + else if (ob->type == OB_CURVE) select_editcurve_hook(ob, hmd); + else if (ob->type == OB_SURF) select_editcurve_hook(ob, hmd); } /* special poll operators for hook operators */ // TODO: check for properties window modifier context too as alternative? static int hook_op_edit_poll(bContext *C) { - Object *obedit= CTX_data_edit_object(C); + Object *obedit = CTX_data_edit_object(C); if (obedit) { if (ED_operator_editmesh(C)) return 1; @@ -414,7 +414,7 @@ static Object *add_hook_object_new(Scene *scene, Object *obedit) Base *base, *basedit; Object *ob; - ob= add_object(scene, OB_EMPTY); + ob = add_object(scene, OB_EMPTY); basedit = object_in_scene(obedit, scene); base = object_in_scene(ob, scene); @@ -429,7 +429,7 @@ static Object *add_hook_object_new(Scene *scene, Object *obedit) static void add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *ob, int mode) { - ModifierData *md=NULL; + ModifierData *md = NULL; HookModifierData *hmd = NULL; float cent[3]; int tot, ok, *indexar; @@ -437,9 +437,9 @@ static void add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *o ok = object_hook_index_array(scene, obedit, &tot, &indexar, name, cent); - if (!ok) return; // XXX error("Requires selected vertices or active Vertex Group"); + if (!ok) return; // XXX error("Requires selected vertices or active Vertex Group"); - if (mode==OBJECT_ADDHOOK_NEWOB && !ob) { + if (mode == OBJECT_ADDHOOK_NEWOB && !ob) { ob = add_hook_object_new(scene, obedit); @@ -448,19 +448,19 @@ static void add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *o } md = obedit->modifiers.first; - while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) { + while (md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) { md = md->next; } - hmd = (HookModifierData*) modifier_new(eModifierType_Hook); + hmd = (HookModifierData *) modifier_new(eModifierType_Hook); BLI_insertlinkbefore(&obedit->modifiers, md, hmd); - BLI_snprintf(hmd->modifier.name, sizeof(hmd->modifier.name), "Hook-%s", ob->id.name+2); - modifier_unique_name(&obedit->modifiers, (ModifierData*)hmd); + BLI_snprintf(hmd->modifier.name, sizeof(hmd->modifier.name), "Hook-%s", ob->id.name + 2); + modifier_unique_name(&obedit->modifiers, (ModifierData *)hmd); - hmd->object= ob; - hmd->indexar= indexar; + hmd->object = ob; + hmd->indexar = indexar; copy_v3_v3(hmd->cent, cent); - hmd->totindex= tot; + hmd->totindex = tot; BLI_strncpy(hmd->name, name, sizeof(hmd->name)); /* matrix calculus */ @@ -478,12 +478,12 @@ static void add_hook_object(Main *bmain, Scene *scene, Object *obedit, Object *o static int object_add_hook_selob_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *obedit = CTX_data_edit_object(C); - Object *obsel=NULL; + Object *obsel = NULL; - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { if (ob != obedit) { obsel = ob; break; @@ -498,7 +498,7 @@ static int object_add_hook_selob_exec(bContext *C, wmOperator *op) add_hook_object(bmain, scene, obedit, obsel, OBJECT_ADDHOOK_SELOB); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -514,19 +514,19 @@ void OBJECT_OT_hook_add_selobj(wmOperatorType *ot) ot->poll = hook_op_edit_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_add_hook_newob_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *obedit = CTX_data_edit_object(C); add_hook_object(bmain, scene, obedit, NULL, OBJECT_ADDHOOK_NEWOB); - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, obedit); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, obedit); return OPERATOR_FINISHED; } @@ -542,14 +542,14 @@ void OBJECT_OT_hook_add_newobj(wmOperatorType *ot) ot->poll = hook_op_edit_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_hook_remove_exec(bContext *C, wmOperator *op) { - int num= RNA_enum_get(op->ptr, "modifier"); - Object *ob=NULL; - HookModifierData *hmd=NULL; + int num = RNA_enum_get(op->ptr, "modifier"); + Object *ob = NULL; + HookModifierData *hmd = NULL; ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); @@ -565,7 +565,7 @@ static int object_hook_remove_exec(bContext *C, wmOperator *op) modifier_free((ModifierData *)hmd); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -574,25 +574,25 @@ static EnumPropertyItem *hook_mod_itemf(bContext *C, PointerRNA *UNUSED(ptr), Pr { Object *ob = CTX_data_edit_object(C); EnumPropertyItem tmp = {0, "", 0, "", ""}; - EnumPropertyItem *item= NULL; + EnumPropertyItem *item = NULL; ModifierData *md = NULL; - int a, totitem= 0; + int a, totitem = 0; if (!ob) return DummyRNA_NULL_items; - for (a=0, md=ob->modifiers.first; md; md= md->next, a++) { - if (md->type==eModifierType_Hook) { - tmp.value= a; + for (a = 0, md = ob->modifiers.first; md; md = md->next, a++) { + if (md->type == eModifierType_Hook) { + tmp.value = a; tmp.icon = ICON_HOOK; - tmp.identifier= md->name; - tmp.name= md->name; + tmp.identifier = md->name; + tmp.name = md->name; RNA_enum_item_add(&item, &totitem, &tmp); } } RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } @@ -614,26 +614,26 @@ void OBJECT_OT_hook_remove(wmOperatorType *ot) /* flags */ /* this operator removes modifier which isn't stored in local undo stack, * so redoing it from redo panel gives totally weird results */ - ot->flag = /*OPTYPE_REGISTER|*/OPTYPE_UNDO; + ot->flag = /*OPTYPE_REGISTER|*/ OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove"); + prop = RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove"); RNA_def_enum_funcs(prop, hook_mod_itemf); ot->prop = prop; } static int object_hook_reset_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); - int num= RNA_enum_get(op->ptr, "modifier"); - Object *ob=NULL; - HookModifierData *hmd=NULL; + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); + int num = RNA_enum_get(op->ptr, "modifier"); + Object *ob = NULL; + HookModifierData *hmd = NULL; - if (ptr.data) { /* if modifier context is available, use that */ + if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; - hmd= ptr.data; + hmd = ptr.data; } - else { /* use the provided property */ + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -644,7 +644,7 @@ static int object_hook_reset_exec(bContext *C, wmOperator *op) /* reset functionality */ if (hmd->object) { - bPoseChannel *pchan= get_pose_channel(hmd->object->pose, hmd->subtarget); + bPoseChannel *pchan = get_pose_channel(hmd->object->pose, hmd->subtarget); if (hmd->subtarget[0] && pchan) { float imat[4][4], mat[4][4]; @@ -662,7 +662,7 @@ static int object_hook_reset_exec(bContext *C, wmOperator *op) } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -681,27 +681,27 @@ void OBJECT_OT_hook_reset(wmOperatorType *ot) ot->poll = hook_op_edit_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); + prop = RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); RNA_def_enum_funcs(prop, hook_mod_itemf); } static int object_hook_recenter_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); - int num= RNA_enum_get(op->ptr, "modifier"); - Object *ob=NULL; - HookModifierData *hmd=NULL; + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); + int num = RNA_enum_get(op->ptr, "modifier"); + Object *ob = NULL; + HookModifierData *hmd = NULL; Scene *scene = CTX_data_scene(C); float bmat[3][3], imat[3][3]; - if (ptr.data) { /* if modifier context is available, use that */ + if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; - hmd= ptr.data; + hmd = ptr.data; } - else { /* use the provided property */ + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -718,7 +718,7 @@ static int object_hook_recenter_exec(bContext *C, wmOperator *op) mul_m3_v3(imat, hmd->cent); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -737,29 +737,29 @@ void OBJECT_OT_hook_recenter(wmOperatorType *ot) ot->poll = hook_op_edit_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); + prop = RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); RNA_def_enum_funcs(prop, hook_mod_itemf); } static int object_hook_assign_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); - int num= RNA_enum_get(op->ptr, "modifier"); - Object *ob=NULL; - HookModifierData *hmd=NULL; + Scene *scene = CTX_data_scene(C); + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); + int num = RNA_enum_get(op->ptr, "modifier"); + Object *ob = NULL; + HookModifierData *hmd = NULL; float cent[3]; char name[MAX_NAME]; int *indexar, tot; - if (ptr.data) { /* if modifier context is available, use that */ + if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; - hmd= ptr.data; + hmd = ptr.data; } - else { /* use the provided property */ + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -778,11 +778,11 @@ static int object_hook_assign_exec(bContext *C, wmOperator *op) MEM_freeN(hmd->indexar); copy_v3_v3(hmd->cent, cent); - hmd->indexar= indexar; - hmd->totindex= tot; + hmd->indexar = indexar; + hmd->totindex = tot; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -803,25 +803,25 @@ void OBJECT_OT_hook_assign(wmOperatorType *ot) /* flags */ /* this operator changes data stored in modifier which doesn't get pushed to undo stack, * so redoing it from redo panel gives totally weird results */ - ot->flag = /*OPTYPE_REGISTER|*/OPTYPE_UNDO; + ot->flag = /*OPTYPE_REGISTER|*/ OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); + prop = RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to"); RNA_def_enum_funcs(prop, hook_mod_itemf); } static int object_hook_select_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); - int num= RNA_enum_get(op->ptr, "modifier"); - Object *ob=NULL; - HookModifierData *hmd=NULL; + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_HookModifier); + int num = RNA_enum_get(op->ptr, "modifier"); + Object *ob = NULL; + HookModifierData *hmd = NULL; - if (ptr.data) { /* if modifier context is available, use that */ + if (ptr.data) { /* if modifier context is available, use that */ ob = ptr.id.data; - hmd= ptr.data; + hmd = ptr.data; } - else { /* use the provided property */ + else { /* use the provided property */ ob = CTX_data_edit_object(C); hmd = (HookModifierData *)BLI_findlink(&ob->modifiers, num); } @@ -833,7 +833,7 @@ static int object_hook_select_exec(bContext *C, wmOperator *op) /* select functionality */ object_hook_select(ob, hmd); - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob->data); return OPERATOR_FINISHED; } @@ -852,10 +852,10 @@ void OBJECT_OT_hook_select(wmOperatorType *ot) ot->poll = hook_op_edit_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove"); + prop = RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove"); RNA_def_enum_funcs(prop, hook_mod_itemf); } diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index b1738a960ce..ee9d776ea3b 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -185,7 +185,7 @@ void CONSTRAINT_OT_limitdistance_reset(struct wmOperatorType *ot); void CONSTRAINT_OT_childof_set_inverse(struct wmOperatorType *ot); void CONSTRAINT_OT_childof_clear_inverse(struct wmOperatorType *ot); void CONSTRAINT_OT_objectsolver_set_inverse(struct wmOperatorType *ot); -void CONSTRAINT_OT_objectsolver_clear_inverse (struct wmOperatorType *ot); +void CONSTRAINT_OT_objectsolver_clear_inverse(struct wmOperatorType *ot); /* object_vgroup.c */ void OBJECT_OT_vertex_group_add(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c index 4ba62541c60..648f530881a 100644 --- a/source/blender/editors/object/object_lattice.c +++ b/source/blender/editors/object/object_lattice.c @@ -68,45 +68,45 @@ void free_editLatt(Object *ob) { - Lattice *lt= ob->data; + Lattice *lt = ob->data; if (lt->editlatt) { - Lattice *editlt= lt->editlatt->latt; + Lattice *editlt = lt->editlatt->latt; if (editlt->def) MEM_freeN(editlt->def); if (editlt->dvert) - free_dverts(editlt->dvert, editlt->pntsu*editlt->pntsv*editlt->pntsw); + free_dverts(editlt->dvert, editlt->pntsu * editlt->pntsv * editlt->pntsw); MEM_freeN(editlt); MEM_freeN(lt->editlatt); - lt->editlatt= NULL; + lt->editlatt = NULL; } } void make_editLatt(Object *obedit) { - Lattice *lt= obedit->data; + Lattice *lt = obedit->data; KeyBlock *actkey; free_editLatt(obedit); - actkey= ob_get_keyblock(obedit); + actkey = ob_get_keyblock(obedit); if (actkey) key_to_latt(actkey, lt); - lt->editlatt= MEM_callocN(sizeof(EditLatt), "editlatt"); - lt->editlatt->latt= MEM_dupallocN(lt); - lt->editlatt->latt->def= MEM_dupallocN(lt->def); + lt->editlatt = MEM_callocN(sizeof(EditLatt), "editlatt"); + lt->editlatt->latt = MEM_dupallocN(lt); + lt->editlatt->latt->def = MEM_dupallocN(lt->def); if (lt->dvert) { - int tot= lt->pntsu*lt->pntsv*lt->pntsw; - lt->editlatt->latt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert"); + int tot = lt->pntsu * lt->pntsv * lt->pntsw; + lt->editlatt->latt->dvert = MEM_mallocN(sizeof (MDeformVert) * tot, "Lattice MDeformVert"); copy_dverts(lt->editlatt->latt->dvert, lt->dvert, tot); } - if (lt->key) lt->editlatt->shapenr= obedit->shapenr; + if (lt->key) lt->editlatt->shapenr = obedit->shapenr; } void load_editLatt(Object *obedit) @@ -117,52 +117,52 @@ void load_editLatt(Object *obedit) float *fp; int tot; - lt= obedit->data; - editlt= lt->editlatt->latt; + lt = obedit->data; + editlt = lt->editlatt->latt; if (lt->editlatt->shapenr) { - actkey= BLI_findlink(<->key->block, lt->editlatt->shapenr-1); + actkey = BLI_findlink(<->key->block, lt->editlatt->shapenr - 1); /* active key: vertices */ - tot= editlt->pntsu*editlt->pntsv*editlt->pntsw; + tot = editlt->pntsu * editlt->pntsv * editlt->pntsw; if (actkey->data) MEM_freeN(actkey->data); - fp=actkey->data= MEM_callocN(lt->key->elemsize*tot, "actkey->data"); - actkey->totelem= tot; + fp = actkey->data = MEM_callocN(lt->key->elemsize * tot, "actkey->data"); + actkey->totelem = tot; - bp= editlt->def; + bp = editlt->def; while (tot--) { copy_v3_v3(fp, bp->vec); - fp+= 3; + fp += 3; bp++; } } else { MEM_freeN(lt->def); - lt->def= MEM_dupallocN(editlt->def); + lt->def = MEM_dupallocN(editlt->def); - lt->flag= editlt->flag; + lt->flag = editlt->flag; - lt->pntsu= editlt->pntsu; - lt->pntsv= editlt->pntsv; - lt->pntsw= editlt->pntsw; + lt->pntsu = editlt->pntsu; + lt->pntsv = editlt->pntsv; + lt->pntsw = editlt->pntsw; - lt->typeu= editlt->typeu; - lt->typev= editlt->typev; - lt->typew= editlt->typew; + lt->typeu = editlt->typeu; + lt->typev = editlt->typev; + lt->typew = editlt->typew; } if (lt->dvert) { - free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw); - lt->dvert= NULL; + free_dverts(lt->dvert, lt->pntsu * lt->pntsv * lt->pntsw); + lt->dvert = NULL; } if (editlt->dvert) { - tot= lt->pntsu*lt->pntsv*lt->pntsw; + tot = lt->pntsu * lt->pntsv * lt->pntsw; - lt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert"); + lt->dvert = MEM_mallocN(sizeof (MDeformVert) * tot, "Lattice MDeformVert"); copy_dverts(lt->dvert, editlt->dvert, tot); } } @@ -171,17 +171,17 @@ void load_editLatt(Object *obedit) void ED_setflagsLatt(Object *obedit, int flag) { - Lattice *lt= obedit->data; + Lattice *lt = obedit->data; BPoint *bp; int a; - bp= lt->editlatt->latt->def; + bp = lt->editlatt->latt->def; - a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw; + a = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; while (a--) { - if (bp->hide==0) { - bp->f1= flag; + if (bp->hide == 0) { + bp->f1 = flag; } bp++; } @@ -189,8 +189,8 @@ void ED_setflagsLatt(Object *obedit, int flag) static int lattice_select_all_exec(bContext *C, wmOperator *op) { - Object *obedit= CTX_data_edit_object(C); - Lattice *lt= obedit->data; + Object *obedit = CTX_data_edit_object(C); + Lattice *lt = obedit->data; BPoint *bp; int a; int action = RNA_enum_get(op->ptr, "action"); @@ -198,11 +198,11 @@ static int lattice_select_all_exec(bContext *C, wmOperator *op) if (action == SEL_TOGGLE) { action = SEL_SELECT; - bp= lt->editlatt->latt->def; - a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw; + bp = lt->editlatt->latt->def; + a = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; while (a--) { - if (bp->hide==0) { + if (bp->hide == 0) { if (bp->f1) { action = SEL_DESELECT; break; @@ -213,26 +213,26 @@ static int lattice_select_all_exec(bContext *C, wmOperator *op) } switch (action) { - case SEL_SELECT: - ED_setflagsLatt(obedit, 1); - break; - case SEL_DESELECT: - ED_setflagsLatt(obedit, 0); - break; - case SEL_INVERT: - bp= lt->editlatt->latt->def; - a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw; + case SEL_SELECT: + ED_setflagsLatt(obedit, 1); + break; + case SEL_DESELECT: + ED_setflagsLatt(obedit, 0); + break; + case SEL_INVERT: + bp = lt->editlatt->latt->def; + a = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; - while (a--) { - if (bp->hide==0) { - bp->f1 ^= 1; + while (a--) { + if (bp->hide == 0) { + bp->f1 ^= 1; + } + bp++; } - bp++; - } - break; + break; } - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data); return OPERATOR_FINISHED; } @@ -249,7 +249,7 @@ void LATTICE_OT_select_all(wmOperatorType *ot) ot->poll = ED_operator_editlattice; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; WM_operator_properties_select_all(ot); } @@ -260,27 +260,27 @@ static int make_regular_poll(bContext *C) if (ED_operator_editlattice(C)) return 1; - ob= CTX_data_active_object(C); - return (ob && ob->type==OB_LATTICE); + ob = CTX_data_active_object(C); + return (ob && ob->type == OB_LATTICE); } static int make_regular_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= CTX_data_edit_object(C); + Object *ob = CTX_data_edit_object(C); Lattice *lt; if (ob) { - lt= ob->data; + lt = ob->data; resizelattice(lt->editlatt->latt, lt->pntsu, lt->pntsv, lt->pntsw, NULL); } else { - ob= CTX_data_active_object(C); - lt= ob->data; + ob = CTX_data_active_object(C); + lt = ob->data; resizelattice(lt, lt->pntsu, lt->pntsv, lt->pntsw, NULL); } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -297,7 +297,7 @@ void LATTICE_OT_make_regular(wmOperatorType *ot) ot->poll = make_regular_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /****************************** Mouse Selection *************************/ @@ -305,12 +305,12 @@ void LATTICE_OT_make_regular(wmOperatorType *ot) static void findnearestLattvert__doClosest(void *userData, BPoint *bp, int x, int y) { struct { BPoint *bp; short dist, select; int mval[2]; } *data = userData; - float temp = abs(data->mval[0]-x) + abs(data->mval[1]-y); + float temp = abs(data->mval[0] - x) + abs(data->mval[1] - y); - if ((bp->f1 & SELECT)==data->select) + if ((bp->f1 & SELECT) == data->select) temp += 5; - if (tempdist) { + if (temp < data->dist) { data->dist = temp; data->bp = bp; @@ -319,15 +319,15 @@ static void findnearestLattvert__doClosest(void *userData, BPoint *bp, int x, in static BPoint *findnearestLattvert(ViewContext *vc, const int mval[2], int sel) { - /* sel==1: selected gets a disadvantage */ - /* in nurb and bezt or bp the nearest is written */ - /* return 0 1 2: handlepunt */ + /* sel==1: selected gets a disadvantage */ + /* in nurb and bezt or bp the nearest is written */ + /* return 0 1 2: handlepunt */ struct { BPoint *bp; short dist, select; int mval[2]; } data = {NULL}; data.dist = 100; data.select = sel; - data.mval[0]= mval[0]; - data.mval[1]= mval[1]; + data.mval[0] = mval[0]; + data.mval[1] = mval[1]; ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); lattice_foreachScreenVert(vc, findnearestLattvert__doClosest, &data); @@ -338,20 +338,20 @@ static BPoint *findnearestLattvert(ViewContext *vc, const int mval[2], int sel) int mouse_lattice(bContext *C, const int mval[2], int extend) { ViewContext vc; - BPoint *bp= NULL; + BPoint *bp = NULL; view3d_set_viewcontext(C, &vc); - bp= findnearestLattvert(&vc, mval, 1); + bp = findnearestLattvert(&vc, mval, 1); if (bp) { - if (extend==0) { + if (extend == 0) { ED_setflagsLatt(vc.obedit, 0); bp->f1 |= SELECT; } else - bp->f1 ^= SELECT; /* swap */ + bp->f1 ^= SELECT; /* swap */ - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data); + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, vc.obedit->data); return 1; } @@ -368,29 +368,29 @@ typedef struct UndoLattice { static void undoLatt_to_editLatt(void *data, void *edata, void *UNUSED(obdata)) { - UndoLattice *ult= (UndoLattice*)data; - EditLatt *editlatt= (EditLatt *)edata; - int a= editlatt->latt->pntsu*editlatt->latt->pntsv*editlatt->latt->pntsw; + UndoLattice *ult = (UndoLattice *)data; + EditLatt *editlatt = (EditLatt *)edata; + int a = editlatt->latt->pntsu * editlatt->latt->pntsv * editlatt->latt->pntsw; - memcpy(editlatt->latt->def, ult->def, a*sizeof(BPoint)); + memcpy(editlatt->latt->def, ult->def, a * sizeof(BPoint)); } static void *editLatt_to_undoLatt(void *edata, void *UNUSED(obdata)) { - UndoLattice *ult= MEM_callocN(sizeof(UndoLattice), "UndoLattice"); - EditLatt *editlatt= (EditLatt *)edata; + UndoLattice *ult = MEM_callocN(sizeof(UndoLattice), "UndoLattice"); + EditLatt *editlatt = (EditLatt *)edata; - ult->def= MEM_dupallocN(editlatt->latt->def); - ult->pntsu= editlatt->latt->pntsu; - ult->pntsv= editlatt->latt->pntsv; - ult->pntsw= editlatt->latt->pntsw; + ult->def = MEM_dupallocN(editlatt->latt->def); + ult->pntsu = editlatt->latt->pntsu; + ult->pntsv = editlatt->latt->pntsv; + ult->pntsw = editlatt->latt->pntsw; return ult; } static void free_undoLatt(void *data) { - UndoLattice *ult= (UndoLattice*)data; + UndoLattice *ult = (UndoLattice *)data; if (ult->def) MEM_freeN(ult->def); MEM_freeN(ult); @@ -398,20 +398,20 @@ static void free_undoLatt(void *data) static int validate_undoLatt(void *data, void *edata) { - UndoLattice *ult= (UndoLattice*)data; - EditLatt *editlatt= (EditLatt *)edata; + UndoLattice *ult = (UndoLattice *)data; + EditLatt *editlatt = (EditLatt *)edata; return (ult->pntsu == editlatt->latt->pntsu && - ult->pntsv == editlatt->latt->pntsv && - ult->pntsw == editlatt->latt->pntsw); + ult->pntsv == editlatt->latt->pntsv && + ult->pntsw == editlatt->latt->pntsw); } static void *get_editlatt(bContext *C) { - Object *obedit= CTX_data_edit_object(C); + Object *obedit = CTX_data_edit_object(C); - if (obedit && obedit->type==OB_LATTICE) { - Lattice *lt= obedit->data; + if (obedit && obedit->type == OB_LATTICE) { + Lattice *lt = obedit->data; return lt->editlatt; } diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 6eb1ad3a13d..bd69b3adc5e 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -87,16 +87,16 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type) { - ModifierData *md=NULL, *new_md=NULL; + ModifierData *md = NULL, *new_md = NULL; ModifierTypeInfo *mti = modifierType_getInfo(type); /* only geometry objects should be able to get modifiers [#25291] */ if (!ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_LATTICE)) { - BKE_reportf(reports, RPT_WARNING, "Modifiers cannot be added to Object '%s'", ob->id.name+2); + BKE_reportf(reports, RPT_WARNING, "Modifiers cannot be added to Object '%s'", ob->id.name + 2); return NULL; } - if (mti->flags&eModifierTypeFlag_Single) { + if (mti->flags & eModifierTypeFlag_Single) { if (modifiers_findByType(ob, type)) { BKE_report(reports, RPT_WARNING, "Only one modifier of this type allowed"); return NULL; @@ -111,12 +111,12 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Main *bmain, Scene *sc } else { /* get new modifier data to add */ - new_md= modifier_new(type); + new_md = modifier_new(type); - if (mti->flags&eModifierTypeFlag_RequiresOriginalData) { + if (mti->flags & eModifierTypeFlag_RequiresOriginalData) { md = ob->modifiers.first; - while (md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform) + while (md && modifierType_getInfo(md->type)->type == eModifierTypeType_OnlyDeform) md = md->next; BLI_insertlinkbefore(&ob->modifiers, md, new_md); @@ -134,15 +134,15 @@ ModifierData *ED_object_modifier_add(ReportList *reports, Main *bmain, Scene *sc /* special cases */ if (type == eModifierType_Softbody) { if (!ob->soft) { - ob->soft= sbNew(scene); - ob->softflag |= OB_SB_GOAL|OB_SB_EDGES; + ob->soft = sbNew(scene); + ob->softflag |= OB_SB_GOAL | OB_SB_EDGES; } } else if (type == eModifierType_Collision) { if (!ob->pd) - ob->pd= object_add_collision_fields(0); + ob->pd = object_add_collision_fields(0); - ob->pd->deflect= 1; + ob->pd->deflect = 1; DAG_scene_sort(bmain, scene); } else if (type == eModifierType_Surface) @@ -164,8 +164,8 @@ static int object_modifier_remove(Object *ob, ModifierData *md, int *sort_depsgr /* It seems on rapid delete it is possible to * get called twice on same modifier, so make * sure it is in list. */ - for (obmd=ob->modifiers.first; obmd; obmd=obmd->next) - if (obmd==md) + for (obmd = ob->modifiers.first; obmd; obmd = obmd->next) + if (obmd == md) break; if (!obmd) @@ -173,22 +173,22 @@ static int object_modifier_remove(Object *ob, ModifierData *md, int *sort_depsgr /* special cases */ if (md->type == eModifierType_ParticleSystem) { - ParticleSystemModifierData *psmd=(ParticleSystemModifierData*)md; + ParticleSystemModifierData *psmd = (ParticleSystemModifierData *)md; BLI_remlink(&ob->particlesystem, psmd->psys); psys_free(ob, psmd->psys); - psmd->psys= NULL; + psmd->psys = NULL; } else if (md->type == eModifierType_Softbody) { if (ob->soft) { sbFree(ob->soft); - ob->soft= NULL; - ob->softflag= 0; + ob->soft = NULL; + ob->softflag = 0; } } else if (md->type == eModifierType_Collision) { if (ob->pd) - ob->pd->deflect= 0; + ob->pd->deflect = 0; *sort_depsgraph = 1; } @@ -202,13 +202,13 @@ static int object_modifier_remove(Object *ob, ModifierData *md, int *sort_depsgr ob->dt = OB_TEXTURE; } else if (md->type == eModifierType_Multires) { - int ok= 1; + int ok = 1; ModifierData *tmpmd; /* ensure MDISPS CustomData layer isn't used by another multires modifiers */ - for (tmpmd= ob->modifiers.first; tmpmd; tmpmd= tmpmd->next) - if (tmpmd!=md && tmpmd->type == eModifierType_Multires) { - ok= 0; + for (tmpmd = ob->modifiers.first; tmpmd; tmpmd = tmpmd->next) + if (tmpmd != md && tmpmd->type == eModifierType_Multires) { + ok = 0; break; } @@ -218,7 +218,7 @@ static int object_modifier_remove(Object *ob, ModifierData *md, int *sort_depsgr } if (ELEM(md->type, eModifierType_Softbody, eModifierType_Cloth) && - ob->particlesystem.first == NULL) { + ob->particlesystem.first == NULL) { ob->mode &= ~OB_MODE_PARTICLE_EDIT; } @@ -233,7 +233,7 @@ int ED_object_modifier_remove(ReportList *reports, Main *bmain, Scene *scene, Ob int sort_depsgraph = 0; int ok; - ok= object_modifier_remove(ob, md, &sort_depsgraph); + ok = object_modifier_remove(ob, md, &sort_depsgraph); if (!ok) { BKE_reportf(reports, RPT_ERROR, "Modifier '%s' not in object '%s'", ob->id.name, md->name); @@ -260,11 +260,11 @@ void ED_object_modifier_clear(Main *bmain, Scene *scene, Object *ob) while (md) { ModifierData *next_md; - next_md= md->next; + next_md = md->next; object_modifier_remove(ob, md, &sort_depsgraph); - md= next_md; + md = next_md; } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); @@ -279,10 +279,10 @@ int ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *md if (md->prev) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); - if (mti->type!=eModifierTypeType_OnlyDeform) { + if (mti->type != eModifierTypeType_OnlyDeform) { ModifierTypeInfo *nmti = modifierType_getInfo(md->prev->type); - if (nmti->flags&eModifierTypeFlag_RequiresOriginalData) { + if (nmti->flags & eModifierTypeFlag_RequiresOriginalData) { BKE_report(reports, RPT_WARNING, "Cannot move above a modifier requiring original data"); return 0; } @@ -300,10 +300,10 @@ int ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData * if (md->next) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); - if (mti->flags&eModifierTypeFlag_RequiresOriginalData) { + if (mti->flags & eModifierTypeFlag_RequiresOriginalData) { ModifierTypeInfo *nmti = modifierType_getInfo(md->next->type); - if (nmti->type!=eModifierTypeType_OnlyDeform) { + if (nmti->type != eModifierTypeType_OnlyDeform) { BKE_report(reports, RPT_WARNING, "Cannot move beyond a non-deforming modifier"); return 0; } @@ -326,72 +326,72 @@ int ED_object_modifier_convert(ReportList *UNUSED(reports), Main *bmain, Scene * MVert *mvert; MEdge *medge; int a, k, kmax; - int totvert=0, totedge=0, cvert=0; - int totpart=0, totchild=0; + int totvert = 0, totedge = 0, cvert = 0; + int totpart = 0, totchild = 0; if (md->type != eModifierType_ParticleSystem) return 0; if (ob && ob->mode & OB_MODE_PARTICLE_EDIT) return 0; - psys=((ParticleSystemModifierData *)md)->psys; - part= psys->part; + psys = ((ParticleSystemModifierData *)md)->psys; + part = psys->part; if (part->ren_as != PART_DRAW_PATH || psys->pathcache == NULL) return 0; - totpart= psys->totcached; - totchild= psys->totchildcache; + totpart = psys->totcached; + totchild = psys->totchildcache; - if (totchild && (part->draw&PART_DRAW_PARENT)==0) - totpart= 0; + if (totchild && (part->draw & PART_DRAW_PARENT) == 0) + totpart = 0; /* count */ - cache= psys->pathcache; - for (a=0; apathcache; + for (a = 0; a < totpart; a++) { + key = cache[a]; if (key->steps > 0) { - totvert+= key->steps+1; - totedge+= key->steps; + totvert += key->steps + 1; + totedge += key->steps; } } - cache= psys->childcache; - for (a=0; achildcache; + for (a = 0; a < totchild; a++) { + key = cache[a]; if (key->steps > 0) { - totvert+= key->steps+1; - totedge+= key->steps; + totvert += key->steps + 1; + totedge += key->steps; } } - if (totvert==0) return 0; + if (totvert == 0) return 0; /* add new mesh */ - obn= add_object(scene, OB_MESH); - me= obn->data; + obn = add_object(scene, OB_MESH); + me = obn->data; - me->totvert= totvert; - me->totedge= totedge; + me->totvert = totvert; + me->totedge = totedge; - me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert); - me->medge= CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge); - me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0); + me->mvert = CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert); + me->medge = CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge); + me->mface = CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0); - mvert= me->mvert; - medge= me->medge; + mvert = me->mvert; + medge = me->medge; /* copy coordinates */ - cache= psys->pathcache; - for (a=0; asteps; - for (k=0; k<=kmax; k++,key++,cvert++,mvert++) { - copy_v3_v3(mvert->co,key->co); + cache = psys->pathcache; + for (a = 0; a < totpart; a++) { + key = cache[a]; + kmax = key->steps; + for (k = 0; k <= kmax; k++, key++, cvert++, mvert++) { + copy_v3_v3(mvert->co, key->co); if (k) { - medge->v1= cvert-1; - medge->v2= cvert; - medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; + medge->v1 = cvert - 1; + medge->v2 = cvert; + medge->flag = ME_EDGEDRAW | ME_EDGERENDER | ME_LOOSEEDGE; medge++; } else { @@ -401,16 +401,16 @@ int ED_object_modifier_convert(ReportList *UNUSED(reports), Main *bmain, Scene * } } - cache=psys->childcache; - for (a=0; asteps; - for (k=0; k<=kmax; k++,key++,cvert++,mvert++) { - copy_v3_v3(mvert->co,key->co); + cache = psys->childcache; + for (a = 0; a < totchild; a++) { + key = cache[a]; + kmax = key->steps; + for (k = 0; k <= kmax; k++, key++, cvert++, mvert++) { + copy_v3_v3(mvert->co, key->co); if (k) { - medge->v1=cvert-1; - medge->v2=cvert; - medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; + medge->v1 = cvert - 1; + medge->v2 = cvert; + medge->flag = ME_EDGEDRAW | ME_EDGERENDER | ME_LOOSEEDGE; medge++; } else { @@ -427,9 +427,9 @@ int ED_object_modifier_convert(ReportList *UNUSED(reports), Main *bmain, Scene * static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) { - ModifierTypeInfo *mti= modifierType_getInfo(md->type); + ModifierTypeInfo *mti = modifierType_getInfo(md->type); - md->scene= scene; + md->scene = scene; if (mti->isDisabled && mti->isDisabled(md, 0)) { BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); @@ -447,10 +447,10 @@ static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, M * and then predominantly stated in comments in a half dozen headers. */ - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { DerivedMesh *dm; - Mesh *me= ob->data; - Key *key=me->key; + Mesh *me = ob->data; + Key *key = me->key; KeyBlock *kb; if (!modifier_sameTopology(md) || mti->type == eModifierTypeType_NonGeometrical) { @@ -465,15 +465,15 @@ static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, M } if (key == NULL) { - key= me->key= add_key((ID *)me); - key->type= KEY_RELATIVE; + key = me->key = add_key((ID *)me); + key->type = KEY_RELATIVE; /* if that was the first key block added, then it was the basis. * Initialize it with the mesh, and add another for the modifier */ - kb= add_keyblock(key, NULL); + kb = add_keyblock(key, NULL); mesh_to_key(me, kb); } - kb= add_keyblock(key, md->name); + kb = add_keyblock(key, md->name); DM_to_meshkey(dm, me, kb); dm->release(dm); @@ -487,19 +487,19 @@ static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, M static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) { - ModifierTypeInfo *mti= modifierType_getInfo(md->type); + ModifierTypeInfo *mti = modifierType_getInfo(md->type); - md->scene= scene; + md->scene = scene; if (mti->isDisabled && mti->isDisabled(md, 0)) { BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); return 0; } - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { DerivedMesh *dm; Mesh *me = ob->data; - MultiresModifierData *mmd= find_multires_modifier_before(scene, md); + MultiresModifierData *mmd = find_multires_modifier_before(scene, md); if (me->key && mti->type != eModifierTypeType_NonGeometrical) { BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys"); @@ -510,8 +510,8 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, if (md->type == eModifierType_Multires) multires_force_update(ob); - if (mmd && mmd->totlvl && mti->type==eModifierTypeType_OnlyDeform) { - if (!multiresModifier_reshapeFromDeformMod (scene, mmd, ob, md)) { + if (mmd && mmd->totlvl && mti->type == eModifierTypeType_OnlyDeform) { + if (!multiresModifier_reshapeFromDeformMod(scene, mmd, ob, md)) { BKE_report(reports, RPT_ERROR, "Multires modifier returned error, skipping apply"); return 0; } @@ -562,7 +562,7 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ParticleSystem *psys = ob->particlesystem.first; - for (; psys; psys=psys->next) { + for (; psys; psys = psys->next) { if (psys->part->type != PART_HAIR) continue; @@ -582,27 +582,27 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in editmode"); return 0; } - else if (((ID*) ob->data)->us>1) { + else if (((ID *) ob->data)->us > 1) { BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied to multi-user data"); return 0; } - if (md!=ob->modifiers.first) + if (md != ob->modifiers.first) BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected"); /* allow apply of a not-realtime modifier, by first re-enabling realtime. */ - prev_mode= md->mode; + prev_mode = md->mode; md->mode |= eModifierMode_Realtime; if (mode == MODIFIER_APPLY_SHAPE) { if (!modifier_apply_shape(reports, scene, ob, md)) { - md->mode= prev_mode; + md->mode = prev_mode; return 0; } } else { if (!modifier_apply_obdata(reports, scene, ob, md)) { - md->mode= prev_mode; + md->mode = prev_mode; return 0; } } @@ -629,34 +629,34 @@ int ED_object_modifier_copy(ReportList *UNUSED(reports), Object *ob, ModifierDat static int modifier_add_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); - int type= RNA_enum_get(op->ptr, "type"); + int type = RNA_enum_get(op->ptr, "type"); if (!ED_object_modifier_add(op->reports, bmain, scene, ob, NULL, type)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free) { - Object *ob= ED_object_active_context(C); - EnumPropertyItem *item= NULL, *md_item, *group_item= NULL; + Object *ob = ED_object_active_context(C); + EnumPropertyItem *item = NULL, *md_item, *group_item = NULL; ModifierTypeInfo *mti; - int totitem= 0, a; + int totitem = 0, a; if (!ob) return modifier_type_items; - for (a=0; modifier_type_items[a].identifier; a++) { - md_item= &modifier_type_items[a]; + for (a = 0; modifier_type_items[a].identifier; a++) { + md_item = &modifier_type_items[a]; if (md_item->identifier[0]) { - mti= modifierType_getInfo(md_item->value); + mti = modifierType_getInfo(md_item->value); if (mti->flags & eModifierTypeFlag_NoUserAdd) continue; @@ -665,22 +665,22 @@ static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *UNUSED(ptr) continue; } else { - group_item= md_item; - md_item= NULL; + group_item = md_item; + md_item = NULL; continue; } if (group_item) { RNA_enum_item_add(&item, &totitem, group_item); - group_item= NULL; + group_item = NULL; } RNA_enum_item_add(&item, &totitem, md_item); } RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } @@ -700,10 +700,10 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", modifier_type_items, eModifierType_Subsurf, "Type", ""); + prop = RNA_def_enum(ot->srna, "type", modifier_type_items, eModifierType_Subsurf, "Type", ""); RNA_def_enum_funcs(prop, modifier_add_itemf); ot->prop = prop; } @@ -712,12 +712,12 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot) static int edit_modifier_poll_generic(bContext *C, StructRNA *rna_type, int obtype_flag) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", rna_type); - Object *ob= (ptr.id.data)?ptr.id.data:ED_object_active_context(C); + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", rna_type); + Object *ob = (ptr.id.data) ? ptr.id.data : ED_object_active_context(C); if (!ob || ob->id.lib) return 0; - if (obtype_flag && ((1<type) & obtype_flag)==0) return 0; - if (ptr.id.data && ((ID*)ptr.id.data)->lib) return 0; + if (obtype_flag && ((1 << ob->type) & obtype_flag) == 0) return 0; + if (ptr.id.data && ((ID *)ptr.id.data)->lib) return 0; return 1; } @@ -734,7 +734,7 @@ static void edit_modifier_properties(wmOperatorType *ot) static int edit_modifier_invoke_properties(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); + PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); ModifierData *md; if (RNA_struct_property_is_set(op->ptr, "modifier")) @@ -767,8 +767,8 @@ static ModifierData *edit_modifier_property_get(wmOperator *op, Object *ob, int static int modifier_remove_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); ModifierData *md = edit_modifier_property_get(op, ob, 0); int mode_orig = ob ? ob->mode : 0; @@ -776,13 +776,13 @@ static int modifier_remove_exec(bContext *C, wmOperator *op) if (!ob || !md || !ED_object_modifier_remove(op->reports, bmain, scene, ob, md)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); /* if cloth/softbody was removed, particle mode could be cleared */ if (mode_orig & OB_MODE_PARTICLE_EDIT) - if ((ob->mode & OB_MODE_PARTICLE_EDIT)==0) - if (scene->basact && scene->basact->object==ob) - WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL); + if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0) + if (scene->basact && scene->basact->object == ob) + WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, NULL); return OPERATOR_FINISHED; } @@ -806,7 +806,7 @@ void OBJECT_OT_modifier_remove(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -821,7 +821,7 @@ static int modifier_move_up_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -845,7 +845,7 @@ void OBJECT_OT_modifier_move_up(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -860,7 +860,7 @@ static int modifier_move_down_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -884,7 +884,7 @@ void OBJECT_OT_modifier_move_down(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -892,17 +892,17 @@ void OBJECT_OT_modifier_move_down(wmOperatorType *ot) static int modifier_apply_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); ModifierData *md = edit_modifier_property_get(op, ob, 0); - int apply_as= RNA_enum_get(op->ptr, "apply_as"); + int apply_as = RNA_enum_get(op->ptr, "apply_as"); if (!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md, apply_as)) { return OPERATOR_CANCELLED; } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -931,7 +931,7 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "apply_as", modifier_apply_as_items, MODIFIER_APPLY_DATA, "Apply as", "How to apply the modifier to the geometry"); edit_modifier_properties(ot); @@ -941,8 +941,8 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) static int modifier_convert_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); Object *ob = ED_object_active_context(C); ModifierData *md = edit_modifier_property_get(op, ob, 0); @@ -950,7 +950,7 @@ static int modifier_convert_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -974,7 +974,7 @@ void OBJECT_OT_modifier_convert(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -989,7 +989,7 @@ static int modifier_copy_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1013,7 +1013,7 @@ void OBJECT_OT_modifier_copy(wmOperatorType *ot) ot->poll = edit_modifier_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1021,7 +1021,7 @@ void OBJECT_OT_modifier_copy(wmOperatorType *ot) static int multires_poll(bContext *C) { - return edit_modifier_poll_generic(C, &RNA_MultiresModifier, (1<exec = multires_higher_levels_delete_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1075,7 +1075,7 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op) multiresModifier_subdivide(mmd, ob, 0, mmd->simple); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1099,7 +1099,7 @@ void OBJECT_OT_multires_subdivide(wmOperatorType *ot) ot->exec = multires_subdivide_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1107,21 +1107,21 @@ void OBJECT_OT_multires_subdivide(wmOperatorType *ot) static int multires_reshape_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_active_context(C), *secondob= NULL; - Scene *scene= CTX_data_scene(C); + Object *ob = ED_object_active_context(C), *secondob = NULL; + Scene *scene = CTX_data_scene(C); MultiresModifierData *mmd = (MultiresModifierData *)edit_modifier_property_get(op, ob, eModifierType_Multires); if (!mmd) return OPERATOR_CANCELLED; - if (mmd->lvl==0) { + if (mmd->lvl == 0) { BKE_report(op->reports, RPT_ERROR, "Reshape can work only with higher levels of subdivisions"); return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN (C, Object*, selob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, selob, selected_editable_objects) { if (selob->type == OB_MESH && selob != ob) { - secondob= selob; + secondob = selob; break; } } @@ -1138,7 +1138,7 @@ static int multires_reshape_exec(bContext *C, wmOperator *op) } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1162,7 +1162,7 @@ void OBJECT_OT_multires_reshape(wmOperatorType *ot) ot->exec = multires_reshape_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1173,9 +1173,9 @@ void OBJECT_OT_multires_reshape(wmOperatorType *ot) static int multires_external_save_exec(bContext *C, wmOperator *op) { Object *ob = ED_object_active_context(C); - Mesh *me= (ob)? ob->data: op->customdata; + Mesh *me = (ob) ? ob->data : op->customdata; char path[FILE_MAX]; - int relative= RNA_boolean_get(op->ptr, "relative_path"); + int relative = RNA_boolean_get(op->ptr, "relative_path"); if (!me) return OPERATOR_CANCELLED; @@ -1198,7 +1198,7 @@ static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *U { Object *ob = ED_object_active_context(C); MultiresModifierData *mmd; - Mesh *me= ob->data; + Mesh *me = ob->data; char path[FILE_MAX]; if (!edit_modifier_invoke_properties(C, op)) @@ -1215,9 +1215,9 @@ static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *U if (RNA_struct_property_is_set(op->ptr, "filepath")) return multires_external_save_exec(C, op); - op->customdata= me; + op->customdata = me; - BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name+2); + BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name + 2); RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); @@ -1237,9 +1237,9 @@ void OBJECT_OT_multires_external_save(wmOperatorType *ot) ot->poll = multires_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY); + WM_operator_properties_filesel(ot, FOLDERFILE | BTXFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH, FILE_DEFAULTDISPLAY); edit_modifier_properties(ot); } @@ -1248,7 +1248,7 @@ void OBJECT_OT_multires_external_save(wmOperatorType *ot) static int multires_external_pack_exec(bContext *C, wmOperator *UNUSED(op)) { Object *ob = ED_object_active_context(C); - Mesh *me= ob->data; + Mesh *me = ob->data; if (!CustomData_external_test(&me->ldata, CD_MDISPS)) return OPERATOR_CANCELLED; @@ -1269,7 +1269,7 @@ void OBJECT_OT_multires_external_pack(wmOperatorType *ot) ot->exec = multires_external_pack_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /********************* multires apply base ***********************/ @@ -1284,7 +1284,7 @@ static int multires_base_apply_exec(bContext *C, wmOperator *op) multiresModifier_base_apply(mmd, ob); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1309,7 +1309,7 @@ void OBJECT_OT_multires_base_apply(wmOperatorType *ot) ot->exec = multires_base_apply_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1318,12 +1318,12 @@ void OBJECT_OT_multires_base_apply(wmOperatorType *ot) static int meshdeform_poll(bContext *C) { - return edit_modifier_poll_generic(C, &RNA_MeshDeformModifier, (1<bindinfluences) MEM_freeN(mmd->bindinfluences); if (mmd->bindoffsets) MEM_freeN(mmd->bindoffsets); if (mmd->dynverts) MEM_freeN(mmd->dynverts); - if (mmd->bindweights) MEM_freeN(mmd->bindweights); /* deprecated */ - if (mmd->bindcos) MEM_freeN(mmd->bindcos); /* deprecated */ + if (mmd->bindweights) MEM_freeN(mmd->bindweights); /* deprecated */ + if (mmd->bindcos) MEM_freeN(mmd->bindcos); /* deprecated */ - mmd->bindcagecos= NULL; - mmd->dyngrid= NULL; - mmd->dyninfluences= NULL; - mmd->bindinfluences= NULL; - mmd->bindoffsets= NULL; - mmd->dynverts= NULL; - mmd->bindweights= NULL; /* deprecated */ - mmd->bindcos= NULL; /* deprecated */ - mmd->totvert= 0; - mmd->totcagevert= 0; - mmd->totinfluence= 0; + mmd->bindcagecos = NULL; + mmd->dyngrid = NULL; + mmd->dyninfluences = NULL; + mmd->bindinfluences = NULL; + mmd->bindoffsets = NULL; + mmd->dynverts = NULL; + mmd->bindweights = NULL; /* deprecated */ + mmd->bindcos = NULL; /* deprecated */ + mmd->totvert = 0; + mmd->totcagevert = 0; + mmd->totinfluence = 0; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); } else { DerivedMesh *dm; - int mode= mmd->modifier.mode; + int mode = mmd->modifier.mode; /* force modifier to run, it will call binding routine */ - mmd->bindfunc= mesh_deform_bind; + mmd->bindfunc = mesh_deform_bind; mmd->modifier.mode |= eModifierMode_Realtime; if (ob->type == OB_MESH) { - dm= mesh_create_derived_view(scene, ob, 0); + dm = mesh_create_derived_view(scene, ob, 0); dm->release(dm); } else if (ob->type == OB_LATTICE) { lattice_calc_modifiers(scene, ob); } - else if (ob->type==OB_MBALL) { + else if (ob->type == OB_MBALL) { makeDispListMBall(scene, ob); } else if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { makeDispListCurveTypes(scene, ob, 0); } - mmd->bindfunc= NULL; - mmd->modifier.mode= mode; + mmd->bindfunc = NULL; + mmd->modifier.mode = mode; } return OPERATOR_FINISHED; @@ -1405,7 +1405,7 @@ void OBJECT_OT_meshdeform_bind(wmOperatorType *ot) ot->exec = meshdeform_bind_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1427,7 +1427,7 @@ static int explode_refresh_exec(bContext *C, wmOperator *op) emd->flag |= eExplodeFlag_CalcFaces; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1452,7 +1452,7 @@ void OBJECT_OT_explode_refresh(wmOperatorType *ot) ot->exec = explode_refresh_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); } @@ -1476,11 +1476,11 @@ static void init_ocean_modifier_bake(struct Ocean *oc, struct OceanModifierData do_normals = (omd->flag & MOD_OCEAN_GENERATE_NORMALS); do_jacobian = (omd->flag & MOD_OCEAN_GENERATE_FOAM); - BKE_init_ocean(oc, omd->resolution*omd->resolution, omd->resolution*omd->resolution, omd->spatial_size, omd->spatial_size, - omd->wind_velocity, omd->smallest_wave, 1.0, omd->wave_direction, omd->damp, omd->wave_alignment, - omd->depth, omd->time, - do_heightfield, do_chop, do_normals, do_jacobian, - omd->seed); + BKE_init_ocean(oc, omd->resolution * omd->resolution, omd->resolution * omd->resolution, omd->spatial_size, omd->spatial_size, + omd->wind_velocity, omd->smallest_wave, 1.0, omd->wave_direction, omd->damp, omd->wave_alignment, + omd->depth, omd->time, + do_heightfield, do_chop, do_normals, do_jacobian, + omd->seed); } typedef struct OceanBakeJob { @@ -1496,7 +1496,7 @@ typedef struct OceanBakeJob { static void oceanbake_free(void *customdata) { - OceanBakeJob *oj= customdata; + OceanBakeJob *oj = customdata; MEM_freeN(oj); } @@ -1515,34 +1515,34 @@ static int oceanbake_breakjob(void *UNUSED(customdata)) /* called by oceanbake, wmJob sends notifier */ static void oceanbake_update(void *customdata, float progress, int *cancel) { - OceanBakeJob *oj= customdata; + OceanBakeJob *oj = customdata; if (oceanbake_breakjob(oj)) *cancel = 1; - *(oj->do_update)= 1; - *(oj->progress)= progress; + *(oj->do_update) = 1; + *(oj->progress) = progress; } static void oceanbake_startjob(void *customdata, short *stop, short *do_update, float *progress) { - OceanBakeJob *oj= customdata; + OceanBakeJob *oj = customdata; - oj->stop= stop; + oj->stop = stop; oj->do_update = do_update; oj->progress = progress; - G.afbreek= 0; /* XXX shared with render - replace with job 'stop' switch */ + G.afbreek = 0; /* XXX shared with render - replace with job 'stop' switch */ BKE_bake_ocean(oj->ocean, oj->och, oceanbake_update, (void *)oj); - *do_update= 1; + *do_update = 1; *stop = 0; } static void oceanbake_endjob(void *customdata) { - OceanBakeJob *oj= customdata; + OceanBakeJob *oj = customdata; if (oj->ocean) { BKE_free_ocean(oj->ocean); @@ -1560,8 +1560,8 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) Scene *scene = CTX_data_scene(C); OceanCache *och; struct Ocean *ocean; - int f, cfra, i=0; - int free= RNA_boolean_get(op->ptr, "free"); + int f, cfra, i = 0; + int free = RNA_boolean_get(op->ptr, "free"); wmJob *steve; OceanBakeJob *oj; @@ -1572,7 +1572,7 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) if (free) { omd->refresh |= MOD_OCEAN_REFRESH_CLEAR_CACHE; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); return OPERATOR_FINISHED; } @@ -1580,12 +1580,12 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) omd->bakestart, omd->bakeend, omd->wave_scale, omd->chop_amount, omd->foam_coverage, omd->foam_fade, omd->resolution); - och->time = MEM_mallocN(och->duration*sizeof(float), "foam bake time"); + och->time = MEM_mallocN(och->duration * sizeof(float), "foam bake time"); cfra = scene->r.cfra; /* precalculate time variable before baking */ - for (f=omd->bakestart; f<=omd->bakeend; f++) { + for (f = omd->bakestart; f <= omd->bakeend; f++) { /* from physics_fluid.c: * * XXX: This can't be used due to an anim sys optimization that ignores recalc object animation, @@ -1614,7 +1614,7 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) init_ocean_modifier_bake(ocean, omd); #if 0 - BKE_bake_ocean(ocean, och); + BKE_bake_ocean(ocean, och); omd->oceancache = och; omd->cached = TRUE; @@ -1622,7 +1622,7 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) scene->r.cfra = cfra; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob); #endif /* job stuff */ @@ -1630,14 +1630,14 @@ static int ocean_bake_exec(bContext *C, wmOperator *op) scene->r.cfra = cfra; /* setup job */ - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Ocean Simulation", WM_JOB_PROGRESS); - oj= MEM_callocN(sizeof(OceanBakeJob), "ocean bake job"); + steve = WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Ocean Simulation", WM_JOB_PROGRESS); + oj = MEM_callocN(sizeof(OceanBakeJob), "ocean bake job"); oj->ocean = ocean; oj->och = och; oj->omd = omd; WM_jobs_customdata(steve, oj, oceanbake_free); - WM_jobs_timer(steve, 0.1, NC_OBJECT|ND_MODIFIER, NC_OBJECT|ND_MODIFIER); + WM_jobs_timer(steve, 0.1, NC_OBJECT | ND_MODIFIER, NC_OBJECT | ND_MODIFIER); WM_jobs_callbacks(steve, oceanbake_startjob, NULL, NULL, oceanbake_endjob); WM_jobs_start(CTX_wm_manager(C), steve); @@ -1667,7 +1667,7 @@ void OBJECT_OT_ocean_bake(wmOperatorType *ot) ot->exec = ocean_bake_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; edit_modifier_properties(ot); RNA_def_boolean(ot->srna, "free", FALSE, "Free", "Free the bake, rather than generating it"); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 138cbad0a68..4cd18d91249 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -222,7 +222,7 @@ void ED_operatormacros_object(void) wmOperatorType *ot; wmOperatorTypeMacro *otmacro; - ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate Objects", OPTYPE_UNDO|OPTYPE_REGISTER); + ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate Objects", OPTYPE_UNDO | OPTYPE_REGISTER); if (ot) { ot->description = "Duplicate selected objects and move them"; WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); @@ -231,7 +231,7 @@ void ED_operatormacros_object(void) } /* grr, should be able to pass options on... */ - ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move_linked", "Duplicate Linked", OPTYPE_UNDO|OPTYPE_REGISTER); + ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move_linked", "Duplicate Linked", OPTYPE_UNDO | OPTYPE_REGISTER); if (ot) { ot->description = "Duplicate selected objects and move them"; otmacro = WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); @@ -241,10 +241,10 @@ void ED_operatormacros_object(void) } /* XXX */ - ot = WM_operatortype_append_macro("OBJECT_OT_add_named_cursor", "Add named object at cursor", OPTYPE_UNDO|OPTYPE_REGISTER); + ot = WM_operatortype_append_macro("OBJECT_OT_add_named_cursor", "Add named object at cursor", OPTYPE_UNDO | OPTYPE_REGISTER); if (ot) { ot->description = "Add named object at cursor"; - RNA_def_string(ot->srna, "name", "Cube", MAX_ID_NAME-2, "Name", "Object name to add"); + RNA_def_string(ot->srna, "name", "Cube", MAX_ID_NAME - 2, "Name", "Object name to add"); WM_operatortype_macro_define(ot, "VIEW3D_OT_cursor3d"); WM_operatortype_macro_define(ot, "OBJECT_OT_add_named"); @@ -253,7 +253,7 @@ void ED_operatormacros_object(void) static int object_mode_poll(bContext *C) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); return (!ob || ob->mode == OB_MODE_OBJECT); } @@ -283,7 +283,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_enum_set(kmi->ptr, "mode", OB_MODE_WEIGHT_PAINT); RNA_boolean_set(kmi->ptr, "toggle", TRUE); - WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT|KM_SHIFT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0); /* Object Mode ---------------------------------------------------------------- */ /* Note: this keymap gets disabled in non-objectmode, */ @@ -302,7 +302,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); RNA_enum_set_identifier(kmi->ptr, "direction", "PARENT"); @@ -321,13 +321,13 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "extend", TRUE); WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "OBJECT_OT_parent_no_inverse_set", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "OBJECT_OT_parent_no_inverse_set", PKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_track_set", TKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_track_clear", TKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "OBJECT_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "OBJECT_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_verify_item(keymap, "OBJECT_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); + WM_keymap_verify_item(keymap, "OBJECT_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_location_clear", GKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_rotation_clear", RKEY, KM_PRESS, KM_ALT, 0); @@ -342,13 +342,13 @@ void ED_keymap_object(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "unselected", TRUE); /* same as above but for rendering */ - WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_clear", HKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_set", HKEY, KM_PRESS, KM_CTRL, 0); /* conflicts, removing */ #if 0 - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0) - RNA_boolean_set(kmi->ptr, "unselected", TRUE); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_render_set", HKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0) + RNA_boolean_set(kmi->ptr, "unselected", TRUE); #endif WM_keymap_add_item(keymap, "OBJECT_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); @@ -366,7 +366,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "INFO_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_object_apply", AKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_make_single_user", UKEY, KM_PRESS, 0, 0); @@ -377,23 +377,23 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_join", JKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_proxy_make", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_proxy_make", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 0); // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL | KM_SHIFT | KM_ALT, 0); WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); + WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); + WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_object_specials", WKEY, KM_PRESS, 0, 0); - for (i=0; i<=5; i++) { - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0); + for (i = 0; i <= 5; i++) { + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY + i, KM_PRESS, KM_CTRL, 0); RNA_int_set(kmi->ptr, "level", i); } diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 624d6e52926..3a00c69fc47 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -110,9 +110,9 @@ static int vertex_parent_set_poll(bContext *C) static int vertex_parent_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *obedit= CTX_data_edit_object(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *obedit = CTX_data_edit_object(C); BMVert *eve; BMIter iter; Curve *cu; @@ -120,18 +120,18 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) BezTriple *bezt; BPoint *bp; Object *par; - int a, v1=0, v2=0, v3=0, v4=0, nr=1; + int a, v1 = 0, v2 = 0, v3 = 0, v4 = 0, nr = 1; /* we need 1 to 3 selected vertices */ - if (obedit->type==OB_MESH) { - Mesh *me= obedit->data; + if (obedit->type == OB_MESH) { + Mesh *me = obedit->data; BMEditMesh *em; EDBM_mesh_load(obedit); EDBM_mesh_make(scene->toolsettings, scene, obedit); - em= me->edit_btmesh; + em = me->edit_btmesh; /* derivedMesh might be needed for solving parenting, * so re-create it here */ @@ -139,31 +139,31 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { - if (v1==0) v1= nr; - else if (v2==0) v2= nr; - else if (v3==0) v3= nr; - else if (v4==0) v4= nr; + if (v1 == 0) v1 = nr; + else if (v2 == 0) v2 = nr; + else if (v3 == 0) v3 = nr; + else if (v4 == 0) v4 = nr; else break; } nr++; } } else if (ELEM(obedit->type, OB_SURF, OB_CURVE)) { - ListBase *editnurb= object_editcurve_get(obedit); + ListBase *editnurb = object_editcurve_get(obedit); - cu= obedit->data; + cu = obedit->data; - nu= editnurb->first; + nu = editnurb->first; while (nu) { if (nu->type == CU_BEZIER) { - bezt= nu->bezt; - a= nu->pntsu; + bezt = nu->bezt; + a = nu->pntsu; while (a--) { if (BEZSELECTED_HIDDENHANDLES(cu, bezt)) { - if (v1==0) v1= nr; - else if (v2==0) v2= nr; - else if (v3==0) v3= nr; - else if (v4==0) v4= nr; + if (v1 == 0) v1 = nr; + else if (v2 == 0) v2 = nr; + else if (v3 == 0) v3 = nr; + else if (v4 == 0) v4 = nr; else break; } nr++; @@ -171,34 +171,34 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) } } else { - bp= nu->bp; - a= nu->pntsu*nu->pntsv; + bp = nu->bp; + a = nu->pntsu * nu->pntsv; while (a--) { if (bp->f1 & SELECT) { - if (v1==0) v1= nr; - else if (v2==0) v2= nr; - else if (v3==0) v3= nr; - else if (v4==0) v4= nr; + if (v1 == 0) v1 = nr; + else if (v2 == 0) v2 = nr; + else if (v3 == 0) v3 = nr; + else if (v4 == 0) v4 = nr; else break; } nr++; bp++; } } - nu= nu->next; + nu = nu->next; } } - else if (obedit->type==OB_LATTICE) { - Lattice *lt= obedit->data; + else if (obedit->type == OB_LATTICE) { + Lattice *lt = obedit->data; - a= lt->editlatt->latt->pntsu*lt->editlatt->latt->pntsv*lt->editlatt->latt->pntsw; - bp= lt->editlatt->latt->def; + a = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; + bp = lt->editlatt->latt->def; while (a--) { if (bp->f1 & SELECT) { - if (v1==0) v1= nr; - else if (v2==0) v2= nr; - else if (v3==0) v3= nr; - else if (v4==0) v4= nr; + if (v1 == 0) v1 = nr; + else if (v2 == 0) v2 = nr; + else if (v3 == 0) v3 = nr; + else if (v4 == 0) v4 = nr; else break; } nr++; @@ -206,19 +206,19 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) } } - if (v4 || !((v1 && v2==0 && v3==0) || (v1 && v2 && v3)) ) { + if (v4 || !((v1 && v2 == 0 && v3 == 0) || (v1 && v2 && v3)) ) { BKE_report(op->reports, RPT_ERROR, "Select either 1 or 3 vertices to parent to"); return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob != obedit) { - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; - par= obedit->parent; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; + par = obedit->parent; while (par) { - if (par==ob) break; - par= par->parent; + if (par == ob) break; + par = par->parent; } if (par) { BKE_report(op->reports, RPT_ERROR, "Loop in parents"); @@ -226,20 +226,20 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) else { Object workob; - ob->parent= BASACT->object; + ob->parent = BASACT->object; if (v3) { - ob->partype= PARVERT3; - ob->par1= v1-1; - ob->par2= v2-1; - ob->par3= v3-1; + ob->partype = PARVERT3; + ob->par1 = v1 - 1; + ob->par2 = v2 - 1; + ob->par3 = v3 - 1; /* inverse parent matrix */ what_does_parent(scene, ob, &workob); invert_m4_m4(ob->parentinv, workob.obmat); } else { - ob->partype= PARVERT1; - ob->par1= v1-1; + ob->partype = PARVERT1; + ob->par1 = v1 - 1; /* inverse parent matrix */ what_does_parent(scene, ob, &workob); @@ -270,16 +270,16 @@ void OBJECT_OT_vertex_parent_set(wmOperatorType *ot) ot->exec = vertex_parent_set_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /********************** Make Proxy Operator *************************/ /* set the object to proxify */ -static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) +static int make_proxy_invoke(bContext *C, wmOperator *op, wmEvent *evt) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_active_context(C); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_active_context(C); /* sanity checks */ if (!scene || scene->id.lib || !ob) @@ -294,8 +294,8 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) } else if (ob->id.lib) { - uiPopupMenu *pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION); - uiLayout *layout= uiPupMenuLayout(pup); + uiPopupMenu *pup = uiPupMenuBegin(C, "OK?", ICON_QUESTION); + uiLayout *layout = uiPupMenuLayout(pup); /* create operator menu item with relevant properties filled in */ uiItemFullO_ptr(layout, op->type, op->type->name, ICON_NONE, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); @@ -312,41 +312,41 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) return OPERATOR_CANCELLED; } -static int make_proxy_exec (bContext *C, wmOperator *op) +static int make_proxy_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Object *ob, *gob= ED_object_active_context(C); + Main *bmain = CTX_data_main(C); + Object *ob, *gob = ED_object_active_context(C); GroupObject *go; - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); if (gob->dup_group != NULL) { - go= BLI_findlink(&gob->dup_group->gobject, RNA_enum_get(op->ptr, "object")); - ob= go->ob; + go = BLI_findlink(&gob->dup_group->gobject, RNA_enum_get(op->ptr, "object")); + ob = go->ob; } else { - ob= gob; + ob = gob; gob = NULL; } if (ob) { Object *newob; - Base *newbase, *oldbase= BASACT; - char name[MAX_ID_NAME+4]; + Base *newbase, *oldbase = BASACT; + char name[MAX_ID_NAME + 4]; /* Add new object for the proxy */ - newob= add_object(scene, OB_EMPTY); + newob = add_object(scene, OB_EMPTY); - BLI_snprintf(name, sizeof(name), "%s_proxy", ((ID *)(gob ? gob : ob))->name+2); + BLI_snprintf(name, sizeof(name), "%s_proxy", ((ID *)(gob ? gob : ob))->name + 2); rename_id(&newob->id, name); /* set layers OK */ - newbase= BASACT; /* add_object sets active... */ - newbase->lay= oldbase->lay; - newob->lay= newbase->lay; + newbase = BASACT; /* add_object sets active... */ + newbase->lay = oldbase->lay; + newob->lay = newbase->lay; /* remove base, leave user count of object, it gets linked in object_make_proxy */ - if (gob==NULL) { + if (gob == NULL) { BLI_remlink(&scene->base, oldbase); MEM_freeN(oldbase); } @@ -355,8 +355,8 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* depsgraph flushes are needed for the new data */ DAG_scene_sort(bmain, scene); - DAG_id_tag_update(&newob->id, OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, newob); + DAG_id_tag_update(&newob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, newob); } else { BKE_report(op->reports, RPT_ERROR, "No object to make proxy for"); @@ -369,29 +369,29 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* Generic itemf's for operators that take library args */ static EnumPropertyItem *proxy_group_object_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free) { - EnumPropertyItem item_tmp= {0}, *item= NULL; - int totitem= 0; - int i= 0; - Object *ob= ED_object_active_context(C); + EnumPropertyItem item_tmp = {0}, *item = NULL; + int totitem = 0; + int i = 0; + Object *ob = ED_object_active_context(C); GroupObject *go; if (!ob || !ob->dup_group) return DummyRNA_DEFAULT_items; /* find the object to affect */ - for (go= ob->dup_group->gobject.first; go; go= go->next) { - item_tmp.identifier= item_tmp.name= go->ob->id.name+2; - item_tmp.value= i++; + for (go = ob->dup_group->gobject.first; go; go = go->next) { + item_tmp.identifier = item_tmp.name = go->ob->id.name + 2; + item_tmp.value = i++; RNA_enum_item_add(&item, &totitem, &item_tmp); } RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } -void OBJECT_OT_proxy_make (wmOperatorType *ot) +void OBJECT_OT_proxy_make(wmOperatorType *ot) { PropertyRNA *prop; @@ -406,10 +406,10 @@ void OBJECT_OT_proxy_make (wmOperatorType *ot) ot->poll = ED_operator_object_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "object", DummyRNA_DEFAULT_items, 0, "Proxy Object", "Name of lib-linked/grouped object to make a proxy for"); /* XXX, relies on hard coded ID at the moment */ + prop = RNA_def_enum(ot->srna, "object", DummyRNA_DEFAULT_items, 0, "Proxy Object", "Name of lib-linked/grouped object to make a proxy for"); /* XXX, relies on hard coded ID at the moment */ RNA_def_enum_funcs(prop, proxy_group_object_itemf); ot->prop = prop; } @@ -425,31 +425,31 @@ EnumPropertyItem prop_clear_parent_types[] = { void ED_object_parent_clear(bContext *C, int type) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->parent == NULL) continue; if (type == 0) { - ob->parent= NULL; + ob->parent = NULL; } else if (type == 1) { - ob->parent= NULL; + ob->parent = NULL; object_apply_mat4(ob, ob->obmat, TRUE, FALSE); } else if (type == 2) unit_m4(ob->parentinv); - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; } CTX_DATA_END; DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_PARENT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_PARENT, NULL); } /* note, poll should check for editable scene */ @@ -474,7 +474,7 @@ void OBJECT_OT_parent_clear(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->prop = RNA_def_enum(ot->srna, "type", prop_clear_parent_types, 0, "Type", ""); } @@ -484,15 +484,15 @@ void OBJECT_OT_parent_clear(wmOperatorType *ot) void ED_object_parent(Object *ob, Object *par, int type, const char *substr) { if (!par || BKE_object_parent_loop_check(par, ob)) { - ob->parent= NULL; - ob->partype= PAROBJECT; - ob->parsubstr[0]= 0; + ob->parent = NULL; + ob->partype = PAROBJECT; + ob->parsubstr[0] = 0; return; } /* this could use some more checks */ - ob->parent= par; + ob->parent = par; ob->partype &= ~PARTYPE; ob->partype |= type; BLI_strncpy(ob->parsubstr, substr, sizeof(ob->parsubstr)); @@ -517,20 +517,20 @@ EnumPropertyItem prop_make_parent_types[] = { int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object *ob, Object *par, int partype) { - bPoseChannel *pchan= NULL; - int pararm= ELEM4(partype, PAR_ARMATURE, PAR_ARMATURE_NAME, PAR_ARMATURE_ENVELOPE, PAR_ARMATURE_AUTO); + bPoseChannel *pchan = NULL; + int pararm = ELEM4(partype, PAR_ARMATURE, PAR_ARMATURE_NAME, PAR_ARMATURE_ENVELOPE, PAR_ARMATURE_AUTO); par->recalc |= OB_RECALC_OB; /* preconditions */ - if (partype==PAR_FOLLOW || partype==PAR_PATH_CONST) { - if (par->type!=OB_CURVE) + if (partype == PAR_FOLLOW || partype == PAR_PATH_CONST) { + if (par->type != OB_CURVE) return 0; else { - Curve *cu= par->data; + Curve *cu = par->data; - if ((cu->flag & CU_PATH)==0) { - cu->flag |= CU_PATH|CU_FOLLOW; + if ((cu->flag & CU_PATH) == 0) { + cu->flag |= CU_PATH | CU_FOLLOW; makeDispListCurveTypes(scene, par, 0); /* force creation of path data */ } else cu->flag |= CU_FOLLOW; @@ -548,19 +548,19 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object /* fall back on regular parenting now (for follow only) */ if (partype == PAR_FOLLOW) - partype= PAR_OBJECT; + partype = PAR_OBJECT; } } - else if (partype==PAR_BONE) { - pchan= get_active_posechannel(par); + else if (partype == PAR_BONE) { + pchan = get_active_posechannel(par); - if (pchan==NULL) { + if (pchan == NULL) { BKE_report(reports, RPT_ERROR, "No active Bone"); return 0; } } - if (ob!=par) { + if (ob != par) { if (BKE_object_parent_loop_check(par, ob)) { BKE_report(reports, RPT_ERROR, "Loop in parents"); return 0; @@ -573,14 +573,14 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object /* set the parent (except for follow-path constraint option) */ if (partype != PAR_PATH_CONST) { - ob->parent= par; + ob->parent = par; } /* handle types */ if (pchan) BLI_strncpy(ob->parsubstr, pchan->name, sizeof(ob->parsubstr)); else - ob->parsubstr[0]= 0; + ob->parsubstr[0] = 0; if (partype == PAR_PATH_CONST) { /* don't do anything here, since this is not technically "parenting" */ @@ -589,7 +589,7 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object /* partype is now set to PAROBJECT so that invisible 'virtual' modifiers don't need to be created * NOTE: the old (2.4x) method was to set ob->partype = PARSKEL, creating the virtual modifiers */ - ob->partype= PAROBJECT; /* note, dna define, not operator property */ + ob->partype = PAROBJECT; /* note, dna define, not operator property */ //ob->partype= PARSKEL; /* note, dna define, not operator property */ /* BUT, to keep the deforms, we need a modifier, and then we need to set the object that it uses */ @@ -598,25 +598,25 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object ModifierData *md; switch (partype) { - case PAR_CURVE: /* curve deform */ - md= ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Curve); - ((CurveModifierData *)md)->object= par; - break; - case PAR_LATTICE: /* lattice deform */ - md= ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Lattice); - ((LatticeModifierData *)md)->object= par; - break; - default: /* armature deform */ - md= ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Armature); - ((ArmatureModifierData *)md)->object= par; - break; + case PAR_CURVE: /* curve deform */ + md = ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Curve); + ((CurveModifierData *)md)->object = par; + break; + case PAR_LATTICE: /* lattice deform */ + md = ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Lattice); + ((LatticeModifierData *)md)->object = par; + break; + default: /* armature deform */ + md = ED_object_modifier_add(reports, bmain, scene, ob, NULL, eModifierType_Armature); + ((ArmatureModifierData *)md)->object = par; + break; } } } else if (partype == PAR_BONE) - ob->partype= PARBONE; /* note, dna define, not operator property */ + ob->partype = PARBONE; /* note, dna define, not operator property */ else - ob->partype= PAROBJECT; /* note, dna define, not operator property */ + ob->partype = PAROBJECT; /* note, dna define, not operator property */ /* constraint */ if (partype == PAR_PATH_CONST) { @@ -636,7 +636,7 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object ob->loc[1] = vec[1]; ob->loc[2] = vec[2]; } - else if (pararm && ob->type==OB_MESH && par->type == OB_ARMATURE) { + else if (pararm && ob->type == OB_MESH && par->type == OB_ARMATURE) { if (partype == PAR_ARMATURE_NAME) create_vgroups_from_armature(reports, scene, ob, par, ARM_GROUPS_NAME, 0); else if (partype == PAR_ARMATURE_ENVELOPE) @@ -647,7 +647,7 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object WM_cursor_wait(0); } /* get corrected inverse */ - ob->partype= PAROBJECT; + ob->partype = PAROBJECT; what_does_parent(scene, ob, &workob); invert_m4_m4(ob->parentinv, workob.obmat); @@ -658,7 +658,7 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object invert_m4_m4(ob->parentinv, workob.obmat); } - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA; } } @@ -667,13 +667,13 @@ int ED_object_parent_set(ReportList *reports, Main *bmain, Scene *scene, Object static int parent_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *par= ED_object_active_context(C); - int partype= RNA_enum_get(op->ptr, "type"); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *par = ED_object_active_context(C); + int partype = RNA_enum_get(op->ptr, "type"); int ok = 1; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (!ED_object_parent_set(op->reports, bmain, scene, ob, par, partype)) { ok = 0; break; @@ -686,8 +686,8 @@ static int parent_set_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_PARENT, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_PARENT, NULL); return OPERATOR_FINISHED; } @@ -695,22 +695,22 @@ static int parent_set_exec(bContext *C, wmOperator *op) static int parent_set_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event)) { - Object *ob= ED_object_active_context(C); - uiPopupMenu *pup= uiPupMenuBegin(C, "Set Parent To", ICON_NONE); - uiLayout *layout= uiPupMenuLayout(pup); + Object *ob = ED_object_active_context(C); + uiPopupMenu *pup = uiPupMenuBegin(C, "Set Parent To", ICON_NONE); + uiLayout *layout = uiPupMenuLayout(pup); uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_OBJECT); /* ob becomes parent, make the associated menus */ - if (ob->type==OB_ARMATURE) { + if (ob->type == OB_ARMATURE) { uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_NAME); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_ENVELOPE); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_AUTO); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_BONE); } - else if (ob->type==OB_CURVE) { + else if (ob->type == OB_CURVE) { uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_CURVE); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_FOLLOW); uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_PATH_CONST); @@ -739,7 +739,7 @@ void OBJECT_OT_parent_set(wmOperatorType *ot) ot->poll = ED_operator_object_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", prop_make_parent_types, 0, "Type", ""); } @@ -748,13 +748,13 @@ void OBJECT_OT_parent_set(wmOperatorType *ot) static int parent_noinv_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Object *par= ED_object_active_context(C); + Main *bmain = CTX_data_main(C); + Object *par = ED_object_active_context(C); par->recalc |= OB_RECALC_OB; /* context iterator */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob != par) { if (BKE_object_parent_loop_check(par, ob)) { BKE_report(op->reports, RPT_ERROR, "Loop in parents"); @@ -762,14 +762,14 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op) else { /* clear inverse matrix and also the object location */ unit_m4(ob->parentinv); - memset(ob->loc, 0, 3*sizeof(float)); + memset(ob->loc, 0, 3 * sizeof(float)); /* set recalc flags */ - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA; /* set parenting type for object - object only... */ - ob->parent= par; - ob->partype= PAROBJECT; /* note, dna define, not operator property */ + ob->parent = par; + ob->partype = PAROBJECT; /* note, dna define, not operator property */ } } } @@ -777,7 +777,7 @@ static int parent_noinv_set_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, CTX_data_scene(C)); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -795,17 +795,17 @@ void OBJECT_OT_parent_no_inverse_set(wmOperatorType *ot) ot->poll = ED_operator_object_active_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /************************ Clear Slow Parent Operator *********************/ static int object_slow_parent_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->parent) { if (ob->partype & PARSLOW) { ob->partype -= PARSLOW; @@ -837,17 +837,17 @@ void OBJECT_OT_slow_parent_clear(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /********************** Make Slow Parent Operator *********************/ static int object_slow_parent_set_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->parent) ob->partype |= PARSLOW; @@ -876,7 +876,7 @@ void OBJECT_OT_slow_parent_set(wmOperatorType *ot) ot->poll = ED_operator_view3d_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* ******************** Clear Track Operator ******************* */ @@ -890,24 +890,24 @@ static EnumPropertyItem prop_clear_track_types[] = { /* note, poll should check for editable scene */ static int object_track_clear_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - int type= RNA_enum_get(op->ptr, "type"); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + int type = RNA_enum_get(op->ptr, "type"); if (CTX_data_edit_object(C)) { BKE_report(op->reports, RPT_ERROR, "Operation cannot be performed in EditMode"); return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { bConstraint *con, *pcon; /* remove track-object for old track */ - ob->track= NULL; - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->track = NULL; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; /* also remove all tracking constraints */ - for (con= ob->constraints.last; con; con= pcon) { - pcon= con->prev; + for (con = ob->constraints.last; con; con = pcon) { + pcon = con->prev; if (ELEM3(con->type, CONSTRAINT_TYPE_TRACKTO, CONSTRAINT_TYPE_LOCKTRACK, CONSTRAINT_TYPE_DAMPTRACK)) remove_constraint(&ob->constraints, con); } @@ -919,7 +919,7 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) DAG_ids_flush_update(bmain, 0); DAG_scene_sort(bmain, scene); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -938,7 +938,7 @@ void OBJECT_OT_track_clear(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->prop = RNA_def_enum(ot->srna, "type", prop_clear_track_types, 0, "Type", ""); } @@ -954,23 +954,23 @@ static EnumPropertyItem prop_make_track_types[] = { static int track_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *obact= ED_object_active_context(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *obact = ED_object_active_context(C); - int type= RNA_enum_get(op->ptr, "type"); + int type = RNA_enum_get(op->ptr, "type"); if (type == 1) { bConstraint *con; bDampTrackConstraint *data; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { - if (ob!=obact) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { + if (ob != obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_DAMPTRACK); data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; /* Lamp, Camera and Speaker track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA || ob->type == OB_SPEAKER) @@ -983,13 +983,13 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bTrackToConstraint *data; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { - if (ob!=obact) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { + if (ob != obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_TRACKTO); data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; /* Lamp, Camera and Speaker track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA || ob->type == OB_SPEAKER) { @@ -1004,13 +1004,13 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bLockTrackConstraint *data; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { - if (ob!=obact) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { + if (ob != obact) { con = add_ob_constraint(ob, "AutoTrack", CONSTRAINT_TYPE_LOCKTRACK); data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; + ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; /* Lamp, Camera and Speaker track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA || ob->type == OB_SPEAKER) { @@ -1024,7 +1024,7 @@ static int track_set_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -1043,7 +1043,7 @@ void OBJECT_OT_track_set(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", prop_make_track_types, 0, "Type", ""); @@ -1054,24 +1054,24 @@ void OBJECT_OT_track_set(wmOperatorType *ot) static unsigned int move_to_layer_init(bContext *C, wmOperator *op) { int values[20], a; - unsigned int lay= 0; + unsigned int lay = 0; if (!RNA_struct_property_is_set(op->ptr, "layers")) { /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN (C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_bases) { lay |= base->lay; } CTX_DATA_END; - for (a=0; a<20; a++) - values[a]= (lay & (1<ptr, "layers", values); } else { RNA_boolean_get_array(op->ptr, "layers", values); - for (a=0; a<20; a++) + for (a = 0; a < 20; a++) if (values[a]) lay |= (1 << a); } @@ -1081,7 +1081,7 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op) static int move_to_layer_invoke(bContext *C, wmOperator *op, wmEvent *event) { - View3D *v3d= CTX_wm_view3d(C); + View3D *v3d = CTX_wm_view3d(C); if (v3d && v3d->localvd) { return WM_operator_confirm_message(C, op, "Move from localview"); } @@ -1093,24 +1093,24 @@ static int move_to_layer_invoke(bContext *C, wmOperator *op, wmEvent *event) static int move_to_layer_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - View3D *v3d= CTX_wm_view3d(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); unsigned int lay, local; /* int islamp= 0; */ /* UNUSED */ - lay= move_to_layer_init(C, op); + lay = move_to_layer_init(C, op); lay &= 0xFFFFFF; - if (lay==0) return OPERATOR_CANCELLED; + if (lay == 0) return OPERATOR_CANCELLED; if (v3d && v3d->localvd) { /* now we can move out of localview. */ /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN (C, Base*, base, selected_bases) { - lay= base->lay & ~v3d->lay; - base->lay= lay; - base->object->lay= lay; + CTX_DATA_BEGIN (C, Base *, base, selected_bases) { + lay = base->lay & ~v3d->lay; + base->lay = lay; + base->object->lay = lay; base->object->flag &= ~SELECT; base->flag &= ~SELECT; /* if (base->object->type==OB_LAMP) islamp= 1; */ @@ -1120,11 +1120,11 @@ static int move_to_layer_exec(bContext *C, wmOperator *op) else { /* normal non localview operation */ /* note: layers are set in bases, library objects work for this */ - CTX_DATA_BEGIN (C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_bases) { /* upper byte is used for local view */ - local= base->lay & 0xFF000000; - base->lay= lay + local; - base->object->lay= lay; + local = base->lay & 0xFF000000; + base->lay = lay + local; + base->object->lay = lay; /* if (base->object->type==OB_LAMP) islamp= 1; */ } CTX_DATA_END; @@ -1132,8 +1132,8 @@ static int move_to_layer_exec(bContext *C, wmOperator *op) /* warning, active object may be hidden now */ - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, scene); - WM_event_add_notifier(C, NC_SCENE|ND_LAYER_CONTENT, scene); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, scene); + WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, scene); DAG_scene_sort(bmain, scene); @@ -1153,7 +1153,7 @@ void OBJECT_OT_move_to_layer(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", ""); @@ -1164,18 +1164,18 @@ void OBJECT_OT_move_to_layer(wmOperatorType *ot) #if 0 static void link_to_scene(Main *UNUSED(bmain), unsigned short UNUSED(nr)) { - Scene *sce= (Scene*) BLI_findlink(&bmain->scene, G.curscreen->scenenr-1); + Scene *sce = (Scene *) BLI_findlink(&bmain->scene, G.curscreen->scenenr - 1); Base *base, *nbase; - if (sce==0) return; + if (sce == 0) return; if (sce->id.lib) return; - for (base= FIRSTBASE; base; base= base->next) { + for (base = FIRSTBASE; base; base = base->next) { if (TESTBASE(v3d, base)) { - nbase= MEM_mallocN( sizeof(Base), "newbase"); - *nbase= *base; - BLI_addhead( &(sce->base), nbase); + nbase = MEM_mallocN(sizeof(Base), "newbase"); + *nbase = *base; + BLI_addhead(&(sce->base), nbase); id_us_plus((ID *)base->object); } } @@ -1184,10 +1184,10 @@ static void link_to_scene(Main *UNUSED(bmain), unsigned short UNUSED(nr)) static int make_links_scene_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene")); + Main *bmain = CTX_data_main(C); + Scene *scene_to = BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene")); - if (scene_to==NULL) { + if (scene_to == NULL) { BKE_report(op->reports, RPT_ERROR, "Scene not found"); return OPERATOR_CANCELLED; } @@ -1202,11 +1202,11 @@ static int make_links_scene_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - CTX_DATA_BEGIN (C, Base*, base, selected_bases) { + CTX_DATA_BEGIN (C, Base *, base, selected_bases) { if (!object_in_scene(base->object, scene_to)) { - Base *nbase= MEM_mallocN( sizeof(Base), "newbase"); - *nbase= *base; - BLI_addhead( &(scene_to->base), nbase); + Base *nbase = MEM_mallocN(sizeof(Base), "newbase"); + *nbase = *base; + BLI_addhead(&(scene_to->base), nbase); id_us_plus((ID *)base->object); } } @@ -1236,7 +1236,7 @@ static int allow_make_links_data(int ev, Object *ob, Object *obt) break; case MAKE_LINKS_MATERIALS: if (OB_TYPE_SUPPORT_MATERIAL(ob->type) && - OB_TYPE_SUPPORT_MATERIAL(obt->type)) + OB_TYPE_SUPPORT_MATERIAL(obt->type)) { return 1; } @@ -1254,53 +1254,53 @@ static int allow_make_links_data(int ev, Object *ob, Object *obt) static int make_links_data_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); int event = RNA_enum_get(op->ptr, "type"); Object *ob; ID *id; int a; - ob= ED_object_active_context(C); + ob = ED_object_active_context(C); - CTX_DATA_BEGIN (C, Object*, obt, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, obt, selected_editable_objects) { if (ob != obt) { if (allow_make_links_data(event, ob, obt)) { switch (event) { - case MAKE_LINKS_OBDATA: /* obdata */ - id= obt->data; - id->us--; + case MAKE_LINKS_OBDATA: /* obdata */ + id = obt->data; + id->us--; - id= ob->data; - id_us_plus(id); - obt->data= id; + id = ob->data; + id_us_plus(id); + obt->data = id; - /* if amount of material indices changed: */ - test_object_materials(obt->data); + /* if amount of material indices changed: */ + test_object_materials(obt->data); - obt->recalc |= OB_RECALC_DATA; - break; - case MAKE_LINKS_MATERIALS: - /* new approach, using functions from kernel */ - for (a=0; atotcol; a++) { - Material *ma= give_current_material(ob, a+1); - assign_material(obt, ma, a+1); /* also works with ma==NULL */ - } - break; - case MAKE_LINKS_ANIMDATA: - BKE_copy_animdata_id((ID *)obt, (ID *)ob, FALSE); - BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data, FALSE); - break; - case MAKE_LINKS_DUPLIGROUP: - obt->dup_group= ob->dup_group; - if (obt->dup_group) { - id_lib_extern(&obt->dup_group->id); - obt->transflag |= OB_DUPLIGROUP; - } - break; - case MAKE_LINKS_MODIFIERS: - object_link_modifiers(obt, ob); - obt->recalc |= OB_RECALC_OB|OB_RECALC_DATA|OB_RECALC_TIME; - break; + obt->recalc |= OB_RECALC_DATA; + break; + case MAKE_LINKS_MATERIALS: + /* new approach, using functions from kernel */ + for (a = 0; a < ob->totcol; a++) { + Material *ma = give_current_material(ob, a + 1); + assign_material(obt, ma, a + 1); /* also works with ma==NULL */ + } + break; + case MAKE_LINKS_ANIMDATA: + BKE_copy_animdata_id((ID *)obt, (ID *)ob, FALSE); + BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data, FALSE); + break; + case MAKE_LINKS_DUPLIGROUP: + obt->dup_group = ob->dup_group; + if (obt->dup_group) { + id_lib_extern(&obt->dup_group->id); + obt->transflag |= OB_DUPLIGROUP; + } + break; + case MAKE_LINKS_MODIFIERS: + object_link_modifiers(obt, ob); + obt->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; + break; } } } @@ -1310,7 +1310,7 @@ static int make_links_data_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, CTX_data_scene(C)); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, CTX_wm_view3d(C)); return OPERATOR_FINISHED; } @@ -1330,22 +1330,22 @@ void OBJECT_OT_make_links_scene(wmOperatorType *ot) /* better not run the poll check */ /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", ""); + prop = RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", ""); RNA_def_enum_funcs(prop, RNA_scene_local_itemf); ot->prop = prop; } void OBJECT_OT_make_links_data(wmOperatorType *ot) { - static EnumPropertyItem make_links_items[]= { - {MAKE_LINKS_OBDATA, "OBDATA", 0, "Object Data", ""}, - {MAKE_LINKS_MATERIALS, "MATERIAL", 0, "Materials", ""}, - {MAKE_LINKS_ANIMDATA, "ANIMATION", 0, "Animation Data", ""}, - {MAKE_LINKS_DUPLIGROUP, "DUPLIGROUP", 0, "DupliGroup", ""}, - {MAKE_LINKS_MODIFIERS, "MODIFIERS", 0, "Modifiers", ""}, + static EnumPropertyItem make_links_items[] = { + {MAKE_LINKS_OBDATA, "OBDATA", 0, "Object Data", ""}, + {MAKE_LINKS_MATERIALS, "MATERIAL", 0, "Materials", ""}, + {MAKE_LINKS_ANIMDATA, "ANIMATION", 0, "Animation Data", ""}, + {MAKE_LINKS_DUPLIGROUP, "DUPLIGROUP", 0, "DupliGroup", ""}, + {MAKE_LINKS_MODIFIERS, "MODIFIERS", 0, "Modifiers", ""}, {0, NULL, 0, NULL, NULL}}; /* identifiers */ @@ -1358,7 +1358,7 @@ void OBJECT_OT_make_links_data(wmOperatorType *ot) ot->poll = ED_operator_object_active; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", make_links_items, 0, "Type", ""); @@ -1372,22 +1372,22 @@ static void single_object_users(Scene *scene, View3D *v3d, int flag) Base *base; Object *ob, *obn; - clear_sca_new_poins(); /* sensor/contr/act */ + clear_sca_new_poins(); /* sensor/contr/act */ /* duplicate (must set newid) */ - for (base= FIRSTBASE; base; base= base->next) { - ob= base->object; + for (base = FIRSTBASE; base; base = base->next) { + ob = base->object; /* newid may still have some trash from Outliner tree building, * so clear that first to avoid errors [#26002] */ ob->id.newid = NULL; - if ( (base->flag & flag)==flag ) { - if (ob->id.lib==NULL && ob->id.us>1) { + if ( (base->flag & flag) == flag) { + if (ob->id.lib == NULL && ob->id.us > 1) { /* base gets copy of object */ - obn= copy_object(ob); - base->object= obn; + obn = copy_object(ob); + base->object = obn; ob->id.us--; } } @@ -1397,7 +1397,7 @@ static void single_object_users(Scene *scene, View3D *v3d, int flag) if (v3d) ID_NEW(v3d->camera); /* object pointers */ - for (base= FIRSTBASE; base; base= base->next) { + for (base = FIRSTBASE; base; base = base->next) { object_relink(base->object); } @@ -1410,9 +1410,9 @@ void ED_object_single_user(Scene *scene, Object *ob) { Base *base; - for (base= FIRSTBASE; base; base= base->next) { - if (base->object == ob) base->flag |= OB_DONE; - else base->flag &= ~OB_DONE; + for (base = FIRSTBASE; base; base = base->next) { + if (base->object == ob) base->flag |= OB_DONE; + else base->flag &= ~OB_DONE; } single_object_users(scene, NULL, OB_DONE); @@ -1423,18 +1423,18 @@ static void new_id_matar(Material **matar, int totcol) ID *id; int a; - for (a=0; alib == NULL) { if (id->newid) { - matar[a]= (Material *)id->newid; + matar[a] = (Material *)id->newid; id_us_plus(id->newid); id->us--; } - else if (id->us>1) { - matar[a]= copy_material(matar[a]); + else if (id->us > 1) { + matar[a] = copy_material(matar[a]); id->us--; - id->newid= (ID *)matar[a]; + id->newid = (ID *)matar[a]; } } } @@ -1451,73 +1451,73 @@ static void single_obdata_users(Main *bmain, Scene *scene, int flag) ID *id; int a; - for (base= FIRSTBASE; base; base= base->next) { - ob= base->object; - if (ob->id.lib==NULL && (base->flag & flag)==flag ) { - id= ob->data; + for (base = FIRSTBASE; base; base = base->next) { + ob = base->object; + if (ob->id.lib == NULL && (base->flag & flag) == flag) { + id = ob->data; - if (id && id->us>1 && id->lib==NULL) { - ob->recalc= OB_RECALC_DATA; + if (id && id->us > 1 && id->lib == NULL) { + ob->recalc = OB_RECALC_DATA; BKE_copy_animdata_id_action(id); switch (ob->type) { - case OB_LAMP: - ob->data= la= copy_lamp(ob->data); - for (a=0; amtex[a]) { - ID_NEW(la->mtex[a]->object); + case OB_LAMP: + ob->data = la = copy_lamp(ob->data); + for (a = 0; a < MAX_MTEX; a++) { + if (la->mtex[a]) { + ID_NEW(la->mtex[a]->object); + } } - } - break; - case OB_CAMERA: - ob->data= copy_camera(ob->data); - break; - case OB_MESH: - ob->data= copy_mesh(ob->data); - //me= ob->data; - //if (me && me->key) - // ipo_idnew(me->key->ipo); /* drivers */ - break; - case OB_MBALL: - ob->data= copy_mball(ob->data); - break; - case OB_CURVE: - case OB_SURF: - case OB_FONT: - ob->data= cu= copy_curve(ob->data); - ID_NEW(cu->bevobj); - ID_NEW(cu->taperobj); - break; - case OB_LATTICE: - ob->data= copy_lattice(ob->data); - break; - case OB_ARMATURE: - ob->recalc |= OB_RECALC_DATA; - ob->data= copy_armature(ob->data); - armature_rebuild_pose(ob, ob->data); - break; - case OB_SPEAKER: - ob->data= copy_speaker(ob->data); - break; - default: - if (G.debug & G_DEBUG) - printf("ERROR %s: can't copy %s\n", __func__, id->name); - return; + break; + case OB_CAMERA: + ob->data = copy_camera(ob->data); + break; + case OB_MESH: + ob->data = copy_mesh(ob->data); + //me= ob->data; + //if (me && me->key) + // ipo_idnew(me->key->ipo); /* drivers */ + break; + case OB_MBALL: + ob->data = copy_mball(ob->data); + break; + case OB_CURVE: + case OB_SURF: + case OB_FONT: + ob->data = cu = copy_curve(ob->data); + ID_NEW(cu->bevobj); + ID_NEW(cu->taperobj); + break; + case OB_LATTICE: + ob->data = copy_lattice(ob->data); + break; + case OB_ARMATURE: + ob->recalc |= OB_RECALC_DATA; + ob->data = copy_armature(ob->data); + armature_rebuild_pose(ob, ob->data); + break; + case OB_SPEAKER: + ob->data = copy_speaker(ob->data); + break; + default: + if (G.debug & G_DEBUG) + printf("ERROR %s: can't copy %s\n", __func__, id->name); + return; } id->us--; - id->newid= ob->data; + id->newid = ob->data; } } } - me= bmain->mesh.first; + me = bmain->mesh.first; while (me) { ID_NEW(me->texcomesh); - me= me->id.next; + me = me->id.next; } } @@ -1526,10 +1526,10 @@ static void single_object_action_users(Scene *scene, int flag) Object *ob; Base *base; - for (base= FIRSTBASE; base; base= base->next) { - ob= base->object; - if (ob->id.lib==NULL && (flag==0 || (base->flag & SELECT)) ) { - ob->recalc= OB_RECALC_DATA; + for (base = FIRSTBASE; base; base = base->next) { + ob = base->object; + if (ob->id.lib == NULL && (flag == 0 || (base->flag & SELECT)) ) { + ob->recalc = OB_RECALC_DATA; BKE_copy_animdata_id_action(&ob->id); } } @@ -1543,30 +1543,30 @@ static void single_mat_users(Scene *scene, int flag, int do_textures) Tex *tex; int a, b; - for (base= FIRSTBASE; base; base= base->next) { - ob= base->object; - if (ob->id.lib==NULL && (flag==0 || (base->flag & SELECT)) ) { + for (base = FIRSTBASE; base; base = base->next) { + ob = base->object; + if (ob->id.lib == NULL && (flag == 0 || (base->flag & SELECT)) ) { - for (a=1; a<=ob->totcol; a++) { - ma= give_current_material(ob, a); + for (a = 1; a <= ob->totcol; a++) { + ma = give_current_material(ob, a); if (ma) { /* do not test for LIB_NEW: this functions guaranteed delivers single_users! */ - if (ma->id.us>1) { - man= copy_material(ma); + if (ma->id.us > 1) { + man = copy_material(ma); BKE_copy_animdata_id_action(&man->id); - man->id.us= 0; + man->id.us = 0; assign_material(ob, man, a); if (do_textures) { - for (b=0; bmtex[b] && (tex= ma->mtex[b]->tex)) { - if (tex->id.us>1) { + for (b = 0; b < MAX_MTEX; b++) { + if (ma->mtex[b] && (tex = ma->mtex[b]->tex)) { + if (tex->id.us > 1) { tex->id.us--; - tex= copy_texture(tex); + tex = copy_texture(tex); BKE_copy_animdata_id_action(&tex->id); - man->mtex[b]->tex= tex; + man->mtex[b]->tex = tex; } } } @@ -1582,20 +1582,20 @@ static void do_single_tex_user(Tex **from) { Tex *tex, *texn; - tex= *from; - if (tex==NULL) return; + tex = *from; + if (tex == NULL) return; if (tex->id.newid) { - *from= (Tex *)tex->id.newid; + *from = (Tex *)tex->id.newid; id_us_plus(tex->id.newid); tex->id.us--; } - else if (tex->id.us>1) { - texn= copy_texture(tex); + else if (tex->id.us > 1) { + texn = copy_texture(tex); BKE_copy_animdata_id_action(&texn->id); - tex->id.newid= (ID *)texn; + tex->id.newid = (ID *)texn; tex->id.us--; - *from= texn; + *from = texn; } } @@ -1607,31 +1607,31 @@ static void single_tex_users_expand(Main *bmain) World *wo; int b; - for (ma= bmain->mat.first; ma; ma=ma->id.next) { + for (ma = bmain->mat.first; ma; ma = ma->id.next) { if (ma->id.flag & LIB_NEW) { - for (b=0; bmtex[b] && ma->mtex[b]->tex) { - do_single_tex_user( &(ma->mtex[b]->tex) ); + do_single_tex_user(&(ma->mtex[b]->tex) ); } } } } - for (la= bmain->lamp.first; la; la=la->id.next) { + for (la = bmain->lamp.first; la; la = la->id.next) { if (la->id.flag & LIB_NEW) { - for (b=0; bmtex[b] && la->mtex[b]->tex) { - do_single_tex_user( &(la->mtex[b]->tex) ); + do_single_tex_user(&(la->mtex[b]->tex) ); } } } } - for (wo= bmain->world.first; wo; wo=wo->id.next) { + for (wo = bmain->world.first; wo; wo = wo->id.next) { if (wo->id.flag & LIB_NEW) { - for (b=0; bmtex[b] && wo->mtex[b]->tex) { - do_single_tex_user( &(wo->mtex[b]->tex) ); + do_single_tex_user(&(wo->mtex[b]->tex) ); } } } @@ -1648,26 +1648,26 @@ static void single_mat_users_expand(Main *bmain) Material *ma; int a; - for (ob=bmain->object.first; ob; ob=ob->id.next) + for (ob = bmain->object.first; ob; ob = ob->id.next) if (ob->id.flag & LIB_NEW) new_id_matar(ob->mat, ob->totcol); - for (me=bmain->mesh.first; me; me=me->id.next) + for (me = bmain->mesh.first; me; me = me->id.next) if (me->id.flag & LIB_NEW) new_id_matar(me->mat, me->totcol); - for (cu=bmain->curve.first; cu; cu=cu->id.next) + for (cu = bmain->curve.first; cu; cu = cu->id.next) if (cu->id.flag & LIB_NEW) new_id_matar(cu->mat, cu->totcol); - for (mb=bmain->mball.first; mb; mb=mb->id.next) + for (mb = bmain->mball.first; mb; mb = mb->id.next) if (mb->id.flag & LIB_NEW) new_id_matar(mb->mat, mb->totcol); /* material imats */ - for (ma=bmain->mat.first; ma; ma=ma->id.next) + for (ma = bmain->mat.first; ma; ma = ma->id.next) if (ma->id.flag & LIB_NEW) - for (a=0; amtex[a]) ID_NEW(ma->mtex[a]->object); } @@ -1697,11 +1697,11 @@ static void make_local_makelocalmaterial(Material *ma) id_make_local(&ma->id, 0); - for (b=0; bmtex[b] && ma->mtex[b]->tex) id_make_local(&ma->mtex[b]->tex->id, 0); - adt= BKE_animdata_from_id(&ma->id); + adt = BKE_animdata_from_id(&ma->id); if (adt) BKE_animdata_make_local(adt); /* nodetree? XXX */ @@ -1709,83 +1709,83 @@ static void make_local_makelocalmaterial(Material *ma) static int make_local_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); AnimData *adt; ParticleSystem *psys; Material *ma, ***matarar; Lamp *la; ID *id; - int a, b, mode= RNA_enum_get(op->ptr, "type"); + int a, b, mode = RNA_enum_get(op->ptr, "type"); - if (mode==3) { - BKE_library_make_local(bmain, NULL, 0); /* NULL is all libs */ + if (mode == 3) { + BKE_library_make_local(bmain, NULL, 0); /* NULL is all libs */ WM_event_add_notifier(C, NC_WINDOW, NULL); return OPERATOR_FINISHED; } clear_id_newpoins(); - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { if (ob->id.lib) id_make_local(&ob->id, 0); } CTX_DATA_END; /* maybe object pointers */ - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { - if (ob->id.lib==NULL) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { + if (ob->id.lib == NULL) { ID_NEW(ob->parent); } } CTX_DATA_END; - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { - id= ob->data; + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { + id = ob->data; - if (id && mode>1) { + if (id && mode > 1) { id_make_local(id, 0); - adt= BKE_animdata_from_id(id); + adt = BKE_animdata_from_id(id); if (adt) BKE_animdata_make_local(adt); /* tag indirect data direct */ - matarar= (Material ***)give_matarar(ob); + matarar = (Material ***)give_matarar(ob); if (matarar) { - for (a=0; atotcol; a++) { - ma= (*matarar)[a]; + for (a = 0; a < ob->totcol; a++) { + ma = (*matarar)[a]; if (ma) id_lib_extern(&ma->id); } } } - for (psys=ob->particlesystem.first; psys; psys=psys->next) + for (psys = ob->particlesystem.first; psys; psys = psys->next) id_make_local(&psys->part->id, 0); - adt= BKE_animdata_from_id(&ob->id); + adt = BKE_animdata_from_id(&ob->id); if (adt) BKE_animdata_make_local(adt); } CTX_DATA_END; - if (mode>1) { - CTX_DATA_BEGIN (C, Object*, ob, selected_objects) { - if (ob->type==OB_LAMP) { - la= ob->data; + if (mode > 1) { + CTX_DATA_BEGIN (C, Object *, ob, selected_objects) { + if (ob->type == OB_LAMP) { + la = ob->data; - for (b=0; bmtex[b] && la->mtex[b]->tex) id_make_local(&la->mtex[b]->tex->id, 0); } else { - for (a=0; atotcol; a++) { - ma= ob->mat[a]; + for (a = 0; a < ob->totcol; a++) { + ma = ob->mat[a]; if (ma) make_local_makelocalmaterial(ma); } - matarar= (Material ***)give_matarar(ob); + matarar = (Material ***)give_matarar(ob); if (matarar) { - for (a=0; atotcol; a++) { - ma= (*matarar)[a]; + for (a = 0; a < ob->totcol; a++) { + ma = (*matarar)[a]; if (ma) make_local_makelocalmaterial(ma); } @@ -1802,7 +1802,7 @@ static int make_local_exec(bContext *C, wmOperator *op) void OBJECT_OT_make_local(wmOperatorType *ot) { - static EnumPropertyItem type_items[]= { + static EnumPropertyItem type_items[] = { {1, "SELECTED_OBJECTS", 0, "Selected Objects", ""}, {2, "SELECTED_OBJECTS_DATA", 0, "Selected Objects and Data", ""}, {3, "ALL", 0, "All", ""}, @@ -1819,7 +1819,7 @@ void OBJECT_OT_make_local(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); @@ -1827,10 +1827,10 @@ void OBJECT_OT_make_local(wmOperatorType *ot) static int make_single_user_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - View3D *v3d= CTX_wm_view3d(C); /* ok if this is NULL */ - int flag= RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */ + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); /* ok if this is NULL */ + int flag = RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */ if (RNA_boolean_get(op->ptr, "object")) single_object_users(scene, v3d, flag); @@ -1856,7 +1856,7 @@ static int make_single_user_exec(bContext *C, wmOperator *op) void OBJECT_OT_make_single_user(wmOperatorType *ot) { - static EnumPropertyItem type_items[]= { + static EnumPropertyItem type_items[] = { {SELECT, "SELECTED_OBJECTS", 0, "Selected Objects", ""}, {0, "ALL", 0, "All", ""}, {0, NULL, 0, NULL, NULL}}; @@ -1872,7 +1872,7 @@ void OBJECT_OT_make_single_user(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", type_items, SELECT, "Type", ""); @@ -1886,20 +1886,20 @@ void OBJECT_OT_make_single_user(wmOperatorType *ot) static int drop_named_material_invoke(bContext *C, wmOperator *op, wmEvent *event) { - Main *bmain= CTX_data_main(C); - Base *base= ED_view3d_give_base_under_cursor(C, event->mval); + Main *bmain = CTX_data_main(C); + Base *base = ED_view3d_give_base_under_cursor(C, event->mval); Material *ma; - char name[MAX_ID_NAME-2]; + char name[MAX_ID_NAME - 2]; RNA_string_get(op->ptr, "name", name); - ma= (Material *)find_id("MA", name); - if (base==NULL || ma==NULL) + ma = (Material *)find_id("MA", name); + if (base == NULL || ma == NULL) return OPERATOR_CANCELLED; assign_material(base->object, ma, 1); DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, CTX_wm_view3d(C)); return OPERATOR_FINISHED; } @@ -1922,5 +1922,5 @@ void OBJECT_OT_drop_named_material(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - RNA_def_string(ot->srna, "name", "Material", MAX_ID_NAME-2, "Name", "Material name to assign"); + RNA_def_string(ot->srna, "name", "Material", MAX_ID_NAME - 2, "Name", "Material name to assign"); } diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 386541c5262..7a4db175ee4 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -79,8 +79,8 @@ /************************ Exported **************************/ /* simple API for object selection, rather than just using the flag - * this takes into account the 'restrict selection in 3d view' flag. - * deselect works always, the restriction just prevents selection */ +* this takes into account the 'restrict selection in 3d view' flag. +* deselect works always, the restriction just prevents selection */ /* Note: send a NC_SCENE|ND_OB_SELECT notifier yourself! (or * or a NC_SCENE|ND_OB_VISIBLE in case of visibility toggling */ @@ -88,34 +88,34 @@ void ED_base_object_select(Base *base, short mode) { if (base) { - if (mode==BA_SELECT) { + if (mode == BA_SELECT) { if (!(base->object->restrictflag & OB_RESTRICT_SELECT)) base->flag |= SELECT; } - else if (mode==BA_DESELECT) { + else if (mode == BA_DESELECT) { base->flag &= ~SELECT; } - base->object->flag= base->flag; + base->object->flag = base->flag; } } /* also to set active NULL */ void ED_base_object_activate(bContext *C, Base *base) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); /* sets scene->basact */ - BASACT= base; + BASACT = base; if (base) { /* XXX old signals, remember to handle notifiers now! */ // select_actionchannel_by_name(base->object->action, "Object", 1); - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene); } else - WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, NULL); + WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, NULL); } /********************** Selection Operators **********************/ @@ -124,7 +124,7 @@ static int objects_selectable_poll(bContext *C) { /* we don't check for linked scenes here, selection is * still allowed then for inspection of scene */ - Object *obact= CTX_data_active_object(C); + Object *obact = CTX_data_active_object(C); if (CTX_data_edit_object(C)) return 0; @@ -141,23 +141,23 @@ static int object_select_by_type_exec(bContext *C, wmOperator *op) short obtype, extend; obtype = RNA_enum_get(op->ptr, "type"); - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { - if (base->object->type==obtype) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { + if (base->object->type == obtype) { ED_base_object_select(base, BA_SELECT); } } CTX_DATA_END; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -175,7 +175,7 @@ void OBJECT_OT_select_by_type(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first"); @@ -198,11 +198,11 @@ static EnumPropertyItem prop_select_linked_types[] = { static int object_select_linked_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; void *obdata = NULL; Material *mat = NULL, *mat1; - Tex *tex= NULL; + Tex *tex = NULL; int a, b; int nr = RNA_enum_get(op->ptr, "type"); short changed = 0, extend; @@ -215,77 +215,77 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) * PSys: 6 */ - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - ob= OBACT; - if (ob==NULL) { + ob = OBACT; + if (ob == NULL) { BKE_report(op->reports, RPT_ERROR, "No Active Object"); return OPERATOR_CANCELLED; } - if (nr==1) { - // XXX old animation system + if (nr == 1) { + // XXX old animation system //ipo= ob->ipo; //if (ipo==0) return OPERATOR_CANCELLED; return OPERATOR_CANCELLED; } - else if (nr==2) { - if (ob->data==NULL) return OPERATOR_CANCELLED; - obdata= ob->data; + else if (nr == 2) { + if (ob->data == NULL) return OPERATOR_CANCELLED; + obdata = ob->data; } - else if (nr==3 || nr==4) { - mat= give_current_material(ob, ob->actcol); - if (mat==NULL) return OPERATOR_CANCELLED; - if (nr==4) { - if (mat->mtex[ (int)mat->texact ]) tex= mat->mtex[ (int)mat->texact ]->tex; - if (tex==NULL) return OPERATOR_CANCELLED; + else if (nr == 3 || nr == 4) { + mat = give_current_material(ob, ob->actcol); + if (mat == NULL) return OPERATOR_CANCELLED; + if (nr == 4) { + if (mat->mtex[(int)mat->texact]) tex = mat->mtex[(int)mat->texact]->tex; + if (tex == NULL) return OPERATOR_CANCELLED; } } - else if (nr==5) { - if (ob->dup_group==NULL) return OPERATOR_CANCELLED; + else if (nr == 5) { + if (ob->dup_group == NULL) return OPERATOR_CANCELLED; } - else if (nr==6) { - if (ob->particlesystem.first==NULL) return OPERATOR_CANCELLED; + else if (nr == 6) { + if (ob->particlesystem.first == NULL) return OPERATOR_CANCELLED; } - else if (nr==7) { + else if (nr == 7) { /* do nothing */ } - else if (nr==8) { - if (ob->data==NULL) return OPERATOR_CANCELLED; + else if (nr == 8) { + if (ob->data == NULL) return OPERATOR_CANCELLED; } else return OPERATOR_CANCELLED; - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { - if (nr==1) { - // XXX old animation system + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { + if (nr == 1) { + // XXX old animation system //if (base->object->ipo==ipo) base->flag |= SELECT; //changed = 1; } - else if (nr==2) { - if (base->object->data==obdata) base->flag |= SELECT; + else if (nr == 2) { + if (base->object->data == obdata) base->flag |= SELECT; changed = 1; } - else if (nr==3 || nr==4) { - ob= base->object; + else if (nr == 3 || nr == 4) { + ob = base->object; - for (a=1; a<=ob->totcol; a++) { - mat1= give_current_material(ob, a); - if (nr==3) { - if (mat1==mat) base->flag |= SELECT; + for (a = 1; a <= ob->totcol; a++) { + mat1 = give_current_material(ob, a); + if (nr == 3) { + if (mat1 == mat) base->flag |= SELECT; changed = 1; } - else if (mat1 && nr==4) { - for (b=0; bmtex[b]) { - if (tex==mat1->mtex[b]->tex) { + if (tex == mat1->mtex[b]->tex) { base->flag |= SELECT; changed = 1; break; @@ -295,19 +295,19 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) } } } - else if (nr==5) { - if (base->object->dup_group==ob->dup_group) { + else if (nr == 5) { + if (base->object->dup_group == ob->dup_group) { base->flag |= SELECT; changed = 1; } } - else if (nr==6) { + else if (nr == 6) { /* loop through other, then actives particles*/ ParticleSystem *psys; ParticleSystem *psys_act; - for (psys=base->object->particlesystem.first; psys; psys=psys->next) { - for (psys_act=ob->particlesystem.first; psys_act; psys_act=psys_act->next) { + for (psys = base->object->particlesystem.first; psys; psys = psys->next) { + for (psys_act = ob->particlesystem.first; psys_act; psys_act = psys_act->next) { if (psys->part == psys_act->part) { base->flag |= SELECT; changed = 1; @@ -320,24 +320,24 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) } } } - else if (nr==7) { + else if (nr == 7) { if (ob->id.lib == base->object->id.lib) { base->flag |= SELECT; - changed= 1; + changed = 1; } } - else if (nr==8) { + else if (nr == 8) { if (base->object->data && ((ID *)ob->data)->lib == ((ID *)base->object->data)->lib) { base->flag |= SELECT; - changed= 1; + changed = 1; } } - base->object->flag= base->flag; + base->object->flag = base->flag; } CTX_DATA_END; if (changed) { - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -357,7 +357,7 @@ void OBJECT_OT_select_linked(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first"); @@ -386,7 +386,7 @@ static short select_grouped_children(bContext *C, Object *ob, int recursive) { short changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if (ob == base->object->parent) { if (!(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); @@ -401,17 +401,17 @@ static short select_grouped_children(bContext *C, Object *ob, int recursive) return changed; } -static short select_grouped_parent(bContext *C) /* Makes parent active and de-selected OBACT */ +static short select_grouped_parent(bContext *C) /* Makes parent active and de-selected OBACT */ { - Scene *scene= CTX_data_scene(C); - View3D *v3d= CTX_wm_view3d(C); + Scene *scene = CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); short changed = 0; - Base *baspar, *basact= CTX_data_active_base(C); + Base *baspar, *basact = CTX_data_active_base(C); - if (!basact || !(basact->object->parent)) return 0; /* we know OBACT is valid */ + if (!basact || !(basact->object->parent)) return 0; /* we know OBACT is valid */ - baspar= object_in_scene(basact->object->parent, scene); + baspar = object_in_scene(basact->object->parent, scene); /* can be NULL if parent in other scene */ if (baspar && BASE_SELECTABLE(v3d, baspar)) { @@ -424,17 +424,17 @@ static short select_grouped_parent(bContext *C) /* Makes parent active and de-se } -#define GROUP_MENU_MAX 24 -static short select_grouped_group(bContext *C, Object *ob) /* Select objects in the same group as the active */ +#define GROUP_MENU_MAX 24 +static short select_grouped_group(bContext *C, Object *ob) /* Select objects in the same group as the active */ { short changed = 0; Group *group, *ob_groups[GROUP_MENU_MAX]; - int group_count=0, i; + int group_count = 0, i; uiPopupMenu *pup; uiLayout *layout; - for (group=CTX_data_main(C)->group.first; group && group_count < GROUP_MENU_MAX; group=group->id.next) { - if (object_in_group (ob, group)) { + for (group = CTX_data_main(C)->group.first; group && group_count < GROUP_MENU_MAX; group = group->id.next) { + if (object_in_group(ob, group)) { ob_groups[group_count] = group; group_count++; } @@ -444,7 +444,7 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in return 0; else if (group_count == 1) { group = ob_groups[0]; - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (!(base->flag & SELECT) && object_in_group(base->object, group)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -455,12 +455,12 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in } /* build the menu. */ - pup= uiPupMenuBegin(C, "Select Group", ICON_NONE); - layout= uiPupMenuLayout(pup); + pup = uiPupMenuBegin(C, "Select Group", ICON_NONE); + layout = uiPupMenuLayout(pup); - for (i=0; iid.name+2, 0, "OBJECT_OT_select_same_group", "group", group->id.name); + uiItemStringO(layout, group->id.name + 2, 0, "OBJECT_OT_select_same_group", "group", group->id.name); } uiPupMenuEnd(C, pup); @@ -469,19 +469,19 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in static short select_grouped_object_hooks(bContext *C, Object *ob) { - Scene *scene= CTX_data_scene(C); - View3D *v3d= CTX_wm_view3d(C); + Scene *scene = CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); short changed = 0; Base *base; ModifierData *md; HookModifierData *hmd; - for (md = ob->modifiers.first; md; md=md->next) { - if (md->type==eModifierType_Hook) { - hmd= (HookModifierData*) md; + for (md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Hook) { + hmd = (HookModifierData *) md; if (hmd->object && !(hmd->object->flag & SELECT)) { - base= object_in_scene(hmd->object, scene); + base = object_in_scene(hmd->object, scene); if (base && (BASE_SELECTABLE(v3d, base))) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -498,8 +498,8 @@ static short select_grouped_siblings(bContext *C, Object *ob) { short changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { - if ((base->object->parent==ob->parent) && !(base->flag & SELECT)) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { + if ((base->object->parent == ob->parent) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; } @@ -512,7 +512,7 @@ static short select_grouped_type(bContext *C, Object *ob) { short changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if ((base->object->type == ob->type) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -526,7 +526,7 @@ static short select_grouped_layer(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if ((base->lay & ob->lay) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -540,7 +540,7 @@ static short select_grouped_index_object(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if ((base->object->index == ob->index) && !(base->flag & SELECT)) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -554,7 +554,7 @@ static short select_grouped_color(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if (!(base->flag & SELECT) && (compare_v3v3(base->object->col, ob->col, 0.005f))) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -569,8 +569,8 @@ static short objects_share_gameprop(Object *a, Object *b) bProperty *prop; /*make a copy of all its properties*/ - for ( prop= a->prop.first; prop; prop = prop->next ) { - if ( get_ob_property(b, prop->name) ) + for (prop = a->prop.first; prop; prop = prop->next) { + if (get_ob_property(b, prop->name) ) return 1; } return 0; @@ -580,7 +580,7 @@ static short select_grouped_gameprops(bContext *C, Object *ob) { char changed = 0; - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { if (!(base->flag & SELECT) && (objects_share_gameprop(base->object, ob))) { ED_base_object_select(base, BA_SELECT); changed = 1; @@ -602,7 +602,7 @@ static short select_grouped_keyingset(bContext *C, Object *UNUSED(ob)) /* select each object that Keying Set refers to */ // TODO: perhaps to be more in line with the rest of these, we should only take objects // if the passed in object is included in this too - CTX_DATA_BEGIN (C, Base*, base, selectable_bases) { + CTX_DATA_BEGIN (C, Base *, base, selectable_bases) { /* only check for this object if it isn't selected already, to limit time wasted */ if ((base->flag & SELECT) == 0) { KS_Path *ksp; @@ -627,42 +627,42 @@ static short select_grouped_keyingset(bContext *C, Object *UNUSED(ob)) static int object_select_grouped_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); Object *ob; int nr = RNA_enum_get(op->ptr, "type"); short changed = 0, extend; - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); changed = 1; } CTX_DATA_END; } - ob= OBACT; - if (ob==NULL) { + ob = OBACT; + if (ob == NULL) { BKE_report(op->reports, RPT_ERROR, "No Active Object"); return OPERATOR_CANCELLED; } - if (nr==1) changed |= select_grouped_children(C, ob, 1); - else if (nr==2) changed |= select_grouped_children(C, ob, 0); - else if (nr==3) changed |= select_grouped_parent(C); - else if (nr==4) changed |= select_grouped_siblings(C, ob); - else if (nr==5) changed |= select_grouped_type(C, ob); - else if (nr==6) changed |= select_grouped_layer(C, ob); - else if (nr==7) changed |= select_grouped_group(C, ob); - else if (nr==8) changed |= select_grouped_object_hooks(C, ob); - else if (nr==9) changed |= select_grouped_index_object(C, ob); - else if (nr==10) changed |= select_grouped_color(C, ob); - else if (nr==11) changed |= select_grouped_gameprops(C, ob); - else if (nr==12) changed |= select_grouped_keyingset(C, ob); + if (nr == 1) changed |= select_grouped_children(C, ob, 1); + else if (nr == 2) changed |= select_grouped_children(C, ob, 0); + else if (nr == 3) changed |= select_grouped_parent(C); + else if (nr == 4) changed |= select_grouped_siblings(C, ob); + else if (nr == 5) changed |= select_grouped_type(C, ob); + else if (nr == 6) changed |= select_grouped_layer(C, ob); + else if (nr == 7) changed |= select_grouped_group(C, ob); + else if (nr == 8) changed |= select_grouped_object_hooks(C, ob); + else if (nr == 9) changed |= select_grouped_index_object(C, ob); + else if (nr == 10) changed |= select_grouped_color(C, ob); + else if (nr == 11) changed |= select_grouped_gameprops(C, ob); + else if (nr == 12) changed |= select_grouped_keyingset(C, ob); if (changed) { - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -682,7 +682,7 @@ void OBJECT_OT_select_grouped(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first"); @@ -696,24 +696,24 @@ static int object_select_by_layer_exec(bContext *C, wmOperator *op) unsigned int layernum; short extend; - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); layernum = RNA_int_get(op->ptr, "layers"); if (extend == 0) { - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { - if (base->lay == (1<< (layernum -1))) + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { + if (base->lay == (1 << (layernum - 1))) ED_base_object_select(base, BA_SELECT); } CTX_DATA_END; /* undo? */ - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -731,7 +731,7 @@ void OBJECT_OT_select_by_layer(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first"); @@ -749,7 +749,7 @@ static int object_select_all_exec(bContext *C, wmOperator *op) if (action == SEL_TOGGLE) { action = SEL_SELECT; - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (base->flag & SELECT) { action = SEL_DESELECT; break; @@ -758,27 +758,27 @@ static int object_select_all_exec(bContext *C, wmOperator *op) CTX_DATA_END; } - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { switch (action) { - case SEL_SELECT: - ED_base_object_select(base, BA_SELECT); - break; - case SEL_DESELECT: - ED_base_object_select(base, BA_DESELECT); - break; - case SEL_INVERT: - if (base->flag & SELECT) { - ED_base_object_select(base, BA_DESELECT); - } - else { + case SEL_SELECT: ED_base_object_select(base, BA_SELECT); - } - break; + break; + case SEL_DESELECT: + ED_base_object_select(base, BA_DESELECT); + break; + case SEL_INVERT: + if (base->flag & SELECT) { + ED_base_object_select(base, BA_DESELECT); + } + else { + ED_base_object_select(base, BA_SELECT); + } + break; } } CTX_DATA_END; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -796,7 +796,7 @@ void OBJECT_OT_select_all(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; WM_operator_properties_select_all(ot); } @@ -813,7 +813,7 @@ static int object_select_same_group_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "group", group_name); - for (group=CTX_data_main(C)->group.first; group; group=group->id.next) { + for (group = CTX_data_main(C)->group.first; group; group = group->id.next) { if (!strcmp(group->id.name, group_name)) break; } @@ -821,13 +821,13 @@ static int object_select_same_group_exec(bContext *C, wmOperator *op) if (!group) return OPERATOR_PASS_THROUGH; - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (!(base->flag & SELECT) && object_in_group(base->object, group)) ED_base_object_select(base, BA_SELECT); } CTX_DATA_END; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -845,7 +845,7 @@ void OBJECT_OT_select_same_group(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_string(ot->srna, "group", "", MAX_ID_NAME, "Group", "Name of the group to select"); } @@ -853,20 +853,20 @@ void OBJECT_OT_select_same_group(wmOperatorType *ot) /**************************** Select Mirror ****************************/ static int object_select_mirror_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); short extend; - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); - CTX_DATA_BEGIN (C, Base*, primbase, selected_bases) { + CTX_DATA_BEGIN (C, Base *, primbase, selected_bases) { char tmpname[MAXBONENAME]; - flip_side_name(tmpname, primbase->object->id.name+2, TRUE); + flip_side_name(tmpname, primbase->object->id.name + 2, TRUE); - if (strcmp(tmpname, primbase->object->id.name+2)!=0) { /* names differ */ - Object *ob= (Object *)find_id("OB", tmpname); + if (strcmp(tmpname, primbase->object->id.name + 2) != 0) { /* names differ */ + Object *ob = (Object *)find_id("OB", tmpname); if (ob) { - Base *secbase= object_in_scene(ob, scene); + Base *secbase = object_in_scene(ob, scene); if (secbase) { ED_base_object_select(secbase, BA_SELECT); @@ -880,7 +880,7 @@ static int object_select_mirror_exec(bContext *C, wmOperator *op) CTX_DATA_END; /* undo? */ - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -898,7 +898,7 @@ void OBJECT_OT_select_mirror(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first"); } @@ -911,24 +911,24 @@ static int object_select_random_exec(bContext *C, wmOperator *op) float percent; short extend; - extend= RNA_boolean_get(op->ptr, "extend"); + extend = RNA_boolean_get(op->ptr, "extend"); if (extend == 0) { - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { ED_base_object_select(base, BA_DESELECT); } CTX_DATA_END; } - percent = RNA_float_get(op->ptr, "percent")/100.0f; + percent = RNA_float_get(op->ptr, "percent") / 100.0f; - CTX_DATA_BEGIN (C, Base*, base, visible_bases) { + CTX_DATA_BEGIN (C, Base *, base, visible_bases) { if (BLI_frand() < percent) { ED_base_object_select(base, BA_SELECT); } } CTX_DATA_END; - WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -946,7 +946,7 @@ void OBJECT_OT_select_random(wmOperatorType *ot) ot->poll = objects_selectable_poll; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_float_percentage(ot->srna, "percent", 50.f, 0.0f, 100.0f, "Percent", "Percentage of objects to select randomly", 0.f, 100.0f); diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index 9e31fc2d765..bd88bbda32c 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -78,11 +78,11 @@ static void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob, int f { KeyBlock *kb; if ((kb = object_insert_shape_key(scene, ob, NULL, from_mix))) { - Key *key= ob_get_key(ob); + Key *key = ob_get_key(ob); /* for absolute shape keys, new keys may not be added last */ ob->shapenr = BLI_findindex(&key->block, kb) + 1; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); } } @@ -90,26 +90,26 @@ static void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob, int f static int ED_object_shape_key_remove(bContext *C, Object *ob) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); KeyBlock *kb, *rkb; Key *key; //IpoCurve *icu; - key= ob_get_key(ob); - if (key==NULL) + key = ob_get_key(ob); + if (key == NULL) return 0; - kb= BLI_findlink(&key->block, ob->shapenr-1); + kb = BLI_findlink(&key->block, ob->shapenr - 1); if (kb) { - for (rkb= key->block.first; rkb; rkb= rkb->next) - if (rkb->relative == ob->shapenr-1) - rkb->relative= 0; + for (rkb = key->block.first; rkb; rkb = rkb->next) + if (rkb->relative == ob->shapenr - 1) + rkb->relative = 0; BLI_remlink(&key->block, kb); key->totkey--; - if (key->refkey== kb) { - key->refkey= key->block.first; + if (key->refkey == kb) { + key->refkey = key->block.first; if (key->refkey) { /* apply new basis key on original data */ @@ -136,16 +136,16 @@ static int ED_object_shape_key_remove(bContext *C, Object *ob) } } - if (key->totkey==0) { - if (GS(key->from->name)==ID_ME) ((Mesh *)key->from)->key= NULL; - else if (GS(key->from->name)==ID_CU) ((Curve *)key->from)->key= NULL; - else if (GS(key->from->name)==ID_LT) ((Lattice *)key->from)->key= NULL; + if (key->totkey == 0) { + if (GS(key->from->name) == ID_ME) ((Mesh *)key->from)->key = NULL; + else if (GS(key->from->name) == ID_CU) ((Curve *)key->from)->key = NULL; + else if (GS(key->from->name) == ID_LT) ((Lattice *)key->from)->key = NULL; free_libblock_us(&(bmain->key), key); } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return 1; } @@ -155,53 +155,53 @@ static int object_shape_key_mirror(bContext *C, Object *ob) KeyBlock *kb; Key *key; - key= ob_get_key(ob); - if (key==NULL) + key = ob_get_key(ob); + if (key == NULL) return 0; - kb= BLI_findlink(&key->block, ob->shapenr-1); + kb = BLI_findlink(&key->block, ob->shapenr - 1); if (kb) { int i1, i2; float *fp1, *fp2; float tvec[3]; - char *tag_elem= MEM_callocN(sizeof(char) * kb->totelem, "shape_key_mirror"); + char *tag_elem = MEM_callocN(sizeof(char) * kb->totelem, "shape_key_mirror"); - if (ob->type==OB_MESH) { - Mesh *me= ob->data; + if (ob->type == OB_MESH) { + Mesh *me = ob->data; MVert *mv; mesh_octree_table(ob, NULL, NULL, 's'); - for (i1=0, mv=me->mvert; i1totvert; i1++, mv++) { - i2= mesh_get_x_mirror_vert(ob, i1); - if (i2==i1) { - fp1= ((float *)kb->data) + i1*3; + for (i1 = 0, mv = me->mvert; i1 < me->totvert; i1++, mv++) { + i2 = mesh_get_x_mirror_vert(ob, i1); + if (i2 == i1) { + fp1 = ((float *)kb->data) + i1 * 3; fp1[0] = -fp1[0]; - tag_elem[i1]= 1; + tag_elem[i1] = 1; } else if (i2 != -1) { - if (tag_elem[i1]==0 && tag_elem[i2]==0) { - fp1= ((float *)kb->data) + i1*3; - fp2= ((float *)kb->data) + i2*3; + if (tag_elem[i1] == 0 && tag_elem[i2] == 0) { + fp1 = ((float *)kb->data) + i1 * 3; + fp2 = ((float *)kb->data) + i2 * 3; - copy_v3_v3(tvec, fp1); - copy_v3_v3(fp1, fp2); - copy_v3_v3(fp2, tvec); + copy_v3_v3(tvec, fp1); + copy_v3_v3(fp1, fp2); + copy_v3_v3(fp2, tvec); /* flip x axis */ fp1[0] = -fp1[0]; fp2[0] = -fp2[0]; } - tag_elem[i1]= tag_elem[i2]= 1; + tag_elem[i1] = tag_elem[i2] = 1; } } mesh_octree_table(ob, NULL, NULL, 'e'); } else if (ob->type == OB_LATTICE) { - Lattice *lt= ob->data; + Lattice *lt = ob->data; int i1, i2; float *fp1, *fp2; int u, v, w; @@ -213,28 +213,28 @@ static int object_shape_key_mirror(bContext *C, Object *ob) /* if (lt->editlatt) lt= lt->editlatt->latt; */ - for (w=0; wpntsw; w++) { - for (v=0; vpntsv; v++) { - for (u=0; upntsu - 1) - u; + for (w = 0; w < lt->pntsw; w++) { + for (v = 0; v < lt->pntsv; v++) { + for (u = 0; u < pntsu_half; u++) { + int u_inv = (lt->pntsu - 1) - u; float tvec[3]; if (u == u_inv) { - i1= LT_INDEX(lt, u, v, w); - fp1= ((float *)kb->data) + i1*3; - fp1[0]= -fp1[0]; + i1 = LT_INDEX(lt, u, v, w); + fp1 = ((float *)kb->data) + i1 * 3; + fp1[0] = -fp1[0]; } else { - i1= LT_INDEX(lt, u, v, w); - i2= LT_INDEX(lt, u_inv, v, w); + i1 = LT_INDEX(lt, u, v, w); + i2 = LT_INDEX(lt, u_inv, v, w); - fp1= ((float *)kb->data) + i1*3; - fp2= ((float *)kb->data) + i2*3; + fp1 = ((float *)kb->data) + i1 * 3; + fp2 = ((float *)kb->data) + i2 * 3; copy_v3_v3(tvec, fp1); copy_v3_v3(fp1, fp2); copy_v3_v3(fp2, tvec); - fp1[0]= -fp1[0]; - fp2[0]= -fp2[0]; + fp1[0] = -fp1[0]; + fp2[0] = -fp2[0]; } } } @@ -245,7 +245,7 @@ static int object_shape_key_mirror(bContext *C, Object *ob) } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return 1; } @@ -254,22 +254,22 @@ static int object_shape_key_mirror(bContext *C, Object *ob) static int shape_key_mode_poll(bContext *C) { - Object *ob= ED_object_context(C); - ID *data= (ob)? ob->data: NULL; + Object *ob = ED_object_context(C); + ID *data = (ob) ? ob->data : NULL; return (ob && !ob->id.lib && data && !data->lib && ob->mode != OB_MODE_EDIT); } static int shape_key_poll(bContext *C) { - Object *ob= ED_object_context(C); - ID *data= (ob)? ob->data: NULL; + Object *ob = ED_object_context(C); + ID *data = (ob) ? ob->data : NULL; return (ob && !ob->id.lib && data && !data->lib); } static int shape_key_add_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_context(C); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_context(C); int from_mix = RNA_boolean_get(op->ptr, "from_mix"); ED_object_shape_key_add(C, scene, ob, from_mix); @@ -289,7 +289,7 @@ void OBJECT_OT_shape_key_add(wmOperatorType *ot) ot->exec = shape_key_add_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "from_mix", 1, "From Mix", "Create the new shape key from the existing mix of keys"); @@ -297,7 +297,7 @@ void OBJECT_OT_shape_key_add(wmOperatorType *ot) static int shape_key_remove_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); if (!ED_object_shape_key_remove(C, ob)) return OPERATOR_CANCELLED; @@ -317,23 +317,23 @@ void OBJECT_OT_shape_key_remove(wmOperatorType *ot) ot->exec = shape_key_remove_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int shape_key_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); - Key *key= ob_get_key(ob); - KeyBlock *kb= ob_get_keyblock(ob); + Object *ob = ED_object_context(C); + Key *key = ob_get_key(ob); + KeyBlock *kb = ob_get_keyblock(ob); if (!key || !kb) return OPERATOR_CANCELLED; - for (kb=key->block.first; kb; kb=kb->next) - kb->curval= 0.0f; + for (kb = key->block.first; kb; kb = kb->next) + kb->curval = 0.0f; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -350,7 +350,7 @@ void OBJECT_OT_shape_key_clear(wmOperatorType *ot) ot->exec = shape_key_clear_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* starting point and step size could be optional */ @@ -364,11 +364,11 @@ static int shape_key_retime_exec(bContext *C, wmOperator *UNUSED(op)) if (!key || !kb) return OPERATOR_CANCELLED; - for (kb=key->block.first; kb; kb=kb->next) + for (kb = key->block.first; kb; kb = kb->next) kb->pos = (cfra += 0.1f); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -385,12 +385,12 @@ void OBJECT_OT_shape_key_retime(wmOperatorType *ot) ot->exec = shape_key_retime_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int shape_key_mirror_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); if (!object_shape_key_mirror(C, ob)) return OPERATOR_CANCELLED; @@ -409,28 +409,28 @@ void OBJECT_OT_shape_key_mirror(wmOperatorType *ot) ot->exec = shape_key_mirror_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int shape_key_move_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); - int type= RNA_enum_get(op->ptr, "type"); - Key *key= ob_get_key(ob); + int type = RNA_enum_get(op->ptr, "type"); + Key *key = ob_get_key(ob); if (key) { KeyBlock *kb, *kb_other; - int shapenr_act= ob->shapenr-1; - int shapenr_swap= shapenr_act + type; - kb= BLI_findlink(&key->block, shapenr_act); + int shapenr_act = ob->shapenr - 1; + int shapenr_swap = shapenr_act + type; + kb = BLI_findlink(&key->block, shapenr_act); - if ((type==-1 && kb->prev==NULL) || (type==1 && kb->next==NULL)) { + if ((type == -1 && kb->prev == NULL) || (type == 1 && kb->next == NULL)) { return OPERATOR_CANCELLED; } - for (kb_other= key->block.first; kb_other; kb_other= kb_other->next) { + for (kb_other = key->block.first; kb_other; kb_other = kb_other->next) { if (kb_other->relative == shapenr_act) { kb_other->relative += type; } @@ -439,16 +439,16 @@ static int shape_key_move_exec(bContext *C, wmOperator *op) } } - if (type==-1) { + if (type == -1) { /* move back */ - kb_other= kb->prev; + kb_other = kb->prev; BLI_remlink(&key->block, kb); BLI_insertlinkbefore(&key->block, kb_other, kb); ob->shapenr--; } else { /* move next */ - kb_other= kb->next; + kb_other = kb->next; BLI_remlink(&key->block, kb); BLI_insertlinkafter(&key->block, kb_other, kb); ob->shapenr++; @@ -458,7 +458,7 @@ static int shape_key_move_exec(bContext *C, wmOperator *op) } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -480,7 +480,7 @@ void OBJECT_OT_shape_key_move(wmOperatorType *ot) ot->exec = shape_key_move_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", slot_move, 0, "Type", ""); } diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index d0fc4f79817..1c0899ab551 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -78,57 +78,57 @@ static void object_clear_loc(Object *ob) { /* clear location if not locked */ - if ((ob->protectflag & OB_LOCK_LOCX)==0) - ob->loc[0]= ob->dloc[0]= 0.0f; - if ((ob->protectflag & OB_LOCK_LOCY)==0) - ob->loc[1]= ob->dloc[1]= 0.0f; - if ((ob->protectflag & OB_LOCK_LOCZ)==0) - ob->loc[2]= ob->dloc[2]= 0.0f; + if ((ob->protectflag & OB_LOCK_LOCX) == 0) + ob->loc[0] = ob->dloc[0] = 0.0f; + if ((ob->protectflag & OB_LOCK_LOCY) == 0) + ob->loc[1] = ob->dloc[1] = 0.0f; + if ((ob->protectflag & OB_LOCK_LOCZ) == 0) + ob->loc[2] = ob->dloc[2] = 0.0f; } /* clear rotation of object */ static void object_clear_rot(Object *ob) { /* clear rotations that aren't locked */ - if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { + if (ob->protectflag & (OB_LOCK_ROTX | OB_LOCK_ROTY | OB_LOCK_ROTZ | OB_LOCK_ROTW)) { if (ob->protectflag & OB_LOCK_ROT4D) { /* perform clamping on a component by component basis */ if (ob->rotmode == ROT_MODE_AXISANGLE) { if ((ob->protectflag & OB_LOCK_ROTW) == 0) - ob->rotAngle= ob->drotAngle= 0.0f; + ob->rotAngle = ob->drotAngle = 0.0f; if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->rotAxis[0]= ob->drotAxis[0]= 0.0f; + ob->rotAxis[0] = ob->drotAxis[0] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->rotAxis[1]= ob->drotAxis[1]= 0.0f; + ob->rotAxis[1] = ob->drotAxis[1] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->rotAxis[2]= ob->drotAxis[2]= 0.0f; + ob->rotAxis[2] = ob->drotAxis[2] = 0.0f; /* check validity of axis - axis should never be 0,0,0 (if so, then we make it rotate about y) */ if (IS_EQF(ob->rotAxis[0], ob->rotAxis[1]) && IS_EQF(ob->rotAxis[1], ob->rotAxis[2])) ob->rotAxis[1] = 1.0f; if (IS_EQF(ob->drotAxis[0], ob->drotAxis[1]) && IS_EQF(ob->drotAxis[1], ob->drotAxis[2])) - ob->drotAxis[1]= 1.0f; + ob->drotAxis[1] = 1.0f; } else if (ob->rotmode == ROT_MODE_QUAT) { if ((ob->protectflag & OB_LOCK_ROTW) == 0) - ob->quat[0]= ob->dquat[0]= 1.0f; + ob->quat[0] = ob->dquat[0] = 1.0f; if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->quat[1]= ob->dquat[1]= 0.0f; + ob->quat[1] = ob->dquat[1] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->quat[2]= ob->dquat[2]= 0.0f; + ob->quat[2] = ob->dquat[2] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->quat[3]= ob->dquat[3]= 0.0f; + ob->quat[3] = ob->dquat[3] = 0.0f; // TODO: does this quat need normalizing now? } else { /* the flag may have been set for the other modes, so just ignore the extra flag... */ if ((ob->protectflag & OB_LOCK_ROTX) == 0) - ob->rot[0]= ob->drot[0]= 0.0f; + ob->rot[0] = ob->drot[0] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTY) == 0) - ob->rot[1]= ob->drot[1]= 0.0f; + ob->rot[1] = ob->drot[1] = 0.0f; if ((ob->protectflag & OB_LOCK_ROTZ) == 0) - ob->rot[2]= ob->drot[2]= 0.0f; + ob->rot[2] = ob->drot[2] = 0.0f; } } else { @@ -147,30 +147,30 @@ static void object_clear_rot(Object *ob) copy_v3_v3(oldeul, ob->rot); } - eul[0]= eul[1]= eul[2]= 0.0f; + eul[0] = eul[1] = eul[2] = 0.0f; if (ob->protectflag & OB_LOCK_ROTX) - eul[0]= oldeul[0]; + eul[0] = oldeul[0]; if (ob->protectflag & OB_LOCK_ROTY) - eul[1]= oldeul[1]; + eul[1] = oldeul[1]; if (ob->protectflag & OB_LOCK_ROTZ) - eul[2]= oldeul[2]; + eul[2] = oldeul[2]; if (ob->rotmode == ROT_MODE_QUAT) { eul_to_quat(ob->quat, eul); /* quaternions flip w sign to accumulate rotations correctly */ - if ((quat1[0]<0.0f && ob->quat[0]>0.0f) || (quat1[0]>0.0f && ob->quat[0]<0.0f)) { + if ((quat1[0] < 0.0f && ob->quat[0] > 0.0f) || (quat1[0] > 0.0f && ob->quat[0] < 0.0f)) { mul_qt_fl(ob->quat, -1.0f); } } else if (ob->rotmode == ROT_MODE_AXISANGLE) { - eulO_to_axis_angle(ob->rotAxis, &ob->rotAngle,eul, EULER_ORDER_DEFAULT); + eulO_to_axis_angle(ob->rotAxis, &ob->rotAngle, eul, EULER_ORDER_DEFAULT); } else { copy_v3_v3(ob->rot, eul); } } - } // Duplicated in source/blender/editors/armature/editarmature.c + } // Duplicated in source/blender/editors/armature/editarmature.c else { if (ob->rotmode == ROT_MODE_QUAT) { unit_qt(ob->quat); @@ -191,17 +191,17 @@ static void object_clear_rot(Object *ob) static void object_clear_scale(Object *ob) { /* clear scale factors which are not locked */ - if ((ob->protectflag & OB_LOCK_SCALEX)==0) { - ob->dscale[0]= 1.0f; - ob->size[0]= 1.0f; + if ((ob->protectflag & OB_LOCK_SCALEX) == 0) { + ob->dscale[0] = 1.0f; + ob->size[0] = 1.0f; } - if ((ob->protectflag & OB_LOCK_SCALEY)==0) { - ob->dscale[1]= 1.0f; - ob->size[1]= 1.0f; + if ((ob->protectflag & OB_LOCK_SCALEY) == 0) { + ob->dscale[1] = 1.0f; + ob->size[1] = 1.0f; } - if ((ob->protectflag & OB_LOCK_SCALEZ)==0) { - ob->dscale[2]= 1.0f; - ob->size[2]= 1.0f; + if ((ob->protectflag & OB_LOCK_SCALEZ) == 0) { + ob->dscale[2] = 1.0f; + ob->size[2] = 1.0f; } } @@ -209,10 +209,10 @@ static void object_clear_scale(Object *ob) /* generic exec for clear-transform operators */ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, - void (*clear_func)(Object*), const char default_ksName[]) + void (*clear_func)(Object *), const char default_ksName[]) { Main *bmain = CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); KeyingSet *ks; /* sanity checks */ @@ -227,7 +227,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, /* operate on selected objects only if they aren't in weight-paint mode * (so that object-transform clearing won't be applied at same time as bone-clearing) */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (!(ob->mode & OB_MODE_WEIGHT_PAINT)) { /* run provided clearing function */ clear_func(ob); @@ -243,7 +243,7 @@ static int object_clear_transform_generic_exec(bContext *C, wmOperator *op, /* this is needed so children are also updated */ DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -268,7 +268,7 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_rotation_clear_exec(bContext *C, wmOperator *op) @@ -288,7 +288,7 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_scale_clear_exec(bContext *C, wmOperator *op) @@ -308,22 +308,22 @@ void OBJECT_OT_scale_clear(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /* --------------- */ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op)) { - Main *bmain= CTX_data_main(C); + Main *bmain = CTX_data_main(C); float *v1, *v3; float mat[3][3]; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (ob->parent) { /* vectors pointed to by v1 and v3 will get modified */ - v1= ob->loc; - v3= ob->parentinv[3]; + v1 = ob->loc; + v3 = ob->parentinv[3]; copy_m3_m4(mat, ob->parentinv); negate_v3_v3(v3, v1); @@ -336,7 +336,7 @@ static int object_origin_clear_exec(bContext *C, wmOperator *UNUSED(op)) DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -353,20 +353,20 @@ void OBJECT_OT_origin_clear(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } /*************************** Apply Transformation ****************************/ /* use this when the loc/size/rot of the parent has changed but the children - * should stay in the same place, e.g. for apply-size-rot or object center */ -static void ignore_parent_tx(Main *bmain, Scene *scene, Object *ob ) +* should stay in the same place, e.g. for apply-size-rot or object center */ +static void ignore_parent_tx(Main *bmain, Scene *scene, Object *ob) { Object workob; Object *ob_child; /* a change was made, adjust the children to compensate */ - for (ob_child=bmain->object.first; ob_child; ob_child=ob_child->id.next) { + for (ob_child = bmain->object.first; ob_child; ob_child = ob_child->id.next) { if (ob_child->parent == ob) { object_apply_mat4(ob_child, ob_child->obmat, TRUE, FALSE); what_does_parent(scene, ob_child, &workob); @@ -377,21 +377,21 @@ static void ignore_parent_tx(Main *bmain, Scene *scene, Object *ob ) static int apply_objects_internal(bContext *C, ReportList *reports, int apply_loc, int apply_rot, int apply_scale) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); float rsmat[3][3], tmat[3][3], obmat[3][3], iobmat[3][3], mat[4][4], scale; int a, change = 0; /* first check if we can execute */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { if (ID_REAL_USERS(ob->data) > 1) { BKE_report(reports, RPT_ERROR, "Can't apply to a multi user mesh, doing nothing"); return OPERATOR_CANCELLED; } } - else if (ob->type==OB_ARMATURE) { + else if (ob->type == OB_ARMATURE) { if (ID_REAL_USERS(ob->data) > 1) { BKE_report(reports, RPT_ERROR, "Can't apply to a multi user armature, doing nothing"); return OPERATOR_CANCELLED; @@ -411,7 +411,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo return OPERATOR_CANCELLED; } - cu= ob->data; + cu = ob->data; if (!(cu->flag & CU_3D) && (apply_rot || apply_loc)) { BKE_report(reports, RPT_ERROR, "Neither rotation nor location could be applied to a 2d curve, doing nothing"); @@ -426,7 +426,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo CTX_DATA_END; /* now execute */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { /* calculate rotation/scale matrix */ if (apply_scale && apply_rot) @@ -464,24 +464,24 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo } /* apply to object data */ - if (ob->type==OB_MESH) { - Mesh *me= ob->data; + if (ob->type == OB_MESH) { + Mesh *me = ob->data; MVert *mvert; multiresModifier_scale_disp(scene, ob); /* adjust data */ - mvert= me->mvert; - for (a=0; atotvert; a++, mvert++) + mvert = me->mvert; + for (a = 0; a < me->totvert; a++, mvert++) mul_m4_v3(mat, mvert->co); if (me->key) { KeyBlock *kb; - for (kb=me->key->block.first; kb; kb=kb->next) { - float *fp= kb->data; + for (kb = me->key->block.first; kb; kb = kb->next) { + float *fp = kb->data; - for (a=0; atotelem; a++, fp+=3) + for (a = 0; a < kb->totelem; a++, fp += 3) mul_m4_v3(mat, fp); } } @@ -489,7 +489,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo /* update normals */ mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL); } - else if (ob->type==OB_ARMATURE) { + else if (ob->type == OB_ARMATURE) { ED_armature_apply_transform(ob, mat); } else if (ob->type == OB_LATTICE) { @@ -503,7 +503,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo } } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { - Curve *cu= ob->data; + Curve *cu = ob->data; Nurb *nu; BPoint *bp; @@ -511,10 +511,10 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo scale = mat3_to_scale(rsmat); - for (nu=cu->nurb.first; nu; nu=nu->next) { + for (nu = cu->nurb.first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { - a= nu->pntsu; - for (bezt= nu->bezt; a--; bezt++) { + a = nu->pntsu; + for (bezt = nu->bezt; a--; bezt++) { mul_m4_v3(mat, bezt->vec[0]); mul_m4_v3(mat, bezt->vec[1]); mul_m4_v3(mat, bezt->vec[2]); @@ -523,8 +523,8 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo calchandlesNurb(nu); } else { - a= nu->pntsu*nu->pntsv; - for (bp= nu->bp; a--; bp++) + a = nu->pntsu * nu->pntsv; + for (bp = nu->bp; a--; bp++) mul_m4_v3(mat, bp->vec); } } @@ -535,7 +535,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo if (apply_loc) zero_v3(ob->loc); if (apply_scale) - ob->size[0]= ob->size[1]= ob->size[2]= 1.0f; + ob->size[0] = ob->size[1] = ob->size[2] = 1.0f; if (apply_rot) { zero_v3(ob->rot); unit_qt(ob->quat); @@ -543,13 +543,13 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo } where_is_object(scene, ob); - if (ob->type==OB_ARMATURE) { + if (ob->type == OB_ARMATURE) { where_is_pose(scene, ob); /* needed for bone parents */ } ignore_parent_tx(bmain, scene, ob); - DAG_id_tag_update(&ob->id, OB_RECALC_OB|OB_RECALC_DATA); + DAG_id_tag_update(&ob->id, OB_RECALC_OB | OB_RECALC_DATA); change = 1; } @@ -558,16 +558,16 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo if (!change) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } static int visual_transform_apply_exec(bContext *C, wmOperator *UNUSED(op)) { - Scene *scene= CTX_data_scene(C); + Scene *scene = CTX_data_scene(C); int change = 0; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { where_is_object(scene, ob); object_apply_mat4(ob, ob->obmat, TRUE, TRUE); where_is_object(scene, ob); @@ -582,7 +582,7 @@ static int visual_transform_apply_exec(bContext *C, wmOperator *UNUSED(op)) if (!change) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); return OPERATOR_FINISHED; } @@ -598,14 +598,14 @@ void OBJECT_OT_visual_transform_apply(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int object_transform_apply_exec(bContext *C, wmOperator *op) { - const int loc= RNA_boolean_get(op->ptr, "location"); - const int rot= RNA_boolean_get(op->ptr, "rotation"); - const int sca= RNA_boolean_get(op->ptr, "scale"); + const int loc = RNA_boolean_get(op->ptr, "location"); + const int rot = RNA_boolean_get(op->ptr, "rotation"); + const int sca = RNA_boolean_get(op->ptr, "scale"); if (loc || rot || sca) { return apply_objects_internal(C, op->reports, loc, rot, sca); @@ -627,7 +627,7 @@ void OBJECT_OT_transform_apply(wmOperatorType *ot) ot->poll = ED_operator_objectmode; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "location", 0, "Location", ""); RNA_def_boolean(ot->srna, "rotation", 0, "Rotation", ""); @@ -637,23 +637,23 @@ void OBJECT_OT_transform_apply(wmOperatorType *ot) /********************* Set Object Center ************************/ enum { - GEOMETRY_TO_ORIGIN=0, + GEOMETRY_TO_ORIGIN = 0, ORIGIN_TO_GEOMETRY, ORIGIN_TO_CURSOR }; static int object_origin_set_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); - Scene *scene= CTX_data_scene(C); - Object *obedit= CTX_data_edit_object(C); + Main *bmain = CTX_data_main(C); + Scene *scene = CTX_data_scene(C); + Object *obedit = CTX_data_edit_object(C); Object *tob; float cursor[3], cent[3], cent_neg[3], centn[3], min[3], max[3]; int centermode = RNA_enum_get(op->ptr, "type"); int around = RNA_enum_get(op->ptr, "center"); /* initialized from v3d->around */ /* keep track of what is changed */ - int tot_change=0, tot_lib_error=0, tot_multiuser_arm_error=0; + int tot_change = 0, tot_lib_error = 0, tot_multiuser_arm_error = 0; if (obedit && centermode != GEOMETRY_TO_ORIGIN) { BKE_report(op->reports, RPT_ERROR, "Operation cannot be performed in EditMode"); @@ -661,10 +661,10 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } else { /* get the view settings if 'around' isn't set and the view is available */ - View3D *v3d= CTX_wm_view3d(C); + View3D *v3d = CTX_wm_view3d(C); copy_v3_v3(cursor, give_cursor(scene, v3d)); if (v3d && !RNA_struct_property_is_set(op->ptr, "center")) - around= v3d->around; + around = v3d->around; } zero_v3(cent); @@ -672,8 +672,8 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) if (obedit) { INIT_MINMAX(min, max); - if (obedit->type==OB_MESH) { - Mesh *me= obedit->data; + if (obedit->type == OB_MESH) { + Mesh *me = obedit->data; BMEditMesh *em = me->edit_btmesh; BMVert *eve; BMIter iter; @@ -686,10 +686,10 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } else { BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - if (around==V3D_CENTROID) { + if (around == V3D_CENTROID) { total++; add_v3_v3(cent, eve->co); - mul_v3_fl(cent, 1.0f/(float)total); + mul_v3_fl(cent, 1.0f / (float)total); } else { DO_MINMAX(eve->co, min, max); @@ -705,24 +705,24 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) EDBM_mesh_normals_update(em); tot_change++; DAG_id_tag_update(&obedit->id, OB_RECALC_DATA); - } + } } /* reset flags */ - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { - ob->flag &= ~OB_DONE; + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { + ob->flag &= ~OB_DONE; } CTX_DATA_END; - for (tob= bmain->object.first; tob; tob= tob->id.next) { + for (tob = bmain->object.first; tob; tob = tob->id.next) { if (tob->data) ((ID *)tob->data)->flag &= ~LIB_DOIT; if (tob->dup_group) ((ID *)tob->dup_group)->flag &= ~LIB_DOIT; } - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { - if ((ob->flag & OB_DONE)==0) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { + if ((ob->flag & OB_DONE) == 0) { int do_inverse_offset = FALSE; ob->flag |= OB_DONE; @@ -734,7 +734,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) if (ob->data == NULL) { /* special support for dupligroups */ - if ((ob->transflag & OB_DUPLIGROUP) && ob->dup_group && (ob->dup_group->id.flag & LIB_DOIT)==0) { + if ((ob->transflag & OB_DUPLIGROUP) && ob->dup_group && (ob->dup_group->id.flag & LIB_DOIT) == 0) { if (ob->dup_group->id.lib) { tot_lib_error++; } @@ -753,7 +753,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) tot_change++; ob->dup_group->id.flag |= LIB_DOIT; - do_inverse_offset= TRUE; + do_inverse_offset = TRUE; } } } @@ -761,11 +761,11 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) tot_lib_error++; } - if (obedit==NULL && ob->type==OB_MESH) { - Mesh *me= ob->data; + if (obedit == NULL && ob->type == OB_MESH) { + Mesh *me = ob->data; if (centermode == ORIGIN_TO_CURSOR) { /* done */ } - else if (around==V3D_CENTROID) { mesh_center_median(me, cent); } + else if (around == V3D_CENTROID) { mesh_center_median(me, cent); } else { mesh_center_bounds(me, cent); } negate_v3_v3(cent_neg, cent); @@ -773,14 +773,14 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) tot_change++; me->id.flag |= LIB_DOIT; - do_inverse_offset= TRUE; + do_inverse_offset = TRUE; } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { - Curve *cu= ob->data; + Curve *cu = ob->data; if (centermode == ORIGIN_TO_CURSOR) { /* done */ } - else if (around==V3D_CENTROID) { curve_center_median(cu, cent); } - else { curve_center_bounds(cu, cent); } + else if (around == V3D_CENTROID) { curve_center_median(cu, cent); } + else { curve_center_bounds(cu, cent); } /* don't allow Z change if curve is 2D */ if ((ob->type == OB_CURVE) && !(cu->flag & CU_3D)) @@ -791,7 +791,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) tot_change++; cu->id.flag |= LIB_DOIT; - do_inverse_offset= TRUE; + do_inverse_offset = TRUE; if (obedit) { if (centermode == GEOMETRY_TO_ORIGIN) { @@ -800,12 +800,12 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) break; } } - else if (ob->type==OB_FONT) { + else if (ob->type == OB_FONT) { /* get from bb */ - Curve *cu= ob->data; + Curve *cu = ob->data; - if (cu->bb==NULL && (centermode != ORIGIN_TO_CURSOR)) { + if (cu->bb == NULL && (centermode != ORIGIN_TO_CURSOR)) { /* do nothing*/ } else { @@ -813,21 +813,21 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) /* done */ } else { - cent[0]= 0.5f * ( cu->bb->vec[4][0] + cu->bb->vec[0][0]); - cent[1]= 0.5f * ( cu->bb->vec[0][1] + cu->bb->vec[2][1]) - 0.5f; /* extra 0.5 is the height o above line */ + cent[0] = 0.5f * (cu->bb->vec[4][0] + cu->bb->vec[0][0]); + cent[1] = 0.5f * (cu->bb->vec[0][1] + cu->bb->vec[2][1]) - 0.5f; /* extra 0.5 is the height o above line */ } - cent[2]= 0.0f; + cent[2] = 0.0f; - cu->xof= cu->xof - (cent[0] / cu->fsize); - cu->yof= cu->yof - (cent[1] / cu->fsize); + cu->xof = cu->xof - (cent[0] / cu->fsize); + cu->yof = cu->yof - (cent[1] / cu->fsize); tot_change++; cu->id.flag |= LIB_DOIT; - do_inverse_offset= TRUE; + do_inverse_offset = TRUE; } } - else if (ob->type==OB_ARMATURE) { + else if (ob->type == OB_ARMATURE) { bArmature *arm = ob->data; if (ID_REAL_USERS(arm) > 1) { @@ -860,15 +860,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) MetaBall *mb = ob->data; if (centermode == ORIGIN_TO_CURSOR) { /* done */ } - else if (around==V3D_CENTROID) { BKE_metaball_center_median(mb, cent); } - else { BKE_metaball_center_bounds(mb, cent); } + else if (around == V3D_CENTROID) { BKE_metaball_center_median(mb, cent); } + else { BKE_metaball_center_bounds(mb, cent); } negate_v3_v3(cent_neg, cent); BKE_metaball_translate(mb, cent_neg); tot_change++; mb->id.flag |= LIB_DOIT; - do_inverse_offset= TRUE; + do_inverse_offset = TRUE; if (obedit) { if (centermode == GEOMETRY_TO_ORIGIN) { @@ -887,28 +887,28 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) add_v3_v3(ob->loc, centn); where_is_object(scene, ob); - if (ob->type==OB_ARMATURE) { + if (ob->type == OB_ARMATURE) { where_is_pose(scene, ob); /* needed for bone parents */ } ignore_parent_tx(bmain, scene, ob); /* other users? */ - CTX_DATA_BEGIN (C, Object*, ob_other, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob_other, selected_editable_objects) { if ((ob_other->flag & OB_DONE) == 0 && ((ob->data && (ob->data == ob_other->data)) || (ob->dup_group == ob_other->dup_group && (ob->transflag | ob_other->transflag) & OB_DUPLIGROUP))) { ob_other->flag |= OB_DONE; - DAG_id_tag_update(&ob_other->id, OB_RECALC_OB|OB_RECALC_DATA); + DAG_id_tag_update(&ob_other->id, OB_RECALC_OB | OB_RECALC_DATA); copy_v3_v3(centn, cent); mul_mat3_m4_v3(ob_other->obmat, centn); /* ommit translation part */ add_v3_v3(ob_other->loc, centn); where_is_object(scene, ob_other); - if (ob_other->type==OB_ARMATURE) { + if (ob_other->type == OB_ARMATURE) { where_is_pose(scene, ob_other); /* needed for bone parents */ } ignore_parent_tx(bmain, scene, ob_other); @@ -920,22 +920,22 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - for (tob= bmain->object.first; tob; tob= tob->id.next) + for (tob = bmain->object.first; tob; tob = tob->id.next) if (tob->data && (((ID *)tob->data)->flag & LIB_DOIT)) - DAG_id_tag_update(&tob->id, OB_RECALC_OB|OB_RECALC_DATA); + DAG_id_tag_update(&tob->id, OB_RECALC_OB | OB_RECALC_DATA); if (tot_change) { DAG_ids_flush_update(bmain, 0); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL); } /* Warn if any errors occurred */ - if (tot_lib_error+tot_multiuser_arm_error) { - BKE_reportf(op->reports, RPT_WARNING, "%i Object(s) Not Centered, %i Changed:",tot_lib_error+tot_multiuser_arm_error, tot_change); + if (tot_lib_error + tot_multiuser_arm_error) { + BKE_reportf(op->reports, RPT_WARNING, "%i Object(s) Not Centered, %i Changed:", tot_lib_error + tot_multiuser_arm_error, tot_change); if (tot_lib_error) - BKE_reportf(op->reports, RPT_WARNING, "|%i linked library objects",tot_lib_error); + BKE_reportf(op->reports, RPT_WARNING, "|%i linked library objects", tot_lib_error); if (tot_multiuser_arm_error) - BKE_reportf(op->reports, RPT_WARNING, "|%i multiuser armature object(s)",tot_multiuser_arm_error); + BKE_reportf(op->reports, RPT_WARNING, "|%i multiuser armature object(s)", tot_multiuser_arm_error); } return OPERATOR_FINISHED; @@ -968,7 +968,7 @@ void OBJECT_OT_origin_set(wmOperatorType *ot) ot->poll = ED_operator_scene_editable; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; ot->prop = RNA_def_enum(ot->srna, "type", prop_set_center_types, 0, "Type", ""); RNA_def_enum(ot->srna, "center", prop_set_bounds_types, V3D_CENTROID, "Center", ""); diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 1ddbc86a73f..6d5e098770a 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -84,9 +84,9 @@ static void vgroup_delete_all(Object *ob); static Lattice *vgroup_edit_lattice(Object *ob) { - Lattice *lt= ob->data; - BLI_assert(ob->type==OB_LATTICE); - return (lt->editlatt)? lt->editlatt->latt: lt; + Lattice *lt = ob->data; + BLI_assert(ob->type == OB_LATTICE); + return (lt->editlatt) ? lt->editlatt->latt : lt; } int ED_vgroup_object_is_edit_mode(Object *ob) @@ -94,7 +94,7 @@ int ED_vgroup_object_is_edit_mode(Object *ob) if (ob->type == OB_MESH) return (BMEdit_FromObject(ob) != NULL); else if (ob->type == OB_LATTICE) - return (((Lattice*)ob->data)->editlatt != NULL); + return (((Lattice *)ob->data)->editlatt != NULL); return 0; } @@ -144,18 +144,18 @@ void ED_vgroup_delete(Object *ob, bDeformGroup *defgroup) void ED_vgroup_clear(Object *ob) { - bDeformGroup *dg= (bDeformGroup *)ob->defbase.first; - int edit_mode= ED_vgroup_object_is_edit_mode(ob); + bDeformGroup *dg = (bDeformGroup *)ob->defbase.first; + int edit_mode = ED_vgroup_object_is_edit_mode(ob); while (dg) { - bDeformGroup *next_dg= dg->next; + bDeformGroup *next_dg = dg->next; if (edit_mode) vgroup_delete_edit_mode(ob, dg); else vgroup_delete_object_mode(ob, dg); - dg= next_dg; + dg = next_dg; } } @@ -163,14 +163,14 @@ int ED_vgroup_data_create(ID *id) { /* create deform verts */ - if (GS(id->name)==ID_ME) { - Mesh *me= (Mesh *)id; - me->dvert= CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert); + if (GS(id->name) == ID_ME) { + Mesh *me = (Mesh *)id; + me->dvert = CustomData_add_layer(&me->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, me->totvert); return TRUE; } - else if (GS(id->name)==ID_LT) { - Lattice *lt= (Lattice *)id; - lt->dvert= MEM_callocN(sizeof(MDeformVert)*lt->pntsu*lt->pntsv*lt->pntsw, "lattice deformVert"); + else if (GS(id->name) == ID_LT) { + Lattice *lt = (Lattice *)id; + lt->dvert = MEM_callocN(sizeof(MDeformVert) * lt->pntsu * lt->pntsv * lt->pntsw, "lattice deformVert"); return TRUE; } else { @@ -201,7 +201,7 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to i = em->bm->totvert; - *dvert_arr= MEM_mallocN(sizeof(void*)*i, "vgroup parray from me"); + *dvert_arr = MEM_mallocN(sizeof(void *) * i, "vgroup parray from me"); *dvert_tot = i; i = 0; @@ -222,21 +222,21 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to return 1; } else if (me->dvert) { - MVert *mvert= me->mvert; - MDeformVert *dvert= me->dvert; + MVert *mvert = me->mvert; + MDeformVert *dvert = me->dvert; int i; - *dvert_tot= me->totvert; - *dvert_arr= MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me"); + *dvert_tot = me->totvert; + *dvert_arr = MEM_mallocN(sizeof(void *) * me->totvert, "vgroup parray from me"); if (use_vert_sel) { - for (i=0; itotvert; i++) { + for (i = 0; i < me->totvert; i++) { (*dvert_arr)[i] = (mvert[i].flag & SELECT) ? - &dvert[i] : NULL; + &dvert[i] : NULL; } } else { - for (i=0; itotvert; i++) { + for (i = 0; i < me->totvert; i++) { (*dvert_arr)[i] = me->dvert + i; } } @@ -249,24 +249,24 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to } case ID_LT: { - int i=0; + int i = 0; - Lattice *lt= (Lattice *)id; - lt= (lt->editlatt)? lt->editlatt->latt: lt; + Lattice *lt = (Lattice *)id; + lt = (lt->editlatt) ? lt->editlatt->latt : lt; if (lt->dvert) { - BPoint *def= lt->def; - *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw; - *dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me"); + BPoint *def = lt->def; + *dvert_tot = lt->pntsu * lt->pntsv * lt->pntsw; + *dvert_arr = MEM_mallocN(sizeof(void *) * (*dvert_tot), "vgroup parray from me"); if (use_vert_sel) { - for (i=0; i<*dvert_tot; i++) { + for (i = 0; i < *dvert_tot; i++) { (*dvert_arr)[i] = (def->f1 & SELECT) ? <->dvert[i] : NULL; } } else { - for (i=0; i<*dvert_tot; i++) { + for (i = 0; i < *dvert_tot; i++) { (*dvert_arr)[i] = lt->dvert + i; } } @@ -291,23 +291,23 @@ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot) case ID_ME: { Mesh *me = (Mesh *)id; - *dvert_arr= me->dvert; - *dvert_tot= me->totvert; + *dvert_arr = me->dvert; + *dvert_tot = me->totvert; return TRUE; } case ID_LT: { - Lattice *lt= (Lattice *)id; - lt= (lt->editlatt)? lt->editlatt->latt: lt; - *dvert_arr= lt->dvert; - *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw; + Lattice *lt = (Lattice *)id; + lt = (lt->editlatt) ? lt->editlatt->latt : lt; + *dvert_arr = lt->dvert; + *dvert_tot = lt->pntsu * lt->pntsv * lt->pntsw; return TRUE; } } } - *dvert_arr= NULL; - *dvert_tot= 0; + *dvert_arr = NULL; + *dvert_tot = 0; return FALSE; } @@ -319,19 +319,19 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from) int dvert_tot_from; int dvert_tot; int i; - int defbase_tot_from= BLI_countlist(&ob_from->defbase); - int defbase_tot= BLI_countlist(&ob->defbase); - short new_vgroup= FALSE; + int defbase_tot_from = BLI_countlist(&ob_from->defbase); + int defbase_tot = BLI_countlist(&ob->defbase); + short new_vgroup = FALSE; ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from, FALSE); ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE); if ((dvert_array == NULL) && (dvert_array_from != NULL) && ED_vgroup_data_create(ob->data)) { ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE); - new_vgroup= TRUE; + new_vgroup = TRUE; } - if (ob==ob_from || dvert_tot==0 || (dvert_tot != dvert_tot_from) || dvert_array_from==NULL || dvert_array==NULL) { + if (ob == ob_from || dvert_tot == 0 || (dvert_tot != dvert_tot_from) || dvert_array_from == NULL || dvert_array == NULL) { if (dvert_array) MEM_freeN(dvert_array); if (dvert_array_from) MEM_freeN(dvert_array_from); @@ -345,29 +345,29 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from) /* do the copy */ BLI_freelistN(&ob->defbase); BLI_duplicatelist(&ob->defbase, &ob_from->defbase); - ob->actdef= ob_from->actdef; + ob->actdef = ob_from->actdef; if (defbase_tot_from < defbase_tot) { /* correct vgroup indices because the number of vgroups is being reduced. */ - int *remap= MEM_mallocN(sizeof(int) * (defbase_tot + 1), __func__); - for (i=0; i<=defbase_tot_from; i++) remap[i]= i; - for (; i<=defbase_tot; i++) remap[i]= 0; /* can't use these, so disable */ + int *remap = MEM_mallocN(sizeof(int) * (defbase_tot + 1), __func__); + for (i = 0; i <= defbase_tot_from; i++) remap[i] = i; + for (; i <= defbase_tot; i++) remap[i] = 0; /* can't use these, so disable */ vgroup_remap_update_users(ob, remap); MEM_freeN(remap); } - dvf= dvert_array_from; - dv= dvert_array; + dvf = dvert_array_from; + dv = dvert_array; - for (i=0; idw) MEM_freeN((*dv)->dw); - *(*dv)= *(*dvf); + *(*dv) = *(*dvf); if ((*dv)->dw) - (*dv)->dw= MEM_dupallocN((*dv)->dw); + (*dv)->dw = MEM_dupallocN((*dv)->dw); } MEM_freeN(dvert_array); @@ -386,13 +386,13 @@ static void ED_vgroup_nr_vert_add(Object *ob, /* add the vert to the deform group with the * specified number */ - MDeformVert *dvert= NULL; - int tot; + MDeformVert *dvert = NULL; + int tot; /* get the vert */ ED_vgroup_give_array(ob->data, &dvert, &tot); - if (dvert==NULL) + if (dvert == NULL) return; /* check that vertnum is valid before trying to get the relevant dvert */ @@ -401,7 +401,7 @@ static void ED_vgroup_nr_vert_add(Object *ob, if (dvert) { - MDeformVert *dv= &dvert[vertnum]; + MDeformVert *dv = &dvert[vertnum]; MDeformWeight *dw; /* Lets first check to see if this vert is @@ -409,27 +409,27 @@ static void ED_vgroup_nr_vert_add(Object *ob, * lets update it */ - dw= defvert_find_index(dv, def_nr); + dw = defvert_find_index(dv, def_nr); if (dw) { switch (assignmode) { - case WEIGHT_REPLACE: - dw->weight = weight; - break; - case WEIGHT_ADD: - dw->weight += weight; - if (dw->weight >= 1.0f) - dw->weight = 1.0f; - break; - case WEIGHT_SUBTRACT: - dw->weight -= weight; - /* if the weight is zero or less then - * remove the vert from the deform group - */ - if (dw->weight <= 0.0f) { - defvert_remove_group(dv, dw); - } - break; + case WEIGHT_REPLACE: + dw->weight = weight; + break; + case WEIGHT_ADD: + dw->weight += weight; + if (dw->weight >= 1.0f) + dw->weight = 1.0f; + break; + case WEIGHT_SUBTRACT: + dw->weight -= weight; + /* if the weight is zero or less then + * remove the vert from the deform group + */ + if (dw->weight <= 0.0f) { + defvert_remove_group(dv, dw); + } + break; } } else { @@ -438,20 +438,20 @@ static void ED_vgroup_nr_vert_add(Object *ob, */ switch (assignmode) { - case WEIGHT_SUBTRACT: - /* if we are subtracting then we don't - * need to do anything - */ - return; + case WEIGHT_SUBTRACT: + /* if we are subtracting then we don't + * need to do anything + */ + return; - case WEIGHT_REPLACE: - case WEIGHT_ADD: - /* if we are doing an additive assignment, then - * we need to create the deform weight - */ + case WEIGHT_REPLACE: + case WEIGHT_ADD: + /* if we are doing an additive assignment, then + * we need to create the deform weight + */ - /* we checked if the vertex was added before so no need to test again, simply add */ - defvert_add_index_notest(dv, def_nr, weight); + /* we checked if the vertex was added before so no need to test again, simply add */ + defvert_add_index_notest(dv, def_nr, weight); } } } @@ -463,9 +463,9 @@ void ED_vgroup_vert_add(Object *ob, bDeformGroup *dg, int vertnum, float weight, /* add the vert to the deform group with the * specified assign mode */ - const int def_nr= BLI_findindex(&ob->defbase, dg); + const int def_nr = BLI_findindex(&ob->defbase, dg); - MDeformVert *dv= NULL; + MDeformVert *dv = NULL; int tot; /* get the deform group number, exit if @@ -475,7 +475,7 @@ void ED_vgroup_vert_add(Object *ob, bDeformGroup *dg, int vertnum, float weight, /* if there's no deform verts then create some, */ - if (ED_vgroup_give_array(ob->data, &dv, &tot) && dv==NULL) + if (ED_vgroup_give_array(ob->data, &dv, &tot) && dv == NULL) ED_vgroup_data_create(ob->data); /* call another function to do the work @@ -484,17 +484,17 @@ void ED_vgroup_vert_add(Object *ob, bDeformGroup *dg, int vertnum, float weight, } /* mesh object mode, lattice can be in editmode */ -void ED_vgroup_vert_remove(Object *ob, bDeformGroup *dg, int vertnum) +void ED_vgroup_vert_remove(Object *ob, bDeformGroup *dg, int vertnum) { /* This routine removes the vertex from the specified * deform group. */ /* TODO, this is slow in a loop, better pass def_nr directly, but leave for later... - campbell */ - const int def_nr= BLI_findindex(&ob->defbase, dg); + const int def_nr = BLI_findindex(&ob->defbase, dg); if (def_nr != -1) { - MDeformVert *dvert= NULL; + MDeformVert *dvert = NULL; int tot; /* get the deform vertices corresponding to the @@ -503,10 +503,10 @@ void ED_vgroup_vert_remove(Object *ob, bDeformGroup *dg, int vertnum) ED_vgroup_give_array(ob->data, &dvert, &tot); if (dvert) { - MDeformVert *dv= &dvert[vertnum]; + MDeformVert *dv = &dvert[vertnum]; MDeformWeight *dw; - dw= defvert_find_index(dv, def_nr); + dw = defvert_find_index(dv, def_nr); defvert_remove_group(dv, dw); /* dw can be NULL */ } } @@ -514,20 +514,20 @@ void ED_vgroup_vert_remove(Object *ob, bDeformGroup *dg, int vertnum) static float get_vert_def_nr(Object *ob, const int def_nr, const int vertnum) { - MDeformVert *dv= NULL; + MDeformVert *dv = NULL; BMVert *eve; Mesh *me; /* get the deform vertices corresponding to the vertnum */ - if (ob->type==OB_MESH) { - me= ob->data; + if (ob->type == OB_MESH) { + me = ob->data; if (me->edit_btmesh) { - eve= BM_vert_at_index(me->edit_btmesh->bm, vertnum); + eve = BM_vert_at_index(me->edit_btmesh->bm, vertnum); if (!eve) { return 0.0f; } - dv= CustomData_bmesh_get(&me->edit_btmesh->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dv = CustomData_bmesh_get(&me->edit_btmesh->bm->vdata, eve->head.data, CD_MDEFORMVERT); } else { if (vertnum >= me->totvert) { @@ -536,11 +536,11 @@ static float get_vert_def_nr(Object *ob, const int def_nr, const int vertnum) dv = &me->dvert[vertnum]; } } - else if (ob->type==OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + else if (ob->type == OB_LATTICE) { + Lattice *lt = vgroup_edit_lattice(ob); if (lt->dvert) { - if (vertnum >= lt->pntsu*lt->pntsv*lt->pntsw) { + if (vertnum >= lt->pntsu * lt->pntsv * lt->pntsw) { return 0.0f; } dv = <->dvert[vertnum]; @@ -548,7 +548,7 @@ static float get_vert_def_nr(Object *ob, const int def_nr, const int vertnum) } if (dv) { - MDeformWeight *dw= defvert_find_index(dv, def_nr); + MDeformWeight *dw = defvert_find_index(dv, def_nr); if (dw) { return dw->weight; } @@ -559,7 +559,7 @@ static float get_vert_def_nr(Object *ob, const int def_nr, const int vertnum) float ED_vgroup_vert_weight(Object *ob, bDeformGroup *dg, int vertnum) { - const int def_nr= BLI_findindex(&ob->defbase, dg); + const int def_nr = BLI_findindex(&ob->defbase, dg); if (def_nr == -1) { return -1; @@ -569,8 +569,8 @@ float ED_vgroup_vert_weight(Object *ob, bDeformGroup *dg, int vertnum) } void ED_vgroup_select_by_name(Object *ob, const char *name) -{ /* note: ob->actdef==0 signals on painting to create a new one, if a bone in posemode is selected */ - ob->actdef= defgroup_name_index(ob, name) + 1; +{ /* note: ob->actdef==0 signals on painting to create a new one, if a bone in posemode is selected */ + ob->actdef = defgroup_name_index(ob, name) + 1; } /********************** Operator Implementations *********************/ @@ -578,7 +578,7 @@ void ED_vgroup_select_by_name(Object *ob, const char *name) /* only in editmode */ static void vgroup_select_verts(Object *ob, int select) { - const int def_nr= ob->actdef-1; + const int def_nr = ob->actdef - 1; MDeformVert *dv; if (!BLI_findlink(&ob->defbase, def_nr)) { @@ -586,7 +586,7 @@ static void vgroup_select_verts(Object *ob, int select) } if (ob->type == OB_MESH) { - Mesh *me= ob->data; + Mesh *me = ob->data; if (me->edit_btmesh) { BMEditMesh *em = me->edit_btmesh; @@ -595,7 +595,7 @@ static void vgroup_select_verts(Object *ob, int select) BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) { - dv= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dv = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); if (defvert_find_index(dv, def_nr)) { BM_vert_select_set(em->bm, eve, select); } @@ -603,7 +603,7 @@ static void vgroup_select_verts(Object *ob, int select) } /* this has to be called, because this function operates on vertices only */ - if (select) EDBM_select_flush(em); // vertices to edges/faces + if (select) EDBM_select_flush(em); // vertices to edges/faces else EDBM_deselect_flush(em); } else { @@ -615,11 +615,11 @@ static void vgroup_select_verts(Object *ob, int select) mv = me->mvert; dv = me->dvert; - for (i=0; itotvert; i++, mv++, dv++) { + for (i = 0; i < me->totvert; i++, mv++, dv++) { if (!(mv->flag & ME_HIDE)) { if (defvert_find_index(dv, def_nr)) { - if (select) mv->flag |= SELECT; - else mv->flag &= ~SELECT; + if (select) mv->flag |= SELECT; + else mv->flag &= ~SELECT; } } } @@ -629,19 +629,19 @@ static void vgroup_select_verts(Object *ob, int select) } } else if (ob->type == OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + Lattice *lt = vgroup_edit_lattice(ob); if (lt->dvert) { BPoint *bp; int a, tot; - dv= lt->dvert; + dv = lt->dvert; - tot= lt->pntsu*lt->pntsv*lt->pntsw; - for (a=0, bp= lt->def; apntsu * lt->pntsv * lt->pntsw; + for (a = 0, bp = lt->def; a < tot; a++, bp++, dv++) { if (defvert_find_index(dv, def_nr)) { - if (select) bp->f1 |= SELECT; - else bp->f1 &= ~SELECT; + if (select) bp->f1 |= SELECT; + else bp->f1 &= ~SELECT; } } } @@ -653,10 +653,10 @@ static void vgroup_duplicate(Object *ob) bDeformGroup *dg, *cdg; char name[sizeof(dg->name)]; MDeformWeight *dw_org, *dw_cpy; - MDeformVert **dvert_array=NULL; - int i, idg, icdg, dvert_tot=0; + MDeformVert **dvert_array = NULL; + int i, idg, icdg, dvert_tot = 0; - dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); + dg = BLI_findlink(&ob->defbase, (ob->actdef - 1)); if (!dg) return; @@ -673,16 +673,16 @@ static void vgroup_duplicate(Object *ob) BLI_addtail(&ob->defbase, cdg); - idg = (ob->actdef-1); + idg = (ob->actdef - 1); ob->actdef = BLI_countlist(&ob->defbase); - icdg = (ob->actdef-1); + icdg = (ob->actdef - 1); /* TODO, we might want to allow only copy selected verts here? - campbell */ ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot, FALSE); if (dvert_array) { for (i = 0; i < dvert_tot; i++) { - MDeformVert *dv= dvert_array[i]; + MDeformVert *dv = dvert_array[i]; dw_org = defvert_find_index(dv, idg); if (dw_org) { /* defvert_verify_index re-allocs org so need to store the weight first */ @@ -698,9 +698,9 @@ static void vgroup_duplicate(Object *ob) static void vgroup_normalize(Object *ob) { MDeformWeight *dw; - MDeformVert *dv, **dvert_array=NULL; - int i, dvert_tot=0; - const int def_nr= ob->actdef-1; + MDeformVert *dv, **dvert_array = NULL; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; @@ -751,7 +751,7 @@ static void vgroup_normalize(Object *ob) /* This finds all of the vertices face-connected to vert by an edge and returns a * MEM_allocated array of indices of size count. * count is an int passed by reference so it can be assigned the value of the length here. */ -static int* getSurroundingVerts(Mesh *me, int vert, int *count) +static int *getSurroundingVerts(Mesh *me, int vert, int *count) { MPoly *mp = me->mpoly; int i = me->totpoly; @@ -778,12 +778,12 @@ static int* getSurroundingVerts(Mesh *me, int vert, int *count) } else if (!j) { /* We are on the last corner. */ - a = (ml-1)->v; + a = (ml - 1)->v; b = me->mloop[mp->loopstart].v; } else { - a = (ml-1)->v; - b = (ml+1)->v; + a = (ml - 1)->v; + b = (ml + 1)->v; } /* Append a and b verts to array, if not yet present. */ @@ -823,7 +823,7 @@ static void getSingleCoordinate(MVert *points, int count, float coord[3]) for (i = 0; i < count; i++) { add_v3_v3(coord, points[i].co); } - mul_v3_fl(coord, 1.0f/count); + mul_v3_fl(coord, 1.0f / count); } /* given a plane and a start and end position, @@ -853,7 +853,7 @@ static void getVerticalAndHorizontalChange(const float norm[3], float d, const f // I need the derived mesh to be forgotten so the positions are recalculated with weight changes (see dm_deform_recalc) static void dm_deform_clear(DerivedMesh *dm, Object *ob) { - if (ob->derivedDeform && (ob->derivedDeform)==dm) { + if (ob->derivedDeform && (ob->derivedDeform) == dm) { ob->derivedDeform->needsFree = 1; ob->derivedDeform->release(ob->derivedDeform); ob->derivedDeform = NULL; @@ -865,7 +865,7 @@ static void dm_deform_clear(DerivedMesh *dm, Object *ob) } /* recalculate the deformation */ -static DerivedMesh* dm_deform_recalc(Scene *scene, Object *ob) +static DerivedMesh *dm_deform_recalc(Scene *scene, Object *ob) { return mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH); } @@ -885,19 +885,19 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in DerivedMesh *dm; MDeformWeight *dw; MVert m; - MDeformVert *dvert = me->dvert+index; + MDeformVert *dvert = me->dvert + index; int totweight = dvert->totweight; float oldw = 0; float oldPos[3] = {0}; float vc, hc, dist = 0.0f; int i, k; - float (*changes)[2] = MEM_mallocN(sizeof(float *)*totweight*2, "vertHorzChange"); - float *dists = MEM_mallocN(sizeof(float)*totweight, "distance"); + float (*changes)[2] = MEM_mallocN(sizeof(float *) * totweight * 2, "vertHorzChange"); + float *dists = MEM_mallocN(sizeof(float) * totweight, "distance"); /* track if up or down moved it closer for each bone */ - int *upDown = MEM_callocN(sizeof(int)*totweight, "upDownTracker"); + int *upDown = MEM_callocN(sizeof(int) * totweight, "upDownTracker"); - int *dwIndices = MEM_callocN(sizeof(int)*totweight, "dwIndexTracker"); + int *dwIndices = MEM_callocN(sizeof(int) * totweight, "dwIndexTracker"); float distToStart; int bestIndex = 0; char wasChange; @@ -912,11 +912,11 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in distToStart = dot_v3v3(norm, oldPos) + d; if (distToBe == originalDistToBe) { - distToBe += distToStart - distToStart*strength; + distToBe += distToStart - distToStart * strength; } for (i = 0; i < totweight; i++) { dwIndices[i] = i; - dw = (dvert->dw+i); + dw = (dvert->dw + i); vc = hc = 0; if (!dw->weight) { changes[i][0] = 0; @@ -930,10 +930,10 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in } oldw = dw->weight; if (k) { - dw->weight *= 1+cp; + dw->weight *= 1 + cp; } else { - dw->weight /= 1+cp; + dw->weight /= 1 + cp; } if (dw->weight == oldw) { changes[i][0] = 0; @@ -976,7 +976,7 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in float tf; int ti; bestIndex = k; - for (i = k+1; i < totweight; i++) { + for (i = k + 1; i < totweight; i++) { dist = dists[i]; if (fabs(dist) > fabs(dists[i])) { @@ -1009,7 +1009,7 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in bestIndex = -1; // find the best change with an acceptable horizontal change for (i = 0; i < totweight; i++) { - if (fabs(changes[i][0]) > fabs(changes[i][1]*2.0f)) { + if (fabs(changes[i][0]) > fabs(changes[i][1] * 2.0f)) { bestIndex = i; break; } @@ -1025,13 +1025,13 @@ static void moveCloserToDistanceFromPlane(Scene *scene, Object *ob, Mesh *me, in } lastIndex = bestIndex; wasUp = upDown[bestIndex]; - dw = (dvert->dw+dwIndices[bestIndex]); + dw = (dvert->dw + dwIndices[bestIndex]); oldw = dw->weight; if (upDown[bestIndex]) { - dw->weight *= 1+cp; + dw->weight *= 1 + cp; } else { - dw->weight /= 1+cp; + dw->weight /= 1 + cp; } if (dw->weight > 1) { dw->weight = 1; @@ -1065,10 +1065,10 @@ static void vgroup_fix(Scene *scene, Object *ob, float distToBe, float strength, return; for (i = 0; i < me->totvert && mvert; i++, mvert++) { if (mvert->flag & SELECT) { - int count=0; + int count = 0; if ((verts = getSurroundingVerts(me, i, &count))) { MVert m; - MVert *p = MEM_callocN(sizeof(MVert)*(count), "deformedPoints"); + MVert *p = MEM_callocN(sizeof(MVert) * (count), "deformedPoints"); int k; DerivedMesh *dm = mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH); @@ -1085,7 +1085,7 @@ static void vgroup_fix(Scene *scene, Object *ob, float distToBe, float strength, getSingleCoordinate(p, count, coord); dm->getVert(dm, i, &m); sub_v3_v3v3(norm, m.co, coord); - mag= normalize_v3(norm); + mag = normalize_v3(norm); if (mag) { /* zeros fix */ d = -dot_v3v3(norm, coord); /* dist = (dot_v3v3(norm, m.co) + d); */ /* UNUSED */ @@ -1103,9 +1103,9 @@ static void vgroup_fix(Scene *scene, Object *ob, float distToBe, float strength, static void vgroup_levels(Object *ob, float offset, float gain) { MDeformWeight *dw; - MDeformVert *dv, **dvert_array=NULL; - int i, dvert_tot=0; - const int def_nr= ob->actdef-1; + MDeformVert *dv, **dvert_array = NULL; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; @@ -1138,9 +1138,9 @@ static void vgroup_levels(Object *ob, float offset, float gain) /* TODO - select between groups */ static void vgroup_normalize_all(Object *ob, int lock_active) { - MDeformVert *dv, **dvert_array=NULL; - int i, dvert_tot=0; - const int def_nr= ob->actdef-1; + MDeformVert *dv, **dvert_array = NULL; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; @@ -1184,16 +1184,16 @@ static void vgroup_lock_all(Object *ob, int action) bDeformGroup *dg; if (action == SEL_TOGGLE) { - action= SEL_SELECT; - for (dg= ob->defbase.first; dg; dg= dg->next) { + action = SEL_SELECT; + for (dg = ob->defbase.first; dg; dg = dg->next) { if (dg->flag & DG_LOCK_WEIGHT) { - action= SEL_DESELECT; + action = SEL_DESELECT; break; } } } - for (dg= ob->defbase.first; dg; dg= dg->next) { + for (dg = ob->defbase.first; dg; dg = dg->next) { switch (action) { case SEL_SELECT: dg->flag |= DG_LOCK_WEIGHT; @@ -1211,9 +1211,9 @@ static void vgroup_lock_all(Object *ob, int action) static void vgroup_invert(Object *ob, const short auto_assign, const short auto_remove) { MDeformWeight *dw; - MDeformVert *dv, **dvert_array=NULL; - int i, dvert_tot=0; - const int def_nr= ob->actdef-1; + MDeformVert *dv, **dvert_array = NULL; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; if (!BLI_findlink(&ob->defbase, def_nr)) { @@ -1231,10 +1231,10 @@ static void vgroup_invert(Object *ob, const short auto_assign, const short auto_ } if (auto_assign) { - dw= defvert_verify_index(dv, def_nr); + dw = defvert_verify_index(dv, def_nr); } else { - dw= defvert_find_index(dv, def_nr); + dw = defvert_find_index(dv, def_nr); } if (dw) { @@ -1254,8 +1254,8 @@ static void vgroup_blend(Object *ob, const float fac) { MDeformVert *dv; MDeformWeight *dw; - int i, dvert_tot=0; - const int def_nr= ob->actdef - 1; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; BLI_assert(fac >= 0.0 && fac <= 1.0f); @@ -1304,14 +1304,14 @@ static void vgroup_blend(Object *ob, const float fac) int i1 /* , i2 */; /* i1 is always the selected one */ if (sel1) { - i1= BM_elem_index_get(eed->v1); + i1 = BM_elem_index_get(eed->v1); /* i2= BM_elem_index_get(eed->v2); */ /* UNUSED */ - eve= eed->v2; + eve = eed->v2; } else { /* i2= BM_elem_index_get(eed->v1); */ /* UNUSED */ - i1= BM_elem_index_get(eed->v2); - eve= eed->v1; + i1 = BM_elem_index_get(eed->v2); + eve = eed->v1; } dv = CustomData_bmesh_get(&bm->vdata, eve->head.data, CD_MDEFORMVERT); @@ -1385,9 +1385,9 @@ static void vgroup_blend(Object *ob, const float fac) static void vgroup_clean(Object *ob, const float epsilon, int keep_single) { MDeformWeight *dw; - MDeformVert *dv, **dvert_array=NULL; - int i, dvert_tot=0; - const int def_nr= ob->actdef-1; + MDeformVert *dv, **dvert_array = NULL; + int i, dvert_tot = 0; + const int def_nr = ob->actdef - 1; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; if (!BLI_findlink(&ob->defbase, def_nr)) { @@ -1405,11 +1405,11 @@ static void vgroup_clean(Object *ob, const float epsilon, int keep_single) continue; } - dw= defvert_find_index(dv, def_nr); + dw = defvert_find_index(dv, def_nr); if (dw) { if (dw->weight <= epsilon) { - if (keep_single==FALSE || dv->totweight > 1) { + if (keep_single == FALSE || dv->totweight > 1) { defvert_remove_group(dv, dw); /* dw can be NULL */ } } @@ -1422,7 +1422,7 @@ static void vgroup_clean(Object *ob, const float epsilon, int keep_single) static void vgroup_clean_all(Object *ob, const float epsilon, const int keep_single) { - MDeformVert **dvert_array=NULL; + MDeformVert **dvert_array = NULL; int i, dvert_tot = 0; const int use_vert_sel = (ob->type == OB_MESH && ((Mesh *)ob->data)->editflag & ME_EDIT_VERT_SEL) != 0; @@ -1440,14 +1440,14 @@ static void vgroup_clean_all(Object *ob, const float epsilon, const int keep_sin continue; } - j= dv->totweight; + j = dv->totweight; while (j--) { if (keep_single && dv->totweight == 1) break; - dw= dv->dw + j; + dw = dv->dw + j; if (dw->weight <= epsilon) { defvert_remove_group(dv, dw); @@ -1475,14 +1475,14 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr, SWAP(MDeformVert, *dvert, *dvert_mirr); } else { - MDeformWeight *dw= defvert_find_index(dvert, act_vgroup); - MDeformWeight *dw_mirr= defvert_find_index(dvert_mirr, act_vgroup); + MDeformWeight *dw = defvert_find_index(dvert, act_vgroup); + MDeformWeight *dw_mirr = defvert_find_index(dvert_mirr, act_vgroup); if (dw || dw_mirr) { if (dw_mirr == NULL) - dw_mirr= defvert_verify_index(dvert_mirr, act_vgroup); + dw_mirr = defvert_verify_index(dvert_mirr, act_vgroup); if (dw == NULL) - dw= defvert_verify_index(dvert, act_vgroup); + dw = defvert_verify_index(dvert, act_vgroup); SWAP(float, dw->weight, dw_mirr->weight); } @@ -1532,19 +1532,19 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v BMVert *eve, *eve_mirr; MDeformVert *dvert, *dvert_mirr; short sel, sel_mirr; - int *flip_map, flip_map_len; - const int def_nr= ob->actdef-1; + int *flip_map, flip_map_len; + const int def_nr = ob->actdef - 1; - if ( (mirror_weights==0 && flip_vgroups==0) || + if ( (mirror_weights == 0 && flip_vgroups == 0) || (BLI_findlink(&ob->defbase, def_nr) == NULL) ) { return; } if (flip_vgroups) { - flip_map= all_vgroups ? - defgroup_flip_map(ob, &flip_map_len, FALSE) : - defgroup_flip_map_single(ob, &flip_map_len, FALSE, def_nr); + flip_map = all_vgroups ? + defgroup_flip_map(ob, &flip_map_len, FALSE) : + defgroup_flip_map_single(ob, &flip_map_len, FALSE, def_nr); BLI_assert(flip_map != NULL); @@ -1554,13 +1554,13 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v } } else { - flip_map= NULL; - flip_map_len= 0; + flip_map = NULL; + flip_map_len = 0; } /* only the active group */ if (ob->type == OB_MESH) { - Mesh *me= ob->data; + Mesh *me = ob->data; BMEditMesh *em = me->edit_btmesh; if (em) { @@ -1574,13 +1574,13 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v /* Go through the list of editverts and assign them */ BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - if ((eve_mirr= EDBM_verts_mirror_get(em, eve))) { - sel= BM_elem_flag_test(eve, BM_ELEM_SELECT); - sel_mirr= BM_elem_flag_test(eve_mirr, BM_ELEM_SELECT); + if ((eve_mirr = EDBM_verts_mirror_get(em, eve))) { + sel = BM_elem_flag_test(eve, BM_ELEM_SELECT); + sel_mirr = BM_elem_flag_test(eve_mirr, BM_ELEM_SELECT); if ((sel || sel_mirr) && (eve != eve_mirr)) { - dvert= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); - dvert_mirr= CustomData_bmesh_get(&em->bm->vdata, eve_mirr->head.data, CD_MDEFORMVERT); + dvert = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dvert_mirr = CustomData_bmesh_get(&em->bm->vdata, eve_mirr->head.data, CD_MDEFORMVERT); if (dvert && dvert_mirr) { VGROUP_MIRR_OP; } @@ -1604,29 +1604,29 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v } if (!use_vert_sel) { - sel= sel_mirr= TRUE; + sel = sel_mirr = TRUE; } /* tag verts we have used */ - for (vidx= 0, mv= me->mvert; vidx < me->totvert; vidx++, mv++) { + for (vidx = 0, mv = me->mvert; vidx < me->totvert; vidx++, mv++) { mv->flag &= ~ME_VERT_TMP_TAG; } - for (vidx= 0, mv= me->mvert; vidx < me->totvert; vidx++, mv++) { + for (vidx = 0, mv = me->mvert; vidx < me->totvert; vidx++, mv++) { if ( ((mv->flag & ME_VERT_TMP_TAG) == 0) && - ((vidx_mirr= mesh_get_x_mirror_vert(ob, vidx)) != -1) && + ((vidx_mirr = mesh_get_x_mirror_vert(ob, vidx)) != -1) && (vidx != vidx_mirr) && - ((((mv_mirr= me->mvert + vidx_mirr)->flag) & ME_VERT_TMP_TAG) == 0)) + ((((mv_mirr = me->mvert + vidx_mirr)->flag) & ME_VERT_TMP_TAG) == 0)) { if (use_vert_sel) { - sel= mv->flag & SELECT; - sel_mirr= mv_mirr->flag & SELECT; + sel = mv->flag & SELECT; + sel_mirr = mv_mirr->flag & SELECT; } if (sel || sel_mirr) { - dvert= &me->dvert[vidx]; - dvert_mirr= &me->dvert[vidx_mirr]; + dvert = &me->dvert[vidx]; + dvert_mirr = &me->dvert[vidx_mirr]; VGROUP_MIRR_OP; } @@ -1638,7 +1638,7 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v } } else if (ob->type == OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + Lattice *lt = vgroup_edit_lattice(ob); int i1, i2; int u, v, w; int pntsu_half; @@ -1651,27 +1651,27 @@ void ED_vgroup_mirror(Object *ob, const short mirror_weights, const short flip_v /* unlike editmesh we know that by only looping over the first half of * the 'u' indices it will cover all points except the middle which is * ok in this case */ - pntsu_half= lt->pntsu / 2; + pntsu_half = lt->pntsu / 2; - for (w=0; wpntsw; w++) { - for (v=0; vpntsv; v++) { - for (u=0; upntsu - 1) - u; + for (w = 0; w < lt->pntsw; w++) { + for (v = 0; v < lt->pntsv; v++) { + for (u = 0; u < pntsu_half; u++) { + int u_inv = (lt->pntsu - 1) - u; if (u != u_inv) { BPoint *bp, *bp_mirr; - i1= LT_INDEX(lt, u, v, w); - i2= LT_INDEX(lt, u_inv, v, w); + i1 = LT_INDEX(lt, u, v, w); + i2 = LT_INDEX(lt, u_inv, v, w); - bp= <->def[i1]; - bp_mirr= <->def[i2]; + bp = <->def[i1]; + bp_mirr = <->def[i2]; - sel= bp->f1 & SELECT; - sel_mirr= bp_mirr->f1 & SELECT; + sel = bp->f1 & SELECT; + sel_mirr = bp_mirr->f1 & SELECT; if (sel || sel_mirr) { - dvert= <->dvert[i1]; - dvert_mirr= <->dvert[i2]; + dvert = <->dvert[i1]; + dvert_mirr = <->dvert[i2]; VGROUP_MIRR_OP; } @@ -1701,40 +1701,40 @@ static void vgroup_remap_update_users(Object *ob, int *map) * they get deleted the numbers get out of sync, this corrects that */ if (ob->soft) - ob->soft->vertgroup= map[ob->soft->vertgroup]; + ob->soft->vertgroup = map[ob->soft->vertgroup]; - for (md=ob->modifiers.first; md; md=md->next) { + for (md = ob->modifiers.first; md; md = md->next) { if (md->type == eModifierType_Explode) { - emd= (ExplodeModifierData*)md; - emd->vgroup= map[emd->vgroup]; + emd = (ExplodeModifierData *)md; + emd->vgroup = map[emd->vgroup]; } else if (md->type == eModifierType_Cloth) { - clmd= (ClothModifierData*)md; - clsim= clmd->sim_parms; + clmd = (ClothModifierData *)md; + clsim = clmd->sim_parms; if (clsim) { - clsim->vgroup_mass= map[clsim->vgroup_mass]; - clsim->vgroup_bend= map[clsim->vgroup_bend]; - clsim->vgroup_struct= map[clsim->vgroup_struct]; + clsim->vgroup_mass = map[clsim->vgroup_mass]; + clsim->vgroup_bend = map[clsim->vgroup_bend]; + clsim->vgroup_struct = map[clsim->vgroup_struct]; } } } - for (psys=ob->particlesystem.first; psys; psys=psys->next) { - for (a=0; avgroup[a]= map[psys->vgroup[a]]; + for (psys = ob->particlesystem.first; psys; psys = psys->next) { + for (a = 0; a < PSYS_TOT_VG; a++) + psys->vgroup[a] = map[psys->vgroup[a]]; } } static void vgroup_delete_update_users(Object *ob, int id) { - int i, defbase_tot= BLI_countlist(&ob->defbase) + 1; - int *map= MEM_mallocN(sizeof(int) * defbase_tot, "vgroup del"); + int i, defbase_tot = BLI_countlist(&ob->defbase) + 1; + int *map = MEM_mallocN(sizeof(int) * defbase_tot, "vgroup del"); - map[id]= map[0]= 0; - for (i=1; idefbase, dg); + MDeformVert *dvert_array = NULL; + int dvert_tot = 0; + const int def_nr = BLI_findindex(&ob->defbase, dg); assert(def_nr > -1); @@ -1754,10 +1754,10 @@ static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg) if (dvert_array) { int i, j; MDeformVert *dv; - for (i= 0, dv= dvert_array; i < dvert_tot; i++, dv++) { + for (i = 0, dv = dvert_array; i < dvert_tot; i++, dv++) { MDeformWeight *dw; - dw= defvert_find_index(dv, def_nr); + dw = defvert_find_index(dv, def_nr); defvert_remove_group(dv, dw); /* dw can be NULL */ /* inline, make into a function if anything else needs to do this */ @@ -1779,7 +1779,7 @@ static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg) if (ob->actdef > def_nr) ob->actdef--; if (ob->actdef < 1 && ob->defbase.first) - ob->actdef= 1; + ob->actdef = 1; } @@ -1788,10 +1788,10 @@ static void vgroup_delete_object_mode(Object *ob, bDeformGroup *dg) static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGroup *dg) { MDeformVert *dv; - const int def_nr= BLI_findindex(&ob->defbase, dg); + const int def_nr = BLI_findindex(&ob->defbase, dg); if (ob->type == OB_MESH) { - Mesh *me= ob->data; + Mesh *me = ob->data; if (me->edit_btmesh) { BMEditMesh *em = me->edit_btmesh; @@ -1799,7 +1799,7 @@ static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGr BMIter iter; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - dv= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dv = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); if (dv && dv->dw && (allverts || BM_elem_flag_test(eve, BM_ELEM_SELECT))) { MDeformWeight *dw = defvert_find_index(dv, def_nr); @@ -1819,7 +1819,7 @@ static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGr mv = me->mvert; dv = me->dvert; - for (i=0; itotvert; i++, mv++, dv++) { + for (i = 0; i < me->totvert; i++, mv++, dv++) { if (mv->flag & SELECT) { if (dv->dw && (allverts || (mv->flag & SELECT))) { MDeformWeight *dw = defvert_find_index(dv, def_nr); @@ -1830,17 +1830,17 @@ static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGr } } else if (ob->type == OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + Lattice *lt = vgroup_edit_lattice(ob); if (lt->dvert) { BPoint *bp; - int i, tot= lt->pntsu*lt->pntsv*lt->pntsw; + int i, tot = lt->pntsu * lt->pntsv * lt->pntsw; - for (i=0, bp= lt->def; idef; i < tot; i++, bp++) { if (allverts || (bp->f1 & SELECT)) { MDeformWeight *dw; - dv= <->dvert[i]; + dv = <->dvert[i]; dw = defvert_find_index(dv, def_nr); defvert_remove_group(dv, dw); /* dw can be NULL */ @@ -1853,7 +1853,7 @@ static void vgroup_active_remove_verts(Object *ob, const int allverts, bDeformGr static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg) { int i; - const int dg_index= BLI_findindex(&ob->defbase, dg); + const int dg_index = BLI_findindex(&ob->defbase, dg); assert(dg_index > -1); @@ -1861,32 +1861,32 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg) vgroup_active_remove_verts(ob, TRUE, dg); /* Make sure that any verts with higher indices are adjusted accordingly */ - if (ob->type==OB_MESH) { - Mesh *me= ob->data; + if (ob->type == OB_MESH) { + Mesh *me = ob->data; BMEditMesh *em = me->edit_btmesh; BMIter iter; BMVert *eve; MDeformVert *dvert; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - dvert= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dvert = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); if (dvert) - for (i=0; itotweight; i++) + for (i = 0; i < dvert->totweight; i++) if (dvert->dw[i].def_nr > dg_index) dvert->dw[i].def_nr--; } } - else if (ob->type==OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + else if (ob->type == OB_LATTICE) { + Lattice *lt = vgroup_edit_lattice(ob); BPoint *bp; - MDeformVert *dvert= lt->dvert; + MDeformVert *dvert = lt->dvert; int a, tot; if (dvert) { - tot= lt->pntsu*lt->pntsv*lt->pntsw; - for (a=0, bp= lt->def; atotweight; i++) { + tot = lt->pntsu * lt->pntsv * lt->pntsw; + for (a = 0, bp = lt->def; a < tot; a++, bp++, dvert++) { + for (i = 0; i < dvert->totweight; i++) { if (dvert->dw[i].def_nr > dg_index) dvert->dw[i].def_nr--; } @@ -1897,26 +1897,26 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg) vgroup_delete_update_users(ob, dg_index + 1); /* Remove the group */ - BLI_freelinkN (&ob->defbase, dg); + BLI_freelinkN(&ob->defbase, dg); /* Update the active deform index if necessary */ if (ob->actdef > dg_index) ob->actdef--; if (ob->actdef < 1 && ob->defbase.first) - ob->actdef= 1; + ob->actdef = 1; /* remove all dverts */ if (ob->defbase.first == NULL) { - if (ob->type==OB_MESH) { - Mesh *me= ob->data; + if (ob->type == OB_MESH) { + Mesh *me = ob->data; CustomData_free_layer_active(&me->vdata, CD_MDEFORMVERT, me->totvert); - me->dvert= NULL; + me->dvert = NULL; } - else if (ob->type==OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + else if (ob->type == OB_LATTICE) { + Lattice *lt = vgroup_edit_lattice(ob); if (lt->dvert) { MEM_freeN(lt->dvert); - lt->dvert= NULL; + lt->dvert = NULL; } } } @@ -1927,7 +1927,7 @@ static int vgroup_object_in_edit_mode(Object *ob) if (ob->type == OB_MESH) return (BMEdit_FromObject(ob) != NULL); else if (ob->type == OB_LATTICE) - return (((Lattice*)ob->data)->editlatt != NULL); + return (((Lattice *)ob->data)->editlatt != NULL); return 0; } @@ -1946,7 +1946,7 @@ static int vgroup_object_in_wpaint_vert_select(Object *ob) static void vgroup_delete(Object *ob) { - bDeformGroup *dg = BLI_findlink(&ob->defbase, ob->actdef-1); + bDeformGroup *dg = BLI_findlink(&ob->defbase, ob->actdef - 1); if (!dg) return; @@ -1959,16 +1959,16 @@ static void vgroup_delete(Object *ob) static void vgroup_delete_all(Object *ob) { /* Remove all DVerts */ - if (ob->type==OB_MESH) { - Mesh *me= ob->data; + if (ob->type == OB_MESH) { + Mesh *me = ob->data; CustomData_free_layer_active(&me->vdata, CD_MDEFORMVERT, me->totvert); - me->dvert= NULL; + me->dvert = NULL; } - else if (ob->type==OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + else if (ob->type == OB_LATTICE) { + Lattice *lt = vgroup_edit_lattice(ob); if (lt->dvert) { MEM_freeN(lt->dvert); - lt->dvert= NULL; + lt->dvert = NULL; } } @@ -1976,20 +1976,20 @@ static void vgroup_delete_all(Object *ob) BLI_freelistN(&ob->defbase); /* Fix counters/indices */ - ob->actdef= 0; + ob->actdef = 0; } /* only in editmode */ static void vgroup_assign_verts(Object *ob, const float weight) { MDeformVert *dv; - const int def_nr= ob->actdef-1; + const int def_nr = ob->actdef - 1; if (!BLI_findlink(&ob->defbase, def_nr)) return; if (ob->type == OB_MESH) { - Mesh *me= ob->data; + Mesh *me = ob->data; if (me->edit_btmesh) { BMEditMesh *em = me->edit_btmesh; @@ -2003,10 +2003,10 @@ static void vgroup_assign_verts(Object *ob, const float weight) BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) { MDeformWeight *dw; - dv= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); /* can be NULL */ - dw= defvert_verify_index(dv, def_nr); + dv = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); /* can be NULL */ + dw = defvert_verify_index(dv, def_nr); if (dw) { - dw->weight= weight; + dw->weight = weight; } } } @@ -2023,35 +2023,35 @@ static void vgroup_assign_verts(Object *ob, const float weight) mv = me->mvert; dv = me->dvert; - for (i=0; itotvert; i++, mv++, dv++) { + for (i = 0; i < me->totvert; i++, mv++, dv++) { if (mv->flag & SELECT) { MDeformWeight *dw; - dw= defvert_verify_index(dv, def_nr); + dw = defvert_verify_index(dv, def_nr); if (dw) { - dw->weight= weight; + dw->weight = weight; } } } } } else if (ob->type == OB_LATTICE) { - Lattice *lt= vgroup_edit_lattice(ob); + Lattice *lt = vgroup_edit_lattice(ob); BPoint *bp; int a, tot; - if (lt->dvert==NULL) + if (lt->dvert == NULL) ED_vgroup_data_create(<->id); - dv= lt->dvert; + dv = lt->dvert; - tot= lt->pntsu*lt->pntsv*lt->pntsw; - for (a=0, bp= lt->def; apntsu * lt->pntsv * lt->pntsw; + for (a = 0, bp = lt->def; a < tot; a++, bp++, dv++) { if (bp->f1 & SELECT) { MDeformWeight *dw; - dw= defvert_verify_index(dv, def_nr); + dw = defvert_verify_index(dv, def_nr); if (dw) { - dw->weight= weight; + dw->weight = weight; } } } @@ -2067,7 +2067,7 @@ static void vgroup_remove_verts(Object *ob, int allverts) * active group index */ bDeformGroup *dg; - for (dg= ob->defbase.first; dg; dg= dg->next) { + for (dg = ob->defbase.first; dg; dg = dg->next) { vgroup_active_remove_verts(ob, allverts, dg); } } @@ -2076,15 +2076,15 @@ static void vgroup_remove_verts(Object *ob, int allverts) static int vertex_group_poll(bContext *C) { - Object *ob= ED_object_context(C); - ID *data= (ob)? ob->data: NULL; + Object *ob = ED_object_context(C); + ID *data = (ob) ? ob->data : NULL; return (ob && !ob->id.lib && OB_TYPE_SUPPORT_VGROUP(ob->type) && data && !data->lib); } -static int UNUSED_FUNCTION(vertex_group_poll_edit)(bContext *C) +static int UNUSED_FUNCTION(vertex_group_poll_edit) (bContext * C) { - Object *ob= ED_object_context(C); - ID *data= (ob)? ob->data: NULL; + Object *ob = ED_object_context(C); + ID *data = (ob) ? ob->data : NULL; if (!(ob && !ob->id.lib && data && !data->lib)) return 0; @@ -2095,24 +2095,24 @@ static int UNUSED_FUNCTION(vertex_group_poll_edit)(bContext *C) /* editmode _or_ weight paint vertex sel */ static int vertex_group_poll_edit_or_wpaint_vert_select(bContext *C) { - Object *ob= ED_object_context(C); - ID *data= (ob)? ob->data: NULL; + Object *ob = ED_object_context(C); + ID *data = (ob) ? ob->data : NULL; if (!(ob && !ob->id.lib && data && !data->lib)) return 0; - return ( vgroup_object_in_edit_mode(ob) || - vgroup_object_in_wpaint_vert_select(ob) ); + return (vgroup_object_in_edit_mode(ob) || + vgroup_object_in_wpaint_vert_select(ob) ); } static int vertex_group_add_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); ED_vgroup_add(ob); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -2128,12 +2128,12 @@ void OBJECT_OT_vertex_group_add(wmOperatorType *ot) ot->exec = vertex_group_add_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_remove_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); if (RNA_boolean_get(op->ptr, "all")) vgroup_delete_all(ob); @@ -2141,8 +2141,8 @@ static int vertex_group_remove_exec(bContext *C, wmOperator *op) vgroup_delete(ob); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); return OPERATOR_FINISHED; } @@ -2161,7 +2161,7 @@ void OBJECT_OT_vertex_group_remove(wmOperatorType *ot) /* redo operator will fail in this case because vertex groups aren't stored * in local edit mode stack and toggling "all" property will lead to * all groups deleted without way to restore them (see [#29527], sergey) */ - ot->flag = /*OPTYPE_REGISTER|*/OPTYPE_UNDO; + ot->flag = /*OPTYPE_REGISTER|*/ OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "all", 0, "All", "Remove from all vertex groups"); @@ -2169,15 +2169,15 @@ void OBJECT_OT_vertex_group_remove(wmOperatorType *ot) static int vertex_group_assign_exec(bContext *C, wmOperator *op) { - ToolSettings *ts= CTX_data_tool_settings(C); - Object *ob= ED_object_context(C); + ToolSettings *ts = CTX_data_tool_settings(C); + Object *ob = ED_object_context(C); if (RNA_boolean_get(op->ptr, "new")) ED_vgroup_add(ob); vgroup_assign_verts(ob, ts->vgroup_weight); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2196,7 +2196,7 @@ void OBJECT_OT_vertex_group_assign(wmOperatorType *ot) /* redo operator will fail in this case because vertex group assignment * isn't stored in local edit mode stack and toggling "new" property will * lead to creating plenty of new vertex groups (see [#29527], sergey) */ - ot->flag = /*OPTYPE_REGISTER|*/OPTYPE_UNDO; + ot->flag = /*OPTYPE_REGISTER|*/ OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "new", 0, "New", "Assign vertex to new vertex group"); @@ -2204,12 +2204,12 @@ void OBJECT_OT_vertex_group_assign(wmOperatorType *ot) static int vertex_group_remove_from_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); if (RNA_boolean_get(op->ptr, "all")) vgroup_remove_verts(ob, 0); else { - bDeformGroup *dg= BLI_findlink(&ob->defbase, ob->actdef - 1); + bDeformGroup *dg = BLI_findlink(&ob->defbase, ob->actdef - 1); if (dg == NULL) { return OPERATOR_CANCELLED; @@ -2219,7 +2219,7 @@ static int vertex_group_remove_from_exec(bContext *C, wmOperator *op) } DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2238,7 +2238,7 @@ void OBJECT_OT_vertex_group_remove_from(wmOperatorType *ot) /* redo operator will fail in this case because vertex groups assignment * isn't stored in local edit mode stack and toggling "all" property will lead to * removing vertices from all groups (see [#29527], sergey) */ - ot->flag = /*OPTYPE_REGISTER|*/OPTYPE_UNDO; + ot->flag = /*OPTYPE_REGISTER|*/ OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "all", 0, "All", "Remove from all vertex groups"); @@ -2246,13 +2246,13 @@ void OBJECT_OT_vertex_group_remove_from(wmOperatorType *ot) static int vertex_group_select_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); if (!ob || ob->id.lib) return OPERATOR_CANCELLED; vgroup_select_verts(ob, 1); - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob->data); return OPERATOR_FINISHED; } @@ -2268,15 +2268,15 @@ void OBJECT_OT_vertex_group_select(wmOperatorType *ot) ot->exec = vertex_group_select_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_deselect_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); vgroup_select_verts(ob, 0); - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); + WM_event_add_notifier(C, NC_GEOM | ND_SELECT, ob->data); return OPERATOR_FINISHED; } @@ -2292,17 +2292,17 @@ void OBJECT_OT_vertex_group_deselect(wmOperatorType *ot) ot->exec = vertex_group_deselect_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_copy_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); vgroup_duplicate(ob); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2318,21 +2318,21 @@ void OBJECT_OT_vertex_group_copy(wmOperatorType *ot) ot->exec = vertex_group_copy_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_levels_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); - float offset= RNA_float_get(op->ptr,"offset"); - float gain= RNA_float_get(op->ptr,"gain"); + float offset = RNA_float_get(op->ptr, "offset"); + float gain = RNA_float_get(op->ptr, "gain"); vgroup_levels(ob, offset, gain); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2348,7 +2348,7 @@ void OBJECT_OT_vertex_group_levels(wmOperatorType *ot) ot->exec = vertex_group_levels_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_float(ot->srna, "offset", 0.f, -1.0, 1.0, "Offset", "Value to add to weights", -1.0f, 1.f); RNA_def_float(ot->srna, "gain", 1.f, 0.f, FLT_MAX, "Gain", "Value to multiply weights by", 0.0f, 10.f); @@ -2356,13 +2356,13 @@ void OBJECT_OT_vertex_group_levels(wmOperatorType *ot) static int vertex_group_normalize_exec(bContext *C, wmOperator *UNUSED(op)) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); vgroup_normalize(ob); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2378,19 +2378,19 @@ void OBJECT_OT_vertex_group_normalize(wmOperatorType *ot) ot->exec = vertex_group_normalize_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_normalize_all_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); - int lock_active= RNA_boolean_get(op->ptr,"lock_active"); + Object *ob = ED_object_context(C); + int lock_active = RNA_boolean_get(op->ptr, "lock_active"); vgroup_normalize_all(ob, lock_active); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2406,7 +2406,7 @@ void OBJECT_OT_vertex_group_normalize_all(wmOperatorType *ot) ot->exec = vertex_group_normalize_all_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "lock_active", TRUE, "Lock Active", "Keep the values of the active group while normalizing others"); @@ -2414,16 +2414,16 @@ void OBJECT_OT_vertex_group_normalize_all(wmOperatorType *ot) static int vertex_group_fix_exec(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); - Scene *scene= CTX_data_scene(C); + Object *ob = CTX_data_active_object(C); + Scene *scene = CTX_data_scene(C); - float distToBe= RNA_float_get(op->ptr, "dist"); - float strength= RNA_float_get(op->ptr, "strength"); - float cp= RNA_float_get(op->ptr, "accuracy"); - ModifierData *md= ob->modifiers.first; + float distToBe = RNA_float_get(op->ptr, "dist"); + float strength = RNA_float_get(op->ptr, "strength"); + float cp = RNA_float_get(op->ptr, "accuracy"); + ModifierData *md = ob->modifiers.first; while (md) { - if (md->type == eModifierType_Mirror && (md->mode&eModifierMode_Realtime)) { + if (md->type == eModifierType_Mirror && (md->mode & eModifierMode_Realtime)) { break; } md = md->next; @@ -2436,8 +2436,8 @@ static int vertex_group_fix_exec(bContext *C, wmOperator *op) vgroup_fix(scene, ob, distToBe, strength, cp); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2448,14 +2448,14 @@ void OBJECT_OT_vertex_group_fix(wmOperatorType *ot) ot->name = "Fix Vertex Group Deform"; ot->idname = "OBJECT_OT_vertex_group_fix"; ot->description = "Modify the position of selected vertices by changing only their respective " - "groups' weights (this tool may be slow for many vertices)"; + "groups' weights (this tool may be slow for many vertices)"; /* api callbacks */ ot->poll = vertex_group_poll; ot->exec = vertex_group_fix_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_float(ot->srna, "dist", 0.0f, -FLT_MAX, FLT_MAX, "Distance", "The distance to move to", -10.0f, 10.0f); RNA_def_float(ot->srna, "strength", 1.f, -2.0f, FLT_MAX, "Strength", "The distance moved can be changed by this multiplier", -2.0f, 2.0f); @@ -2466,7 +2466,7 @@ void OBJECT_OT_vertex_group_fix(wmOperatorType *ot) static int vertex_group_lock_exec(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); + Object *ob = CTX_data_active_object(C); int action = RNA_enum_get(op->ptr, "action"); @@ -2486,21 +2486,21 @@ void OBJECT_OT_vertex_group_lock(wmOperatorType *ot) ot->exec = vertex_group_lock_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; WM_operator_properties_select_all(ot); } static int vertex_group_invert_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); - int auto_assign= RNA_boolean_get(op->ptr,"auto_assign"); - int auto_remove= RNA_boolean_get(op->ptr,"auto_remove"); + Object *ob = ED_object_context(C); + int auto_assign = RNA_boolean_get(op->ptr, "auto_assign"); + int auto_remove = RNA_boolean_get(op->ptr, "auto_remove"); vgroup_invert(ob, auto_assign, auto_remove); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2516,7 +2516,7 @@ void OBJECT_OT_vertex_group_invert(wmOperatorType *ot) ot->exec = vertex_group_invert_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_boolean(ot->srna, "auto_assign", TRUE, "Add Weights", "Add verts from groups that have zero weight before inverting"); @@ -2533,8 +2533,8 @@ static int vertex_group_blend_exec(bContext *C, wmOperator *op) vgroup_blend(ob, fac); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2543,7 +2543,7 @@ static int vertex_group_blend_exec(bContext *C, wmOperator *op) static int vertex_group_blend_poll(bContext *C) { Object *ob = ED_object_context(C); - ID *data = (ob) ? ob->data: NULL; + ID *data = (ob) ? ob->data : NULL; if (!(ob && !ob->id.lib && data && !data->lib)) return FALSE; @@ -2580,7 +2580,7 @@ void OBJECT_OT_vertex_group_blend(wmOperatorType *ot) ot->exec = vertex_group_blend_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; prop = RNA_def_property(ot->srna, "factor", PROP_FLOAT, PROP_FACTOR); RNA_def_property_ui_text(prop, "Factor", ""); @@ -2591,18 +2591,18 @@ void OBJECT_OT_vertex_group_blend(wmOperatorType *ot) static int vertex_group_clean_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); - float limit= RNA_float_get(op->ptr,"limit"); - int all_groups= RNA_boolean_get(op->ptr,"all_groups"); - int keep_single= RNA_boolean_get(op->ptr,"keep_single"); + float limit = RNA_float_get(op->ptr, "limit"); + int all_groups = RNA_boolean_get(op->ptr, "all_groups"); + int keep_single = RNA_boolean_get(op->ptr, "keep_single"); - if (all_groups) vgroup_clean_all(ob, limit, keep_single); - else vgroup_clean(ob, limit, keep_single); + if (all_groups) vgroup_clean_all(ob, limit, keep_single); + else vgroup_clean(ob, limit, keep_single); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2619,7 +2619,7 @@ void OBJECT_OT_vertex_group_clean(wmOperatorType *ot) ot->exec = vertex_group_clean_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_float(ot->srna, "limit", 0.01f, 0.0f, 1.0, "Limit", "Remove weights under this limit", 0.001f, 0.99f); RNA_def_boolean(ot->srna, "all_groups", FALSE, "All Groups", "Clean all vertex groups"); @@ -2630,16 +2630,16 @@ void OBJECT_OT_vertex_group_clean(wmOperatorType *ot) static int vertex_group_mirror_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); ED_vgroup_mirror(ob, - RNA_boolean_get(op->ptr,"mirror_weights"), - RNA_boolean_get(op->ptr,"flip_group_names"), - RNA_boolean_get(op->ptr,"all_groups")); + RNA_boolean_get(op->ptr, "mirror_weights"), + RNA_boolean_get(op->ptr, "flip_group_names"), + RNA_boolean_get(op->ptr, "all_groups")); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -2650,14 +2650,14 @@ void OBJECT_OT_vertex_group_mirror(wmOperatorType *ot) ot->name = "Mirror Vertex Group"; ot->idname = "OBJECT_OT_vertex_group_mirror"; ot->description = "Mirror all vertex groups, flip weights and/or names, editing only selected vertices, " - "flipping when both sides are selected otherwise copy from unselected"; + "flipping when both sides are selected otherwise copy from unselected"; /* api callbacks */ ot->poll = vertex_group_poll; ot->exec = vertex_group_mirror_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ RNA_def_boolean(ot->srna, "mirror_weights", TRUE, "Mirror Weights", "Mirror weights"); @@ -2668,21 +2668,21 @@ void OBJECT_OT_vertex_group_mirror(wmOperatorType *ot) static int vertex_group_copy_to_linked_exec(bContext *C, wmOperator *UNUSED(op)) { - Scene *scene= CTX_data_scene(C); - Object *ob= ED_object_context(C); + Scene *scene = CTX_data_scene(C); + Object *ob = ED_object_context(C); Base *base; - int retval= OPERATOR_CANCELLED; + int retval = OPERATOR_CANCELLED; - for (base=scene->base.first; base; base= base->next) { - if (base->object->type==ob->type) { - if (base->object!=ob && base->object->data==ob->data) { + for (base = scene->base.first; base; base = base->next) { + if (base->object->type == ob->type) { + if (base->object != ob && base->object->data == ob->data) { BLI_freelistN(&base->object->defbase); BLI_duplicatelist(&base->object->defbase, &ob->defbase); - base->object->actdef= ob->actdef; + base->object->actdef = ob->actdef; DAG_id_tag_update(&base->object->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, base->object); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, base->object->data); + WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, base->object); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, base->object->data); retval = OPERATOR_FINISHED; } @@ -2704,19 +2704,19 @@ void OBJECT_OT_vertex_group_copy_to_linked(wmOperatorType *ot) ot->exec = vertex_group_copy_to_linked_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vertex_group_copy_to_selected_exec(bContext *C, wmOperator *op) { - Object *obact= ED_object_context(C); - int change= 0; - int fail= 0; + Object *obact = ED_object_context(C); + int change = 0; + int fail = 0; - CTX_DATA_BEGIN (C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN (C, Object *, ob, selected_editable_objects) { if (obact != ob) { if (ED_vgroup_copy_array(ob, obact)) change++; - else fail++; + else fail++; } } CTX_DATA_END; @@ -2743,47 +2743,48 @@ void OBJECT_OT_vertex_group_copy_to_selected(wmOperatorType *ot) ot->exec = vertex_group_copy_to_selected_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } -static EnumPropertyItem vgroup_items[]= { - {0, NULL, 0, NULL, NULL}}; +static EnumPropertyItem vgroup_items[] = { + {0, NULL, 0, NULL, NULL} +}; static int set_active_group_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); - int nr= RNA_enum_get(op->ptr, "group"); + Object *ob = ED_object_context(C); + int nr = RNA_enum_get(op->ptr, "group"); - BLI_assert(nr+1 >= 0); - ob->actdef= nr+1; + BLI_assert(nr + 1 >= 0); + ob->actdef = nr + 1; DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob); return OPERATOR_FINISHED; } static EnumPropertyItem *vgroup_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); EnumPropertyItem tmp = {0, "", 0, "", ""}; - EnumPropertyItem *item= NULL; + EnumPropertyItem *item = NULL; bDeformGroup *def; - int a, totitem= 0; + int a, totitem = 0; if (!ob) return vgroup_items; - for (a=0, def=ob->defbase.first; def; def=def->next, a++) { - tmp.value= a; - tmp.icon= ICON_GROUP_VERTEX; - tmp.identifier= def->name; - tmp.name= def->name; + for (a = 0, def = ob->defbase.first; def; def = def->next, a++) { + tmp.value = a; + tmp.icon = ICON_GROUP_VERTEX; + tmp.identifier = def->name; + tmp.name = def->name; RNA_enum_item_add(&item, &totitem, &tmp); } RNA_enum_item_end(&item, &totitem); - *free= 1; + *free = 1; return item; } @@ -2803,10 +2804,10 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot) ot->invoke = WM_menu_invoke; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "group", vgroup_items, 0, "Group", "Vertex group to set as active"); + prop = RNA_def_enum(ot->srna, "group", vgroup_items, 0, "Group", "Vertex group to set as active"); RNA_def_enum_funcs(prop, vgroup_itemf); ot->prop = prop; } @@ -2817,11 +2818,11 @@ static char *vgroup_init_remap(Object *ob) { bDeformGroup *def; int defbase_tot = BLI_countlist(&ob->defbase); - char *name_array= MEM_mallocN(MAX_VGROUP_NAME * sizeof(char) * defbase_tot, "sort vgroups"); + char *name_array = MEM_mallocN(MAX_VGROUP_NAME * sizeof(char) * defbase_tot, "sort vgroups"); char *name; - name= name_array; - for (def = ob->defbase.first; def; def=def->next) { + name = name_array; + for (def = ob->defbase.first; def; def = def->next) { BLI_strncpy(name, def->name, MAX_VGROUP_NAME); name += MAX_VGROUP_NAME; } @@ -2831,33 +2832,33 @@ static char *vgroup_init_remap(Object *ob) static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op) { - MDeformVert *dvert= NULL; + MDeformVert *dvert = NULL; bDeformGroup *def; int defbase_tot = BLI_countlist(&ob->defbase); /* needs a dummy index at the start*/ - int *sort_map_update= MEM_mallocN(sizeof(int) * (defbase_tot + 1), "sort vgroups"); - int *sort_map= sort_map_update + 1; + int *sort_map_update = MEM_mallocN(sizeof(int) * (defbase_tot + 1), "sort vgroups"); + int *sort_map = sort_map_update + 1; char *name; int i; - name= name_array; - for (def= ob->defbase.first, i=0; def; def=def->next, i++) { - sort_map[i]= BLI_findstringindex(&ob->defbase, name, offsetof(bDeformGroup, name)); + name = name_array; + for (def = ob->defbase.first, i = 0; def; def = def->next, i++) { + sort_map[i] = BLI_findstringindex(&ob->defbase, name, offsetof(bDeformGroup, name)); name += MAX_VGROUP_NAME; BLI_assert(sort_map[i] != -1); } if (ob->mode == OB_MODE_EDIT) { - if (ob->type==OB_MESH) { + if (ob->type == OB_MESH) { BMEditMesh *em = BMEdit_FromObject(ob); BMIter iter; BMVert *eve; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - dvert= CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + dvert = CustomData_bmesh_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); if (dvert && dvert->totweight) { defvert_remap(dvert, sort_map, defbase_tot); } @@ -2870,7 +2871,7 @@ static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op) } } else { - int dvert_tot=0; + int dvert_tot = 0; ED_vgroup_give_array(ob->data, &dvert, &dvert_tot); @@ -2883,14 +2884,14 @@ static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op) } /* update users */ - for (i=0; iactdef] >= 0); - ob->actdef= sort_map_update[ob->actdef]; + ob->actdef = sort_map_update[ob->actdef]; MEM_freeN(sort_map_update); @@ -2899,15 +2900,15 @@ static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op) static int vgroup_sort(void *def_a_ptr, void *def_b_ptr) { - bDeformGroup *def_a= (bDeformGroup *)def_a_ptr; - bDeformGroup *def_b= (bDeformGroup *)def_b_ptr; + bDeformGroup *def_a = (bDeformGroup *)def_a_ptr; + bDeformGroup *def_b = (bDeformGroup *)def_b_ptr; return BLI_natstrcmp(def_a->name, def_b->name); } static int vertex_group_sort_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); char *name_array; int ret; @@ -2922,7 +2923,7 @@ static int vertex_group_sort_exec(bContext *C, wmOperator *op) if (ret != OPERATOR_CANCELLED) { DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob); } if (name_array) MEM_freeN(name_array); @@ -2941,15 +2942,15 @@ void OBJECT_OT_vertex_group_sort(wmOperatorType *ot) ot->exec = vertex_group_sort_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } static int vgroup_move_exec(bContext *C, wmOperator *op) { - Object *ob= ED_object_context(C); + Object *ob = ED_object_context(C); bDeformGroup *def; char *name_array; - int dir= RNA_enum_get(op->ptr, "direction"), ret; + int dir = RNA_enum_get(op->ptr, "direction"), ret; def = BLI_findlink(&ob->defbase, ob->actdef - 1); if (!def) { @@ -2977,7 +2978,7 @@ static int vgroup_move_exec(bContext *C, wmOperator *op) if (ret != OPERATOR_CANCELLED) { DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); + WM_event_add_notifier(C, NC_GEOM | ND_DATA, ob); } return ret; @@ -3000,7 +3001,7 @@ void OBJECT_OT_vertex_group_move(wmOperatorType *ot) ot->exec = vgroup_move_exec; /* flags */ - ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; RNA_def_enum(ot->srna, "direction", vgroup_slot_move, 0, "Direction", "Direction to move, UP or DOWN"); } From f88cfd9168c2977fc4acc414d8709da6484e23e7 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 28 Apr 2012 16:49:00 +0000 Subject: [PATCH 156/158] Code and style cleanup in own modules in BKE and also mball module - Make sure functions are named in way BKE__ (same way as RNA callbacks) - Make functions which are used by mball.c only static and remove their prototypes from public header file. Further cleanup is coming. --- source/blender/blenkernel/BKE_curve.h | 119 +++++----- source/blender/blenkernel/BKE_mball.h | 147 ++---------- source/blender/blenkernel/BKE_movieclip.h | 6 +- source/blender/blenkernel/intern/anim.c | 2 +- source/blender/blenkernel/intern/armature.c | 8 +- source/blender/blenkernel/intern/colortools.c | 4 +- source/blender/blenkernel/intern/curve.c | 180 +++++++-------- source/blender/blenkernel/intern/depsgraph.c | 2 +- source/blender/blenkernel/intern/displist.c | 51 ++--- source/blender/blenkernel/intern/fcurve.c | 2 +- source/blender/blenkernel/intern/font.c | 2 +- source/blender/blenkernel/intern/key.c | 8 +- source/blender/blenkernel/intern/library.c | 14 +- source/blender/blenkernel/intern/material.c | 2 +- source/blender/blenkernel/intern/mball.c | 190 ++++++++++++---- source/blender/blenkernel/intern/mesh.c | 2 +- source/blender/blenkernel/intern/movieclip.c | 6 +- source/blender/blenkernel/intern/object.c | 22 +- source/blender/blenkernel/intern/softbody.c | 2 +- .../editors/animation/anim_channels_defines.c | 2 +- source/blender/editors/curve/editcurve.c | 210 +++++++++--------- source/blender/editors/curve/editfont.c | 2 +- source/blender/editors/gpencil/gpencil_edit.c | 2 +- source/blender/editors/include/ED_curve.h | 2 +- .../editors/interface/interface_widgets.c | 4 +- source/blender/editors/metaball/mball_edit.c | 2 +- source/blender/editors/object/object_add.c | 14 +- source/blender/editors/object/object_edit.c | 4 +- .../blender/editors/object/object_modifier.c | 4 +- .../blender/editors/object/object_relations.c | 4 +- .../blender/editors/object/object_shapekey.c | 2 +- .../blender/editors/object/object_transform.c | 8 +- .../blender/editors/render/render_shading.c | 4 +- source/blender/editors/space_clip/clip_ops.c | 2 +- .../blender/editors/space_graph/graph_draw.c | 4 +- .../blender/editors/space_info/info_stats.c | 2 +- source/blender/editors/space_node/drawnode.c | 4 +- .../blender/editors/space_view3d/drawobject.c | 12 +- .../editors/space_view3d/view3d_buttons.c | 8 +- .../editors/space_view3d/view3d_snap.c | 8 +- .../editors/transform/transform_conversions.c | 4 +- .../editors/transform/transform_generics.c | 8 +- .../editors/transform/transform_manipulator.c | 2 +- .../transform/transform_orientations.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 60 ++--- source/blender/makesrna/intern/rna_main_api.c | 10 +- source/blender/makesrna/intern/rna_meta.c | 4 +- source/blender/makesrna/intern/rna_object.c | 2 +- .../blender/makesrna/intern/rna_object_api.c | 4 +- .../python/mathutils/mathutils_geometry.c | 2 +- .../render/intern/source/convertblender.c | 10 +- .../windowmanager/intern/wm_init_exit.c | 2 +- 52 files changed, 589 insertions(+), 594 deletions(-) diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h index fa3a1a6897a..3b9328ae1aa 100644 --- a/source/blender/blenkernel/BKE_curve.h +++ b/source/blender/blenkernel/BKE_curve.h @@ -53,72 +53,83 @@ struct Scene; #define CU_DO_TILT(cu, nu) (((nu->flag & CU_2D) && (cu->flag & CU_3D)==0) ? 0 : 1) #define CU_DO_RADIUS(cu, nu) ((CU_DO_TILT(cu, nu) || ((cu)->flag & CU_PATH_RADIUS) || (cu)->bevobj || (cu)->ext1!=0.0f || (cu)->ext2!=0.0f) ? 1:0) +/* ** Curve ** */ +void BKE_curve_unlink(struct Curve *cu); +void BKE_curve_free(struct Curve *cu); +void BKE_curve_editfont_free(struct Curve *cu); +struct Curve *BKE_curve_add(const char *name, int type); +struct Curve *BKE_curve_copy(struct Curve *cu); +void BKE_curve_make_local(struct Curve *cu); +short BKE_curve_type_get(struct Curve *cu); +void BKE_curve_type_test(struct Object *ob); +void BKE_curve_curve_dimension_update(struct Curve *cu); +void BKE_curve_tex_space_calc(struct Curve *cu); -void unlink_curve(struct Curve *cu); -void free_curve_editNurb_keyIndex(struct EditNurb *editnurb); -void free_curve_editNurb(struct Curve *cu); -void free_curve(struct Curve *cu); -void BKE_free_editfont(struct Curve *cu); -struct Curve *add_curve(const char *name, int type); -struct Curve *copy_curve(struct Curve *cu); -void make_local_curve(struct Curve *cu); -struct ListBase *curve_editnurbs(struct Curve *cu); -short curve_type(struct Curve *cu); -void test_curve_type(struct Object *ob); -void update_curve_dimension(struct Curve *cu ); -void tex_space_curve(struct Curve *cu); -int count_curveverts(struct ListBase *nurb); -int count_curveverts_without_handles(struct ListBase *nurb); -void freeNurb(struct Nurb *nu); -void freeNurblist(struct ListBase *lb); -struct Nurb *duplicateNurb(struct Nurb *nu); -void duplicateNurblist(struct ListBase *lb1, struct ListBase *lb2); -void test2DNurb(struct Nurb *nu); -void minmaxNurb(struct Nurb *nu, float *min, float *max); +int BKE_curve_minmax(struct Curve *cu, float min[3], float max[3]); +int BKE_curve_center_median(struct Curve *cu, float cent[3]); +int BKE_curve_center_bounds(struct Curve *cu, float cent[3]); +void BKE_curve_translate(struct Curve *cu, float offset[3], int do_keys); +void BKE_curve_delete_material_index(struct Curve *cu, int index); -void nurbs_knot_calc_u(struct Nurb *nu); -void nurbs_knot_calc_v(struct Nurb *nu); +ListBase *BKE_curve_nurbs_get(struct Curve *cu); -void makeNurbfaces(struct Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv); -void makeNurbcurve(struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride); -void forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride); -float *make_orco_curve(struct Scene *scene, struct Object *ob); -float *make_orco_surf(struct Object *ob); -void makebevelcurve(struct Scene *scene, struct Object *ob, struct ListBase *disp, int forRender); +float (*BKE_curve_vertexCos_get(struct Curve *cu, struct ListBase *lb, int *numVerts_r))[3]; +void BK_curve_vertexCos_apply(struct Curve *cu, struct ListBase *lb, float (*vertexCos)[3]); -void makeBevelList(struct Object *ob); +float (*BKE_curve_keyVertexCos_get(struct Curve *cu, struct ListBase *lb, float *key))[3]; +void BKE_curve_keyVertexTilts_apply(struct Curve *cu, struct ListBase *lb, float *key); -void calchandleNurb(struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, int mode); -void calchandlesNurb(struct Nurb *nu); -void testhandlesNurb(struct Nurb *nu); -void autocalchandlesNurb(struct Nurb *nu, int flag); -void autocalchandlesNurb_all(ListBase *editnurb, int flag); -void sethandlesNurb(ListBase *editnurb, short code); +void BKE_curve_editNurb_keyIndex_free(struct EditNurb *editnurb); +void BKE_curve_editNurb_free(struct Curve *cu); +struct ListBase *BKE_curve_editNurbs_get(struct Curve *cu); -void switchdirectionNurb(struct Nurb *nu); +float *BKE_curve_make_orco(struct Scene *scene, struct Object *ob); +float *BKE_curve_surf_make_orco(struct Object *ob); -void addNurbPoints(struct Nurb *nu, int number); -void addNurbPointsBezier(struct Nurb *nu, int number); +void BKE_curve_bevelList_make(struct Object *ob); +void BKE_curve_bevel_make(struct Scene *scene, struct Object *ob, struct ListBase *disp, int forRender); -float (*curve_getVertexCos(struct Curve *cu, struct ListBase *lb, int *numVerts_r))[3]; -void curve_applyVertexCos(struct Curve *cu, struct ListBase *lb, float (*vertexCos)[3]); +void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride); -float (*curve_getKeyVertexCos(struct Curve *cu, struct ListBase *lb, float *key))[3]; -void curve_applyKeyVertexTilts(struct Curve *cu, struct ListBase *lb, float *key); +/* ** Nurbs ** */ + +int BKE_nurbList_verts_count(struct ListBase *nurb); +int BKE_nurbList_verts_count_without_handles(struct ListBase *nurb); + +void BKE_nurbList_free(struct ListBase *lb); +void BKE_nurbList_duplicate(struct ListBase *lb1, struct ListBase *lb2); +void BKE_nurbList_handles_set(struct ListBase *editnurb, short code); + +void BKE_nurbList_handles_autocalc(ListBase *editnurb, int flag); + +void BKE_nurb_free(struct Nurb *nu); +struct Nurb *BKE_nurb_duplicate(struct Nurb *nu); + +void BKE_nurb_test2D(struct Nurb *nu); +void BKE_nurb_minmax(struct Nurb *nu, float *min, float *max); + +void BKE_nurb_makeFaces(struct Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv); +void BKE_nurb_makeCurve(struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride); + +void BKE_nurb_knot_calc_u(struct Nurb *nu); +void BKE_nurb_knot_calc_v(struct Nurb *nu); /* nurb checks if they can be drawn, also clamp order func */ -int check_valid_nurb_u(struct Nurb *nu); -int check_valid_nurb_v(struct Nurb *nu); +int BKE_nurb_check_valid_u(struct Nurb *nu); +int BKE_nurb_check_valid_v(struct Nurb *nu); -int clamp_nurb_order_u(struct Nurb *nu); -int clamp_nurb_order_v(struct Nurb *nu); +int BKE_nurb_order_clamp_u(struct Nurb *nu); +int BKE_nurb_order_clamp_v(struct Nurb *nu); -ListBase *BKE_curve_nurbs(struct Curve *cu); +void BKE_nurb_direction_switch(struct Nurb *nu); + +void BKE_nurb_points_add(struct Nurb *nu, int number); +void BKE_nurb_bezierPoints_add(struct Nurb *nu, int number); + +void BKE_nurb_handle_calc(struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, int mode); + +void BKE_nurb_handles_calc(struct Nurb *nu); +void BKE_nurb_handles_autocalc(struct Nurb *nu, int flag); +void BKE_nurb_handles_test(struct Nurb *nu); -int minmax_curve(struct Curve *cu, float min[3], float max[3]); -int curve_center_median(struct Curve *cu, float cent[3]); -int curve_center_bounds(struct Curve *cu, float cent[3]); -void curve_translate(struct Curve *cu, float offset[3], int do_keys); -void curve_delete_material_index(struct Curve *cu, int index); #endif - diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index fafd2a3d30e..018ee7f6c94 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -37,147 +37,30 @@ struct Object; struct Scene; struct MetaElem; -typedef struct point { /* a three-dimensional point */ - float x, y, z; /* its coordinates */ -} MB_POINT; +void BKE_metaball_unlink(struct MetaBall *mb); +void BKE_metaball_free(struct MetaBall *mb); +struct MetaBall *BKE_metaball_add(const char *name); +struct MetaBall *BKE_metaball_copy(struct MetaBall *mb); -typedef struct vertex { /* surface vertex */ - MB_POINT position, normal; /* position and surface normal */ -} VERTEX; +void BKE_metaball_make_local(struct MetaBall *mb); -typedef struct vertices { /* list of vertices in polygonization */ - int count, max; /* # vertices, max # allowed */ - VERTEX *ptr; /* dynamically allocated */ -} VERTICES; +void BKE_metaball_cubeTable_free(void); -typedef struct corner { /* corner of a cube */ - int i, j, k; /* (i, j, k) is index within lattice */ - float x, y, z, value; /* location and function value */ - struct corner *next; -} CORNER; +void BKE_metaball_polygonize(struct Scene *scene, struct Object *ob, struct ListBase *dispbase); +int BKE_metaball_is_basis_for(struct Object *ob1, struct Object *ob2); +int BKE_metaball_is_basis(struct Object *ob); +struct Object *BKE_metaball_basis_find(struct Scene *scene, struct Object *ob); -typedef struct cube { /* partitioning cell (cube) */ - int i, j, k; /* lattice location of cube */ - CORNER *corners[8]; /* eight corners */ -} CUBE; +void BKE_metaball_tex_space_calc(struct Object *ob); +float *BKE_metaball_make_orco(struct Object *ob, struct ListBase *dispbase); -typedef struct cubes { /* linked list of cubes acting as stack */ - CUBE cube; /* a single cube */ - struct cubes *next; /* remaining elements */ -} CUBES; - -typedef struct centerlist { /* list of cube locations */ - int i, j, k; /* cube location */ - struct centerlist *next; /* remaining elements */ -} CENTERLIST; - -typedef struct edgelist { /* list of edges */ - int i1, j1, k1, i2, j2, k2; /* edge corner ids */ - int vid; /* vertex id */ - struct edgelist *next; /* remaining elements */ -} EDGELIST; - -typedef struct intlist { /* list of integers */ - int i; /* an integer */ - struct intlist *next; /* remaining elements */ -} INTLIST; - -typedef struct intlists { /* list of list of integers */ - INTLIST *list; /* a list of integers */ - struct intlists *next; /* remaining elements */ -} INTLISTS; - -typedef struct process { /* parameters, function, storage */ - /* what happens here? floats, I think. */ - /* float (*function)(void); */ /* implicit surface function */ - float (*function)(float, float, float); - float size, delta; /* cube size, normal delta */ - int bounds; /* cube range within lattice */ - CUBES *cubes; /* active cubes */ - VERTICES vertices; /* surface vertices */ - CENTERLIST **centers; /* cube center hash table */ - CORNER **corners; /* corner value hash table */ - EDGELIST **edges; /* edge and vertex id hash table */ -} PROCESS; - -/* dividing scene using octal tree makes polygonisation faster */ -typedef struct ml_pointer { - struct ml_pointer *next, *prev; - struct MetaElem *ml; -} ml_pointer; - -typedef struct octal_node { - struct octal_node *nodes[8]; /* children of current node */ - struct octal_node *parent; /* parent of current node */ - struct ListBase elems; /* ListBase of MetaElem pointers (ml_pointer) */ - float x_min, y_min, z_min; /* 1st border point */ - float x_max, y_max, z_max; /* 7th border point */ - float x,y,z; /* center of node */ - int pos, neg; /* number of positive and negative MetaElements in the node */ - int count; /* number of MetaElems, which belongs to the node */ -} octal_node; - -typedef struct octal_tree { - struct octal_node *first; /* first node */ - int pos, neg; /* number of positive and negative MetaElements in the scene */ - short depth; /* number of scene subdivision */ -} octal_tree; - -struct pgn_elements { - struct pgn_elements *next, *prev; - char *data; -}; - -octal_node* find_metaball_octal_node(octal_node *node, float x, float y, float z, short depth); - -void freepolygonize(PROCESS *p); -void docube(CUBE *cube, PROCESS *p, struct MetaBall *mb); -void testface(int i, int j, int k, CUBE* old, int bit, int c1, int c2, int c3, int c4, PROCESS *p); -CORNER *setcorner (PROCESS* p, int i, int j, int k); -int vertid (CORNER *c1, CORNER *c2, PROCESS *p, struct MetaBall *mb); -int setcenter(CENTERLIST *table[], int i, int j, int k); -int otherface (int edge, int face); -void makecubetable (void); -void setedge (EDGELIST *table[], int i1, int j1, int k1, int i2, int j2, int k2, int vid); -int getedge (EDGELIST *table[], int i1, int j1, int k1, int i2, int j2, int k2); -void addtovertices (VERTICES *vertices, VERTEX v); -void vnormal (MB_POINT *point, PROCESS *p, MB_POINT *v); -void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2, float (*function)(float, float, float), MB_POINT *p, struct MetaBall *mb, int f); -void add_cube(PROCESS *mbproc, int i, int j, int k, int count); -void find_first_points(PROCESS *mbproc, struct MetaBall *mb, int a); - -void fill_metaball_octal_node(octal_node *node, struct MetaElem *ml, short i); -void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, float size_z, short depth); -void free_metaball_octal_node(octal_node *node); -void init_metaball_octal_tree(int depth); -void polygonize(PROCESS *mbproc, struct MetaBall *mb); -float init_meta(struct Scene *scene, struct Object *ob); - -void unlink_mball(struct MetaBall *mb); -void free_mball(struct MetaBall *mb); -struct MetaBall *add_mball(const char *name); -struct MetaBall *copy_mball(struct MetaBall *mb); -void make_local_mball(struct MetaBall *mb); -struct MetaElem *add_metaball_element(struct MetaBall *mb, const int type); -void tex_space_mball(struct Object *ob); -float *make_orco_mball(struct Object *ob, struct ListBase *dispbase); -void copy_mball_properties(struct Scene *scene, struct Object *active_object); -struct Object *find_basis_mball(struct Scene *scene, struct Object *ob); -int is_basis_mball(struct Object *ob); -int is_mball_basis_for(struct Object *ob1, struct Object *ob2); -void metaball_polygonize(struct Scene *scene, struct Object *ob, struct ListBase *dispbase); -void calc_mballco(struct MetaElem *ml, float vec[3]); -float densfunc(struct MetaElem *ball, float x, float y, float z); -float metaball(float x, float y, float z); -void accum_mballfaces(int i1, int i2, int i3, int i4); -void *new_pgn_element(int size); -int nextcwedge (int edge, int face); -void BKE_freecubetable(void); +void BKE_metaball_properties_copy(struct Scene *scene, struct Object *active_object); int BKE_metaball_minmax(struct MetaBall *mb, float min[3], float max[3]); int BKE_metaball_center_median(struct MetaBall *mb, float cent[3]); int BKE_metaball_center_bounds(struct MetaBall *mb, float cent[3]); void BKE_metaball_translate(struct MetaBall *mb, float offset[3]); -#endif +struct MetaElem *BKE_metaball_element_add(struct MetaBall *mb, const int type); +#endif diff --git a/source/blender/blenkernel/BKE_movieclip.h b/source/blender/blenkernel/BKE_movieclip.h index d7b2f271a83..29924542494 100644 --- a/source/blender/blenkernel/BKE_movieclip.h +++ b/source/blender/blenkernel/BKE_movieclip.h @@ -40,10 +40,10 @@ struct MovieClipUser; struct MovieTrackingTrack; struct MovieDistortion; -void free_movieclip(struct MovieClip *clip); -void unlink_movieclip(struct Main *bmain, struct MovieClip *clip); +void BKE_movieclip_free(struct MovieClip *clip); +void BKE_movieclip_unlink(struct Main *bmain, struct MovieClip *clip); -struct MovieClip *BKE_add_movieclip_file(const char *name); +struct MovieClip *BKE_movieclip_file_add(const char *name); void BKE_movieclip_reload(struct MovieClip *clip); struct ImBuf *BKE_movieclip_get_ibuf(struct MovieClip *clip, struct MovieClipUser *user); diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 05171a5d9f5..38c73ba72b9 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -482,7 +482,7 @@ void calc_curvepath(Object *ob) if (ob==NULL || ob->type != OB_CURVE) return; cu= ob->data; - nurbs= BKE_curve_nurbs(cu); + nurbs= BKE_curve_nurbs_get(cu); nu= nurbs->first; if (cu->path) free_path(cu->path); diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 931aa2d6242..d1d6833e903 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -566,13 +566,13 @@ Mat4 *b_bone_spline_setup(bPoseChannel *pchan, int rest) if (bone->segments > MAX_BBONE_SUBDIV) bone->segments = MAX_BBONE_SUBDIV; - forward_diff_bezier(0.0, h1[0], h2[0], 0.0, data[0], + BKE_curve_forward_diff_bezier(0.0, h1[0], h2[0], 0.0, data[0], MAX_BBONE_SUBDIV, 4*sizeof(float)); - forward_diff_bezier(0.0, h1[1], length + h2[1], length, data[0]+1, + BKE_curve_forward_diff_bezier(0.0, h1[1], length + h2[1], length, data[0]+1, MAX_BBONE_SUBDIV, 4*sizeof(float)); - forward_diff_bezier(0.0, h1[2], h2[2], 0.0, data[0]+2, + BKE_curve_forward_diff_bezier(0.0, h1[2], h2[2], 0.0, data[0]+2, MAX_BBONE_SUBDIV, 4*sizeof(float)); - forward_diff_bezier(roll1, roll1 + 0.390464f*(roll2-roll1), roll2 - 0.390464f*(roll2-roll1), roll2, data[0]+3, + BKE_curve_forward_diff_bezier(roll1, roll1 + 0.390464f*(roll2-roll1), roll2 - 0.390464f*(roll2-roll1), roll2, data[0]+3, MAX_BBONE_SUBDIV, 4*sizeof(float)); equalize_bezier(data[0], bone->segments); /* note: does stride 4! */ diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index 2d5631509b4..6dc1b2a4b00 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -499,8 +499,8 @@ static void curvemap_make_table(CurveMap *cuma, rctf *clipr) for (a=0; atotpoint-1; a++, fp += 2*CM_RESOL) { correct_bezpart(bezt[a].vec[1], bezt[a].vec[2], bezt[a+1].vec[0], bezt[a+1].vec[1]); - forward_diff_bezier(bezt[a].vec[1][0], bezt[a].vec[2][0], bezt[a+1].vec[0][0], bezt[a+1].vec[1][0], fp, CM_RESOL-1, 2*sizeof(float)); - forward_diff_bezier(bezt[a].vec[1][1], bezt[a].vec[2][1], bezt[a+1].vec[0][1], bezt[a+1].vec[1][1], fp+1, CM_RESOL-1, 2*sizeof(float)); + BKE_curve_forward_diff_bezier(bezt[a].vec[1][0], bezt[a].vec[2][0], bezt[a+1].vec[0][0], bezt[a+1].vec[1][0], fp, CM_RESOL-1, 2*sizeof(float)); + BKE_curve_forward_diff_bezier(bezt[a].vec[1][1], bezt[a].vec[2][1], bezt[a+1].vec[0][1], bezt[a+1].vec[1][1], fp+1, CM_RESOL-1, 2*sizeof(float)); } /* store first and last handle for extrapolation, unit length */ diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index e5b2e5f69c7..e0cadac586b 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -70,7 +70,7 @@ static int cu_isectLL(const float v1[3], const float v2[3], const float v3[3], c short cox, short coy, float *labda, float *mu, float vec[3]); -void unlink_curve(Curve *cu) +void BKE_curve_unlink(Curve *cu) { int a; @@ -95,7 +95,7 @@ void unlink_curve(Curve *cu) } /* frees editcurve entirely */ -void BKE_free_editfont(Curve *cu) +void BKE_curve_editfont_free(Curve *cu) { if (cu->editfont) { EditFont *ef= cu->editfont; @@ -112,7 +112,7 @@ void BKE_free_editfont(Curve *cu) } } -void free_curve_editNurb_keyIndex(EditNurb *editnurb) +void BKE_curve_editNurb_keyIndex_free(EditNurb *editnurb) { if (!editnurb->keyindex) { return; @@ -121,26 +121,26 @@ void free_curve_editNurb_keyIndex(EditNurb *editnurb) editnurb->keyindex= NULL; } -void free_curve_editNurb (Curve *cu) +void BKE_curve_editNurb_free (Curve *cu) { if (cu->editnurb) { - freeNurblist(&cu->editnurb->nurbs); - free_curve_editNurb_keyIndex(cu->editnurb); + BKE_nurbList_free(&cu->editnurb->nurbs); + BKE_curve_editNurb_keyIndex_free(cu->editnurb); MEM_freeN(cu->editnurb); cu->editnurb= NULL; } } /* don't free curve itself */ -void free_curve(Curve *cu) +void BKE_curve_free(Curve *cu) { - freeNurblist(&cu->nurb); + BKE_nurbList_free(&cu->nurb); BLI_freelistN(&cu->bev); freedisplist(&cu->disp); - BKE_free_editfont(cu); + BKE_curve_editfont_free(cu); - free_curve_editNurb(cu); - unlink_curve(cu); + BKE_curve_editNurb_free(cu); + BKE_curve_unlink(cu); BKE_free_animdata((ID *)cu); if (cu->mat) MEM_freeN(cu->mat); @@ -151,7 +151,7 @@ void free_curve(Curve *cu) if (cu->tb) MEM_freeN(cu->tb); } -Curve *add_curve(const char *name, int type) +Curve *BKE_curve_add(const char *name, int type) { Curve *cu; @@ -187,14 +187,14 @@ Curve *add_curve(const char *name, int type) return cu; } -Curve *copy_curve(Curve *cu) +Curve *BKE_curve_copy(Curve *cu) { Curve *cun; int a; cun= copy_libblock(&cu->id); cun->nurb.first= cun->nurb.last= NULL; - duplicateNurblist( &(cun->nurb), &(cu->nurb)); + BKE_nurbList_duplicate( &(cun->nurb), &(cu->nurb)); cun->mat= MEM_dupallocN(cu->mat); for (a=0; atotcol; a++) { @@ -242,7 +242,7 @@ static void extern_local_curve(Curve *cu) } } -void make_local_curve(Curve *cu) +void BKE_curve_make_local(Curve *cu) { Main *bmain= G.main; Object *ob; @@ -273,7 +273,7 @@ void make_local_curve(Curve *cu) extern_local_curve(cu); } else if (is_local && is_lib) { - Curve *cu_new= copy_curve(cu); + Curve *cu_new= BKE_curve_copy(cu); cu_new->id.us= 0; BKE_id_lib_local_paths(bmain, cu->id.lib, &cu_new->id); @@ -291,7 +291,7 @@ void make_local_curve(Curve *cu) } /* Get list of nurbs from editnurbs structure */ -ListBase *curve_editnurbs(Curve *cu) +ListBase *BKE_curve_editNurbs_get(Curve *cu) { if (cu->editnurb) { return &cu->editnurb->nurbs; @@ -300,7 +300,7 @@ ListBase *curve_editnurbs(Curve *cu) return NULL; } -short curve_type(Curve *cu) +short BKE_curve_type_get(Curve *cu) { Nurb *nu; int type= cu->type; @@ -322,9 +322,9 @@ short curve_type(Curve *cu) return type; } -void update_curve_dimension(Curve *cu) +void BKE_curve_curve_dimension_update(Curve *cu) { - ListBase *nurbs= BKE_curve_nurbs(cu); + ListBase *nurbs= BKE_curve_nurbs_get(cu); Nurb *nu= nurbs->first; if (cu->flag&CU_3D) { @@ -335,24 +335,24 @@ void update_curve_dimension(Curve *cu) else { for ( ; nu; nu= nu->next) { nu->flag |= CU_2D; - test2DNurb(nu); + BKE_nurb_test2D(nu); /* since the handles are moved they need to be auto-located again */ if (nu->type == CU_BEZIER) - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } } } -void test_curve_type(Object *ob) +void BKE_curve_type_test(Object *ob) { - ob->type= curve_type(ob->data); + ob->type= BKE_curve_type_get(ob->data); if (ob->type==OB_CURVE) - update_curve_dimension((Curve *)ob->data); + BKE_curve_curve_dimension_update((Curve *)ob->data); } -void tex_space_curve(Curve *cu) +void BKE_curve_tex_space_calc(Curve *cu) { DispList *dl; BoundBox *bb; @@ -408,7 +408,7 @@ void tex_space_curve(Curve *cu) } } -int count_curveverts(ListBase *nurb) +int BKE_nurbList_verts_count(ListBase *nurb) { Nurb *nu; int tot=0; @@ -423,7 +423,7 @@ int count_curveverts(ListBase *nurb) return tot; } -int count_curveverts_without_handles(ListBase *nurb) +int BKE_nurbList_verts_count_without_handles(ListBase *nurb) { Nurb *nu; int tot=0; @@ -440,7 +440,7 @@ int count_curveverts_without_handles(ListBase *nurb) /* **************** NURBS ROUTINES ******************** */ -void freeNurb(Nurb *nu) +void BKE_nurb_free(Nurb *nu) { if (nu==NULL) return; @@ -460,7 +460,7 @@ void freeNurb(Nurb *nu) } -void freeNurblist(ListBase *lb) +void BKE_nurbList_free(ListBase *lb) { Nurb *nu, *next; @@ -469,13 +469,13 @@ void freeNurblist(ListBase *lb) nu= lb->first; while (nu) { next= nu->next; - freeNurb(nu); + BKE_nurb_free(nu); nu= next; } lb->first= lb->last= NULL; } -Nurb *duplicateNurb(Nurb *nu) +Nurb *BKE_nurb_duplicate(Nurb *nu) { Nurb *newnu; int len; @@ -515,22 +515,22 @@ Nurb *duplicateNurb(Nurb *nu) return newnu; } -void duplicateNurblist(ListBase *lb1, ListBase *lb2) +void BKE_nurbList_duplicate(ListBase *lb1, ListBase *lb2) { Nurb *nu, *nun; - freeNurblist(lb1); + BKE_nurbList_free(lb1); nu= lb2->first; while (nu) { - nun= duplicateNurb(nu); + nun= BKE_nurb_duplicate(nu); BLI_addtail(lb1, nun); nu= nu->next; } } -void test2DNurb(Nurb *nu) +void BKE_nurb_test2D(Nurb *nu) { BezTriple *bezt; BPoint *bp; @@ -559,7 +559,7 @@ void test2DNurb(Nurb *nu) } } -void minmaxNurb(Nurb *nu, float *min, float *max) +void BKE_nurb_minmax(Nurb *nu, float *min, float *max) { BezTriple *bezt; BPoint *bp; @@ -586,7 +586,7 @@ void minmaxNurb(Nurb *nu, float *min, float *max) } /* be sure to call makeknots after this */ -void addNurbPoints(Nurb *nu, int number) +void BKE_nurb_points_add(Nurb *nu, int number) { BPoint *tmp= nu->bp; int i; @@ -606,7 +606,7 @@ void addNurbPoints(Nurb *nu, int number) nu->pntsu += number; } -void addNurbPointsBezier(Nurb *nu, int number) +void BKE_nurb_bezierPoints_add(Nurb *nu, int number) { BezTriple *tmp= nu->bezt; int i; @@ -706,7 +706,7 @@ static void makeknots(Nurb *nu, short uv) if (nu->type == CU_NURBS) { if (uv == 1) { if (nu->knotsu) MEM_freeN(nu->knotsu); - if (check_valid_nurb_u(nu)) { + if (BKE_nurb_check_valid_u(nu)) { nu->knotsu= MEM_callocN(4+sizeof(float)*KNOTSU(nu), "makeknots"); if (nu->flagu & CU_NURB_CYCLIC) { calcknots(nu->knotsu, nu->pntsu, nu->orderu, 0); /* cyclic should be uniform */ @@ -721,7 +721,7 @@ static void makeknots(Nurb *nu, short uv) } else if (uv == 2) { if (nu->knotsv) MEM_freeN(nu->knotsv); - if (check_valid_nurb_v(nu)) { + if (BKE_nurb_check_valid_v(nu)) { nu->knotsv= MEM_callocN(4+sizeof(float)*KNOTSV(nu), "makeknots"); if (nu->flagv & CU_NURB_CYCLIC) { calcknots(nu->knotsv, nu->pntsv, nu->orderv, 0); /* cyclic should be uniform */ @@ -736,12 +736,12 @@ static void makeknots(Nurb *nu, short uv) } } -void nurbs_knot_calc_u(Nurb *nu) +void BKE_nurb_knot_calc_u(Nurb *nu) { makeknots(nu, 1); } -void nurbs_knot_calc_v(Nurb *nu) +void BKE_nurb_knot_calc_v(Nurb *nu) { makeknots(nu, 2); } @@ -809,7 +809,7 @@ static void basisNurb(float t, short order, short pnts, float *knots, float *bas } -void makeNurbfaces(Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv) +void BKE_nurb_makeFaces(Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv) /* coord_array has to be 3*4*resolu*resolv in size, and zero-ed */ { BPoint *bp; @@ -972,7 +972,7 @@ void makeNurbfaces(Nurb *nu, float *coord_array, int rowstride, int resolu, int MEM_freeN(jend); } -void makeNurbcurve(Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride) +void BKE_nurb_makeCurve(Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride) /* coord_array has to be 3*4*pntsu*resolu in size and zero-ed * tilt_array and radius_array will be written to if valid */ { @@ -1074,7 +1074,7 @@ void makeNurbcurve(Nurb *nu, float *coord_array, float *tilt_array, float *radiu } /* forward differencing method for bezier curve */ -void forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride) +void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride) { float rt0,rt1,rt2,rt3,f; int a; @@ -1122,7 +1122,7 @@ static void forward_diff_bezier_cotangent(float *p0, float *p1, float *p2, float /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -float *make_orco_surf(Object *ob) +float *BKE_curve_surf_make_orco(Object *ob) { /* Note: this function is used in convertblender only atm, so * suppose nonzero curve's render resolution should always be used */ @@ -1190,7 +1190,7 @@ float *make_orco_surf(Object *ob) float *_tdata= MEM_callocN((nu->pntsu*resolu) * (nu->pntsv*resolv) *3*sizeof(float), "temp data"); float *tdata= _tdata; - makeNurbfaces(nu, tdata, 0, resolu, resolv); + BKE_nurb_makeFaces(nu, tdata, 0, resolu, resolv); for (b=0; bdata; DispList *dl; @@ -1312,7 +1312,7 @@ float *make_orco_curve(Scene *scene, Object *ob) /* ***************** BEVEL ****************** */ -void makebevelcurve(Scene *scene, Object *ob, ListBase *disp, int forRender) +void BKE_curve_bevel_make(Scene *scene, Object *ob, ListBase *disp, int forRender) { DispList *dl, *dlnew; Curve *bevcu, *cu; @@ -2083,7 +2083,7 @@ static void make_bevel_list_segment_3D(BevList *bl) -void makeBevelList(Object *ob) +void BKE_curve_bevelList_make(Object *ob) { /* * - convert all curves to polys, with indication of resol and flags for double-vertices @@ -2112,7 +2112,7 @@ void makeBevelList(Object *ob) BLI_freelistN(&(cu->bev)); if (cu->editnurb && ob->type!=OB_FONT) { - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); nu = nurbs->first; } else { @@ -2128,7 +2128,7 @@ void makeBevelList(Object *ob) /* check we are a single point? also check we are not a surface and that the orderu is sane, * enforced in the UI but can go wrong possibly */ - if (!check_valid_nurb_u(nu)) { + if (!BKE_nurb_check_valid_u(nu)) { bl= MEM_callocN(sizeof(BevList)+1*sizeof(BevPoint), "makeBevelList1"); BLI_addtail(&(cu->bev), bl); bl->nr= 0; @@ -2201,7 +2201,7 @@ void makeBevelList(Object *ob) /* BevPoint must stay aligned to 4 so sizeof(BevPoint)/sizeof(float) works */ for (j=0; j<3; j++) { - forward_diff_bezier( prevbezt->vec[1][j], prevbezt->vec[2][j], + BKE_curve_forward_diff_bezier( prevbezt->vec[1][j], prevbezt->vec[2][j], bezt->vec[0][j], bezt->vec[1][j], &(bevp->vec[j]), resolu, sizeof(BevPoint)); } @@ -2256,7 +2256,7 @@ void makeBevelList(Object *ob) else bl->poly= -1; bevp= (BevPoint *)(bl+1); - makeNurbcurve( nu, &bevp->vec[0], + BKE_nurb_makeCurve( nu, &bevp->vec[0], do_tilt ? &bevp->alfa : NULL, do_radius ? &bevp->radius : NULL, do_weight ? &bevp->weight : NULL, @@ -2719,18 +2719,18 @@ static void calchandlesNurb_intern(Nurb *nu, int skip_align) } } -void calchandleNurb(BezTriple *bezt, BezTriple *prev, BezTriple *next, int mode) +void BKE_nurb_handle_calc(BezTriple *bezt, BezTriple *prev, BezTriple *next, int mode) { calchandleNurb_intern(bezt, prev, next, mode, FALSE); } -void calchandlesNurb(Nurb *nu) /* first, if needed, set handle flags */ +void BKE_nurb_handles_calc(Nurb *nu) /* first, if needed, set handle flags */ { calchandlesNurb_intern(nu, FALSE); } -void testhandlesNurb(Nurb *nu) +void BKE_nurb_handles_test(Nurb *nu) { /* use when something has changed with handles. * it treats all BezTriples with the following rules: @@ -2770,10 +2770,10 @@ void testhandlesNurb(Nurb *nu) bezt++; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } -void autocalchandlesNurb(Nurb *nu, int flag) +void BKE_nurb_handles_autocalc(Nurb *nu, int flag) { /* checks handle coordinates and calculates type */ @@ -2841,21 +2841,21 @@ void autocalchandlesNurb(Nurb *nu, int flag) bezt2++; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } -void autocalchandlesNurb_all(ListBase *editnurb, int flag) +void BKE_nurbList_handles_autocalc(ListBase *editnurb, int flag) { Nurb *nu; nu= editnurb->first; while (nu) { - autocalchandlesNurb(nu, flag); + BKE_nurb_handles_autocalc(nu, flag); nu= nu->next; } } -void sethandlesNurb(ListBase *editnurb, short code) +void BKE_nurbList_handles_set(ListBase *editnurb, short code) { /* code==1: set autohandle */ /* code==2: set vectorhandle */ @@ -2884,7 +2884,7 @@ void sethandlesNurb(ListBase *editnurb, short code) } bezt++; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } nu= nu->next; } @@ -2928,7 +2928,7 @@ void sethandlesNurb(ListBase *editnurb, short code) bezt++; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } nu= nu->next; } @@ -2958,7 +2958,7 @@ static void swapdata(void *adr1, void *adr2, int len) } } -void switchdirectionNurb(Nurb *nu) +void BKE_nurb_direction_switch(Nurb *nu) { BezTriple *bezt1, *bezt2; BPoint *bp1, *bp2; @@ -3064,9 +3064,9 @@ void switchdirectionNurb(Nurb *nu) } -float (*curve_getVertexCos(Curve *UNUSED(cu), ListBase *lb, int *numVerts_r))[3] +float (*BKE_curve_vertexCos_get(Curve *UNUSED(cu), ListBase *lb, int *numVerts_r))[3] { - int i, numVerts = *numVerts_r = count_curveverts(lb); + int i, numVerts = *numVerts_r = BKE_nurbList_verts_count(lb); float *co, (*cos)[3] = MEM_mallocN(sizeof(*cos)*numVerts, "cu_vcos"); Nurb *nu; @@ -3093,7 +3093,7 @@ float (*curve_getVertexCos(Curve *UNUSED(cu), ListBase *lb, int *numVerts_r))[3] return cos; } -void curve_applyVertexCos(Curve *UNUSED(cu), ListBase *lb, float (*vertexCos)[3]) +void BK_curve_vertexCos_apply(Curve *UNUSED(cu), ListBase *lb, float (*vertexCos)[3]) { float *co = vertexCos[0]; Nurb *nu; @@ -3121,9 +3121,9 @@ void curve_applyVertexCos(Curve *UNUSED(cu), ListBase *lb, float (*vertexCos)[3] } } -float (*curve_getKeyVertexCos(Curve *UNUSED(cu), ListBase *lb, float *key))[3] +float (*BKE_curve_keyVertexCos_get(Curve *UNUSED(cu), ListBase *lb, float *key))[3] { - int i, numVerts = count_curveverts(lb); + int i, numVerts = BKE_nurbList_verts_count(lb); float *co, (*cos)[3] = MEM_mallocN(sizeof(*cos)*numVerts, "cu_vcos"); Nurb *nu; @@ -3152,7 +3152,7 @@ float (*curve_getKeyVertexCos(Curve *UNUSED(cu), ListBase *lb, float *key))[3] return cos; } -void curve_applyKeyVertexTilts(Curve *UNUSED(cu), ListBase *lb, float *key) +void BKE_curve_keyVertexTilts_apply(Curve *UNUSED(cu), ListBase *lb, float *key) { Nurb *nu; int i; @@ -3179,7 +3179,7 @@ void curve_applyKeyVertexTilts(Curve *UNUSED(cu), ListBase *lb, float *key) } } -int check_valid_nurb_u( struct Nurb *nu ) +int BKE_nurb_check_valid_u( struct Nurb *nu ) { if (nu==NULL) return 0; if (nu->pntsu <= 1) return 0; @@ -3194,7 +3194,7 @@ int check_valid_nurb_u( struct Nurb *nu ) } return 1; } -int check_valid_nurb_v( struct Nurb *nu) +int BKE_nurb_check_valid_v( struct Nurb *nu) { if (nu==NULL) return 0; if (nu->pntsv <= 1) return 0; @@ -3210,7 +3210,7 @@ int check_valid_nurb_v( struct Nurb *nu) return 1; } -int clamp_nurb_order_u( struct Nurb *nu ) +int BKE_nurb_order_clamp_u( struct Nurb *nu ) { int change = 0; if (nu->pntsuorderu) { @@ -3224,7 +3224,7 @@ int clamp_nurb_order_u( struct Nurb *nu ) return change; } -int clamp_nurb_order_v( struct Nurb *nu) +int BKE_nurb_order_clamp_v( struct Nurb *nu) { int change = 0; if (nu->pntsvorderv) { @@ -3239,10 +3239,10 @@ int clamp_nurb_order_v( struct Nurb *nu) } /* Get edit nurbs or normal nurbs list */ -ListBase *BKE_curve_nurbs(Curve *cu) +ListBase *BKE_curve_nurbs_get(Curve *cu) { if (cu->editnurb) { - return curve_editnurbs(cu); + return BKE_curve_editNurbs_get(cu); } return &cu->nurb; @@ -3250,20 +3250,20 @@ ListBase *BKE_curve_nurbs(Curve *cu) /* basic vertex data functions */ -int minmax_curve(Curve *cu, float min[3], float max[3]) +int BKE_curve_minmax(Curve *cu, float min[3], float max[3]) { - ListBase *nurb_lb= BKE_curve_nurbs(cu); + ListBase *nurb_lb= BKE_curve_nurbs_get(cu); Nurb *nu; for (nu= nurb_lb->first; nu; nu= nu->next) - minmaxNurb(nu, min, max); + BKE_nurb_minmax(nu, min, max); return (nurb_lb->first != NULL); } -int curve_center_median(Curve *cu, float cent[3]) +int BKE_curve_center_median(Curve *cu, float cent[3]) { - ListBase *nurb_lb= BKE_curve_nurbs(cu); + ListBase *nurb_lb= BKE_curve_nurbs_get(cu); Nurb *nu; int total= 0; @@ -3297,11 +3297,11 @@ int curve_center_median(Curve *cu, float cent[3]) return (total != 0); } -int curve_center_bounds(Curve *cu, float cent[3]) +int BKE_curve_center_bounds(Curve *cu, float cent[3]) { float min[3], max[3]; INIT_MINMAX(min, max); - if (minmax_curve(cu, min, max)) { + if (BKE_curve_minmax(cu, min, max)) { mid_v3_v3v3(cent, min, max); return 1; } @@ -3309,9 +3309,9 @@ int curve_center_bounds(Curve *cu, float cent[3]) return 0; } -void curve_translate(Curve *cu, float offset[3], int do_keys) +void BKE_curve_translate(Curve *cu, float offset[3], int do_keys) { - ListBase *nurb_lb= BKE_curve_nurbs(cu); + ListBase *nurb_lb= BKE_curve_nurbs_get(cu); Nurb *nu; int i; @@ -3346,9 +3346,9 @@ void curve_translate(Curve *cu, float offset[3], int do_keys) } } -void curve_delete_material_index(Curve *cu, int index) +void BKE_curve_delete_material_index(Curve *cu, int index) { - const int curvetype= curve_type(cu); + const int curvetype= BKE_curve_type_get(cu); if (curvetype == OB_FONT) { struct CharInfo *info= cu->strinfo; diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 246c973169e..045d85242f1 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -539,7 +539,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O break; case OB_MBALL: { - Object *mom= find_basis_mball(scene, ob); + Object *mom= BKE_metaball_basis_find(scene, ob); if (mom!=ob) { node2 = dag_get_node(dag, mom); diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index fcd80698d5c..3d79386e19a 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1,4 +1,5 @@ /* + * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or @@ -296,7 +297,7 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase, i else resolu= nu->resolu; - if (!check_valid_nurb_u(nu)); + if (!BKE_nurb_check_valid_u(nu)); else if (nu->type == CU_BEZIER) { /* count */ @@ -351,7 +352,7 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase, i else { int j; for (j=0; j<3; j++) { - forward_diff_bezier( prevbezt->vec[1][j], + BKE_curve_forward_diff_bezier( prevbezt->vec[1][j], prevbezt->vec[2][j], bezt->vec[0][j], bezt->vec[1][j], @@ -384,7 +385,7 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase, i data= dl->verts; if (nu->flagu & CU_NURB_CYCLIC) dl->type= DL_POLY; else dl->type= DL_SEGM; - makeNurbcurve(nu, data, NULL, NULL, NULL, resolu, 3*sizeof(float)); + BKE_nurb_makeCurve(nu, data, NULL, NULL, NULL, resolu, 3*sizeof(float)); } else if (nu->type == CU_POLY) { len= nu->pntsu; @@ -672,9 +673,9 @@ void makeDispListMBall(Scene *scene, Object *ob) freedisplist(&(ob->disp)); if (ob->type==OB_MBALL) { - if (ob==find_basis_mball(scene, ob)) { - metaball_polygonize(scene, ob, &ob->disp); - tex_space_mball(ob); + if (ob==BKE_metaball_basis_find(scene, ob)) { + BKE_metaball_polygonize(scene, ob, &ob->disp); + BKE_metaball_tex_space_calc(ob); object_deform_mball(ob, &ob->disp); } @@ -685,8 +686,8 @@ void makeDispListMBall(Scene *scene, Object *ob) void makeDispListMBall_forRender(Scene *scene, Object *ob, ListBase *dispbase) { - metaball_polygonize(scene, ob, dispbase); - tex_space_mball(ob); + BKE_metaball_polygonize(scene, ob, dispbase); + BKE_metaball_tex_space_calc(ob); object_deform_mball(ob, dispbase); } @@ -730,7 +731,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl ModifierData *md = modifiers_getVirtualModifierList(ob); ModifierData *pretessellatePoint; Curve *cu= ob->data; - ListBase *nurb= BKE_curve_nurbs(cu); + ListBase *nurb= BKE_curve_nurbs_get(cu); int numVerts = 0; int editmode = (!forRender && cu->editnurb); float (*originalVerts)[3] = NULL; @@ -753,9 +754,9 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl * tilts, which is passed through in the modifier stack. * this is also the reason curves do not use a virtual * shape key modifier yet. */ - deformedVerts= curve_getKeyVertexCos(cu, nurb, keyVerts); + deformedVerts= BKE_curve_keyVertexCos_get(cu, nurb, keyVerts); originalVerts= MEM_dupallocN(deformedVerts); - numVerts = count_curveverts_without_handles(nurb); + numVerts = BKE_nurbList_verts_count_without_handles(nurb); } } @@ -770,7 +771,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl if (mti->type!=eModifierTypeType_OnlyDeform) continue; if (!deformedVerts) { - deformedVerts = curve_getVertexCos(cu, nurb, &numVerts); + deformedVerts = BKE_curve_vertexCos_get(cu, nurb, &numVerts); originalVerts = MEM_dupallocN(deformedVerts); } @@ -782,9 +783,9 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl } if (deformedVerts) - curve_applyVertexCos(cu, nurb, deformedVerts); + BK_curve_vertexCos_apply(cu, nurb, deformedVerts); if (keyVerts) /* these are not passed through modifier stack */ - curve_applyKeyVertexTilts(cu, nurb, keyVerts); + BKE_curve_keyVertexTilts_apply(cu, nurb, keyVerts); if (keyVerts) MEM_freeN(keyVerts); @@ -834,7 +835,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba ModifierData *md = modifiers_getVirtualModifierList(ob); ModifierData *pretessellatePoint; Curve *cu= ob->data; - ListBase *nurb= BKE_curve_nurbs(cu); + ListBase *nurb= BKE_curve_nurbs_get(cu); int required_mode = 0, totvert = 0; int editmode = (!forRender && cu->editnurb); DerivedMesh *dm= NULL, *ndm; @@ -956,7 +957,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba } if (deformedVerts) { - curve_applyVertexCos(ob->data, nurb, originalVerts); + BK_curve_vertexCos_apply(ob->data, nurb, originalVerts); MEM_freeN(originalVerts); MEM_freeN(deformedVerts); } @@ -1023,7 +1024,7 @@ static void add_orco_dm(Scene *scene, Object *ob, DerivedMesh *dm, DerivedMesh * dm->getVertCos(dm, orco); } else { - orco= (float(*)[3])make_orco_curve(scene, ob); + orco= (float(*)[3])BKE_curve_make_orco(scene, ob); } for (a=0; aeditnurb) - nubase= curve_editnurbs(cu); + nubase= BKE_curve_editNurbs_get(cu); else nubase= &cu->nurb; @@ -1144,7 +1145,7 @@ void makeDispListSurf(Scene *scene, Object *ob, ListBase *dispbase, if (nu->flagu & CU_NURB_CYCLIC) dl->type= DL_POLY; else dl->type= DL_SEGM; - makeNurbcurve(nu, data, NULL, NULL, NULL, resolu, 3*sizeof(float)); + BKE_nurb_makeCurve(nu, data, NULL, NULL, NULL, resolu, 3*sizeof(float)); } else { len= (nu->pntsu*resolu) * (nu->pntsv*resolv); @@ -1168,7 +1169,7 @@ void makeDispListSurf(Scene *scene, Object *ob, ListBase *dispbase, if (nu->flagv & CU_NURB_CYCLIC) dl->flag|= DL_CYCL_U; /* reverse too! */ if (nu->flagu & CU_NURB_CYCLIC) dl->flag|= DL_CYCL_V; - makeNurbfaces(nu, data, 0, resolu, resolv); + BKE_nurb_makeFaces(nu, data, 0, resolu, resolv); /* gl array drawing: using indices */ displist_surf_indices(dl); @@ -1182,7 +1183,7 @@ void makeDispListSurf(Scene *scene, Object *ob, ListBase *dispbase, copy_displist(&cu->disp, dispbase); if (!forRender) { - tex_space_curve(cu); + BKE_curve_tex_space_calc(cu); } if (!forOrco) @@ -1262,7 +1263,7 @@ static void do_makeDispListCurveTypes(Scene *scene, Object *ob, ListBase *dispba float (*deformedVerts)[3]; int numVerts; - nubase= BKE_curve_nurbs(cu); + nubase= BKE_curve_nurbs_get(cu); BLI_freelistN(&(cu->bev)); @@ -1273,10 +1274,10 @@ static void do_makeDispListCurveTypes(Scene *scene, Object *ob, ListBase *dispba if (!forOrco) curve_calc_modifiers_pre(scene, ob, forRender, &originalVerts, &deformedVerts, &numVerts); - makeBevelList(ob); + BKE_curve_bevelList_make(ob); /* If curve has no bevel will return nothing */ - makebevelcurve(scene, ob, &dlbev, forRender); + BKE_curve_bevel_make(scene, ob, &dlbev, forRender); /* no bevel or extrude, and no width correction? */ if (!dlbev.first && cu->width==1.0f) { @@ -1410,7 +1411,7 @@ static void do_makeDispListCurveTypes(Scene *scene, Object *ob, ListBase *dispba copy_displist(&cu->disp, dispbase); if (!forRender) { - tex_space_curve(cu); + BKE_curve_tex_space_calc(cu); } if (!forOrco) curve_calc_modifiers_post(scene, ob, dispbase, derivedFinal, forRender, originalVerts, deformedVerts); diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 806d795cc9d..e85432581d5 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -800,7 +800,7 @@ void calchandles_fcurve (FCurve *fcu) if (bezt->vec[2][0] < bezt->vec[1][0]) bezt->vec[2][0]= bezt->vec[1][0]; /* calculate auto-handles */ - calchandleNurb(bezt, prev, next, 1); /* 1==special autohandle */ + BKE_nurb_handle_calc(bezt, prev, next, 1); /* 1==special autohandle */ /* for automatic ease in and out */ if (ELEM(bezt->h1,HD_AUTO,HD_AUTO_ANIM) && ELEM(bezt->h2,HD_AUTO,HD_AUTO_ANIM)) { diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index cdc923600d7..5d7960a9823 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -1011,7 +1011,7 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m if (mode == FO_EDIT) { /* make nurbdata */ - freeNurblist(&cu->nurb); + BKE_nurbList_free(&cu->nurb); ct= chartransdata; if (cu->sepchar==0) { diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 0a1c0467244..54a2613991a 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1594,7 +1594,7 @@ void curve_to_key(Curve *cu, KeyBlock *kb, ListBase *nurb) int a, tot; /* count */ - tot = count_curveverts(nurb); + tot = BKE_nurbList_verts_count(nurb); if (tot == 0) return; if (kb->data) MEM_freeN(kb->data); @@ -1647,7 +1647,7 @@ void key_to_curve(KeyBlock *kb, Curve *UNUSED(cu), ListBase *nurb) nu = nurb->first; fp = kb->data; - tot = count_curveverts(nurb); + tot = BKE_nurbList_verts_count(nurb); tot = MIN2(kb->totelem, tot); @@ -1742,7 +1742,7 @@ float (*key_to_vertcos(Object * ob, KeyBlock * kb))[3] } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { Curve *cu = (Curve *)ob->data; - tot = count_curveverts(&cu->nurb); + tot = BKE_nurbList_verts_count(&cu->nurb); } if (tot == 0) return NULL; @@ -1822,7 +1822,7 @@ void vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { Curve *cu = (Curve *)ob->data; elemsize = cu->key->elemsize; - tot = count_curveverts(&cu->nurb); + tot = BKE_nurbList_verts_count(&cu->nurb); } if (tot == 0) { diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 07839b10ef1..71266275fbd 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -198,12 +198,12 @@ int id_make_local(ID *id, int test) return 1; case ID_CU: if (!test) { - make_local_curve((Curve*)id); + BKE_curve_make_local((Curve*)id); make_local_key(((Curve*)id)->key); } return 1; case ID_MB: - if (!test) make_local_mball((MetaBall*)id); + if (!test) BKE_metaball_make_local((MetaBall*)id); return 1; case ID_MA: if (!test) make_local_material((Material*)id); @@ -291,10 +291,10 @@ int id_copy(ID *id, ID **newid, int test) if (!test) *newid= (ID*)copy_mesh((Mesh*)id); return 1; case ID_CU: - if (!test) *newid= (ID*)copy_curve((Curve*)id); + if (!test) *newid= (ID*)BKE_curve_copy((Curve*)id); return 1; case ID_MB: - if (!test) *newid= (ID*)copy_mball((MetaBall*)id); + if (!test) *newid= (ID*)BKE_metaball_copy((MetaBall*)id); return 1; case ID_MA: if (!test) *newid= (ID*)copy_material((Material*)id); @@ -810,10 +810,10 @@ void free_libblock(ListBase *lb, void *idv) free_mesh((Mesh *)id, 1); break; case ID_CU: - free_curve((Curve *)id); + BKE_curve_free((Curve *)id); break; case ID_MB: - free_mball((MetaBall *)id); + BKE_metaball_free((MetaBall *)id); break; case ID_MA: free_material((Material *)id); @@ -886,7 +886,7 @@ void free_libblock(ListBase *lb, void *idv) free_gpencil_data((bGPdata *)id); break; case ID_MC: - free_movieclip((MovieClip *)id); + BKE_movieclip_free((MovieClip *)id); break; } diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 21a91b34e8d..2dfd41f299a 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -530,7 +530,7 @@ static void data_delete_material_index_id(ID *id, short index) mesh_delete_material_index((Mesh *)id, index); break; case ID_CU: - curve_delete_material_index((Curve *)id, index); + BKE_curve_delete_material_index((Curve *)id, index); break; case ID_MB: /* meta-elems don't have materials atm */ diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 60ccfa2a7cb..73e3576b57f 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -65,6 +65,106 @@ #include "BKE_object.h" #include "BKE_material.h" +/* Data types */ + +typedef struct point { /* a three-dimensional point */ + float x, y, z; /* its coordinates */ +} MB_POINT; + +typedef struct vertex { /* surface vertex */ + MB_POINT position, normal; /* position and surface normal */ +} VERTEX; + +typedef struct vertices { /* list of vertices in polygonization */ + int count, max; /* # vertices, max # allowed */ + VERTEX *ptr; /* dynamically allocated */ +} VERTICES; + +typedef struct corner { /* corner of a cube */ + int i, j, k; /* (i, j, k) is index within lattice */ + float x, y, z, value; /* location and function value */ + struct corner *next; +} CORNER; + +typedef struct cube { /* partitioning cell (cube) */ + int i, j, k; /* lattice location of cube */ + CORNER *corners[8]; /* eight corners */ +} CUBE; + +typedef struct cubes { /* linked list of cubes acting as stack */ + CUBE cube; /* a single cube */ + struct cubes *next; /* remaining elements */ +} CUBES; + +typedef struct centerlist { /* list of cube locations */ + int i, j, k; /* cube location */ + struct centerlist *next; /* remaining elements */ +} CENTERLIST; + +typedef struct edgelist { /* list of edges */ + int i1, j1, k1, i2, j2, k2; /* edge corner ids */ + int vid; /* vertex id */ + struct edgelist *next; /* remaining elements */ +} EDGELIST; + +typedef struct intlist { /* list of integers */ + int i; /* an integer */ + struct intlist *next; /* remaining elements */ +} INTLIST; + +typedef struct intlists { /* list of list of integers */ + INTLIST *list; /* a list of integers */ + struct intlists *next; /* remaining elements */ +} INTLISTS; + +typedef struct process { /* parameters, function, storage */ + /* what happens here? floats, I think. */ + /* float (*function)(void); */ /* implicit surface function */ + float (*function)(float, float, float); + float size, delta; /* cube size, normal delta */ + int bounds; /* cube range within lattice */ + CUBES *cubes; /* active cubes */ + VERTICES vertices; /* surface vertices */ + CENTERLIST **centers; /* cube center hash table */ + CORNER **corners; /* corner value hash table */ + EDGELIST **edges; /* edge and vertex id hash table */ +} PROCESS; + +/* dividing scene using octal tree makes polygonisation faster */ +typedef struct ml_pointer { + struct ml_pointer *next, *prev; + struct MetaElem *ml; +} ml_pointer; + +typedef struct octal_node { + struct octal_node *nodes[8]; /* children of current node */ + struct octal_node *parent; /* parent of current node */ + struct ListBase elems; /* ListBase of MetaElem pointers (ml_pointer) */ + float x_min, y_min, z_min; /* 1st border point */ + float x_max, y_max, z_max; /* 7th border point */ + float x,y,z; /* center of node */ + int pos, neg; /* number of positive and negative MetaElements in the node */ + int count; /* number of MetaElems, which belongs to the node */ +} octal_node; + +typedef struct octal_tree { + struct octal_node *first; /* first node */ + int pos, neg; /* number of positive and negative MetaElements in the scene */ + short depth; /* number of scene subdivision */ +} octal_tree; + +struct pgn_elements { + struct pgn_elements *next, *prev; + char *data; +}; + +/* Forward declarations */ +static int vertid(CORNER *c1, CORNER *c2, PROCESS *p, MetaBall *mb); +static int setcenter(CENTERLIST *table[], int i, int j, int k); +static CORNER *setcorner(PROCESS* p, int i, int j, int k); +static void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2, + float (*function)(float, float, float), MB_POINT *p, MetaBall *mb, int f); + /* Global variables */ static float thresh= 0.6f; @@ -73,7 +173,7 @@ static MetaElem **mainb; static octal_tree *metaball_tree = NULL; /* Functions */ -void unlink_mball(MetaBall *mb) +void BKE_metaball_unlink(MetaBall *mb) { int a; @@ -85,9 +185,9 @@ void unlink_mball(MetaBall *mb) /* do not free mball itself */ -void free_mball(MetaBall *mb) +void BKE_metaball_free(MetaBall *mb) { - unlink_mball(mb); + BKE_metaball_unlink(mb); if (mb->adt) { BKE_free_animdata((ID *)mb); @@ -99,7 +199,7 @@ void free_mball(MetaBall *mb) if (mb->disp.first) freedisplist(&mb->disp); } -MetaBall *add_mball(const char *name) +MetaBall *BKE_metaball_add(const char *name) { MetaBall *mb; @@ -115,7 +215,7 @@ MetaBall *add_mball(const char *name) return mb; } -MetaBall *copy_mball(MetaBall *mb) +MetaBall *BKE_metaball_copy(MetaBall *mb) { MetaBall *mbn; int a; @@ -143,7 +243,7 @@ static void extern_local_mball(MetaBall *mb) } } -void make_local_mball(MetaBall *mb) +void BKE_metaball_make_local(MetaBall *mb) { Main *bmain= G.main; Object *ob; @@ -174,7 +274,7 @@ void make_local_mball(MetaBall *mb) extern_local_mball(mb); } else if (is_local && is_lib) { - MetaBall *mb_new= copy_mball(mb); + MetaBall *mb_new= BKE_metaball_copy(mb); mb_new->id.us= 0; /* Remap paths of new ID using old library as base. */ @@ -194,7 +294,7 @@ void make_local_mball(MetaBall *mb) /* most simple meta-element adding function * don't do context manipulation here (rna uses) */ -MetaElem *add_metaball_element(MetaBall *mb, const int type) +MetaElem *BKE_metaball_element_add(MetaBall *mb, const int type) { MetaElem *ml= MEM_callocN(sizeof(MetaElem), "metaelem"); @@ -246,7 +346,7 @@ MetaElem *add_metaball_element(MetaBall *mb, const int type) * basic MetaBall (usually with name Meta). All other MetaBalls (with * names Meta.001, Meta.002, etc) are included in this Bounding Box. */ -void tex_space_mball(Object *ob) +void BKE_metaball_tex_space_calc(Object *ob) { DispList *dl; BoundBox *bb; @@ -290,7 +390,7 @@ void tex_space_mball(Object *ob) boundbox_set_from_min_max(bb, min, max); } -float *make_orco_mball(Object *ob, ListBase *dispbase) +float *BKE_metaball_make_orco(Object *ob, ListBase *dispbase) { BoundBox *bb; DispList *dl; @@ -342,7 +442,7 @@ float *make_orco_mball(Object *ob, ListBase *dispbase) * It test last character of Object ID name. If last character * is digit it return 0, else it return 1. */ -int is_basis_mball(Object *ob) +int BKE_metaball_is_basis(Object *ob) { int len; @@ -353,7 +453,7 @@ int is_basis_mball(Object *ob) } /* return nonzero if ob1 is a basis mball for ob */ -int is_mball_basis_for (Object *ob1, Object *ob2) +int BKE_metaball_is_basis_for (Object *ob1, Object *ob2) { int basis1nr, basis2nr; char basis1name[MAX_ID_NAME], basis2name[MAX_ID_NAME]; @@ -361,7 +461,7 @@ int is_mball_basis_for (Object *ob1, Object *ob2) BLI_split_name_num(basis1name, &basis1nr, ob1->id.name+2, '.'); BLI_split_name_num(basis2name, &basis2nr, ob2->id.name+2, '.'); - if (!strcmp(basis1name, basis2name)) return is_basis_mball(ob1); + if (!strcmp(basis1name, basis2name)) return BKE_metaball_is_basis(ob1); else return 0; } @@ -371,7 +471,7 @@ int is_mball_basis_for (Object *ob1, Object *ob2) * are copied to all metaballs in same "group" (metaballs with same base name: MBall, * MBall.001, MBall.002, etc). The most important is to copy properties to the base metaball, * because this metaball influence polygonisation of metaballs. */ -void copy_mball_properties(Scene *scene, Object *active_object) +void BKE_metaball_properties_copy(Scene *scene, Object *active_object) { Scene *sce_iter= scene; Base *base; @@ -416,7 +516,7 @@ void copy_mball_properties(Scene *scene, Object *active_object) * * warning!, is_basis_mball() can fail on returned object, see long note above. */ -Object *find_basis_mball(Scene *scene, Object *basis) +Object *BKE_metaball_basis_find(Scene *scene, Object *basis) { Scene *sce_iter= scene; Base *base; @@ -522,14 +622,14 @@ Object *find_basis_mball(Scene *scene, Object *basis) /* **************** POLYGONIZATION ************************ */ -void calc_mballco(MetaElem *ml, float vec[3]) +static void calc_mballco(MetaElem *ml, float vec[3]) { if (ml->mat) { mul_m4_v3((float (*)[4])ml->mat, vec); } } -float densfunc(MetaElem *ball, float x, float y, float z) +static float densfunc(MetaElem *ball, float x, float y, float z) { float dist2 = 0.0, dx, dy, dz; float vec[3]; @@ -605,7 +705,7 @@ float densfunc(MetaElem *ball, float x, float y, float z) } } -octal_node* find_metaball_octal_node(octal_node *node, float x, float y, float z, short depth) +static octal_node* find_metaball_octal_node(octal_node *node, float x, float y, float z, short depth) { if (!depth) return node; @@ -673,7 +773,7 @@ octal_node* find_metaball_octal_node(octal_node *node, float x, float y, float z return node; } -float metaball(float x, float y, float z) +static float metaball(float x, float y, float z) /* float x, y, z; */ { struct octal_node *node; @@ -713,7 +813,7 @@ static int *indices=NULL; static int totindex, curindex; -void accum_mballfaces(int i1, int i2, int i3, int i4) +static void accum_mballfaces(int i1, int i2, int i3, int i4) { int *newi, *cur; /* static int i=0; I would like to delete altogether, but I don't dare to, yet */ @@ -746,7 +846,7 @@ void accum_mballfaces(int i1, int i2, int i3, int i4) } /* ******************* MEMORY MANAGEMENT *********************** */ -void *new_pgn_element(int size) +static void *new_pgn_element(int size) { /* during polygonize 1000s of elements are allocated * and never freed in between. Freeing only done at the end. @@ -789,7 +889,7 @@ void *new_pgn_element(int size) return cur->data; } -void freepolygonize(PROCESS *p) +static void freepolygonize(PROCESS *p) { MEM_freeN(p->corners); MEM_freeN(p->edges); @@ -832,7 +932,7 @@ static int rightface[12] = { /* docube: triangulate the cube directly, without decomposition */ -void docube(CUBE *cube, PROCESS *p, MetaBall *mb) +static void docube(CUBE *cube, PROCESS *p, MetaBall *mb) { INTLISTS *polys; CORNER *c1, *c2; @@ -900,7 +1000,7 @@ void docube(CUBE *cube, PROCESS *p, MetaBall *mb) * if surface crosses face, compute other four corners of adjacent cube * and add new cube to cube stack */ -void testface(int i, int j, int k, CUBE* old, int bit, int c1, int c2, int c3, int c4, PROCESS *p) +static void testface(int i, int j, int k, CUBE* old, int bit, int c1, int c2, int c3, int c4, PROCESS *p) { CUBE newc; CUBES *oldcubes = p->cubes; @@ -951,7 +1051,7 @@ void testface(int i, int j, int k, CUBE* old, int bit, int c1, int c2, int c3, i /* setcorner: return corner with the given lattice location * set (and cache) its function value */ -CORNER *setcorner (PROCESS* p, int i, int j, int k) +static CORNER *setcorner (PROCESS* p, int i, int j, int k) { /* for speed, do corner value caching here */ CORNER *c; @@ -986,7 +1086,7 @@ CORNER *setcorner (PROCESS* p, int i, int j, int k) /* nextcwedge: return next clockwise edge from given edge around given face */ -int nextcwedge (int edge, int face) +static int nextcwedge (int edge, int face) { switch (edge) { case LB: @@ -1020,7 +1120,7 @@ int nextcwedge (int edge, int face) /* otherface: return face adjoining edge that is not the given face */ -int otherface (int edge, int face) +static int otherface (int edge, int face) { int other = leftface[edge]; return face == other? rightface[edge] : other; @@ -1029,7 +1129,7 @@ int otherface (int edge, int face) /* makecubetable: create the 256 entry table for cubical polygonization */ -void makecubetable (void) +static void makecubetable (void) { static int isdone= 0; int i, e, c, done[12], pos[8]; @@ -1070,7 +1170,7 @@ void makecubetable (void) } } -void BKE_freecubetable(void) +void BKE_metaball_cubeTable_free(void) { int i; INTLISTS *lists, *nlists; @@ -1100,7 +1200,7 @@ void BKE_freecubetable(void) /* setcenter: set (i,j,k) entry of table[] * return 1 if already set; otherwise, set and return 0 */ -int setcenter(CENTERLIST *table[], int i, int j, int k) +static int setcenter(CENTERLIST *table[], int i, int j, int k) { int index; CENTERLIST *newc, *l, *q; @@ -1125,7 +1225,7 @@ int setcenter(CENTERLIST *table[], int i, int j, int k) /* setedge: set vertex id for edge */ -void setedge (EDGELIST *table[], +static void setedge (EDGELIST *table[], int i1, int j1, int k1, int i2, int j2, int k2, @@ -1161,7 +1261,7 @@ void setedge (EDGELIST *table[], /* getedge: return vertex id for edge; return -1 if not set */ -int getedge (EDGELIST *table[], +static int getedge (EDGELIST *table[], int i1, int j1, int k1, int i2, int j2, int k2) { @@ -1202,7 +1302,7 @@ int getedge (EDGELIST *table[], /* addtovertices: add v to sequence of vertices */ -void addtovertices (VERTICES *vertices, VERTEX v) +static void addtovertices (VERTICES *vertices, VERTEX v) { if (vertices->count == vertices->max) { int i; @@ -1220,7 +1320,7 @@ void addtovertices (VERTICES *vertices, VERTEX v) /* vnormal: compute unit length surface normal at point */ -void vnormal (MB_POINT *point, PROCESS *p, MB_POINT *v) +static void vnormal (MB_POINT *point, PROCESS *p, MB_POINT *v) { float delta= 0.2f*p->delta; float f = p->function(point->x, point->y, point->z); @@ -1270,7 +1370,7 @@ void vnormal (MB_POINT *point, PROCESS *p, MB_POINT *v) } -int vertid (CORNER *c1, CORNER *c2, PROCESS *p, MetaBall *mb) +static int vertid (CORNER *c1, CORNER *c2, PROCESS *p, MetaBall *mb) { VERTEX v; MB_POINT a, b; @@ -1299,7 +1399,7 @@ int vertid (CORNER *c1, CORNER *c2, PROCESS *p, MetaBall *mb) /* converge: from two points of differing sign, converge to zero crossing */ /* watch it: p1 and p2 are used to calculate */ -void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2, +static void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2, float (*function)(float, float, float), MB_POINT *p, MetaBall *mb, int f) { int i = 0; @@ -1399,7 +1499,7 @@ void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2, } /* ************************************** */ -void add_cube(PROCESS *mbproc, int i, int j, int k, int count) +static void add_cube(PROCESS *mbproc, int i, int j, int k, int count) { CUBES *ncube; int n; @@ -1429,7 +1529,7 @@ void add_cube(PROCESS *mbproc, int i, int j, int k, int count) } -void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) +static void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) { MB_POINT IN, in, OUT, out; /*point;*/ MetaElem *ml; @@ -1549,7 +1649,7 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a) } } -void polygonize(PROCESS *mbproc, MetaBall *mb) +static void polygonize(PROCESS *mbproc, MetaBall *mb) { CUBE c; int a; @@ -1589,7 +1689,7 @@ void polygonize(PROCESS *mbproc, MetaBall *mb) } } -float init_meta(Scene *scene, Object *ob) /* return totsize */ +static float init_meta(Scene *scene, Object *ob) /* return totsize */ { Scene *sce_iter= scene; Base *base; @@ -1815,7 +1915,7 @@ float init_meta(Scene *scene, Object *ob) /* return totsize */ /* if MetaElem lies in node, then node includes MetaElem pointer (ml_p) * pointing at MetaElem (ml) */ -void fill_metaball_octal_node(octal_node *node, MetaElem *ml, short i) +static void fill_metaball_octal_node(octal_node *node, MetaElem *ml, short i) { ml_pointer *ml_p; @@ -1847,7 +1947,7 @@ void fill_metaball_octal_node(octal_node *node, MetaElem *ml, short i) * +------+------+ * */ -void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, float size_z, short depth) +static void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, float size_z, short depth) { MetaElem *ml; ml_pointer *ml_p; @@ -2104,7 +2204,7 @@ void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, } /* free all octal nodes recursively */ -void free_metaball_octal_node(octal_node *node) +static void free_metaball_octal_node(octal_node *node) { int a; for (a=0;a<8;a++) { @@ -2115,7 +2215,7 @@ void free_metaball_octal_node(octal_node *node) } /* If scene include more then one MetaElem, then octree is used */ -void init_metaball_octal_tree(int depth) +static void init_metaball_octal_tree(int depth) { struct octal_node *node; ml_pointer *ml_p; @@ -2173,7 +2273,7 @@ void init_metaball_octal_tree(int depth) subdivide_metaball_octal_node(node, size[0], size[1], size[2], metaball_tree->depth); } -void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) +void BKE_metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase) { PROCESS mbproc; MetaBall *mb; diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 14ccd401a30..c7f6bf93831 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1616,7 +1616,7 @@ void mesh_to_curve(Scene *scene, Object *ob) BLI_edgehash_free(eh, NULL); if (edges.first) { - Curve *cu = add_curve(ob->id.name+2, OB_CURVE); + Curve *cu = BKE_curve_add(ob->id.name+2, OB_CURVE); cu->flag |= CU_3D; while (edges.first) { diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index a3baa883a4a..d548d7589bb 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -450,7 +450,7 @@ static MovieClip *movieclip_alloc(const char *name) * otherwise creates new. * does not load ibuf itself * pass on optional frame for #name images */ -MovieClip *BKE_add_movieclip_file(const char *name) +MovieClip *BKE_movieclip_file_add(const char *name) { MovieClip *clip; MovieClipUser user; @@ -1149,14 +1149,14 @@ void BKE_movieclip_build_proxy_frame(MovieClip *clip, int clip_flag, struct Movi } } -void free_movieclip(MovieClip *clip) +void BKE_movieclip_free(MovieClip *clip) { free_buffers(clip); BKE_tracking_free(&clip->tracking); } -void unlink_movieclip(Main *bmain, MovieClip *clip) +void BKE_movieclip_unlink(Main *bmain, MovieClip *clip) { bScreen *scr; ScrArea *area; diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 6b44ba976d5..3ffd8115914 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -319,8 +319,8 @@ void free_object(Object *ob) id->us--; if (id->us==0) { if (ob->type==OB_MESH) unlink_mesh(ob->data); - else if (ob->type==OB_CURVE) unlink_curve(ob->data); - else if (ob->type==OB_MBALL) unlink_mball(ob->data); + else if (ob->type==OB_CURVE) BKE_curve_unlink(ob->data); + else if (ob->type==OB_MBALL) BKE_metaball_unlink(ob->data); } ob->data= NULL; } @@ -459,7 +459,7 @@ void unlink_object(Object *ob) } } else if (ELEM(OB_MBALL, ob->type, obt->type)) { - if (is_mball_basis_for (obt, ob)) + if (BKE_metaball_is_basis_for (obt, ob)) obt->recalc|= OB_RECALC_DATA; } @@ -749,10 +749,10 @@ static void *add_obdata_from_type(int type) { switch (type) { case OB_MESH: return add_mesh("Mesh"); - case OB_CURVE: return add_curve("Curve", OB_CURVE); - case OB_SURF: return add_curve("Surf", OB_SURF); - case OB_FONT: return add_curve("Text", OB_FONT); - case OB_MBALL: return add_mball("Meta"); + case OB_CURVE: return BKE_curve_add("Curve", OB_CURVE); + case OB_SURF: return BKE_curve_add("Surf", OB_SURF); + case OB_FONT: return BKE_curve_add("Text", OB_FONT); + case OB_MBALL: return BKE_metaball_add("Meta"); case OB_CAMERA: return add_camera("Camera"); case OB_LAMP: return add_lamp("Lamp"); case OB_LATTICE: return add_lattice("Lattice"); @@ -1822,7 +1822,7 @@ static void give_parvert(Object *par, int nr, float vec[3]) ListBase *nurbs; cu= par->data; - nurbs= BKE_curve_nurbs(cu); + nurbs= BKE_curve_nurbs_get(cu); nu= nurbs->first; count= 0; @@ -2268,7 +2268,7 @@ void minmax_object(Object *ob, float min[3], float max[3]) { Curve *cu= ob->data; - if (cu->bb==NULL) tex_space_curve(cu); + if (cu->bb==NULL) BKE_curve_tex_space_calc(cu); bb= *(cu->bb); for (a=0; a<8; a++) { @@ -2930,7 +2930,7 @@ static KeyBlock *insert_curvekey(Scene *scene, Object *ob, const char *name, int Curve *cu= ob->data; Key *key= cu->key; KeyBlock *kb; - ListBase *lb= BKE_curve_nurbs(cu); + ListBase *lb= BKE_curve_nurbs_get(cu); int newkey= 0; if (key==NULL) { @@ -2957,7 +2957,7 @@ static KeyBlock *insert_curvekey(Scene *scene, Object *ob, const char *name, int /* create new block with prepared data */ kb = add_keyblock_ctime(key, name, FALSE); - kb->totelem= count_curveverts(lb); + kb->totelem= BKE_nurbList_verts_count(lb); kb->data= data; } diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index d0eca731a1a..5d8a4955e58 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -3559,7 +3559,7 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) int a, curindex=0; int totvert, totspring = 0, setgoal=0; - totvert= count_curveverts(&cu->nurb); + totvert= BKE_nurbList_verts_count(&cu->nurb); if (ob->softflag & OB_SB_EDGES) { if (ob->type==OB_CURVE) { diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index fbed5cc539a..8aafdc6ab40 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -1427,7 +1427,7 @@ static bAnimChannelType ACF_DSCAM= static int acf_dscur_icon(bAnimListElem *ale) { Curve *cu= (Curve *)ale->data; - short obtype= curve_type(cu); + short obtype= BKE_curve_type_get(cu); switch (obtype) { case OB_FONT: diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index d339af39b22..e65b4280dc9 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -132,7 +132,7 @@ static void set_actNurb(Object *obedit, Nurb *nu) if (nu==NULL) cu->actnu = -1; else { - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); cu->actnu = BLI_findindex(nurbs, nu); } } @@ -140,7 +140,7 @@ static void set_actNurb(Object *obedit, Nurb *nu) static Nurb *get_actNurb(Object *obedit) { Curve *cu= obedit->data; - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); return BLI_findlink(nurbs, cu->actnu); } @@ -736,7 +736,7 @@ static void calc_keyHandles(ListBase *nurb, float *key) if (nextp) key_to_bezt(nextfp, nextp, &next); if (prevp) key_to_bezt(prevfp, prevp, &prev); - calchandleNurb(&cur, prevp ? &prev : NULL, nextp ? &next : NULL, 0); + BKE_nurb_handle_calc(&cur, prevp ? &prev : NULL, nextp ? &next : NULL, 0); bezt_to_key(&cur, fp); prevp= bezt; @@ -782,7 +782,7 @@ static void calc_shapeKeys(Object *obedit) BezTriple *bezt, *oldbezt; BPoint *bp, *oldbp; Nurb *nu; - int totvert= count_curveverts(&editnurb->nurbs); + int totvert= BKE_nurbList_verts_count(&editnurb->nurbs); float (*ofs)[3] = NULL; float *oldkey, *newkey, *ofp; @@ -1207,11 +1207,11 @@ void load_editNurb(Object *obedit) ListBase newnurb= {NULL, NULL}, oldnurb= cu->nurb; for (nu= editnurb->first; nu; nu= nu->next) { - newnu= duplicateNurb(nu); + newnu= BKE_nurb_duplicate(nu); BLI_addtail(&newnurb, newnu); if (nu->type == CU_NURBS) { - clamp_nurb_order_u(nu); + BKE_nurb_order_clamp_u(nu); } } @@ -1220,7 +1220,7 @@ void load_editNurb(Object *obedit) calc_shapeKeys(obedit); ED_curve_updateAnimPaths(obedit->data); - freeNurblist(&oldnurb); + BKE_nurbList_free(&oldnurb); } set_actNurb(obedit, NULL); @@ -1247,8 +1247,8 @@ void make_editNurb(Object *obedit) } if (editnurb) { - freeNurblist(&editnurb->nurbs); - free_curve_editNurb_keyIndex(editnurb); + BKE_nurbList_free(&editnurb->nurbs); + BKE_curve_editNurb_keyIndex_free(editnurb); editnurb->keyindex= NULL; } else { @@ -1260,8 +1260,8 @@ void make_editNurb(Object *obedit) cu->lastsel= NULL; /* for select row */ while (nu) { - newnu= duplicateNurb(nu); - test2DNurb(newnu); // after join, or any other creation of curve + newnu= BKE_nurb_duplicate(nu); + BKE_nurb_test2D(newnu); // after join, or any other creation of curve BLI_addtail(&editnurb->nurbs, newnu); if (nu_act == NULL && isNurbsel(nu)) { @@ -1285,7 +1285,7 @@ void free_editNurb(Object *obedit) { Curve *cu= obedit->data; - free_curve_editNurb(cu); + BKE_curve_editNurb_free(cu); } void CU_deselect_all(Object *obedit) @@ -1377,15 +1377,15 @@ static int separate_exec(bContext *C, wmOperator *op) ED_base_object_select(newbase, BA_DESELECT); newob= newbase->object; - newcu= newob->data= copy_curve(oldcu); + newcu= newob->data= BKE_curve_copy(oldcu); newcu->editnurb= NULL; oldcu->id.us--; /* because new curve is a copy: reduce user count */ /* 2. put new object in editmode and clear it */ make_editNurb(newob); newedit= newcu->editnurb; - freeNurblist(&newedit->nurbs); - free_curve_editNurb_keyIndex(newedit); + BKE_nurbList_free(&newedit->nurbs); + BKE_curve_editNurb_keyIndex_free(newedit); /* 3. move over parts from old object */ for (nu= oldedit->nurbs.first; nu; nu=nu1) { @@ -1547,7 +1547,7 @@ static void translateflagNurb(ListBase *editnurb, short flag, const float vec[3] } } - test2DNurb(nu); + BKE_nurb_test2D(nu); } } @@ -1602,7 +1602,7 @@ static int deleteflagNurb(bContext *C, wmOperator *UNUSED(op), int flag) if (a==0) { BLI_remlink(editnurb, nu); keyIndex_delNurb(cu->editnurb, nu); - freeNurb(nu); nu=NULL; + BKE_nurb_free(nu); nu=NULL; } else { /* is nurb in U direction selected */ @@ -1640,9 +1640,9 @@ static int deleteflagNurb(bContext *C, wmOperator *UNUSED(op), int flag) nu->pntsv= newv; MEM_freeN(nu->bp); nu->bp= newbp; - clamp_nurb_order_v(nu); + BKE_nurb_order_clamp_v(nu); - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); } else { /* is the nurb in V direction selected */ @@ -1684,15 +1684,15 @@ static int deleteflagNurb(bContext *C, wmOperator *UNUSED(op), int flag) nu->pntsu= nu->pntsv; nu->pntsv= 1; SWAP(short, nu->orderu, nu->orderv); - clamp_nurb_order_u(nu); + BKE_nurb_order_clamp_u(nu); if (nu->knotsv) MEM_freeN(nu->knotsv); nu->knotsv= NULL; } else { nu->pntsu= newu; - clamp_nurb_order_u(nu); + BKE_nurb_order_clamp_u(nu); } - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } } } @@ -1743,7 +1743,7 @@ static short extrudeflagNurb(EditNurb *editnurb, int flag) nu->pntsv= 2; nu->orderv= 2; - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); } } else { @@ -1786,7 +1786,7 @@ static short extrudeflagNurb(EditNurb *editnurb, int flag) MEM_freeN(nu->bp); nu->bp= newbp; nu->pntsv++; - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); } else if (v==0 || v== nu->pntsu-1) { /* column in v-direction selected */ ok= 1; @@ -1813,7 +1813,7 @@ static short extrudeflagNurb(EditNurb *editnurb, int flag) MEM_freeN(nu->bp); nu->bp= newbp; nu->pntsu++; - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } } } @@ -1911,7 +1911,7 @@ static void adduplicateflagNurb(Object *obedit, short flag) /* knots */ newnu->knotsu= NULL; - nurbs_knot_calc_u(newnu); + BKE_nurb_knot_calc_u(newnu); } bp++; } @@ -1956,8 +1956,8 @@ static void adduplicateflagNurb(Object *obedit, short flag) newnu->pntsv= newv; newnu->bp = (BPoint*)MEM_mallocN(newu * newv * sizeof(BPoint), "adduplicateN6"); - clamp_nurb_order_u(newnu); - clamp_nurb_order_v(newnu); + BKE_nurb_order_clamp_u(newnu); + BKE_nurb_order_clamp_v(newnu); newnu->knotsu= newnu->knotsv= NULL; @@ -1972,20 +1972,20 @@ static void adduplicateflagNurb(Object *obedit, short flag) } } } - if (check_valid_nurb_u(newnu)) { + if (BKE_nurb_check_valid_u(newnu)) { if (nu->pntsu==newnu->pntsu && nu->knotsu) { newnu->knotsu= MEM_dupallocN( nu->knotsu ); } else { - nurbs_knot_calc_u(newnu); + BKE_nurb_knot_calc_u(newnu); } } - if (check_valid_nurb_v(newnu)) { + if (BKE_nurb_check_valid_v(newnu)) { if (nu->pntsv==newnu->pntsv && nu->knotsv) { newnu->knotsv= MEM_dupallocN( nu->knotsv ); } else { - nurbs_knot_calc_v(newnu); + BKE_nurb_knot_calc_v(newnu); } } } @@ -2010,7 +2010,7 @@ static int switch_direction_exec(bContext *C, wmOperator *UNUSED(op)) for (nu= editnurb->nurbs.first; nu; nu= nu->next) if (isNurbsel(nu)) { - switchdirectionNurb(nu); + BKE_nurb_direction_switch(nu); keyData_switchDirectionNurb(cu, nu); } @@ -2174,7 +2174,7 @@ static int smooth_exec(bContext *C, wmOperator *UNUSED(op)) } MEM_freeN(beztOrig); if (change) - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else if (nu->bp) { bpOrig = MEM_dupallocN( nu->bp ); @@ -2893,7 +2893,7 @@ static void subdividenurb(Object *obedit, int number_cuts) nu->bezt= beztnew; nu->pntsu+= amount; - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } } /* End of 'if (nu->type == CU_BEZIER)' */ else if (nu->pntsv==1) { @@ -2965,7 +2965,7 @@ static void subdividenurb(Object *obedit, int number_cuts) nu->pntsu+= amount; if (nu->type & CU_NURBS) { - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } } } /* End of 'else if (nu->pntsv==1)' */ @@ -3086,8 +3086,8 @@ static void subdividenurb(Object *obedit, int number_cuts) nu->bp= bpnew; nu->pntsu= (number_cuts+1)*nu->pntsu-number_cuts; nu->pntsv= (number_cuts+1)*nu->pntsv-number_cuts; - nurbs_knot_calc_u(nu); - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_u(nu); + BKE_nurb_knot_calc_v(nu); } /* End of 'if (sel== nu->pntsu*nu->pntsv)' (subdivide entire NURB) */ else { /* subdivide in v direction? */ @@ -3132,7 +3132,7 @@ static void subdividenurb(Object *obedit, int number_cuts) MEM_freeN(nu->bp); nu->bp= bpnew; nu->pntsv+= sel; - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); } else { /* or in u direction? */ @@ -3173,7 +3173,7 @@ static void subdividenurb(Object *obedit, int number_cuts) MEM_freeN(nu->bp); nu->bp= bpnew; nu->pntsu+= sel; - nurbs_knot_calc_u(nu); /* shift knots forward */ + BKE_nurb_knot_calc_u(nu); /* shift knots forward */ } } } @@ -3373,13 +3373,13 @@ static int convertspline(short type, Nurb *nu) nu->bp= NULL; nu->pntsu= nr; nu->type = CU_BEZIER; - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else if (type==CU_NURBS) { nu->type = CU_NURBS; nu->orderu= 4; nu->flagu &= CU_NURB_CYCLIC; /* disable all flags except for cyclic */ - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); a= nu->pntsu*nu->pntsv; bp= nu->bp; while (a--) { @@ -3436,7 +3436,7 @@ static int convertspline(short type, Nurb *nu) if (type== CU_NURBS) { nu->flagu &= CU_NURB_CYCLIC; /* disable all flags except for cyclic */ nu->flagu |= CU_NURB_BEZIER; - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } } } @@ -3559,7 +3559,7 @@ static int set_handle_type_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); ListBase *editnurb= object_editcurve_get(obedit); - sethandlesNurb(editnurb, RNA_enum_get(op->ptr, "type")); + BKE_nurbList_handles_set(editnurb, RNA_enum_get(op->ptr, "type")); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); DAG_id_tag_update(obedit->data, 0); @@ -3865,15 +3865,15 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu if (nu1->type == CU_NURBS) { /* merge knots */ - nurbs_knot_calc_u(nu1); + BKE_nurb_knot_calc_u(nu1); /* make knots, for merged curved for example */ - nurbs_knot_calc_v(nu1); + BKE_nurb_knot_calc_v(nu1); } MEM_freeN(temp); BLI_remlink(editnurb, nu2); - freeNurb(nu2); + BKE_nurb_free(nu2); } static int merge_nurb(bContext *C, wmOperator *op) @@ -3976,7 +3976,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) else { if ( BEZSELECTED_HIDDENHANDLES(cu, &(nu->bezt[nu->pntsu-1])) ) { nu1= nu; - switchdirectionNurb(nu); + BKE_nurb_direction_switch(nu); keyData_switchDirectionNurb(cu, nu); } } @@ -3984,7 +3984,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) else if (nu2==NULL) { if ( BEZSELECTED_HIDDENHANDLES(cu, nu->bezt) ) { nu2= nu; - switchdirectionNurb(nu); + BKE_nurb_direction_switch(nu); keyData_switchDirectionNurb(cu, nu); } else { @@ -4003,7 +4003,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) bp= bp+(nu->pntsu-1); if ( bp->f1 & SELECT ) { nu1= nu; - switchdirectionNurb(nu); + BKE_nurb_direction_switch(nu); keyData_switchDirectionNurb(cu, nu); } } @@ -4011,7 +4011,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) else if (nu2==NULL) { if ( bp->f1 & SELECT ) { nu2= nu; - switchdirectionNurb(nu); + BKE_nurb_direction_switch(nu); keyData_switchDirectionNurb(cu, nu); } else { @@ -4038,8 +4038,8 @@ static int make_segment_exec(bContext *C, wmOperator *op) nu1->bezt= bezt; nu1->pntsu+= nu2->pntsu; BLI_remlink(nubase, nu2); - freeNurb(nu2); nu2= NULL; - calchandlesNurb(nu1); + BKE_nurb_free(nu2); nu2= NULL; + BKE_nurb_handles_calc(nu1); } else { bp = @@ -4057,7 +4057,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) /* now join the knots */ if (nu1->type == CU_NURBS) { if (nu1->knotsu==NULL) { - nurbs_knot_calc_u(nu1); + BKE_nurb_knot_calc_u(nu1); } else { fp= MEM_mallocN(sizeof(float)*KNOTSU(nu1), "addsegment3"); @@ -4076,7 +4076,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) } } } - freeNurb(nu2); nu2= NULL; + BKE_nurb_free(nu2); nu2= NULL; } set_actNurb(obedit, nu1); /* for selected */ @@ -4088,12 +4088,12 @@ static int make_segment_exec(bContext *C, wmOperator *op) if (nu1->type == CU_BEZIER && BEZSELECTED_HIDDENHANDLES(cu, nu1->bezt) && BEZSELECTED_HIDDENHANDLES(cu, nu1->bezt+(nu1->pntsu-1))) { nu1->flagu|= CU_NURB_CYCLIC; - calchandlesNurb(nu1); + BKE_nurb_handles_calc(nu1); ok= 1; } else if (nu1->type == CU_NURBS && nu1->bp->f1&SELECT && (nu1->bp+(nu1->pntsu-1))->f1&SELECT) { nu1->flagu|= CU_NURB_CYCLIC; - nurbs_knot_calc_u(nu1); + BKE_nurb_knot_calc_u(nu1); ok= 1; } } @@ -4293,7 +4293,7 @@ static int spin_nurb(float viewmat[][4], Object *obedit, float *axis, float *cen if (isNurbsel(nu)) { nu->orderv= 4; nu->flagv |= CU_NURB_CYCLIC; - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); } } } @@ -4446,7 +4446,7 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) newbp->vec[3]= 1.0; newnu->knotsu= newnu->knotsv= NULL; - nurbs_knot_calc_u(newnu); + BKE_nurb_knot_calc_u(newnu); ok= 1; nu= newnu; @@ -4538,7 +4538,7 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) if (bezt_recalc[1]) { const char h1 = bezt_recalc[1]->h1, h2 = bezt_recalc[1]->h2; bezt_recalc[1]->h1 = bezt_recalc[1]->h2 = HD_AUTO; - calchandleNurb(bezt_recalc[1], bezt_recalc[0], bezt_recalc[2], 0); + BKE_nurb_handle_calc(bezt_recalc[1], bezt_recalc[0], bezt_recalc[2], 0); bezt_recalc[1]->h1 = h1; bezt_recalc[1]->h2 = h2; } @@ -4548,8 +4548,8 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) } - if (newnu) calchandlesNurb(newnu); - else calchandlesNurb(nu); + if (newnu) BKE_nurb_handles_calc(newnu); + else BKE_nurb_handles_calc(nu); } } } @@ -4617,14 +4617,14 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) if (!newnu) { nu->pntsu++; - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } - else nurbs_knot_calc_u(newnu); + else BKE_nurb_knot_calc_u(newnu); } } if (ok) { - test2DNurb(nu); + BKE_nurb_test2D(nu); if (ED_curve_updateAnimPaths(obedit->data)) WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, obedit); @@ -4783,7 +4783,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) } bezt++; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else if (nu->pntsv==1 && nu->type == CU_NURBS) { if (nu->knotsu) { /* if check_valid_nurb_u fails the knotsu can be NULL */ @@ -4792,7 +4792,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) while (a--) { if ( bp->f1 & SELECT ) { nu->flagu ^= CU_NURB_CYCLIC; - nurbs_knot_calc_u(nu); /* 1==u type is ignored for cyclic curves */ + BKE_nurb_knot_calc_u(nu); /* 1==u type is ignored for cyclic curves */ break; } bp++; @@ -4807,11 +4807,11 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) if ( bp->f1 & SELECT) { if (direction==0 && nu->pntsu>1) { nu->flagu ^= CU_NURB_CYCLIC; - nurbs_knot_calc_u(nu); /* 1==u type is ignored for cyclic curves */ + BKE_nurb_knot_calc_u(nu); /* 1==u type is ignored for cyclic curves */ } if (direction==1 && nu->pntsv>1) { nu->flagv ^= CU_NURB_CYCLIC; - nurbs_knot_calc_v(nu); /* 2==v type is ignored for cyclic curves */ + BKE_nurb_knot_calc_v(nu); /* 2==v type is ignored for cyclic curves */ } break; } @@ -5472,7 +5472,7 @@ static int point_on_nurb(Nurb *nu, void *point) static Nurb *get_lastsel_nurb(Curve *cu) { - ListBase *nubase= curve_editnurbs(cu); + ListBase *nubase= BKE_curve_editNurbs_get(cu); Nurb *nu= nubase->first; if (!cu->lastsel) @@ -5638,7 +5638,7 @@ static int delete_exec(bContext *C, wmOperator *op) } else { keyIndex_delNurbList(editnurb, nubase); - freeNurblist(nubase); + BKE_nurbList_free(nubase); if (ED_curve_updateAnimPaths(obedit->data)) WM_event_add_notifier(C, NC_OBJECT|ND_KEYS, obedit); @@ -5672,7 +5672,7 @@ static int delete_exec(bContext *C, wmOperator *op) BLI_remlink(nubase, nu); keyIndex_delNurb(editnurb, nu); - freeNurb(nu); nu= NULL; + BKE_nurb_free(nu); nu= NULL; } } } @@ -5692,7 +5692,7 @@ static int delete_exec(bContext *C, wmOperator *op) BLI_remlink(nubase, nu); keyIndex_delNurb(editnurb, nu); - freeNurb(nu); nu= NULL; + BKE_nurb_free(nu); nu= NULL; } } } @@ -5734,7 +5734,7 @@ static int delete_exec(bContext *C, wmOperator *op) keyIndex_updateBezt(editnurb, nu->bezt, bezt1, nu->pntsu); MEM_freeN(nu->bezt); nu->bezt= bezt1; - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } } else if (nu->pntsv==1) { @@ -5770,8 +5770,8 @@ static int delete_exec(bContext *C, wmOperator *op) } #endif } - clamp_nurb_order_u(nu); - nurbs_knot_calc_u(nu); + BKE_nurb_order_clamp_u(nu); + BKE_nurb_knot_calc_u(nu); } nu= next; } @@ -5797,7 +5797,7 @@ static int delete_exec(bContext *C, wmOperator *op) bezt2= bezt+(nu->pntsu-1); if ( (bezt2->f1 & SELECT) || (bezt2->f2 & SELECT) || (bezt2->f3 & SELECT) ) { nu->flagu &= ~CU_NURB_CYCLIC; - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); DAG_id_tag_update(obedit->data, 0); } @@ -5850,7 +5850,7 @@ static int delete_exec(bContext *C, wmOperator *op) cu->actnu= -1; BLI_remlink(nubase, nu); - freeNurb(nu); nu = NULL; + BKE_nurb_free(nu); nu = NULL; } else if (nu1->flagu & CU_NURB_CYCLIC) { /* cyclic */ bezt = @@ -5862,7 +5862,7 @@ static int delete_exec(bContext *C, wmOperator *op) nu1->flagu &= ~CU_NURB_CYCLIC; MEM_freeN(bezt); - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else { /* add new curve */ @@ -5886,8 +5886,8 @@ static int delete_exec(bContext *C, wmOperator *op) nu->pntsu= cut+1; - calchandlesNurb(nu); - calchandlesNurb(nu1); + BKE_nurb_handles_calc(nu); + BKE_nurb_handles_calc(nu1); } } else if (bp1) { @@ -5896,7 +5896,7 @@ static int delete_exec(bContext *C, wmOperator *op) cu->actnu= -1; BLI_remlink(nubase, nu); - freeNurb(nu); nu= NULL; + BKE_nurb_free(nu); nu= NULL; } else if (nu1->flagu & CU_NURB_CYCLIC) { /* cyclic */ bp = @@ -5926,11 +5926,11 @@ static int delete_exec(bContext *C, wmOperator *op) nu1->knotsu= NULL; nu->pntsu= cut+1; - clamp_nurb_order_u(nu); - nurbs_knot_calc_u(nu); + BKE_nurb_order_clamp_u(nu); + BKE_nurb_knot_calc_u(nu); - clamp_nurb_order_u(nu1); - nurbs_knot_calc_u(nu1); + BKE_nurb_order_clamp_u(nu1); + BKE_nurb_knot_calc_u(nu1); } } } @@ -5938,7 +5938,7 @@ static int delete_exec(bContext *C, wmOperator *op) else if (type==2) { cu->actnu= -1; keyIndex_delNurbList(editnurb, nubase); - freeNurblist(nubase); + BKE_nurbList_free(nubase); } if (ED_curve_updateAnimPaths(obedit->data)) @@ -6083,7 +6083,7 @@ int join_curve_exec(bContext *C, wmOperator *UNUSED(op)) nu= cu->nurb.first; while (nu) { - newnu= duplicateNurb(nu); + newnu= BKE_nurb_duplicate(nu); if (ob->totcol) { /* TODO, merge material lists */ CLAMP(newnu->mat_nr, 0, ob->totcol-1); } @@ -6098,7 +6098,7 @@ int join_curve_exec(bContext *C, wmOperator *UNUSED(op)) mul_m4_v3(cmat, bezt->vec[2]); bezt++; } - calchandlesNurb(newnu); + BKE_nurb_handles_calc(newnu); } if ( (bp= newnu->bp) ) { a= newnu->pntsu*nu->pntsv; @@ -6240,7 +6240,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) bezt->vec[2][1] = 0; for (a=0;a<3;a++) mul_m4_v3(mat, bezt->vec[a]); - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else { @@ -6272,7 +6272,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) if (cutype==CU_NURBS) { nu->knotsu= NULL; /* nurbs_knot_calc_u allocates */ - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } } @@ -6306,7 +6306,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) if (cutype==CU_NURBS) { nu->knotsu= NULL; /* nurbs_knot_calc_u allocates */ - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } break; @@ -6347,7 +6347,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) for (a=0;a<3;a++) mul_m4_v3(mat,bezt->vec[a]); bezt->radius = bezt->weight = 1.0; - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else if ( cutype==CU_NURBS ) { /* nurb */ nu->pntsu= 8; @@ -6375,7 +6375,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) bp++; } - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } break; case CU_PRIM_PATCH: /* 4x4 patch */ @@ -6407,8 +6407,8 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) } } - nurbs_knot_calc_u(nu); - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_u(nu); + BKE_nurb_knot_calc_v(nu); } break; case CU_PRIM_TUBE: /* Cylinder */ @@ -6469,7 +6469,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) bp++; } nu->flagu= CU_NURB_BEZIER; - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); BLI_addtail(editnurb, nu); /* temporal for spin */ @@ -6477,7 +6477,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) else if ((U.flag & USER_ADD_VIEWALIGNED)) spin_nurb(viewmat, obedit, zvec, mat[3]); else spin_nurb(umat, obedit, tmp_vec, mat[3]); - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); a= nu->pntsu*nu->pntsv; bp= nu->bp; @@ -6529,7 +6529,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newob) if (nu) { /* should always be set */ nu->flag |= CU_SMOOTH; - test2DNurb(nu); + BKE_nurb_test2D(nu); } return nu; @@ -6947,13 +6947,13 @@ static void undoCurve_to_editCurve(void *ucu, void *UNUSED(edata), void *cu_v) Curve *cu= cu_v; UndoCurve *undoCurve= ucu; ListBase *undobase= &undoCurve->nubase; - ListBase *editbase= curve_editnurbs(cu); + ListBase *editbase= BKE_curve_editNurbs_get(cu); Nurb *nu, *newnu; EditNurb *editnurb= cu->editnurb; void *lastsel= NULL; AnimData *ad= BKE_animdata_from_id(&cu->id); - freeNurblist(editbase); + BKE_nurbList_free(editbase); if (undoCurve->undoIndex) { BLI_ghash_free(editnurb->keyindex, NULL, (GHashValFreeFP)MEM_freeN); @@ -6972,7 +6972,7 @@ static void undoCurve_to_editCurve(void *ucu, void *UNUSED(edata), void *cu_v) /* copy */ for (nu= undobase->first; nu; nu= nu->next) { - newnu= duplicateNurb(nu); + newnu= BKE_nurb_duplicate(nu); if (lastsel == NULL) { lastsel= undo_check_lastsel(undoCurve->lastsel, nu, newnu); @@ -6993,7 +6993,7 @@ static void undoCurve_to_editCurve(void *ucu, void *UNUSED(edata), void *cu_v) static void *editCurve_to_undoCurve(void *UNUSED(edata), void *cu_v) { Curve *cu= cu_v; - ListBase *nubase= curve_editnurbs(cu); + ListBase *nubase= BKE_curve_editNurbs_get(cu); UndoCurve *undoCurve; EditNurb *editnurb= cu->editnurb, tmpEditnurb; Nurb *nu, *newnu; @@ -7016,7 +7016,7 @@ static void *editCurve_to_undoCurve(void *UNUSED(edata), void *cu_v) /* copy */ for (nu= nubase->first; nu; nu= nu->next) { - newnu= duplicateNurb(nu); + newnu= BKE_nurb_duplicate(nu); if (lastsel == NULL) { lastsel= undo_check_lastsel(cu->lastsel, nu, newnu); @@ -7039,7 +7039,7 @@ static void free_undoCurve(void *ucv) { UndoCurve *undoCurve= ucv; - freeNurblist(&undoCurve->nubase); + BKE_nurbList_free(&undoCurve->nubase); if (undoCurve->undoIndex) BLI_ghash_free(undoCurve->undoIndex, NULL, (GHashValFreeFP)MEM_freeN); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 29bebfab9e0..cca5dd7a37b 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1500,7 +1500,7 @@ void load_editText(Object *obedit) void free_editText(Object *obedit) { - BKE_free_editfont((Curve *)obedit->data); + BKE_curve_editfont_free((Curve *)obedit->data); } /********************** set case operator *********************/ diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index d48cfaab63c..5f31a273d1a 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -534,7 +534,7 @@ static void gp_stroke_to_bezier (bContext *C, bGPDlayer *gpl, bGPDstroke *gps, C } /* must calculate handles or else we crash */ - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); /* add nurb to curve */ BLI_addtail(&cu->nurb, nu); diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index 50e43c46de5..73ff8e9304d 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -63,7 +63,7 @@ void load_editNurb (struct Object *obedit); void make_editNurb (struct Object *obedit); void free_editNurb (struct Object *obedit); -void free_curve_editNurb (struct Curve *cu); +void BKE_curve_editNurb_free (struct Curve *cu); int mouse_nurb (struct bContext *C, const int mval[2], int extend); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 4666232c232..fe7a4e85418 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -2231,8 +2231,8 @@ int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol) vec[2][0] = vec[3][0] - dist; vec[2][1] = vec[3][1]; - forward_diff_bezier(vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0], resol, sizeof(float) * 2); - forward_diff_bezier(vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0] + 1, resol, sizeof(float) * 2); + BKE_curve_forward_diff_bezier(vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0], resol, sizeof(float) * 2); + BKE_curve_forward_diff_bezier(vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0] + 1, resol, sizeof(float) * 2); return 1; } diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 713009d2a19..1407d38ed0f 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -111,7 +111,7 @@ MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int UNU ml= ml->next; } - ml= add_metaball_element(mball, type); + ml= BKE_metaball_element_add(mball, type); copy_v3_v3(&ml->x, mat[3]); ml->flag |= SELECT; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 21c9f776b94..fcce65c9326 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -1391,7 +1391,7 @@ static int convert_exec(bContext *C, wmOperator *op) ((Curve *)newob->data)->id.us--; /* make a new copy of the curve */ - newob->data = copy_curve(ob->data); + newob->data = BKE_curve_copy(ob->data); } else { newob = ob; @@ -1456,7 +1456,7 @@ static int convert_exec(bContext *C, wmOperator *op) ((Curve *)newob->data)->id.us--; /* make a new copy of the curve */ - newob->data = copy_curve(ob->data); + newob->data = BKE_curve_copy(ob->data); } else { newob = ob; @@ -1474,7 +1474,7 @@ static int convert_exec(bContext *C, wmOperator *op) base->flag &= ~SELECT; ob->flag &= ~SELECT; - baseob = find_basis_mball(scene, ob); + baseob = BKE_metaball_basis_find(scene, ob); if (ob != baseob) { /* if motherball is converting it would be marked as done later */ @@ -1701,7 +1701,7 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base if (dupflag & USER_DUP_CURVE) { ID_NEW_US2(obn->data) else { - obn->data = copy_curve(obn->data); + obn->data = BKE_curve_copy(obn->data); didit = 1; } id->us--; @@ -1711,7 +1711,7 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base if (dupflag & USER_DUP_SURF) { ID_NEW_US2(obn->data) else { - obn->data = copy_curve(obn->data); + obn->data = BKE_curve_copy(obn->data); didit = 1; } id->us--; @@ -1721,7 +1721,7 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base if (dupflag & USER_DUP_FONT) { ID_NEW_US2(obn->data) else { - obn->data = copy_curve(obn->data); + obn->data = BKE_curve_copy(obn->data); didit = 1; } id->us--; @@ -1731,7 +1731,7 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base if (dupflag & USER_DUP_MBALL) { ID_NEW_US2(obn->data) else { - obn->data = copy_mball(obn->data); + obn->data = BKE_metaball_copy(obn->data); didit = 1; } id->us--; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 874b04fe87d..d5385d00c8a 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -746,10 +746,10 @@ static void copy_texture_space(Object *to, Object *ob) /* pass */ } else if (to->type == OB_MBALL) { - tex_space_mball(to); + BKE_metaball_tex_space_calc(to); } else { - tex_space_curve(to->data); + BKE_curve_tex_space_calc(to->data); } } diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index bd69b3adc5e..f2d682cd0cb 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -544,9 +544,9 @@ static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, cu = ob->data; BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tessellated/bevel vertices"); - vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts); + vertexCos = BKE_curve_vertexCos_get(cu, &cu->nurb, &numVerts); mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0); - curve_applyVertexCos(cu, &cu->nurb, vertexCos); + BK_curve_vertexCos_apply(cu, &cu->nurb, vertexCos); MEM_freeN(vertexCos); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 3a00c69fc47..077ae2830a9 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -1480,12 +1480,12 @@ static void single_obdata_users(Main *bmain, Scene *scene, int flag) // ipo_idnew(me->key->ipo); /* drivers */ break; case OB_MBALL: - ob->data = copy_mball(ob->data); + ob->data = BKE_metaball_copy(ob->data); break; case OB_CURVE: case OB_SURF: case OB_FONT: - ob->data = cu = copy_curve(ob->data); + ob->data = cu = BKE_curve_copy(ob->data); ID_NEW(cu->bevobj); ID_NEW(cu->taperobj); break; diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index bd88bbda32c..5d31bfff99a 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -119,7 +119,7 @@ static int ED_object_shape_key_remove(bContext *C, Object *ob) break; case OB_CURVE: case OB_SURF: - key_to_curve(key->refkey, ob->data, BKE_curve_nurbs(ob->data)); + key_to_curve(key->refkey, ob->data, BKE_curve_nurbs_get(ob->data)); break; case OB_LATTICE: key_to_latt(key->refkey, ob->data); diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 1c0899ab551..e416bd5b762 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -520,7 +520,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo mul_m4_v3(mat, bezt->vec[2]); bezt->radius *= scale; } - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else { a = nu->pntsu * nu->pntsv; @@ -779,15 +779,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) Curve *cu = ob->data; if (centermode == ORIGIN_TO_CURSOR) { /* done */ } - else if (around == V3D_CENTROID) { curve_center_median(cu, cent); } - else { curve_center_bounds(cu, cent); } + else if (around == V3D_CENTROID) { BKE_curve_center_median(cu, cent); } + else { BKE_curve_center_bounds(cu, cent); } /* don't allow Z change if curve is 2D */ if ((ob->type == OB_CURVE) && !(cu->flag & CU_3D)) cent[2] = 0.0; negate_v3_v3(cent_neg, cent); - curve_translate(cu, cent_neg, 1); + BKE_curve_translate(cu, cent_neg, 1); tot_change++; cu->id.flag |= LIB_DOIT; diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index bced6f07564..b648dac6343 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -178,7 +178,7 @@ static int material_slot_assign_exec(bContext *C, wmOperator *UNUSED(op)) } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { Nurb *nu; - ListBase *nurbs = curve_editnurbs((Curve *)ob->data); + ListBase *nurbs = BKE_curve_editNurbs_get((Curve *)ob->data); if (nurbs) { for (nu = nurbs->first; nu; nu = nu->next) @@ -233,7 +233,7 @@ static int material_slot_de_select(bContext *C, int select) } } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { - ListBase *nurbs = curve_editnurbs((Curve *)ob->data); + ListBase *nurbs = BKE_curve_editNurbs_get((Curve *)ob->data); Nurb *nu; BPoint *bp; BezTriple *bezt; diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c index 64ce529345c..c7033b0db99 100644 --- a/source/blender/editors/space_clip/clip_ops.c +++ b/source/blender/editors/space_clip/clip_ops.c @@ -157,7 +157,7 @@ static int open_exec(bContext *C, wmOperator *op) errno = 0; - clip = BKE_add_movieclip_file(str); + clip = BKE_movieclip_file_add(str); if (!clip) { if (op->customdata) diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index fc84cfc46a2..d435b78b65c 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -720,8 +720,8 @@ static void draw_fcurve_curve_bezts (bAnimContext *ac, ID *id, FCurve *fcu, View correct_bezpart(v1, v2, v3, v4); - forward_diff_bezier(v1[0], v2[0], v3[0], v4[0], data, resol, sizeof(float)*3); - forward_diff_bezier(v1[1], v2[1], v3[1], v4[1], data+1, resol, sizeof(float)*3); + BKE_curve_forward_diff_bezier(v1[0], v2[0], v3[0], v4[0], data, resol, sizeof(float)*3); + BKE_curve_forward_diff_bezier(v1[1], v2[1], v3[1], v4[1], data+1, resol, sizeof(float)*3); for (fp= data; resol; resol--, fp+= 3) glVertex2fv(fp); diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c index 1c2f43f67a4..2ef8f6c306c 100644 --- a/source/blender/editors/space_info/info_stats.c +++ b/source/blender/editors/space_info/info_stats.c @@ -183,7 +183,7 @@ static void stats_object_edit(Object *obedit, SceneStats *stats) BezTriple *bezt; BPoint *bp; int a; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); for (nu = nurbs->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) { diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index e00abff30f2..91ece361aac 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -2499,8 +2499,8 @@ int node_link_bezier_points(View2D *v2d, SpaceNode *snode, bNodeLink *link, floa else { /* always do all three, to prevent data hanging around */ - forward_diff_bezier(vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0], resol, sizeof(float)*2); - forward_diff_bezier(vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0]+1, resol, sizeof(float)*2); + BKE_curve_forward_diff_bezier(vec[0][0], vec[1][0], vec[2][0], vec[3][0], coord_array[0], resol, sizeof(float)*2); + BKE_curve_forward_diff_bezier(vec[0][1], vec[1][1], vec[2][1], vec[3][1], coord_array[0]+1, resol, sizeof(float)*2); return 1; } diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 4508dae36e7..3f431585fc9 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2213,7 +2213,7 @@ void nurbs_foreachScreenVert( short s[2] = {IS_CLIPPED, 0}; Nurb *nu; int i; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); ED_view3d_clipping_local(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */ @@ -3963,7 +3963,7 @@ static int drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *bas break; case OB_MBALL: - if (is_basis_mball(ob)) { + if (BKE_metaball_is_basis(ob)) { lb = &ob->disp; if (lb->first == NULL) makeDispListMBall(scene, ob); if (lb->first == NULL) return 1; @@ -6140,7 +6140,7 @@ static void draw_bounding_volume(Scene *scene, Object *ob, char type) bb = ob->bb ? ob->bb : ( (Curve *)ob->data)->bb; } else if (ob->type == OB_MBALL) { - if (is_basis_mball(ob)) { + if (BKE_metaball_is_basis(ob)) { bb = ob->bb; if (bb == NULL) { makeDispListMBall(scene, ob); @@ -6231,7 +6231,7 @@ static void drawObjectSelect(Scene *scene, View3D *v3d, ARegion *ar, Base *base) } } else if (ob->type == OB_MBALL) { - if (is_basis_mball(ob)) { + if (BKE_metaball_is_basis(ob)) { if ((base->flag & OB_FROMDUPLI) == 0) drawDispListwire(&ob->disp); } @@ -6291,7 +6291,7 @@ static void drawWireExtra(Scene *scene, RegionView3D *rv3d, Object *ob) } } else if (ob->type == OB_MBALL) { - if (is_basis_mball(ob)) { + if (BKE_metaball_is_basis(ob)) { drawDispListwire(&ob->disp); } } @@ -6670,7 +6670,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) cu = ob->data; if (cu->editnurb) { - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); drawnurb(scene, v3d, rv3d, base, nurbs->first, dt); } else if (dt == OB_BOUNDBOX) { diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index c3ff00e3c82..6d810d9103c 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -211,7 +211,7 @@ static void v3d_editvertex_buts(uiLayout *layout, View3D *v3d, Object *ob, float BPoint *bp; BezTriple *bezt; int a; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); StructRNA *seltype = NULL; void *selp = NULL; @@ -509,7 +509,7 @@ static void v3d_editvertex_buts(uiLayout *layout, View3D *v3d, Object *ob, float BPoint *bp; BezTriple *bezt; int a; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); const float scale_w = compute_scale_factor(ve_median[4], median[4]); nu = nurbs->first; @@ -571,8 +571,8 @@ static void v3d_editvertex_buts(uiLayout *layout, View3D *v3d, Object *ob, float bp++; } } - test2DNurb(nu); - testhandlesNurb(nu); /* test for bezier too */ + BKE_nurb_test2D(nu); + BKE_nurb_handles_test(nu); /* test for bezier too */ nu = nu->next; } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 2c301dc8abc..988d0a00601 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -106,7 +106,7 @@ static void special_transvert_update(Object *obedit) } else if (ELEM(obedit->type, OB_CURVE, OB_SURF)) { Curve *cu = obedit->data; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); Nurb *nu = nurbs->first; while (nu) { @@ -141,8 +141,8 @@ static void special_transvert_update(Object *obedit) } } - test2DNurb(nu); - testhandlesNurb(nu); /* test for bezier too */ + BKE_nurb_test2D(nu); + BKE_nurb_handles_test(nu); /* test for bezier too */ nu = nu->next; } } @@ -375,7 +375,7 @@ static void make_trans_verts(Object *obedit, float *min, float *max, int mode) else if (ELEM(obedit->type, OB_CURVE, OB_SURF)) { Curve *cu = obedit->data; int totmalloc = 0; - ListBase *nurbs = curve_editnurbs(cu); + ListBase *nurbs = BKE_curve_editNurbs_get(cu); for (nu = nurbs->first; nu; nu = nu->next) { if (nu->type == CU_BEZIER) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index bdae2c0c84f..00c8e0a1d34 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1438,7 +1438,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t) if (cu->editnurb==NULL) return; /* count total of vertices, check identical as in 2nd loop for making transdata! */ - nurbs= curve_editnurbs(cu); + nurbs= BKE_curve_editNurbs_get(cu); for (nu= nurbs->first; nu; nu= nu->next) { if (nu->type == CU_BEZIER) { for (a=0, bezt= nu->bezt; apntsu; a++, bezt++) { @@ -1588,7 +1588,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t) * but for now just don't change handle types */ if (ELEM(t->mode, TFM_CURVE_SHRINKFATTEN, TFM_TILT) == 0) { /* sets the handles based on their selection, do this after the data is copied to the TransData */ - testhandlesNurb(nu); + BKE_nurb_handles_test(nu); } } else { diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 2c5d074e2cf..217e0d36fce 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -673,7 +673,7 @@ static void recalcData_view3d(TransInfo *t) if (t->obedit) { if (ELEM(t->obedit->type, OB_CURVE, OB_SURF)) { Curve *cu= t->obedit->data; - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); Nurb *nu= nurbs->first; if (t->state != TRANS_CANCEL) { @@ -685,15 +685,15 @@ static void recalcData_view3d(TransInfo *t) if (t->state == TRANS_CANCEL) { while (nu) { - calchandlesNurb(nu); /* Cant do testhandlesNurb here, it messes up the h1 and h2 flags */ + BKE_nurb_handles_calc(nu); /* Cant do testhandlesNurb here, it messes up the h1 and h2 flags */ nu= nu->next; } } else { /* Normal updating */ while (nu) { - test2DNurb(nu); - calchandlesNurb(nu); + BKE_nurb_test2D(nu); + BKE_nurb_handles_calc(nu); nu= nu->next; } } diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index c043be0c7f8..f8a982c6b71 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -389,7 +389,7 @@ int calc_manipulator_stats(const bContext *C) Nurb *nu; BezTriple *bezt; BPoint *bp; - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); nu= nurbs->first; while (nu) { diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 0f9f90819d0..db974626b14 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -715,7 +715,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], Nurb *nu; BezTriple *bezt; int a; - ListBase *nurbs= curve_editnurbs(cu); + ListBase *nurbs= BKE_curve_editNurbs_get(cu); for (nu = nurbs->first; nu; nu = nu->next) { /* only bezier has a normal */ diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 97cf73ab998..86a2d6c9a46 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -100,12 +100,12 @@ static const EnumPropertyItem curve2d_fill_mode_items[] = { #include "MEM_guardedalloc.h" -#include "ED_curve.h" /* for BKE_curve_nurbs */ +#include "ED_curve.h" /* for BKE_curve_nurbs_get */ /* highly irritating but from RNA we cant know this */ static Nurb *curve_nurb_from_point(Curve *cu, const void *point, int *nu_index, int *pt_index) { - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); Nurb *nu; int i = 0; @@ -139,7 +139,7 @@ static Nurb *curve_nurb_from_point(Curve *cu, const void *point, int *nu_index, static StructRNA *rna_Curve_refine(PointerRNA *ptr) { Curve *cu = (Curve*)ptr->data; - short obtype = curve_type(cu); + short obtype = BKE_curve_type_get(cu); if (obtype == OB_FONT) return &RNA_TextCurve; else if (obtype == OB_SURF) return &RNA_SurfaceCurve; @@ -205,7 +205,7 @@ static void rna_Curve_texspace_set(Main *UNUSED(bmain), Scene *UNUSED(scene), Po Curve *cu = (Curve*)ptr->data; if (cu->texflag & CU_AUTOSPACE) - tex_space_curve(cu); + BKE_curve_tex_space_calc(cu); } static int rna_Curve_texspace_editable(PointerRNA *ptr) @@ -219,7 +219,7 @@ static void rna_Curve_texspace_loc_get(PointerRNA *ptr, float *values) Curve *cu = (Curve *)ptr->data; if (!cu->bb) - tex_space_curve(cu); + BKE_curve_tex_space_calc(cu); copy_v3_v3(values, cu->loc); } @@ -236,7 +236,7 @@ static void rna_Curve_texspace_size_get(PointerRNA *ptr, float *values) Curve *cu = (Curve *)ptr->data; if (!cu->bb) - tex_space_curve(cu); + BKE_curve_tex_space_calc(cu); copy_v3_v3(values, cu->size); } @@ -271,7 +271,7 @@ static void rna_Curve_dimension_set(PointerRNA *ptr, int value) if (value == CU_3D) cu->flag |= CU_3D; else cu->flag &= ~CU_3D; - update_curve_dimension(cu); + BKE_curve_curve_dimension_update(cu); } static EnumPropertyItem *rna_Curve_fill_mode_itemf(bContext *UNUSED(C), PointerRNA *ptr, @@ -326,7 +326,7 @@ static void rna_Curve_update_points(Main *bmain, Scene *scene, PointerRNA *ptr) Nurb *nu = curve_nurb_from_point(cu, ptr->data, NULL, NULL); if (nu) - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); rna_Curve_update_data(bmain, scene, ptr); } @@ -404,7 +404,7 @@ static void rna_Curve_taperObject_set(PointerRNA *ptr, PointerRNA value) static void rna_Curve_resolution_u_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu = (Curve*)ptr->id.data; - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); Nurb *nu = nurbs->first; while (nu) { @@ -418,7 +418,7 @@ static void rna_Curve_resolution_u_update_data(Main *bmain, Scene *scene, Pointe static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu = (Curve*)ptr->id.data; - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); Nurb *nu = nurbs->first; @@ -481,10 +481,10 @@ static void rna_Nurb_update_cyclic_u(Main *bmain, Scene *scene, PointerRNA *ptr) Nurb *nu = (Nurb*)ptr->data; if (nu->type == CU_BEZIER) { - calchandlesNurb(nu); + BKE_nurb_handles_calc(nu); } else { - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); } rna_Curve_update_data(bmain, scene, ptr); @@ -494,7 +494,7 @@ static void rna_Nurb_update_cyclic_v(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu = (Nurb*)ptr->data; - nurbs_knot_calc_v(nu); + BKE_nurb_knot_calc_v(nu); rna_Curve_update_data(bmain, scene, ptr); } @@ -503,8 +503,8 @@ static void rna_Nurb_update_knot_u(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu = (Nurb*)ptr->data; - clamp_nurb_order_u(nu); - nurbs_knot_calc_u(nu); + BKE_nurb_order_clamp_u(nu); + BKE_nurb_knot_calc_u(nu); rna_Curve_update_data(bmain, scene, ptr); } @@ -513,8 +513,8 @@ static void rna_Nurb_update_knot_v(Main *bmain, Scene *scene, PointerRNA *ptr) { Nurb *nu = (Nurb*)ptr->data; - clamp_nurb_order_v(nu); - nurbs_knot_calc_v(nu); + BKE_nurb_order_clamp_v(nu); + BKE_nurb_knot_calc_v(nu); rna_Curve_update_data(bmain, scene, ptr); } @@ -529,10 +529,10 @@ static void rna_Curve_spline_points_add(ID *id, Nurb *nu, ReportList *reports, i } else { - addNurbPoints(nu, number); + BKE_nurb_points_add(nu, number); /* update */ - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); rna_Curve_update_data_id(NULL, NULL, id); } @@ -547,10 +547,10 @@ static void rna_Curve_spline_bezpoints_add(ID *id, Nurb *nu, ReportList *reports /* do nothing */ } else { - addNurbPointsBezier(nu, number); + BKE_nurb_bezierPoints_add(nu, number); /* update */ - nurbs_knot_calc_u(nu); + BKE_nurb_knot_calc_u(nu); rna_Curve_update_data_id(NULL, NULL, id); } @@ -579,7 +579,7 @@ static Nurb *rna_Curve_spline_new(Curve *cu, int type) nu->resolu = nu->resolv = 12; nu->flag = CU_SMOOTH; - BLI_addtail(BKE_curve_nurbs(cu), nu); + BLI_addtail(BKE_curve_nurbs_get(cu), nu); return nu; } @@ -587,7 +587,7 @@ static Nurb *rna_Curve_spline_new(Curve *cu, int type) static void rna_Curve_spline_remove(Curve *cu, ReportList *reports, Nurb *nu) { int found = 0; - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); found = BLI_remlink_safe(nurbs, nu); @@ -596,7 +596,7 @@ static void rna_Curve_spline_remove(Curve *cu, ReportList *reports, Nurb *nu) return; } - freeNurb(nu); + BKE_nurb_free(nu); /* invalidate pointer!, no can do */ DAG_id_tag_update(&cu->id, OB_RECALC_DATA); @@ -605,9 +605,9 @@ static void rna_Curve_spline_remove(Curve *cu, ReportList *reports, Nurb *nu) static void rna_Curve_spline_clear(Curve *cu) { - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); - freeNurblist(nurbs); + BKE_nurbList_free(nurbs); DAG_id_tag_update(&cu->id, OB_RECALC_DATA); WM_main_add_notifier(NC_GEOM|ND_DATA, NULL); @@ -617,7 +617,7 @@ static PointerRNA rna_Curve_active_spline_get(PointerRNA *ptr) { Curve *cu = (Curve*)ptr->data; Nurb *nu; - ListBase *nurbs = BKE_curve_nurbs(cu); + ListBase *nurbs = BKE_curve_nurbs_get(cu); /* for curve outside editmode will set to -1, should be changed to be allowed outside of editmode. */ nu = BLI_findlink(nurbs, cu->actnu); @@ -632,7 +632,7 @@ static void rna_Curve_active_spline_set(PointerRNA *ptr, PointerRNA value) { Curve *cu = (Curve*)ptr->data; Nurb *nu = value.data; - ListBase *nubase = BKE_curve_nurbs(cu); + ListBase *nubase = BKE_curve_nurbs_get(cu); /* -1 is ok for an unset index */ if (nu == NULL) @@ -644,7 +644,7 @@ static void rna_Curve_active_spline_set(PointerRNA *ptr, PointerRNA value) static char *rna_Curve_spline_path(PointerRNA *ptr) { Curve *cu = (Curve*)ptr->id.data; - ListBase *nubase = BKE_curve_nurbs(cu); + ListBase *nubase = BKE_curve_nurbs_get(cu); Nurb *nu = ptr->data; int index = BLI_findindex(nubase, nu); @@ -693,7 +693,7 @@ static char *rna_TextBox_path(PointerRNA *ptr) static void rna_Curve_splines_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { Curve *cu = (Curve*)ptr->id.data; - rna_iterator_listbase_begin(iter, BKE_curve_nurbs(cu), NULL); + rna_iterator_listbase_begin(iter, BKE_curve_nurbs_get(cu), NULL); } #else diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 10a45fbb94d..63006af7c72 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -141,7 +141,7 @@ Object *rna_Main_objects_new(Main *UNUSED(bmain), ReportList *reports, const cha type = OB_MESH; break; case ID_CU: - type = curve_type((struct Curve *)data); + type = BKE_curve_type_get((struct Curve *)data); break; case ID_MB: type = OB_MBALL; @@ -314,7 +314,7 @@ void rna_Main_lattices_remove(Main *bmain, ReportList *reports, struct Lattice * Curve *rna_Main_curves_new(Main *UNUSED(bmain), const char *name, int type) { - Curve *cu = add_curve(name, type); + Curve *cu = BKE_curve_add(name, type); id_us_min(&cu->id); return cu; } @@ -329,7 +329,7 @@ void rna_Main_curves_remove(Main *bmain, ReportList *reports, struct Curve *cu) MetaBall *rna_Main_metaballs_new(Main *UNUSED(bmain), const char *name) { - MetaBall *mb = add_mball(name); + MetaBall *mb = BKE_metaball_add(name); id_us_min(&mb->id); return mb; } @@ -523,7 +523,7 @@ MovieClip *rna_Main_movieclip_load(Main *UNUSED(bmain), ReportList *reports, con MovieClip *clip; errno = 0; - clip = BKE_add_movieclip_file(filepath); + clip = BKE_movieclip_file_add(filepath); if (!clip) BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, @@ -534,7 +534,7 @@ MovieClip *rna_Main_movieclip_load(Main *UNUSED(bmain), ReportList *reports, con void rna_Main_movieclips_remove(Main *bmain, MovieClip *clip) { - unlink_movieclip(bmain, clip); + BKE_movieclip_unlink(bmain, clip); free_libblock(&bmain->movieclip, clip); /* XXX python now has invalid pointer? */ } diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c index e8ea19a5c5b..f7ef0c5c89a 100644 --- a/source/blender/makesrna/intern/rna_meta.c +++ b/source/blender/makesrna/intern/rna_meta.c @@ -99,7 +99,7 @@ static void rna_MetaBall_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) if (mb->id.us > 0) { for (ob = bmain->object.first; ob; ob = ob->id.next) if (ob->data == mb) - copy_mball_properties(scene, ob); + BKE_metaball_properties_copy(scene, ob); DAG_id_tag_update(&mb->id, 0); WM_main_add_notifier(NC_GEOM|ND_DATA, mb); @@ -115,7 +115,7 @@ static void rna_MetaBall_update_rotation(Main *bmain, Scene *scene, PointerRNA * static MetaElem *rna_MetaBall_elements_new(MetaBall *mb, int type) { - MetaElem *ml = add_metaball_element(mb, type); + MetaElem *ml = BKE_metaball_element_add(mb, type); /* cheating way for importers to avoid slow updates */ if (mb->id.us > 0) { diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index bd024ba90be..140e874eb78 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -353,7 +353,7 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value) test_object_materials(id); if (GS(id->name) == ID_CU) - test_curve_type(ob); + BKE_curve_type_test(ob); else if (ob->type == OB_ARMATURE) armature_rebuild_pose(ob, ob->data); } diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index fb383b1256b..0ac6dcbc518 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -96,7 +96,7 @@ Mesh *rna_Object_to_mesh(Object *ob, ReportList *reports, Scene *sce, int apply_ object_free_modifiers(tmpobj); /* copies the data */ - copycu = tmpobj->data = copy_curve( (Curve *) ob->data ); + copycu = tmpobj->data = BKE_curve_copy( (Curve *) ob->data ); /* temporarily set edit so we get updates from edit mode, but * also because for text datablocks copying it while in edit @@ -124,7 +124,7 @@ Mesh *rna_Object_to_mesh(Object *ob, ReportList *reports, Scene *sce, int apply_ case OB_MBALL: { /* metaballs don't have modifiers, so just convert to mesh */ - Object *basis_ob = find_basis_mball(sce, ob); + Object *basis_ob = BKE_metaball_basis_find(sce, ob); /* todo, re-generatre for render-res */ /* metaball_polygonize(scene, ob) */ diff --git a/source/blender/python/mathutils/mathutils_geometry.c b/source/blender/python/mathutils/mathutils_geometry.c index b94c2e21139..543574e5136 100644 --- a/source/blender/python/mathutils/mathutils_geometry.c +++ b/source/blender/python/mathutils/mathutils_geometry.c @@ -1011,7 +1011,7 @@ static PyObject *M_Geometry_interpolate_bezier(PyObject *UNUSED(self), PyObject coord_array = MEM_callocN(dims * (resolu) * sizeof(float), "interpolate_bezier"); for (i = 0; i < dims; i++) { - forward_diff_bezier(k1[i], h1[i], h2[i], k2[i], coord_array + i, resolu - 1, sizeof(float) * dims); + BKE_curve_forward_diff_bezier(k1[i], h1[i], h2[i], k2[i], coord_array + i, resolu - 1, sizeof(float) * dims); } list = PyList_New(resolu); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 404901f2bb7..7fe1fab1681 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -908,10 +908,10 @@ static float *get_object_orco(Render *re, Object *ob) if (!orco) { if (ELEM(ob->type, OB_CURVE, OB_FONT)) { - orco = make_orco_curve(re->scene, ob); + orco = BKE_curve_make_orco(re->scene, ob); } else if (ob->type==OB_SURF) { - orco = make_orco_surf(ob); + orco = BKE_curve_surf_make_orco(ob); } if (orco) @@ -2437,7 +2437,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) int a, need_orco, vlakindex, *index, negative_scale; ListBase dispbase= {NULL, NULL}; - if (ob!=find_basis_mball(re->scene, ob)) + if (ob!=BKE_metaball_basis_find(re->scene, ob)) return; mult_m4_m4m4(mat, re->viewmat, ob->obmat); @@ -2463,7 +2463,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) if (!orco) { /* orco hasn't been found in cache - create new one and add to cache */ - orco= make_orco_mball(ob, &dispbase); + orco= BKE_metaball_make_orco(ob, &dispbase); set_object_orco(re, ob, orco); } } @@ -4725,7 +4725,7 @@ static int allow_render_object(Render *re, Object *ob, int nolamps, int onlysele return 0; /* don't add non-basic meta objects, ends up having renderobjects with no geometry */ - if (ob->type == OB_MBALL && ob!=find_basis_mball(re->scene, ob)) + if (ob->type == OB_MBALL && ob!=BKE_metaball_basis_find(re->scene, ob)) return 0; if (nolamps && (ob->type==OB_LAMP)) diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 0c95ccea5d7..58c2c649163 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -364,7 +364,7 @@ void WM_exit_ext(bContext *C, const short do_python) free_openrecent(); - BKE_freecubetable(); + BKE_metaball_cubeTable_free(); ED_preview_free_dbase(); /* frees a Main dbase, before free_blender! */ From 3865276eb8c0f73646a32c05dbe9d8f65babe332 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 28 Apr 2012 17:16:38 +0000 Subject: [PATCH 157/158] User Preferences/ Themes * Tooltip section was there twice (User Interface category) Issue introduced in r45092! --- release/scripts/startup/bl_ui/space_userpref.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 6ae66481fa1..113c370e687 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -637,10 +637,6 @@ class USERPREF_PT_theme(Panel): col.label(text="Tooltip:") ui_items_general(col, ui) - ui = theme.user_interface.wcol_tooltip - col.label(text="Tooltip:") - ui_items_general(col, ui) - ui = theme.user_interface.wcol_menu_item col.label(text="Menu Item:") ui_items_general(col, ui) From 4465d2f419a8515df41a8fc415774eedaef0e6f6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 28 Apr 2012 18:39:37 +0000 Subject: [PATCH 158/158] bmesh api functions, not used yet: BM_iter_elem_count_flag() BM_iter_mesh_count_flag() --- source/blender/bmesh/intern/bmesh_iterators.c | 44 +++++++++++++++++++ source/blender/bmesh/intern/bmesh_iterators.h | 2 + 2 files changed, 46 insertions(+) diff --git a/source/blender/bmesh/intern/bmesh_iterators.c b/source/blender/bmesh/intern/bmesh_iterators.c index 384715d74f7..8103ae1ee11 100644 --- a/source/blender/bmesh/intern/bmesh_iterators.c +++ b/source/blender/bmesh/intern/bmesh_iterators.c @@ -104,6 +104,50 @@ int BM_iter_as_array(BMesh *bm, const char itype, void *data, void **array, cons return i; } +/** + * \brief Elem Iter Flag Count + * + * Counts how many flagged / unflagged items are found in this element. + */ +int BM_iter_elem_count_flag(const char itype, void *data, const char hflag, const short value) +{ + BMIter iter; + BMElem *ele; + int count = 0; + + BLI_assert(ELEM(value, TRUE, FALSE)); + + for (ele = BM_iter_new(&iter, NULL, itype, data); ele; ele = BM_iter_step(&iter)) { + if (BM_elem_flag_test_bool(ele, hflag) == value) { + count++; + } + } + + return count; +} + +/** + * \brief Mesh Iter Flag Count + * + * Counts how many flagged / unflagged items are found in this mesh. + */ +int BM_iter_mesh_count_flag(const char itype, BMesh *bm, const char hflag, const short value) +{ + BMIter iter; + BMElem *ele; + int count = 0; + + BLI_assert(ELEM(value, TRUE, FALSE)); + + for (ele = BM_iter_new(&iter, bm, itype, NULL); ele; ele = BM_iter_step(&iter)) { + if (BM_elem_flag_test_bool(ele, hflag) == value) { + count++; + } + } + + return count; +} + /** * \brief Init Iterator diff --git a/source/blender/bmesh/intern/bmesh_iterators.h b/source/blender/bmesh/intern/bmesh_iterators.h index c687e4b4e7a..1361a91a692 100644 --- a/source/blender/bmesh/intern/bmesh_iterators.h +++ b/source/blender/bmesh/intern/bmesh_iterators.h @@ -117,6 +117,8 @@ typedef struct BMIter { void *BM_iter_at_index(BMesh *bm, const char itype, void *data, int index); int BM_iter_as_array(BMesh *bm, const char itype, void *data, void **array, const int len); +int BM_iter_elem_count_flag(const char itype, void *data, const char hflag, const short value); +int BM_iter_mesh_count_flag(const char itype, BMesh *bm, const char hflag, const short value); /* private for bmesh_iterators_inline.c */ void bmiter__vert_of_mesh_begin(struct BMIter *iter);

=jt`AK?I~69sUtn%+(5}Edws_ly`wGnwTcY;7fmITHBUc6-!FjrhO*}B#S8Yeb zfA4A|_eRM_+h4m%8h7a2=u&9KZeGbHyR{oX+VVkFEW?9C@JNdI=YP;-i4{w~{q?vr7c0`Tb*41D&y?5)h2J2ZWwy&2>GmBcrz;#D* zP^u!{QSw{BgVo=hK#CqzaNY=3f9kFNXoLlAzK@3Hu%rrJX0;WTWuY#aVe~ZZ z93K{|S0ZTbM1c?^DU6os2#)3!o;(_O^UE84_UUWxj}Oep6W{peZ?fC%_{oocLaCKn z3au1k3_N@9JrF24qpjdY7{?vn_3f~xL=oQHyyD|e?l??)#$949f0@#ZOof7qkyJT+Hne>QQXZ@X-)BHa6i)b4K= z-CNRZBhJiAVL306Q*}C}=^OLD;3+ZO%E5b3(8vA5Dee)Pxb;f1%aVqjr6V(%V+Y6IyL(_nX$! zDtHo&H&3^RxF7^?7|S69*3%uY?@lJL4-N^z(!{M1#)%Ldr{#=`k*8M^Uwd!j@-Wd| zCv;^O9lJwfse#inFjr-~+>yo+Cy~>fc{2xYR(Nqe@?(7pS`1-_B4Fc4P zQSa=?4afv$MeEkGV`+V=KhYGn_G_e_dML+aJ;`Gw3RyF zQYh@ECwK`g%LCe#_rCm1-uvJsV;XV35n4w>w^fZeTB`)-8AhQy`+*Ldz^996N+Y|S z^|qrQHYS0Rdox2;eEao$D`tuGZjN+$n*|a3e~Aqta=G8Llvhp1D?3GeI*y{ORXB9M9BTxj)Vv?{3+TJ8tgon3pr!3e#@S)8{X#s?<_Y ze=Ss1LKunN>RsIr_&DaRnWrf2+xJeC=q4j%NrKtfaP$5@{2yI9<|mA&DKl zn*>5KWNWD&r_sWP@qr^*@%ts7l)St>0TG1G((d1>P&AD?{8t=)^E`e+ZsM zJ<}MN2BYJ3ALver0utQz=ZN$zH|GT(2D{x4durIRR{L+WLT;UPt*oU{N+Xv_&Xtlo zxir?LGS8KDshrP+yZbYz`+NEplq*#!OC{%K{_nLIw5T>}Zr1E+-455eeUUk78!fWc zhUQ9M3&)2OWnIt>7oN6DU~eYSf9hDPrK|l}wu46RzxwOH|A!samRvap%?$)k$(7zJS{3g`swTs) zGaxyzt_A6xAvh!$7bSNgYDc^yH)sEkybye2og1MyyAksiJhK5;nr?z*w;Wi9lQxygy$<&GzhJ+3{V>jT6+G9Fm!Jp^YX&&}K< z-qt3YYsX|aP7!T{V539n!qu>&$xIOYd$ajP*3$UNN1yQVt5;0vf9G5uc8E_*!v*8; zK$FTwNac?ce%3 zhVm2AG*NY7Eh`nze}|vG;>SP#6c9oPv{ulZxp?%Lhx<3U0MigzmcZ$_m}?!`0y(fh zT(G}75NjhP$FpY_eDcW+H#dd<>-Zt}clV4gaf%~ND?k0&&-wX>zc2-?2weg(?u_DC zE74*;?9v{BBlqn9(Uhl$1J0khdst~zdGqEo_7|B)7uUS}e_*2bkJw#Z;6vn-PkzDu z{R4mV!|(IWu`vw+t%C27#cjRj>Zh{D=Dm28lFtn9$YZrY$_@ z9Njfey%Gn(e_rdA<6($h1LZ>e+Zg|AtfvOb)`6uj1 zme~+x`#62Oh}lK1w{AXmyW_CrN?TSNhk7_R$fs(Dr0zDOqTd)_-TMFAUpF<1Ct{U2 z%D^a%?q=qatQuS@$8Hd+o@bn&@Y6t{ z;4=^h>QZQ~quS8s@tO&1V;u&@J|KP}bg^rWe~SOYD)v^Hs@;^8TJ6N=wl{dZqgC5; zHa7ma+FccKsP9N=sJ92S+rTN>w+H8zMyzzAw_do};l%KyBqT<9wdQ#676R%mGsLYP zxB1^`#lm%L01~IPO;GVxuZnmSq18;q;a$WBrS-a@WyN4M(s8X(+U9w8hWabpH#K;N zf4E=m@);(^6d0Y2lId|f_$fViJLF&h9t8aM1Beq`Qawb{Bi}{+9pr zr=M{B{F*O6e-95_UR`n#26Ry#?(eAOp40h6b%|Yd__#p#MDM9s7hbU15;ZpDxKnH zd!Lb!Su4_D2#(5t*38@%_Th@)0!1_4nXfv;4#m+*3xNoYF`-6(cA~^4E+M1JfRkw{Hz0~azedO@049|tkI!3T3H#pBK?A;tvqsJ z^HQi0G$j}g+Xo~za&3gU6Vrf5Wqs)Mk{BOP%+hFWg(=dPU?4Ep7<(g33BR>^s)M=+ z4x`}Z3ZsDU8STlC*`=Y;f0z)0P*M-=T}IL0>T|#9iqC!I?oA{g?+6s0Jh~?CcBW!|+nSUA$AaAu#{d8z z07*naROR}u?X>?2C1b-!yVdL4RQf}K`AA+?V$V$1SGe)w3tG7ye?GUW-rE(cv$p`Q zKvBO;-KGLX+!qIk(rt}dyE6C23WzW0x`1!=0@^&zMcQ0w-e6=+Em%6pzDNn`vCc5=Dr?Lw-UUk90Rp4rk z$$6PsE2L%S{{Gf>(0^U|^zJo3{n) z_7w0skb}(-YkkA} zJ}=wd+RiEwuCA~7C;#U+c>4Aue*XQZym;{$eYdmeigR3^UoH8-=D%pginN=X3*LM8 zJ*MHnet%2qJbzm~!cCcZ9%!W!QX*_Rf-@_ot0O=D^b&QIX&Mks~3Bwlg3wm{(atl zcFZSI**Kv(Pu4~zQzOJ&K`K5uu0DFf+0|=4d-Vcso`2nX#cI`4N5T095u*3>5*E}$ zA>)?mQlM33zuz;JMoS~@`huO0q}_(~=7>ISC@rJW5v5S(2}S5!AO-te9=SEa1&S-^ zXqx#OAHP?++&DDb^%vjhd|=AgL>-cQDx zkBggSZhuJel&T#1Mwn(KC{uCBTqqP)UEy|CB$(AUxWHTnT6XwoT9*(jVEGt1G-{`u zgdX*QHWggz=n~9bWokxM8$-d>juh?l?g|7EW|Uqc+Dz2wL&WC_UYWGf<4`TA1e;oU zp$|Qs^Th6c_Q_zIj_gwE#gV zWu&-D=grly-E29uTN8?hk#WAp*F?s`t^{RnH#i@N8FOg4$jy8(eaKyeD6K3^+@*cf zYJVzI1>Xd9i$%RznWV0wYG4!FkK4|?;BXR`3~T#d_U-KAc4`lXPriyzG(WDH&9HLaaCn%criAh8q(N%N1r-_Jj@f@&6-w~ z7(M6b7yR%4{NM7)%P;V~AAQJge1Gk$tose??V9~zG$!~`@Tr=8?&f;n^3@sZxZ$eo zp(!y$9&UPaJ%Q?oLD_5q(^Lpi*k2sD9cS>BTq;AE@gh_y<=S<^}~;t=fXNh6MxE#OXgru z0a1T9ue5kml7XAujFiBfdUmPe{DBaUXmiDlnc6wq9gAt!#X*q`Dvg_ZAc{j*9ZWM- zAr_%_72oybLjh-Li%CpX?0*Bq7Vs{Ub4P0j$VQZ`tAaR3(LfZz`Prr;`-+bhPsdni zf;yUuv;du}9QKZ_2X{L$4;8->G&L@-8gaX0Ma82`sz~+5LvL1As#aQSO!JIa=*pU^ zjW$&_>p%-0CV@JD1Ry3O+}5RscKph z=M7XM_drpr3bmSbNVs1wxvf#Lm{NCt;28mHB3+~J!_S=iF8|)YM=?#7t4hn}^zy;> z>aH{n2-KH`eG|V~?y;C;)p+gdYzN@X_R$tBtoJMm z^94537SE*G<xH{7rhCn8N=~SVeRT^{!DBgoRocloZ7-HGgjxe+afmi%#tV7jKgb z1H4nq%;otl)p@+y4ha<`fh0S`eQ;>D3vitR;tW z_Y?3ls=P z^u{g_0xkx#%YRsQA&6tUJE31xs=Ljau3O_%Ac*;ooi|H|w#KZ=_5Oy}=Vu(oiChj0 z`wMPgokPn!e&-oK|K2YUea}z^TIhKD$&Txb*PNYQ69Z@rcHlOLcac6uR(;QEvmr%$ z9&tje)eeXd5bu}0c*3a#T?B8r0x?CdulIcV=^3f(cz^NnC*T9er#rs+@BV_Aw0T&#$Fmi9)A-GCyg&2EYUtS_*NjY3PHJ1eEh3o4Z{_6Wb z=Ir%r-hY1hnB*fjR|j6c_>i+tKjlXseZ;F*mz1hJfA)}H`^7Kt&gqs9KmLgCe)t)~ zG=VB}EtKW6HCM}WaMe~gs#YwvMG3y%cAT8{9Iv+=ZMSsN*zO`}6WDBzaK$WMO_aD6 zrfIV7MG6PKMKnOEC=;8wGDuBS;-Z%c%~BQ3`hRFe!8B&5N*`9svr;V=BCIJ{3BKW4 zglR--hu7uYBiRl*S4uHQh&a&F=+vyNnI)b%c$|;)Q(znh{G4&>$?8Ephv9}YDRUkP z&QYtwuRVSA1o70ONK`@>DARG77+hbKStg;o@%F;jCP1hc%2CShWq@w9x7Mom&~_U_+>1w%Ux4ZB*W}7F?n)s=;Tc_ITZ$-$ZoM{&Jg^} z)UvG#O2y3`)8NpMP|c8?b^p%8n3?hjU4O*8MyV5;A*eP}edEw*t$3>@>aMD&h>fX5 zaYay9?O>Bd%p(qmxA}=Sw3=n2s;NY6$7mfPZCSl9@v8!OZ(@qj90gC4hSW-(vrQ0M zu+AHs{kCc>T`T7s>g*wI>d@fP0y$@*L96i=6GL;RdB=NvQ*thpV#Q1B4R+%QxPMwq z;a;sP_r9Ud{Lbc^ueerlV%SBm{!Pw1i(RfdB_@xbtPrX>+oc#h!8xKAJQ1(nJ|*6S zL!VqWVyrv}E4+_vl4Czr((#)2oa4Lag(k4+6K%EQ@z4J}?;LM9do^(}dmawAeDJ|f zsLp^dPK_ufb#XO_Rr0|>(S-=boqsUV+2y||c@+cjR24#4in3~j6IkRqvrP3S14avMhKJdevzlk*omIeEmB zM~`^t^Iu?pam9-tpL2V2Yp^0QdzDKO7gr`5i?-|cb79pdrd;U8i9QDQ^M7m}@(`dk znlz$xlv)fV(_qdSCE)f0-Fn6C&A_9lS6pA7akx2HBx1=_%}nD&Op!=nZk4G`oSf{q zytrU)(Z=&SL&?n5v(F~htJUB}O%?H`24)c2#fBdHnc=UEtzUkWtc1HSC@S7!S^^EDi>Fm zG-qPcX>RPc8@}`l&xp)?^ufnmT<&>!Jy=>9-p&d6Y22#j!7N`Pk#ggBd(6WJN4)jq zgwwZ9IbI8=CjrqF>)k_!e1p_XLn$Tji9hE2cBYh>I_xP^Lpoc>`F~;(ZkKu_4-9I; zM2C>6l$vQe<4dJXg^)H(b0gPCkjBt5+w~TuqYe!nZV9nNvvJaqXr#O*WHN*qLZXyH zpE^Q=Fa`EZ7E)AZ8jctf^PJJ9gf0?f;<`D~%|KcSx?Ll_C%J6&zdYdB&{Yq?&Z7{G zURZ&!?wO}X?<0K^T7R|ZO)miv&pbC=Xaw(=rcCmlT!gD(X4^%Q^Cs%`4)Nyj0n>7M zQESYc+)w1HF1Tqb(e?}X7Z9UXoTM(^>!n+pT^F?g?tYo?4X9&X;>!yf8!elDDgebh z$_nDaQKp$y@9Bzi=>jkjH-S)<(q@W}76MchU!Zu8=sJUgByXk zis&>L*;8TfElzyl$u%^qL1xq{NdvXmKD8~K_FbBnie)ByFTPRV_C?MH8r% zY61(T(Sj^;N*fKMrh+%+uyx(lWvg_G31=4FI7q`aC8%d^x&U7qxmJrftcH4ZPVDb5 zaGSV{Ppk9z=zk$kbYVgFHE5&037)9xn3u`IvQ9-X9f6lX=)9@Nog+F=af`WsG43~K zmcZJ~7aBxBE8+v2er1BDBVVdXvhX&@K##orDi-aFDNLbt)Yi1(iL(asc`+HkpXJ52cK zIgA50HzWIDpbHmVzC34~_I&Xxzr+_l|BRze&v(C{DboeH3WBim!8q8R%@D?MhG2eh zQBU3o>woo%oio~6E($u+$3)+6$gMKYhc}|lssr;haM;0pr}y!_{&q1*8v#I;|D2W`CWGT}3o=dvnQL8Xwn>aYC@PoABShZ}A#NA?#7e)!^3{7QImaz#jiGQgw9$Gr9AEuKB! z@_+3QU-IL>{)CnG_%+lz;=~i&nkpGr8_sPYXGRAp2wpRhKov*HBf^TLFeQg?f*WN~ zSPQ<*rl1cIi4*EpL5u#f)KpFrwdY-%yWY<-P`4;EUQpkPu}O3 z!=^3bbcvq5=g8HiV2=WGu6XrKWrmuec&ggERZ_<^RHPQlIKnj3xeYzaZLK)JB!8F2 zg^D@NXjKxPdAg((&pIA44TW1V;b>nSH>EO^!iq|25SqUex_M~DY^<1%P8WJnb7E*g zTYlT#s(M0n)(tF|)0}OOQz$r9=G@+R+UHi5Fb%t+6=&6MZFm}`RYK@+1*)%9weB(( z6LzH}cmhEyO&Y!`#Wm~Dt6ErrQ-8E9VHCQkK}DI2bzxllqJUZ3oT^dnP+HAabcj8$ zp0M!gm#w?E%eSeGOcBrA%oQ(D-bA!YHE&|-Jmc)ClsBsLxnxoZ=E;?c?>ydF=J~9d zIyH2TlzvHy^3hfjPI)3@_;= zLW9a|owl~c8X_ic0>pQSQ%adEh02>t*lAmor;X;k9g1T7;#QRPcEdZ*-^S(2<$Q%U zh`kjzb7{Ya!!)5qxt%9&hk?U)4#f3_qc6UX ztJgeyv}L$d_VZ)~Ban3_xqpCbjhH+x2fS9?$}!ER3SW7lJ33)%Gc9*Gt*B(CVSr*n zpD7n=HiWQm4hezjFmZlm=Fam;DgeJdI)4^)n($8TxhRTs zl{W72F>shi4!76rj*r>&9s9#<+;XkdDH|VRv4utzqW5%t;QD67c~8J|x;^Id@`6A4 zv+pow*c@$PZtSOttRpQKf`AJhN+pD3Fdh%T@RjHM;oti`jvsFM_P72WKlttkbP_p! zc*5qv5yw5e{OmP-w|~X?Elqn$QQm$S`JG>R9|wH&gAa)avGa5;FneXrf)+vhO3f2N zqv=YbvuRnbG!3lQ(fAjKj7uGCJNiD-7;RT8jY1%e-U5RX_~`IMq?gPTMznOMu=m9- zf;(LFl1Wi2ti=lJ&?~bBZiYP%!%cv-x#3c{QnomX0l=v)yMvQ~n2*725VWIJ!qs#iyM zPjt3B%a~JlUrqW?FW)7Y;y#OoyD>nk&8DsXej`^c+@?UO2$8^owssymXhUI|3$ikl zueQu>sbbAgK-#aRikG6b*Uoa*bft-z{&^9NeBb2dTQ*D z!$b&28}@y$s6cXx7#*RxU>;p6t{v2G`zX ztD6-~nXBSsG+2xW=OV5(J5W&*xiknKa&6SR(MB~!xPOnPFczGN+Qi|4djm0;v+d@i zH#RkDfi1N)iW8y}eDHRGF8kVoMcW~clpGo&vUJ%rN5AW=|F46w&6`>N5XGyYvnltz zKyC$BY~oPojEZ9=9&Lp}BnD5-m8&t*LZFL^=1K@_rc!y-Ibw7~oq2IRQ64|%VQ=xY z!9$xeuYW)M0iRqAsP{-Mxatf-;JmTun^Ltdw5Wx9@4RUXywKF%k2?;3Q^ko90?l7~ zH;^zk`xl=+;bDN6`V&XZGT_!oinga3}}t?p&G;isI?J9iLyen zL;XY_67N5M#^ucgFE0)TPa0>kE2y{KY%LWDkvwEVsU+_i^2}5!DR~%YBnD=kxxBr# zAQ`EqN)^X^m=~{awSBYq^j)A1nSx<^1*08~)p2=sO&>h(J$=fDkFIH1nCH3(k^(^u z$A4O8rSDComQ^`Qj_a#J-|u+u*%Q9={U301GvL%S)oP?gOsU)~(SqOuT^E=N%y}kC z#Ea)>Vlic_Pmg%sKJ!ms|)m-xNE`HcTJWNV z&GbT%nN{eZdFFDUln#7msso78BOBmiq7o3N_*%h7DjvrGTBs5Yn3FxOdYV_pHsR+L zjf`tTT3LobuEo}eKG5$1?LrNF6&hto^kjTkF;)j{G>tFs$)O(7Ih0%1ly%qPuufjYA?m48NzqY}1@>l|oalsF z9j-PM8QEP4H(nPU?>%+ArP1o03rX&GJYMZ?@_Nt7Y^NOM-iOA~Ul zXEKSS42_a!d^C{S#@m`_UuN7U5`V_TGzzI@4rB;{ZP+oTfSWE!HPNb2BokA@51Fw} z7AmHJMz*k+*x}!P`t0itjOp&JDm7}FGrhjM1I;v~ElFQX$chR^Flm(-ZMVH}UkTm_ za3Yqz<%2UXw_Et@-bSest!fBP2&!-1h~RAJS&OlYop*~(%@p?{rnD6?Ab&v1g`6AJ z30_U;Cc$=q?hXQ@n1{aEo~b!|Fr5!(YFozbjinl0#GN4p)Z1(Cg5Y->PTzXM(+3-> z&KxGiJ0V7g21UJz(2|eTY2fnuu;6q}lORqA5^2rj+>958*Th>70`Ki2K0CG{(8b8U z7Q_ih$2*R;g5N%;JAF>S>VKim)LQ9Rl^=fpFSxiFs5M)mh3(LqtBbwRx=|AV>XPjq zt#TC`Eu)5{4AC!9m-@ySB8s6X)$!o?0bl;oJACg)FByH}!RZm3-I}8qxw*YHIE448 z7;e}(Pp$TTHm%fUA9@%LHmzB(!odeZ4EBDP%B%C&T<-^hI(EAaMSm;giOueq`LF-m-{rsmAO4U>r^kHrn;%&wwVD^- zRx1Xq5NXWQ%sghaR)%rHxx{LIv%55O5O&of*f8 zCW`9pd1=*-_#>yKk0PZL3u&2D{f-}?@2dw+d(;P(2GRu0w>RjAF*+v;tt zFy2;L4|#Bijg~M#IkSt;)lA+DH;ON>EaD`7Nh8FcUsh$9ZO7gPP4H`SylklyL6%jl+zSv zb7xc{J}!IjYSnJnEi8L+lrp~|3px=b1(I{7ns;J;`%X-B)*Pu5V$1C3iJTjqSpGLv z@xhy#7f-iJTwdQWPG!k@_oNVMEgSmQ33+bxtAEIEynoEe1}5i`E}~vo?N%I}91$NK zvq`5EeahLv_Ohyx<0p?9U;H(H^}WAjf0!wCCdEh$7V(u^rj&{n6Kt6q(V2?fFF_Ye z9BT@~I`#Ca0}mye7^t<1cv%EE!q2_`Idwq50tz(CKfKX zTYq-=HeR#e)1u-qtpknL3ON^QX~f{!tU9V|Ooz<*iZthW`_UTJ%FDAGYOzAGwrbDkvNLBX45D*%U4IAa z`07_a&ma83@ABFC8UOO1eUo<|p78GThir~JcBgCnZ!pYVorwUjPFq9j2CCf>^f6pu^3b*#4Zqq z5yk8P03ZNKL_t)s^g-v>IMX(M2Xfxhc`>#c`B^MB}BfiWxd zI3YB)_jo~0rBSAd=#|yFf1~yJnLBl7-1m8&=)JNz+HjwHgF}VO%Ugzm)hn4;9DV0hbFn8uNLE`Q+6;-$fp>x8Ji z<}x>8jC8AnXyNASc8QS{+uM7aQ1o3yLgc;28{RpFIoqW{^sK{%2M>-}pFBqdLce9G zjq{R_DbpQ4<=I<_Z~f`N;3uDbX2L&R2rCPX2ohZ#N*aaVBF_Ge}>k-=}yH=U= z$UIM!QkIE=iG5fsgMZy>%g;S~hx3~oswCch`iOD9;n8lz)p*18{)Q=Mv)U+&<;LLw zb>{uIpHJ|?ElVG}aLgW7ELa7l?>p9=*|HA9fwS{-&i6O$_XoO_nBZhOAf>QgAF+A( zh>$!YftF3z@!-)h|J5J;4!`$Dzt5*X_%Z+E|MbWF!+-P*et-M7zsk+UYku_cxs9|- zHOm;nJdI4bkyeRTEm)=N*YxWZ+H52%PFVFl^E@-o11SZ{vYVgh!9qW}4JjmWvY;h1 zr4(qw>FJig|M&kMj~;CK(We(YJXyqX%>;>fXM5TRWwI1K7ogQf-vzuVuP!f1X+w-_ zY7vfhJzsqPlz*HXAAk7j4dS>pvz_@E>H3Z7D8h1C)Xe_&nv1JFULr9XqO{gR%^7M& zoFK^&VsGPk@A>kV-{lYg==XW?>1X_d|K%U!yzseqj(GOYF}nv3*z8uM6lnW_zf1Dmw%T8-%;~SX(Qqs!3C;jyfiXG zogJeJt&KEUG&?>~LctN~x)p7CwtZcA>=K$WDD+>CcH3%I!$emDe5iNp|W zYLJ2@UVjEPxC}yzHaU|!0k<}4bjHqS5e7HoVt91~>CE{O1KZV#hi{$QW&g99A-R1S}?|}*38(Nue6St27j)Qvz^)Ad-^QQIZ&pN5Cb9`YTgrz z(rYlG^=?JJ9T~@o0M>clac`wsPPo&*>0h?X_)XGSvZ`1Xa!Ga&gN+o8ySp&c+v4>W zF*RqiBV2J*x1<5NfQo@KoSLwwG;bZ9HzAk5yN8x^sOrK(G*VQFH_%QKv%w`pr?eXg)T&cM3gxTG4 zvKe^0bX?I>$}Ruq|N7^A|D*5Q;ZZAj%70eHM`dm^P3J`vXN8)h8GGNE2oP7nLzh-) z2@LhdM)k|M)**P2C9mG|bI+d9%E*gPUb207%Ee2_vZA1bj*{-k69flQ-2wV z`wgeZZ}IT)WAMV-JAV0ZeSzQloiFm8Z+wGSpY7@T6)#`z`Sy2y$T&|HWTg2HSAYu; zQ(`_0WqLE*(61s|jOqoI_n41=a?ba@{bSyF{+R7EKsLZ*9z5^(($yue&(0a9JzaoO6Ju^jDD+in&f~L1 zo~pC=x9>d8Ir3Zx(r|IaXPZR0TF5zr1k`&p^u#)%*%3Rp+#em(LRDeY31x;vL}Dd} zisnYl8)O=g=os5faJH^$Wq)Q+Wvohy4!oz%ozNLa zlHz^Ac@F_+T{RE3 zllueDG=*9!4s#*htB|eP&F&Uk+kIZ>f76O5&NJV!^PNMBA}&*FMSp^$&J7)_S-!p?hVpqKkM!PX-jv#uy&k8Q_M@nHD#WQ3GtSY z5$_ukgj!6TCt?X(!GC+4v?b9=EUHyNn#UouW~^@2C9B!l3k)v2$xt?Xn~m)hHBY)T zAnaXmf#K&W&M(u0yXZvkz?)^mJ5L{@3Gy&)KnxxU!A9K6`{nDxZg+y0g+&~Mm^${? z=bT;MQst+DJ{5QK3wW>gRS zB$j?{RRKgul#L#Mn3uY1vNO@fG#JLWxql@%L6uq|=V~^)W#1pWo>jlXImd7qd3ANc`RfY$?fR?0FwEpU)Ab#F zGH!sQ;$1=l^f6JiF_sx8-V&&?dD*8S8_CQ4G+(_@mwyX0*t#bd+B~!0!*FPnNpZ~N z(exg4PV%)>|GPC60EUZW~E&ZF%ru%Xl+Tin4oa3+@Cf zYd4%e*x*~{)1SO#IAqg?s8VDC4bVK2j9gcnV|LJqhw6=YE`pOp+^ujp%Weq5CVC2u zsGzwpYodz7Ma4_D;3kDkLux=%Wh^ka5n5$KkAFnZG+DRZsAw=B`H*iZ4qUbK(O3Zn zfJxh)>TG4fddE5lG6trgcpSkM2pw~^l*hTYB>-ztgQJwC$qF$o`WHiC*9tLtBSvE9 zr8u)8I`2)daI|H2d~`3D?=)ueG|?x&biMbZAfLuUo+tVg=vMcabv`#3hnYN2touN> zUVq)|#eO?AF0QW0!!30lY`s~sC7p_(y(f=~D-EXwDU}$NLl|h9;MVNXP6kRVIC^As zbkzbC3x%2tg5=aQ(h-&V zu-w_KEP}-ncEnl4;NqvRPM0ZzyrJWXcQ`fQbqHqQuFcZYa3;EI!7|ZNw{X(UZseVH zwtce0G^L0HZ%>O_@QqWL=L}v@yp4WCBqaNQefHTaUSAJ((2McIL+FU!(s`uoNPk`A z|j27RsEtx!!YqyXP>@T<@>BKAe$yXsqb_74vY#r>|b~@4o#p zb1gU*c=hUxi<=u#-w}f6FzhL%;;N%G6I!mf8&j%#mhojFh@)m@%oAzdA%9vasS2FZ+)4glYhYf{J;JyD#91vea!A;L+k`C@apWq+1VAlRp7mM-{bAm z6HZSeM-SHcKENu1Y;a-A(SsG`dL(*9Ru7g--MaQwyy1iIewVQXWYbXv$Q4Ioti_0O zRhZgDj61YINSTR7p^>`8YP|-pXqzptNEKfr8Y7uTcZX6=X`#?91%Gh$;0x7FL7u4^+Ian0#RqRu|YJZq$W#VYl6Z-yMJN4^9xj4JzaQm9j+Oisg zSRFMt_POD!5JI3~EDOz!JQaKpa#5V0m|LN_BU)6-v`1s0s!}E6eKQnngIFhAc8H4* zD(VVk&)WA4nyuh`{P^kDaTdhlRNe^XwAs#Cz=&6O<98Li^nX?CA1}85xl^1wZ-N$Y z%yV6`%oV^J4o~%ts^%>u1);S&YMTj_ta?}y+{9TbjJPE@et{n>Fa#&EB+IoWUw84+ zt0jDuQVgcFjI!?1$ofU??6IPyU^&S?Ebx^jP$tGeaAN#+7p!Oq7O2rmfeu7W9beVL zQhYS_bsZ)?`G4dy_J?e{t`I1-;(a6fz!3dKyVx%t@-fBA9FR#w13%FC=S6dJboh&HV{wWt=O&B z#MrS}b*$FwW$*4y&8y9Jqu7eWX(OhN&30!R4=*-0_nyu1DaX4LQb&rhnPIsE27JhD7LkYB9yFDg^N)muQG-ILI8Ip78wHd!(2kk4)2ksk$>Wl@tQ2 zzK7;%ll@LY^azFP!!6zmG4x1qL{+-z$)&Ns9(Z+r;JZJ1!ROw2z*oNbE-yY4raIVe z*(-sBBQJqQindHGnOcj{!UTNk5SK{(idEO))PM2Lv*&#N3y=8MfA*KWytw80vj?24 zI-We-@ZQtM9Pc)4j}wpH+VJq<+r0PgJFI&l#;~|oqQz&52NulgNkB@)ae#0H*z_xH zB5gY7=Jr6VjocEdF`YN*zXE#AC0et$KV>`Yu``n>I8N7K9<&ax2DjDOtb zv8-e7WwEOT6IHc}HX%4iR`({O*K!WbQYPLm@>UHN6MR@MA!yBJl6a(U2wU6jU{mltj3O~(p}X6?U?M#o}f^4ryVa} zU-97aG0&2sA9qowc z@c}>mqfeO{^d1VHlp=je3&vG(VMPiN=agPnuhI(zW18Ql?rF)3^?$K34;FeBoHh(=X`PTZY4oo)lv6oUDZVZ{8>LkGON^F?Tk1 z`S{aM_|fvPBW7v}->>!3Ev=ziUs<+a_nS6ls#Z8Q$xOxg6ICk|VZBT^ zvNU3Bl%{m9BS?nqnAVkPf258AWhA%Ap_mKoSWN%bMNf>Gd1_qG8D=0xyv}HWM52bw z&2$6J5gd#4%eAEocCV}e+KkaIHQ<~sG%ur)S)8XX!G9D>buU)^nh0y5vr!iByD8pP zErg=fLQ~t7YpB+7sA zPIo&V|H_9r+4JuBn4A3o61ey9l)$W0|CPn2q@cs|+lqA5jZ zih5j~Z5k2+F?eD)wOsU@BRLz7Z?o;VcXG;=tAu&xq8JnXc)a5BaKrZQU8F?Dai&QJ z4z7+P&p!W>^UWi=)rx!&e*W_>$gLv2qm+qb85vq3B6PkZtd^CGbGTY*DNxB!8sfuO zj(>t&EoZx7+=NmY<{955Y7=rD$*qt}VVW!J6lqfN!E^V{36CHBD&KhPLq7WW2WYZv zaP<+ljDMqx%;OBv)0_|mR$a%le92r2o3J6dju1Oq%uHD+hl$gZQ^YrReaGfBLJvRv z{F$l8%S5XKwO`XY!Lep^2g@#Sh24oK_kW2QB_9veG7)@4FfdX`JKjuZvt!1-}-glyH=h){Sl)IDZuPI@>q$;XcyUZeqZD)z4ue1yvrxPP=eiQWh5lf8X;xsR1A4u8^@{OoJ}vQHUh2CoT4H~^NVPyEq@46^P;z9 zjIP=YP_qc;=4#$Zx3JJlsWvjM<_$MmVnuzVDM*>n5SQ_;5S{tnef4I!at&!h@HQ#9 z-60{Sde>Vqbrqx9E)SC~);aS-o5)M^wCsZeJ~UcYN)!4hORkIU%|o&jr&5LF9V!hk zj(HK{rRZsk&sfzFVqhWH6Mw|Mrno}#Lat`9vk|sKT_W}?ym#iM&m*z#(6k|T3FlxN z6Z<(cmWjE}yqqK31bwHh?mghGx89))mwa>$*F)nQcOLQ4&%VcxfANA=7s$JUTHmpx zO<_n<@7e86*=@E2lxdn#lw2D*&uD8jia~lbq8Ny!)`B)6q@GRc5r5a1qUZc<$8dAx z?!)_>ZwCBo$NTR*~jPJHfwrPE$v89ev-^%0wPtvO0g0 zKm6ezb9u41m5*ek41aV!LM+hC_H`=^m0At8Tb8`&jYG83#+jjHyccRya?MDCah_={ z6RIbplsWV0-YH-I@F7oM9{9;mp5Tc%QQmlXmp}I#|2#L>d!D`c9Hg=8{eqi}jBR2T zXP_4~PD4>Ej5Q0cR9x@LvB!H)=M)WAbi~Axnpj!K4bPum@_*#%g|QcCq!0~+BN;E5 zgb*SeXB+FMVC#gi?rAmR7usK|rVju3^Dhvc38^PL2(9t?izC-J6Fxb9 zu_0nC{Z+r>I?uRTkvLMz5p|hD#1+A%XiKGo($B!zFk8`N3Re$N7r}+*IHc53_&AnnuJygxc zW^x&|k-c+>kL03szM-?N2>-MfSSgl+U~s9|dqFm>1hMtu>!it*+9<7%M3L}%!(1{@ zh6$}RGG-%;26KzWmEn9R9L-J4xsgQ3p=X{7O>E7m99gMnoCRq{1Z>WuvZlI9(MysG z%r4NzOn>UE^N)ScR1HNPyFiI+N}EWcgeKOFwJOUV+qzM72}Dq}%FlUNa?Z6a`X;fC zciDi)6Kb)8Nr&4BjY$G)F@jYr#ueP=1Y8s>L1#v#T|2W``1`Nkh~x zqB{Hk*4DtAiX7L-#WJM|#!$CkmH_~?c_cc6I)5}{xw{Z(Qpl~+W+izGLTD(em7oi7 zBHcz^8h5(5ieCtJvZ(r}Vv5)xib`d7c8BxRXMFPcOEg4suB2ohMK6ICJ$VeIUXYgA zA140jvyqb4{0kqvL)S&LZW+cKhR{;5L`!!5$eog z9Dg`YGciTH3m}m5Y||Od_|V})umra%%&m}8WVh`obLMQlGe(p^P9y#Bh zFoeJz;K{J333zqXQkch)Tnxh%H#^SG?te1R*USRZ_e^ufrASoBZDy(iwKYyQJ4&0G zv@uQ@6-OT}RHBrMi)JUu(?}_e=)H~FTf?d6I8C6QRf;yDsEwwM_ujtCzxG#uoAa~# z{LTO3zvXZLuYbU{KVf_RKHHPK{Nk5CFsr9DLP!jgxlCNMyyqa1+@K4IGFOiK1Ak>c z5WOR$HO&W_Yp4V|phj%Z9}4qSxx5(p?8z0!y~q2RT1TP_Xq}i#rH>8g962kFijzcj zGY%p3JvBFKR;Dr$LyzW}Rx>`WpqhrIxX9hJ$la42PoEw5!@u{(yu7OXAOH8yskP7q zm81gz03ZNKL_t)oJY;JU)CqM_ZGRW(INxlz`}iE`VBTlS`Xz_CF?|Y$Q- zs}6CHW@QeZgBIgP%nt8Hy3Rz60na=QW&ou?TE8a@D?)VCd1j>HS3;CRZVe3+F(i)j z5pjWBZJnc&qf8YSpvD3%G3QE3j;M{`0xegvcc>G_1rZxmm|8?jCiWfUYy>{h1Kxi% zqy)<3Xv?&*9$~%nXqX5wG8TvS39m+e|Eh5F3n*B1e3Lw(dz@2}5Dl6~PzV zsT+z_am!9t+mda*h~B&a)o`ztY-Ks-mT*;V%uyWC8Oks>Q(!x>xJdLiB2|CBip{Z! zgzb}10@eJN&ZA-%xH$WygrlmXE|wF+x7q<3T!2>W^Sz+X(RnCN@%RNmV_4QjT4%u@ z)mijnZ42qkQ(M7%rA6EKYg2Tp)F33W0--rmN29jatErO2kt+;&V%>GL0y!x`ZNK@> zy>p&EyZqM5oI3sWM{eXeZNMvkn_CQtOTtlU@T>#wu}os zh_GI7NzQRN9+4)9^t^oelGUas;5kT!R{8YFCmg2{vQlg1&YcI`Kf8a=kACuf4%1+Y zac%TzMd~88+1|IPQN2nj%)q@jA9A|ga`E&fs+DQ3G_Cag1{WHKt0VW$);zzsHh74d z9jG+nIE)O#!PX?+A)4vD5dD_J)x_cKK;Lzw1lLywrs2R)GI_3y(?l0L(l)S8y=BQ` zj*1YV)`>BjhzyS2aFDvq}XVij7q-13rGObQjCSqLS*FAj` za*Mctjn%VKyh8Te944M#9MD`5zk)U)OIT5#0?BO|h66r0w1R(kLKda9Kv1R31R@ z_D9brpH&_|4D{=SIJg;}aeQ&c%|G})=Vw1)vp!?i%)V8kdO`vwMM}o43V9S#vona4 za2a~EMo#5R-odbD3BARifF&qk;u1CWe#lt2v zN{hJA$Qp3f7!PG`bhj%!G2KYT5t7CF))|s>R4v3{XSaViM~oe^yThCkK}_81+S27? z%#7Q>p<6;7w|n_&@!3tA*^%pV=Fqsf8rWoAP~e8Zc7D-Z=~5gl1%mvEG|GR}NI#Dg zwN#p0#MrOt?yZ$&t=JZ_=xg?;t7*95EE6MVxeu;|;EQ(&ipp|H2y9 zB5er;XbW{rmNAGJ%dmQ8sS8QVqiVu9b-HliExAk)@@(au_(sWX$?$gO-)ojo zDnj&P7qi-7X+YQ|I3c3-Ub4SAaCLpj)925@3lHx;;O&3M_u*?FFzyF#Zm#*{(@(hB7v}vy^l*7N zFpVIZIZgxO9ewO^8mJ0=imbat482*Ewu$lhl8etQaA$wB=lP50Oj8CNK1JraQ0L5k z^lUdPI_H^cBP#^8jAW#~id_YZ6>bfDa})}t3R9l&;#hZ)KlAMe{Qd7e;Sc_=AMt-H z@4U}9KlnO-`7iy84E2QIddABOQfav4m^{q$VBX>o3C?qqg*q!ru`F#5I@$CouFfeX z87j+F^JRO-IAn%0F4M2La3T~R6F~#RT&Z3OF>(LSL#9@F`uV5JKH8%>6TG)9xu$g9 zrb>OkA%>p0UQuaiIpTa^l}|db6f$8eN7oQc<>LrIfgI_TYGunq`EjOaYFNtW% zpcBmA_!2=F8E7TYyA7U-j~l8cj)%bnbl$ich^Oy*=2R%vFNoltL_=tZgav^(AIw_Zst2u9@1Pc=iiz$0YgL@86=RF;X|_6yn3cN^cD(iG+5c~+dHYfMhwt2? zENfT0c*p%ny_rpyBti?3fn#J);YG*_b+*-9Y?+XiITliJ6jhGp_=-u8z1n|Ntidb|nlNi4 z6i1&bqbL+*cDKP@N^q9!nTG>sG2J}BU!+Q*CD#6A^ z+AM<6DNcexOK2pEW;cITc#vi6FSur@SzxNL$rW^O0j>#@9W?G7WW@MB6S_p zI2gxU8{;&R7aCObuv+z;?l$zPM^#wucAT7_uvzcec0Em%xhQwvc!!7g&P}YiY7Enn z(CyIil3)DtGp5m^Ce=ZymHYP}^2VEQa=m}SFwLa6qRcZP!s9m{^7!pHIp1yh@{1?j z90qWXmlqd2`RsoQyOR^%c=*twBAXiX9bvA8<1m3ZZVr2{t`Dr%Yuq*ToAI@ zxc?lvbpe)K-~-oD4KgWdU#yZ3j**t0#g%z=^%b3Iaq zk?Sj=(&${{-FF`{>@%0w2eerrR2~M4L=9L%T7ymm>1^6(kxwJlHS#DBWtlWN<_4_> znpo4Jv$<75sMOht;oKrAS~H%7}kA0ZZ;8u3BVbZiU*fXgGAdF&-tJ5+i@&-7V+#?RyXwfumT6RTs%qqm{y{OFVpdm+d;S>LaUFWYq_{&XYQe z^i6-ACniryftUgzc|sTPDVigskGMY3yz%*U5gDh=7EKBDfrg`cPZdXL!d!I`r`n&V z+?a|o=E^V?j$`IH6b{GC<>i6H;bsYmvDn<b<>V%(_-t`oj2wJEi;9W#>C8b6YOMh%qXj$+r5!Sr2p<90{)LeLfm+<%Q z-1)t)e9Ttq`6WO=m!*nZE^bZO8jFZilwAylhcEa{#$Gx+AoS&XpGLN^liceeKI6vdrvrl<;d2N3$O0k27 zY66f4j~{ZfTXX&5l3ML~bGSTmbr^X3_I-{wm;B(ze@wk){g=ux43w6+`{)sMsEmgj zwwsR7M`Bpf$Bx6{h>xD(ICAgqeZKbouW3S4m>8XRtB zd=UCB@c7{!PB!;=@+@+Fb)<}6GF%_+ai|sVJ<~LCGmR9j8pCj;(#W;p z7UEnjg&2GAiQFc4tcrA0`g8WNj|>y+9WL4~MRKuU9Ty>-8WM>IgHNQ|gh z;-m|ZR;P3*PBYCzE(I-(F3xu9sSx@VB?SVF9%l;W8c2P@;qk>$LdRUdHxpteFC>f4 zL_0{pIAtpmoX26g48m7|FRt0=$5l_rfz$`?-n(Ooj(=)~x-fqYBULLWn~r|H`u`LL z@=qufoDJ;o&ORn*=l?uZYRR0QY&bvPu}Z;+b)Bb=&fb&77k8Z%4_z1N`$*phx;~Qn zMAvt8>yEVU@#{5JP54Wx#4fPDdlyz4T%BpEH_FINmg)+9A1F@rt9i znOZWED_JUDRtDc%oiGj~b+SnB;*(96yJ{ID8cp+7X1o+q+^}Jff8*Z6-?NFkq6p%> z?U}_g$(>seqiVzI;Fqqv*v__!8n$s6msm!KvuyQXXuE#^lwh5QEcAEhZGajBpd&#Cw&6>b^L-ctBfO}OW9tPnH_q3=06*>ZDZ)#H?ltsxpr z)5!67&2fL&Q|8RQyAOHz)(4z)JwN^7_xQ<2KL<%5Q&*kdL%nNUO-VKlmD7{QOfs{`@(8*Ws3M5m~CgtcD>yIo;8xMDmf< zIw5%+dyIR}gYi-m# zQL2B?TA>vs1GzTpoDIn-w_F1&hErHscjP?k&0e@#b);O`yA5;cIJ|g59VV`aOEjw4 z%txg)V`jt7A;zeK+D8c!gW2(Ick~EQt)b`z11q>Q-|h4)3Wd$GS08jtVAj` z4~*kz^h98sCXP2R>EoKm_ue3FcO1uwG7o=7d5nR$+EHtx71K;u;k+au3X9EDz(qAOHeo0et_qHTkB(lTcn@K+iHjFPaFD?zAtr}PCTzB>qBFbUD0o#Q2>5?! zYX@DzKk8__N=b$%ZiPBqW;Vgo@OV{1=LmRe6UK4ms57za@TIX@B80schE{3S&Jn7| zr=I9CwM#Gx%{SsnPo65h7pRq~&ZLziwggUz&I+kqAs|G%?TyXvmUZZI!#Xf4qO*wK z`}gh;yFWe5Wv&LEX(e;AUA>mCX*+*)7={U_mEEQ%{A0i~|G478%U8uhbkGN(sF0@_ z+Qh@VC!Cya*>s+D=UH{0J~{g2SS82053k-g>%e*w*=-`*O=P=GY_=VnlQrA3HD_l# zHuuiKugT*?nfGX|NU;es30n0?DP*mT#fp})Or)oqjBf0L*5gFgM(27;Ys`PmArn;1 z#9>@kDIHA*{5sJ}p_YlJwvu*QsVd|UDR`dmC;WqlkA6>lg9T!M3L*^+HumvLXuUX( zTc}AaJN0H5H$*MQO`R=eqW8v_b{<(MYhXKWQ?(0G>?&2a?6#L~+4e2B32e>?S9YV* zrDOmTr+DXC($Wc`vz+$ZZ~%Y3O_tMF(3}vgi!8amDqyI~K6)7pIOp)qs{86KJ64*- z!1iGUVmxP@no2wu8;hvLsVtsOtlhaemoY95; z6a-u=>@S}(++5+@%$GM`5NqJ_(@*){k3Qm1)zaT$w^*J=s_Xd={=tYo-_MYbKHNwdq%01=mJyDXb{%xHK%tU&~-hfPIM{q=*|0}6PH)llxB7^ zaRC=swx^p%i@bFUJy5JTmEdvhb|-gBL^LglqKlBwrbR8!*3ql!6-1yq@Jq2PF49F$ zNGr~Er^MiyN@1NM{rZGE_rFOhH%LA3^5%x24m95g5(vI$E~9@XfBBwT8WIYv6k2T@ z=YdQm&;zz|N)n*Sf*poc+|oiY!c-NTOo_)i>*{UQRJj^%nCfVVRTcJ!kxJvi^{57S&&Crf};@f(8%LV0en?lTz0lWD9({5!z|BBq2gS$pC5>l zsLmOlc|mWLX0O%Q3e~MxIgeY`lJgiAmN|v*Z-4+!mDY+QZz&dY5BPJFf`%n;)Z#@ zM{A=lapixsYK?>{odi8r5+kV=CKb>bFBN(KY`LSvFFWQBp{X67B#!_Rk+3?dZ^C!GzdW!@Qn#K zaJsx~94VThq*S4KAxbkvc)2A|Dbag0&*aufX}xgoJ&kPiwWSzH!Lp89C}zhgcCb#; zUPXp>>S#Wgh=gYBXo0>MJOo#%2(8W>r-@lS_fO8bfB!DN6<%ImEI&h7I!JhS@r>hm z!hhP|OnDI>*?}IV($YQNdiybd_wW3l{DnXBSCLL>BdGK^U&(pk{SV&Y z8}B{lmtS6jcf=Uk-rcb2Bf<5Yo~=ld=;DsBPV~Wob6l!~If7f$Z>ZGTP)_LuA8<-u*_gq{*XE;uDeIoXW-D<~io(O5hP$v!tgLx$H zEl{Y~xZSxxTYUbFYA@nyJDrBZwT!m3L<-xA!~%O1Ew^G%P^~oIbFx~oUUxi*D}I0Z zymA~0VRxURnIRuJmO=pTq#ZLe$Es|+u;~&*Q@X0uJ~2-jsxoD$c_su82t_NYd2o>w z19KbcQ?mGC^=vjfT-tJT^_lU`b!{95noZJ5WtafOzd=4QK4bv6co^9D{4!N41E9s+&_rGy7u?dk`XMBqI=*h*#?Gj8E1Jy{IJ{XTc+Hw&&y3U*#uf-aMX-7g3e2TB_;;p4E zP2DZ6^!0hvTd~Kri@~%9ulawiRkh?qzwjYiMS|&a5`p71b5o78qD2?3K%sN1r2v=+ zQ4l(AC?shVW^@)>Xbf(~j|qdLS4vLcVFQ%Vlbxp(#kGi+%t`L~tq<3PQg0(M%{v`j zuyM{p_)&4zji3|-Sw{1^sLQ?ch!dO|OjQKL>ym*E&Q&W0)Ic)!XQ+SZk|~>^cw5y6 zhZc)Atxoa5RNmSePNK1?y`|3NR*8$Cqt;@Tak~}xSbCF7CSG#t5eIXuNNs3ssH=n& zskx!qAR;+5oGVlnN_B)3$ZD5)B2uM%HF~VYSn$Q0y0;b+8ns3X^_7jmEl<{_Q0JM$ zG~*?3eeosRKCtRG+Tl&q0K6L~y ztk!4TJ3AqD!aOuWWXa+7j8nta72;-Y4vq5%Z*iP2_~i3XIgWpOx_(O(C9ERiI$~Xt z?%3cdTpcHdn_Z95x(}Hw^Q%;4F={)qu@vMVT9?_s($gczVUYTa{v7`WbNcHVQkTC?BpnTyh|dN$pL!}W+bb8d*1#gYkO=~(Ah(dtYH zni>wj94`(D3t@k-Dk_c;1+Dfx7AI5+-YLnMaHT2K7)i0?{LVRFfBX)@HPdupKJEz$ znM|7;Xl6fMp+2FxF}sRVQBi#A$%kiDt#n~!VI;*v$~HX{0Rq)6U1#%5wcx}Pnlg+T z;*9UMXc>vogq==3d9K{dd-6JSzB^?gbNTWM;)UaEdy0Q|5y)1sJ3P3TXwEYqM#5TYL&Nz2?*eyES8UQu-j7^d z9Z6ln4CMI~ffhk> z#%)f~T*&iCNuJOuYrmoPma*N6;9Vq0Wl~Sgg`g4NLG?m*E8LW+vyl2|mfKp4%ix+7 znwTI^5qfV{Lz)nS!v(P}@HJ3kbeWzi5L|dIo&SHUi*cEThUoF(b$;C?Ak=^zuiegO zV4H$6L#@lt(U@{2#K57La9To!F*DB)y_#ku=EaVyw0(dSaKp@41Fkt@zX7$B#JMP0 zMpCeq%9v;7AgHX6k}(eKCG?S%UvcLo66}&P3Yu$JuK6};v@<1)iQt-} zxFvsX(2h#HGx3}WSTOH7_W54KRE{`&ZR83h<1#xOQI$Zme0H~}%Zo##8GpXn=>L{) z++-2CIa&v;B>(^*07*naRJDK+RVz5EDbHiH#eU05=N)aX3jxm5@}-*C&tWhW7OR~_ zy*gBijrl{Oso``r%v5g-W?z*h2F5z^R&9S2wg6n3gFq&v4ySN+z2`7yf>Vye1;6;k zk<;xR9)I{9R_;iUEjnFsb+c!;3S14B)at0&Q_2#VDlpA6Stp2Ve(TTw8jtRs@bCWH z|0@6K-~2E6=GWij*FL;s=|EDERQMnMyZ?nB{_G|9A3S2cH9K91YgU`Yo$VRj5>S6r z`(kp)B1nLFsyL|@IjaT*331EGHj-;)v$Y9_TY1`?7ki+Md$Pc0-P5Y0Uw5olD;xXQ zg44z@&D54Lw|wOJmtXMg`2}gc;_b)p!kD=^UNZZN>k<#|oN#rK$} z@%msLi3F|>6W7-h{d&!+>siOZ{^ozkR5Ie5DWWI4lbdveE=@dK?>W?&+KSQqV&<5YQYJJ)8f{nX zarELi%!Ro*reP+mBUKA6+jzF_Gjuayb7roJI-B@NY{U)|vraVeXf&H+mlA(B$HrX1 z#Wkhu8K%mtM{0xJovn4^t#Glw#=D5qMwG;a1rUjY*vkTasz6{oPG;XEQpydw@co<4 z#MH6g-RIli{(y&f0yPgv+7Y&iI^2-D$dHfZxzcV5t3I%OV@DI^cyY}~Klzw1o*a1a zt}tWh&2{P-M~h%;WO}ElMj(IUB;y)%$>U0-iK+Oj3swY|26azNky;E*Rdb^?Oswhx z(Is-uh_8@6RR%PkAjuKRgtp4s*??AP#FPkX(N9GRtFA+fr|1Da4wSIN*J;7DdXCeG z%+^UaUqCapb|h&K1H}n?EUY_))NynZlgmhT1XWzJ9lWCvoFJtlKG}b{+RQSiqLk?9 z++r1eja{!rC!7A{_2rS9AUl|SN zy*iGf_&OuCFw}uu*K9T&Z9dT21Y!w{%m<3|;E%N2sI#MnMsgc+u5>||6)O*(oES|>Ook>^{$}CaKg+N-=`*k74HD6FCi-mt_LD*Kz*X&=&+*}e z^9OI5ra=SZ0&TGyN)wO{p8{Q%2)$?9N2Xjr12J{@RU~yi5AL7y;OjjJb9jY`t&8AfBKB!xMzQTV_xxMx#EB8P0yn@A92`^G|lv@6}5SS zhxKa3oM+N1lEQLmJM#^Dwa8ObZOf}bA@No%y3XU&;jwsL5!;$-Q@ki)NiP&<`R7iB z=zIG0nzQpA_qRJnEgY|}8MWd&$j1Y1F3ghA#e!98#)tohwm19PEM4!juKStRTJQUf zHFS6N+`E5!5B9bl8#_*j9SlhbQII7pgoMNy#|R;WBIN)ne*h;O@DC6U5GRNL3It+f zLzH0bY{z4~NB3OSHGRW7to2Mc2luKn;s7C~+|t&TT3frms`|e7d7k_J{jMt!e6#?h zPaJM5!N(787%pBX#S!U{ zCP#lt3F&s}1dyl| zm61Txj%$#M>2|%dbbE0SwvNymOBOU#!ZbkZl%COG+ypIaw!jsGtEdv`Bp2za)4Jf9 zka%R=Gz^L0nW8b{OH+aFf9K_wL^NJNDXLOa5Z}pWeEK!qlN|<-4y*bmyFH!<~s&{A$0E z{vuIs^AE*rLRPg{|NT1H>_J}E08A}t_NLa>(B2xZYwHTYt($jo@FF{hw*$Vb1yih+ z2f=$pB0d;X+x*~4^MVV;N>&sRQ-ptZ6}-1Y-X~|8NN*`u8o20i+H4H#JWe~M+HPC5 z(`v){fD6JHbltTpVeQc)!r+uIK7GjTT-lyo^7g&Axp)5o+cEI;(U&}a{E(T9iuI0@ zOO$><#IxB>w0s~pTV-rE6UQa4wuyByK$6^pv0zGT1oYI~ZLw5zr9PkjS}% zSI$l^$%kulJKEQ9yXSCyMQ;Z)!Kr~Vl89NeK~xP>%<^c3ykq4mx;TS-4paXg<ymI5?_4lI2^)nFx>#C!uZg6sGWi`wL{W&2!{7H|Zd_c$-qUJ)OFg*IFJ z!L>?uR?pR5krZBTdy|`R$uYW9x?d+bPLR@Znyd}uJHZ*honC+OT^JbfnsBbu(m>b@ zv{~^XQ+uL0Td}0*$x+w*P^1*aZ$>7uX_`ysOSg-reWvOh6z40s zN)@`(RoQCeNqeL^`da^aNkJ2E-I*~=Sv$^aVcc1Nnr?q1QHRH=L1}X9wAJ_QL~zY$ zcn*hi_O&!^)Ychdvs=A-L<()aj7Zm)LIm%F1-PWyYu$P4q`LNUoE1YNw~BWVr6L*; z^*G6>m>b%=wVR=iuAbze2sn9JP-1Qi$7-6{J7;HH-(1tW=h^k=j2Cwqd*REcPuWfh z#B(zrSxSFrJc*PxTOSx9_ZdGcK5Y1fU-|`p<*)u2|Iy$1&-vAFev4oEH-4J`@IUzX z`P={Lf5w0Ow|~S>f8#@b^lahu{sS&90z()$8P4(3z%)fR7aKylgk{g|3}sHZxM3P1 z?#Z6b*twmRF-9~jRCh$SBd2-8?eT`?P^q=B%*THlj=M!h! zbKZII7NeUwum- z0h3p}_0A=~_)8z~M}Pd!`N5|%eN1>!stAXkY0fd7Z+YiyZ}I5Smpps^%#^-Si7uf{ zX{&$AH@60*TaKy=6*ISKwNPhUS3n)b`;H$XPLlLu7Y<1y&h3*Y*XO+>2vy=IXS0s~Y$sVAm0esJArsTd%**Pk-xeE-n%`Pb+8lJQ5e?-AcS$ z6xl{(hCvkHJ6HL@4}b6(bIbg@|JGmT+4F_(mX8^>9_fxYFW>?@*V*NaU$QAjWrKf= z74I@VJE}{J>Ij>O!+fMJLi5G?_chUbp}9_~18MA3r!>igZcKNtp5_aqbQXmHYLKhg7lI#IdZ7lPd(UR{_`xyX6nZH5?SRaRugY%D zv`b-Rz#lU*bTmXpt>6PHLRz)8C3k;(68k$C61~l~HuQ>0M_ng|S2rfN$4Mi`SGf0H zsdd)Hd$nBlR&^zY8XWvp|5G~TTByCD!4Vo1S5blFJ?b6%U1wSB(N|k04I8|Jr4*Lj za3Mi+wB-s38zdj_-p)8zitXH^L%R}Eqp2sRz@nWtE88)Vx}ZzNhXGtAZZ>}=BlOK1 zB35*DMSD~KsjcBHnC!uI#H|teUg^~v2U>;p;1}*(Jg`#Y>Xd_)oDzty7sDrV4vNoz%?W`jtKOjyG;pZF;tK^k#bTJO7mUMVD&UI8j^`4$G0V z*YC19@qGBsH~5u*{jc+z|JUzw_4yCD|K=O~Cx7d2@qhfC;MGniJlZ%m!bo>Mtci=cbrD$O~j@k{ak*SwwIfyWr`e*x%Iv(=hUl_ugWNfp_1$kJRsT^ZW)E zM;j5hMpEU;lPA3P)_pF|&)8qx&~QkwbyHj`T7^!U2DHrt=d7C9g{qkpZ3H^YK&=($ z5>s;Y8c^-jZeh!J-+YU2fAk?&S2vW|5zhu5oL}NU$ra=gP;CU%@8gHL@PN#%dI8wMdR&KMWcE>md=J`PD z0T&Fd>b!-KM4(i|+UkpyT2Z>MYY5YGyW6wbL~;Y3J5Hy8^V10*h2718;s-+VNIe?- zrQ7BFwL4$qXMcb0Cwc2#p;e{NLhlLYBZv7K?+5xp*d6ys6bs*Zr5rQQpYQm~zxdPq z)K7iH-}_(xDa{R(IwRH7r4w3aUyMs%nkVflN>oWqEURQRBxfuIAZYE;yq!>-Jn@oRZ((4W4w#I>{QnE){CY)^T z<54@KCbSlaZmo0%2A{|?c+Jo|hpRo#8(A>90ChoPgUv_?FcwD~EG4e9z!<0$2A>ED zxi-WvtA=x>d-k=imtN6My<0WdIeDcaIaO9Hxe~*x_o%nl3DF@jyz)c6=8m=nnj%$b z&XaqyjEH{^805Lqypo0lLGW#1&PvZSLrfN|?U)=aI7+YNZWH0=L40CZl$vI|^R!*1 z$AMlm$)6BZD83+lWEcx~x8SEOLDcA4-M#Slv39$S?Dm2kr)$aGX(t3n>tefaIzgQE zMAiDS;v5?K%f0mrW-lshwZv{`ildiiJ9stWgcpDL)0BO{63GI^+BN0?$MmaB%rvFW zCJ1OHNql*LtAnZ)7uA%m9cFP<8nIdeT0*ejKek-;-a4VW@}Yan_~04D#{BBQLZ)_6 z@hgqUiDd#bc(QgRSA2{J7L41^2bR(pw!(6~CwGO?7>09F{Dh^=oSkfWczwjh$TT|g zZYF;^!(NJqP=k^5x^nyYEB^bx|G#nhH~&@2)eS%R{omvt{JkHtx%)o<)!+Ru_^BWJ zkl*>eAK4D9PE6ClczVj|$vwg}ajY|;Mp|f0aYWLVgC1{OsO6B?U$K=DFkKe!KmoEPX zSD$>3fA$Bz%OCvFm+YS1g0FZTSh8Kdx@OxLI%V_;l9I7YoNJw-7OtP(^1bgq;luau zvN@YL%nRdMYdjXkkDmR_bDlhT%5=HKeQMvMvZ7FHt8{VPd*eP%mHmD;=#naVt^|LD zzUq7Z3Sgl^YxXnH`x+>Wk&k}jCs=A{x4WkIiFdXaxcVinHBM6F!Fa>@FjK2Hx520! z7tbwQhCcH2dEq!W(&*@Q;p>;mgL{oMBz8MxDZ+`*ynaVGJ0BTZWGRZwm9aMtwNPs$ zbVrm4e515%6~ZCd*V>(}rn;_nEc<_c-XHe(6dA`8RF$jS1JhtB__@wp1mX3w*Ek*) zTZT2Y@tdld>ZUh%|ATMy(bq5O%&1%Nu`&cj`Y8;1ZhNMMg!5QEYwR5NnLqr&=UlvY zhoArXALp>YVRtwZR<=N;5xbIsk;qXBO+0aM24E>>UvzyyC8Kzb$0HDlCntZlH(wg! z8Y~VO5_M>_gW$U%dYh~C(n&sWXq8G}^qwJDR;IO1*MvJ(TmYw$;yQKigf12xjH3ZT z#2P%ez!W@QJuyI~v)@$<$@#*GpD0>!(R1QXsWo#HN9&Q$8%-lyZz~0QBc{lV5?!FM z9*90bHFtXL4c7-!G6|QLS95;=w_>kNy1p{m%8Qr!+P!+E9`zT6^A|k(_-AmaAC^wZ z1@#F^!5#{taA>&D83W|v5F*FJfm}dOCR{x-7V|Q+wy-xB7|u3XY*!x3zZT2seN2rkWHxK(*Pv zSbe9iBgw9IFuJu*@X}4~9AcUttMWxL&wE*4 z`@va<-fRZgez9UfpcH>mO#aevxF#HL=M}pfn0rCog!WFU2eu~@yLskpo8Xy|)kON* zi?8U|=?$bbsuYBZbm2FC_1AeYZusG!e2>o_euW=KVr=}@|NiUzqhJ3gaJr%E!Z^a| z={eKp1cIaa&PFEs;Au{&wUKuVWvP_gg7$*<;GJib5o%_?EcAb}pyP?vH=1Ke=WOK` zy&aLXA*KT=5LX$Hct;RV@LSrc(kZr*@qyp}-H-XrfBc6$`|1n6^9SE2&qw>;hJn0f z6Xo1(t0%@($aAHXhKr7(2Wsh{4dKosD`DkD?txYWr*wOIsMO}D#jvbZDqVjdp;VpOoS)%I+}vE-#7As@ z+k2x@kQQv6pwQM2S#tAkrV>m!D|;My#G#Q-ajXu zog&8>%EEH=Y)%ACBg>881B5A2ua3AOQRZj(IPgn<<8P18v7!6gy22ib-I7+)F!y-sa^?Malxvt>SfJCz>uPa z>HbAuq%SC(#vA2Tp6c2yKji|pvVDb0RJGZ@@m1u{U;yvT9pZw8h;_*vTt!2N4#%F6 z4$J<)qKbEcG=&w37iB*{Wt=sRZ7*hvv%94LGqmT3#iq|0$)qY*XGxSao`w(xkBarDx;S!P5#OFg2u zLMwUA=?iX3c%Qg;cFMCq`2n9l*|SLl^P==6^I!kB{|oOw_y!-mc9*)$jFTsZ4Jm(k z!VqozU)CIi7jjnyJQ6y`A<$Z&ZYuR4bO}5=JYs))4Z}HcJU98p#`cs`Izwfo9rr{R zs6EqtrY-_4<2S>~5}%O}8IwbzKoS1O|M?$sJlrr{o)LUB+^lTq-O&Z24-8T%z9G$% zCXer(dRyq#LlSD}Z0_GBN#OG@o)LdsXPQQC_eVlZ&^(bs+9r0#Bl$Qpgg{q8C6NZl zc9V!c(Q;v5E3I|(plr?pS{-RTVLaQCwejrPm(-F`Z%Wyq%F+vI9Qf8ZevIu)TMBni&yckV(CU%ej8pHr!&kfL zHCNEA6bho9Vc5{!uohgRfm~drYeYG$80kcBnPGFr2k*YdX}sc?1It7EAUn|c;s>8` zac9Hj>6Wv&_8-UoMsA2X$4mYLh5J~!q90u%Mpm{)G{0UJI**w zq`FXPl-kIp5M)aVN{Wh%k@BpNo3aUsI*e4!jANiv@!3)J%xZ@75#4`yq|UTspdT|5 zGvZHiEfc(DZp1rwt&sw&P$trW$q8-akZcbOb&3?R&+FD`Q3;b@m8AyM3ewQddZ5cI zdr`YJ^!zHv@1=Hnt1r!Vud+klsu@S!i;UN+_NbSP){3e}DdvVKmFSe#bq%?ByhPx@ z(uKiCHgUog2ce*YBg%gntzScL1XZFNskL%@*fWN}yz3M^VN#}$Ol_>u_!+U`d!Tn= z+z8vTBk>NQ^lo@US^qR#L&S_vwnup(xKK*B!?v&fUGD-a4OiDhtXM&;%bFDKy!4`5 z+Pqq?)H(A~>q>#^4vF?_;2cgn>ssC%=IEL*_Ljnzb#K4US)6}jMxWkreZ|5?N2l6Y z-g&g@pYHs-u2|P@{&CijUiX&d4~|;w*Ga)!2&y%T>sHZI&{i#M7d*K`$YNuBZ}a)V z1*%4BE-bfumfi_zp!Li$H-cn7`QlIbaPtATyDJO6cnc9y3$<1VrbeyJC|v=MSD{vA zm?rL@UGl}#FFAj*H?*%f#%arDOq6yDdCQ%sr>7~-gNMeDxa`2Ihai9}ePCSlC?1hTbMo(#r!B}df6LA}%*OA^Mc`o1* zS_-$viVO~w#`A~QYzEJ{oKw}B6zUx$%XFN?4XMxE)LVaYtyJxVUv*9zXiw583aJoNUgSHd}IQ21`N^ zY+6wcushBuN5pl`@4U|OaLqCw=&f7&o<{A3pZn4cxc5Gx+*5x!5l?+#i^rEEjU;g#Cc9Hwiame zow*hC&=_4{QBM#%$XfT@J$sM4cka;p6)f=N>KT7dgs1z3o1K!~f@&p1kO69OsAg_= zJB~-??FR$5yRWFNa(Q;27$%mS!4))&)Llj0k#O9Qmpv6r{_?^F-xgvP)JK!bII~uD zgcK6eyRFV@u<%h-WQlm!=uw%xV_6Iik`a2X#3KwtqJ@f+NWT%<5b&d;EelyI!!X$& zY3P4+NmL;SU#b8AAOJ~3K~y)>=N-`xwi?XEy3&IqmBOJ2nmRFfJjoK%RR|k#t+~&HCytb#+VkN-2uEh7TU6jVgaS(rMUVgvLn8N(kOiw>~lFjs(Lh z?)L`{hXaad7!v#ab1u&=IUaBLgWvxSwHEGw-T445x43d-QKM&tc*+9Jzk>i04lq^6=3YY=YYEWnq(t? z2o8xjbaLw)=0X}AsssD7SkSdOvNx9Y>E;2kc;n}5T*FC`=te{<$J7aj4Iw$YWad(l zFfk+rofuC>oeEX7Rt@*?#%*~`1c`1fd^qt{i;LhDMu5ZpP7a_v2EXdLk zuSQ+#4xbWnb4faBTwh;teRGX?C2b;qTfOAjqc4yZcJ%%mm;ANA`m?-uf1#I1ZNkOL z9Xnj*fE$C=y_^zzG&9rj2E51DNcYOqL*ZtgdGEnFqia;xIUXEo5{77CnN|+8k~z$s zT^7FDH+FkZcUz9lJBiVz~(7+X~*XpsH(*(i+`=3tFLf ztLte~6ZLF7F>Yv0sIK6h-6BsMPYk8DpOu1E5&lcMs~Rp#0CEmf4qH=W)#oFvEj z`M@|Pe)oGn;?u{Ox8J=RaLy(HEg`PT615PS+X$*K=fjQcWC#J-0tBh_#@Rgv3KF(Pg*3>{e09%kGw4IVp zI=NbqD&VNS5UL|Mq2vnc8Qsds5V6s`Hv2@)LJZ?88j;%psjXS??iG!HvK3q7HZ{ZM zt0ca?NYyv(jNT)!8az`mu~W}zn{hsJD3u)zw=|ZyLj>PFk{c?8T%o(poGaUuXiLZS z3ZtXP5%q#%mw4@r_Tfu4uZ_@74-lOrE^Y)M7f>=mj?hPPUPy&0HTc zstxA{?%aDDoo^W>u}LRfl_Rw)dOb3I@g>LQ$oBL;LxN#@$}}0`vs7E5mYW-LUXTXjD39+eBlU~!ujbIEf)TN%-+m;S{u1meD!$QF`k^z zPENUPjos}Yae>h#rg1~9dj{wEg}?acdF#Fs+7)ntb3zOExO(a*>n-lc- z9FcCylkVv%9OoGq8oPGj@s&~z*+eBJFfWDX73U)#fBA&@u<$3JK4;i$_;cU7$CNy+ z0JGA9;Cx_^1&N)$%Pg)l#Em)ZwNkwT1>Yd6aPA#{-UmdD^C0SRWV%zT2Q2|{&}1Pf zP|VcU+Cr1W(g5%1H<{=L`~*ckAplV*xwDmy??RquJf4Ma)15J}TNa#yQ5Albw z#mC7ml(j%waFa*+4YaNC;6>>S^d&O|VK*NcTfh~i)W9?(TQ{x_grzTxGT@!Te|$8x zvviDqpAd!Q9pM#K&*o-fQiF`V+P!ygt8d{IbJ;dM&6v2D2|~PiVvs+JU4WgsYUStL?hleTu^GU`r^JV1TDCvxYkhb zS$2iMK-dDcveY9&vZ;{pA|+_AOk{Ns3zqJGUPUh}N!H%s$|~Y`A!@f!!pp8>6|-nyw2IsnRlM{*<)^d1I*r4X)CT% za8YPQ4ee=5087}bAYCc8JHQ(j3s7b?(1+`?;&C(51Kl}OzOHI_?>(*7RU%{G+qtTL zrAwoA>_ZRuEa(`_u;T-++hyb4Yp?O};bWd&AJ!3zQYrM>2;+v<_k8j6DLH3Q;h2lP z9t3o5w7IQ*dJiavyO(Rtqf+PCTRHT!xXqz#+x1&<#-#-C2KP+45y;`A%!79+hCk=(MCEEl5So~n$wVY`IaU#!x%X~IcHZq zU%NN)?GH!7@_oD;Y#i(^32_hgn%k$HX>g=VAO!0EKt3v)jTz9oC}ltK$rsnW_SzW( zV#vpXa(f;5{*#U}F}KK(POFN4^8rtywS{Sj9J|_wdh%B3EY;Hct&#HqdZAJX5yq6b zS*$h_{rWSS0z=%=>YiE_+!*ZV(+8y5YN{w`ZFmu4^JXe^Vrp0>QmHKSjy@cTL*V-G zoca2|=_oi2lv4TZ=@mDJ&S5_A)zc$YJU{;vZ*X=IsM!%+;_hkWS|js+ER+}}!Wa5~R8mI+y-jmWukBwHL1RI#T8jz^yk}dZ#B${i4D$oy96|_am zVtb`7g7XlEM5#)m(nn>NudS-P?ZgrhH&W;2rL|J2Xim66h;hp{Bo>`1qBzMoJ!3vr zWH^w{PMCL%AsA9%#qY6}~2(f*njR4sUfzSt>q6OT4eO7m+pf{(=MFY^Ttwu7^8_nm$vd z6MS0_)|Ilh(&L=0a+lUjTNxsy7qi^Rnm|_!^src>ur7NDs&UxFJ ztAeYx76|K(yRMUe0*??Jt0Zx)A4n%^BzP#zCI>#s%i0~{iQ+7PvlN`Olri2`1Wt`Y zr(NkwL4#5Dnh4QV(q`g=_ugmsM}N$+92g~9V*n`oTOQUK-^FqU(!s;vEikd~h2Rnz zY>!WHr07X~Kx$`R7S8T}z~A_#e~sV%C;yO7<~`eC;K|j0SF|1&)5OIvaeB7pmw)+} z`H8Q;%{RaH4*TQGez)iLIPJ4?q8$S~{0^ z?l5l8*xx=O?=vMSV>sb_drI7#;)cxRJBR%Z$FmXNE3KMXCoYM+?8&)vdJ@@e?hw<6 zwo3P%;~s{8!H8+e2@(TKJ}{{xN8#8!iAZ-H^^FM+nhAsFjR*HRnF0@9yU)eh#PeGi zhJl;?Y?Qm6xw$=XyWf*GBiqfEAtqB>s#5z%>J^AAOM{+x@Y)53^AqYPojMoB&4!*X zxV?VNVL9TuGCI%C|MXj&pFBr7Qrdyez)gLVt4}_EVXBc~SnT_FPBd*CXL$G|^7=-Y zh9kK;zW+!#cIEAN@6&G|a&=w!{uXD;Q%WJMS(15wM0;K39E!G%4?-HZc<0z18o?*rFxcuqg&v!wtJhUn@6N1L&Y)67 zD&ALrj`=yI!Sz!k>XrGHw24M24iXNR8>B`ZomvqDt7TPW32Yqk%6#yR3$C;CWPI$1iKa3qz04;u-+4A&sopcUh-hVq6HNjG>rNF2QzT0vWN(ll0qu>D zu$7ex1f$!jbbD;ct2%tU{im*`yH^Nr>9yPYidPMuY1C>M=0A&nYQqBI3hIrI(&r<8 z1ji=9E{lD(c!k+;u-$v)!cmuwi=Iw|D%?@ekN@}u{rnAX|6t(xXFoFPqZ`3(Xl;j! ziuOd)O7o2r24akKnL(5?3`8Pl_bz}9p^L8O9g`HOt~~VMU-(uHAG_`bh6do>~f)4$2|p$v+E1LvD#<@yd}QrYXHzL5LFvp7kYPwr1YzX)|nf*Y`}YwaxVd`H)90VSb)}2Ys}NHnA=JY)`}xRbe3!PJ zIGv)Um+|xsj4dFe^`d)KVuE~pQIs?V>X;g$gOLqU9D#3r>jTD3=acX6m~Rg3Z!_DI zQ#SK~`MBfi`6|+h!bKCFA1YxIhLngpL4a{P5z~fkQ}%})puB#6!)Kp=28zoBX2Lk( zZWZs0Huw|oyupuu{SG1SaMgl82j1bkpEo}JLFZz)WQrM~va|!s;yC6lyJO_bwBTJu z+r-CT-ty5~mrQ=c55C;-!>=5Vj{%JxKU&iyNau8u$l`2;rGol^sBkVjs#bOgJ(%`X zq)}o)#*Lv%yP82N1Vk5qgn^EAuzmO7OlfS`({42#-^sO-VgeT!5Tve%Wgs{E(7!w# zkfE`gZ>b7e3oTc)3%97P^rGkWyQh5m{{zD1}xkDvrT5dbjRxPk~{CST+nkGDIj{a8($beLj_cc0_R;{0`lB#xNr4 z2#0PVN9pu&g4P*uh3PF-IP_J!bC?QoH`KVA*jC;@dQobmkWg+#@6)^x>nN5OWg z(RsR8dY6}fVWZYp06=IKx=^4gwRL>3AdW8PY;P>6I9P1V-izQ;LPdDv^*6b>zU8w= z&xzux+E6;tTQAW&zfzV=E$fqwsS1q%kj?d-h7EYQe)a?x6O<$0`K^DV1JHeY1Kp-^G zK`1&i9~+;2{>PLx7P;I{*JzPKjf>I8gZr@?#ls3F9+y}Bir%4QQ^ ze(&XfT-oJD^fRNM@yS!m!r9Qcdv_w8jy!sJ!?FxaF)^2!l8ZGf#u4qx1pMSrzRSsp zhvrx+9FKu7ZX92J{uK3{hyOQgZ~AL#cHQSad+oj7;hb})8hT=Pb7+y&EGuFZ3o+~@ zP7FH%0_8*g#~?sH_(LEWvMfi54QmJliIQl4ic=SRs_Lq`b?-gH`@VZx`LNzp$ zRY#kPq&yLbL~nuBmSsgnXD)&r9(75$&{6fo;ba1fvdr|u$l2K?odoLKI2{g_pJ|Tk z!wFXnw>xe;MHZYuzuWM}8)x*s^8T}1!Xa|ejl4L`?B_~17Fy|0Hxb0Ds!g)NuZm6C zBs4H1<^nOhOt=1P_Oi|iOBZM9uym9}VBAwu+QLuc0Z{EiNR9IpUG>w)`GlrjC^*?8E|gp3sm|( z{Jlr(?x$QDj!U6V7A!`^|YQ99k=aw6wFu4T#$#ciycKUDHzp-h6m z@CJZWIF@Li?J&_?&qzR1rXK=-2@9Y%KTy38YX`@U)@2&gT6@OI|D}{wT^ay0poyAr zMNtR=QR~avI9*KFiq*x`H{(c)g^ikrq8Zn0EQAv~DBa7Nnx&Mp+F=`3lAU-VH)Fl` z;+RWWF>ddsmK794Eii1P9ej$J~U2)YLGq!?+e^=frM!~iOFF<^=_+gn;H!#42dtFQC)`H_?o zA$a;Y7&ym?O(}xe->P$Xjh0C$N>Zik6bXUY?U-`q>Hb9YJ@3E!h&(Th_s)5Eb-~SH zj}vE>HHn1iIn9Tk`Z2bDU%B;A=soO}5IeSKXKdq$^q%OHWpM;xazdI9EXN~hN@m}S zfv$B3fy=XdL=8N%ZS$Or~1N<^GrNXNZ?(y*9747Ta<8YXG^PP8pc>R@En2&oNJ$X)A zgDTNy7G2Sx;>oq)i=ty7({pdzalHPR?|%1&%d>l&_gm63(Q<~Sv{LxFcRtTsZ$2QU zN2F3FuhBz$>=OJ==5t!4==`@2jmSmOF z-V3P~Ty)$V4jiYM;5YojJFoDSFYL$&)0|lLGe>4lr-jykHk_6TubwePa$C@)1J~31 zM02e6Km|82myGKg)mH)mN=J5yWiFIfEbG!|dYki7UEx%U8TEpYaFk|&t+{x7muY1p z%1G6MuKsXe0}$z?XNrkN;*=N0ZotKWw8$YX3`4aLTU4CRj3t8GQe-BQkv0%?p=G5= zrbeUW5dwvOL?GH1cZo!G)L!Xpumrx^BcwTR`~}w_depP7QaV(X^NWEmeCbV__SI$# z4d<-oluaLA2JgcV=z=y0Wxn!vU(`hqT77G1bmPLvOx(+*G34v3L%&0|UHn9789jjYyX*XnW2 zG0TJxl~^-b%en}+L)(pQY2Agrd;hMJ#Ml*AbjUXXZM-xwL zjnbTTK%GFzhEr6bwqkIK42eQ4@{)hIt``E$8^x_}(bfr}A;r(wCTy7j&rn}mI zpwg(Ru)VyXc7=~WD&!?om=INJ^}KlTf@62&=EVzcH#>YEY0h!B9eDWaTWoyCQVJ?N zf{R?8InK^sAx#S}jxV@6^SpYtCG;KB-HDHGp5c7Q{rgvx=4dJNUw!RY*x!E0$JaMp z-`p_94dZs?JPZuI2QM6NZVgH76W7;&FG#iL-mCYhB~Vjh7`Bu$Q;MmA?_Zwt%fIjj zhvShCuM5wfWPJZB=NGS#j*n3Shn(y+?35@T?;C(-Gfv zy`Tns>>xm|g)wFxo)_Le_dL9CxXz=&qp9(}j+DL<)Dwx8A8D167DDJy*BCZ`9qE{O zKHbr8BAtsSq$n^gNBU)C?0ZrOwB5c>3Zg zK|QG%497roj%A)H1P;rQ<8jZ~c)`{AIY0mQ1!w1;XEzl+HRh>smolXY{dq*9XE`hs zFH}q|sah#ZvxS-$vTI0DT!5N?GsOqu&{0bw=Y^uxCJS3ZicqHoS5KCm=>w(C6b-i8 zl3>M7e?o>v+5=R4ZS=drD0`u>q(&%KZ5y@&>2|T{U$IP5@2%ErVNr$QoS8z`22fKO zBZa<)>K%RcwApczijvW;nWB2w5XkseDN{tnzSByv4*d`d!8@D;%OACWK-EmBg%Bh6 z&$evWp8D`ZGxL>__38f%KREQJHSeqn3(DP_X-_*mW_!LR9TVUC_<*)Y zlx7!foUt{=*l{WupNd_;;u_*?3mqV_B5k16MC_EOddan=Si&l4u|rtAU%@Ub*Lh8{ zTd~j)T%ovPsr6>RjLunlJ{MDTigW8PXIo$XFZb64728+awtF>yM72t7LhylF7I4nQ z63*&j;_V!_5q|xockbItunYEbZdH*A)m7V@I|ohZydyhsQJ^+F9#>=?eS0IpsU`iT zG*T;!(W(ljcC{O=cXh?-{on)Iyh9}z++u;)DSk!AiYU~A<^h#LEkdDid9h&}JL0zE z(YqfoO^Zn<@TdlVTR>=IX)|+9u*yZIWhSJ6L}y@{l!$$_mtW}6G;?=6fS6#TB4jeB zY2xE|KjQa({}1?IfBS#>u^;pAeB-b9&)<6w6$><$Wkv(UZO^dj(d7hTU^7Gx`y2k? z_x~-v@7aVA#WQR-h>7Yd`8^$&?>K;zs+_$=Ud-=pW7E7@&|wNmpp#*94(a) zJTLYy`0(ism1+vxMdHB#03ZNKL_t*3)50-iiYCrB4(U5CW6$`?6(8SRGo4OMQ=)3m zTc3MKI)@K`KYUDh`6b;PQQ_4$?o;Ua)^}!(={{Mv{PJ7B%=PUxsoLS~n&4ZHw1r6v z!>~c}$zDq{R{84&K6v^uXWI*w$p9$T*+o~$T*S;a#9a+r-(9HW)-IfJ>Qw+ovCzCtZYA98JxIke0^9MThS? zb`qGDld&q)Q46$InfDXUd#b|hAj-gQFdsrXTJnAvHiTizYp?W3uYCOUz$q1Kgym2; zoS?KscQ05!JqB7W7G!NbRUM_SYULpKRydJ}ZeTNX$lz_HT^q$aI#IG)(WW9+wH!L2 z;&Q=%QE3$-cF`ZYO0Es|p4gAHI#H4*W>1w$tA#jtS{QJt(dGsrvQVj0!o>ma^6CZi z!~%7>q5447kxlf>T1izX-m&vay%T1ap$QU3#5D`zX<^<9)0FA6BW^m>E6b@NyMT0o zR+OAGee|ZJb`D~X4jtiV^pcO})&^jQBkTr$p6)lCj(dU#uRl2Zu`gd;57U=FXo?;9 zFEdwlefguLqRhvcQfJ({GI%i+_GQ7#f?>{4dRYLX1NV%A&17wbyJ@3(iUOrYCJm zUODhltS;-_+JkR)3vMd{wt7p{=bDUvJnZc6Q)eUhLi+@8<6S{~pqVL}&dHhtw%>@p z_o(-Hr${xc9O?}>E4KY_)p*%X981fHb1YbJFG`@T*joE}3qed`qphuQ5l1bJjd!?a z5!9{=w6+jjz&jyV$5IzcYFyoWz;3hS+kf+2ZVyLdXUSbvSu2Hg?YU>;%{zyGdQYv6 z5F1mPsCStdI(!F9T{zB(t~Xz|x|JQjB+|_@{_H>f-@Lec#^>%o;OgE3Ub%mdtNWMy z@t^()U;m50=Jw`>(=s#93#}DIVS9GLCOV2-FsBpe;Q_DR-|^kE3r^F*-F!z;rQLjt zgg~p6k3M>rvu=Q{=k3pZg-zUlata57e>g|dLXZ*f3@9R^Xf$}npaXNN{G;FcCH~dF z`WO7^AN?`!efS=yG!e6~xqr^L|MIU$%YpBG`&)eZi*FLkbDVVi+OPdO{?GrKv(3Qw z9=*?UI&u5_md&~6)%)i>d%R&$Wmy(ny(Q;J+-gX@!^y2(0gT$iC8K!8a}NZ6LmSE!O@0@ zR6%6J$Im_>bd3l1&-m7(C-lK{K2B_7;^9s>-+Fp4c-OJCibTh7wV})tr4vGLiIuz4 zM6HD}^tKa4IH|!~YyuR2NVyo+7hx)nd0Gh4AO_>?FAGWcE6UmOFEJ{89O$|M={)^r z!{ONhSC!^00WZxylXHPmX2v)|@Ju=5LSf1W#xCOG84vCaJa}-%f^e+D{;rWrV>)G) zrLKpr7=u0wxq4jeaKVtSWM^T~T4*n;ti=-|h<2Zl8pE)|*MKX3GkGy;x%Y|}Q18(R zsN?FRXcSc@SD^HyG7$#P;C5s`lW7bJb*Y4CjT4&UTA&{?l!9(M%3_nukVdM@=m22} z1ee*fCu+farMeMvMRG=a8?*Yb+8wo{v}!V!yFiQq={r(TM(Np&#WF+1qKbo97%Ml& z5PK6SHKhxmk)5r7Dz!F5q3^;^9A$s%F0igw;fD%!L4GLVemd)U@?j&TOpKmaUw=U8 zJJXr2|Gw&0jCHk?d0VFgnyY20)KRoSDrQM6O3Il$pNvf*jnnh5=fYf7s#J`1iis#}O-Pe~I_ zBj-L6LT_RrC9nEBQ@}ZOHYUfR&1zW|Ok17HcuUEH5$9Cbwd@+)_=NhVR<&@(kVjW; za8)WGokyF0{RWCSaw#|;Z1i3V)fu+ct*dj%#pEZ4~6BAwh5m;tV$7 zrBRCQ`6Hg(3eE{G1S|I!1t~Qj)wjU86*lad@=@-AuZ~rg9&2}947yt5KvZTc6ctTO` zU0w0-fB)a{Z~o8UrMk?MXOH=Dp z`Pzni&tG9$R-~rR+}-VYF-=Gp*=+}=+)xdF%%_Q)n+eej(VHNl7Uye(N=!fBYfW&z~ZAqy^M9DhV{0(as0TyfDO`ZQO907EY%d-g^5jme%m%cyL+x z(xq~7Z-c1Px!$rW(g+i1SnYqEBOfz$F$v9nPB`iC&e<2EW|p#WINUIvU7%PPsWxMO zRBtvL=HuR8EUB&`F7w`l;##G&3auier|SoXzN5O4X}&g7U2sHi>f5X~ZPTP?dn*$) z%?uvKF5to$=jQ|Oyg5RxeDMB(l1?mhBOz$<%y}ZjV9Ab}tWp~6g_UZil!jDjKGRwx zM5U9$vYa@yk)CXb*A$7fB3;BqJ2+~8$oLvL?oWi?x`fawI#G-e}1ji1=_olT91K80oZ_ zq=N{~oCetid|ye~g0W+B#_aFFFOI%%XmM!pNH50AaB9*m5xN+E=2z&a->_PL*RHp7 z1pnDl**dqL9l_o%tUhEh{e%=O5~Ie^kSb86^Cn?Rvn$+(7aMR6Bs!cnbV#Qp<6+b zj2$i8nmlyEGA$+;TbWWpZH7)$yJ0yDNN=O-Vk35M>QCF7i1D`xlxEZ_5s$ZanZ?#x zMXRir1jTh?ho!SocP#~18tT1e*oy6twKWUxG-w3GDc&^*f~pXmkW;pQ1Jnu48GhC` z3+*YOMG0$Hx1n_6Kr6XeuQs~%fGpXj3DIs~wKZ~C(V6N9cngU%M{I#vGmDyw8gWST z6f!;vnuFyHP{LgCn_zz!s*rLeMx|=Td5=UT(t&1Eyka!9ci#CDo4)7W_a0N0WFHjg zKM4Y=v$1#(BX@m#d&81{G9d&~$>wSvqM6@nqtI~4Dr3`OA@@pYPZ^dC(~`)&{Tz>v z7ii5I2`#fM3t5#yU3IjL<>U!hJ;BeMzxsfufBhcse&_3i{+wRGhlux);61|_@cj-A z_tDdVG~FoTiMHM$HvB+!4k?*9F9TYP#mt3+2JK@#=-( zd_Yw``4$TU>|$rc#jv7V>CqxQzHuB<$N4sLs;~(jInA7EBP~aBsBcF5vxuP8fp~`9 z1-Ew}Q*)u~`&HqY?PVrH=e^nOyr&Do=sN0@sJ`K%vk5|f?1^4E9cG;KH0NnGQ@m9% z_lu%3usJ*DjaMU^`#t-|6E}A!a<-~ws`kZP`@mK_oeV54vn&o`VrYRWtySBuLwrIJ z@;Zgk))U%*RHa`hA+?%!y3QS4C-hMuDY-bxVZv=UwvX0IYaW)$&_QyAJ_;pg+D6FD z)2k!tg!)E*@2rEaCE>FW!p4-mc_9oDTBH@F&I?r=)fd9BMcs@B&*-;=HsP8*nDls{ zbP+TmuCj?8i-Ybgn#C{A%&Wa^7>xWFVj$UFk>J#XTLG$v=nBD)wwwML4)hbSSr5=7 zaGZ)wS9LX3er9$yTidt>@uzg({ZE<*tpB_Jk-xovp7oS{K<2qE3r8GBgfz&y`{ zyx`n9c){oAIBf`#B_)!-rVy#ifjM|efL=~GKcF+HoN#z34!4Qu(xL81b(NrnvJ|{j zXj|rgLnOWT5g!kicBngVyK61Q_Q!4|sfmr0MeWrlL2ym%*6ftc{nxlREC0lxQW!~xfsS<>@zVJ4~IPksiy~`mbhHj*f z9k~?q8KdN7;`Y{?AugDwIb|c`)zZi*5n{*r)g`r7s57lXS_+NCF(-!OkyCUu?>`}b z?$rjR&g3#vOQF<)qmh?NnkSa$9}_l?t9$1RyB)vsOTWRAJ-5?=X@AX>8~Jpkq=X9* zobvGU6-ru&MR;&=Ne)L|92~`;5DCoF%+>ihgO5DExg$CVn~u%-<=^@T{p{?FH{N`O zk3W3Ov_J6f$1nINzxg$8?j94n#<#zJ@jdqc=&Ky(v|hFx^Ucg@f5-lKU|J58W#Pdq zm$+Ty?vM>(937esas2XTW|2S|N5U&?+)~(Qu0C!9YeoiGi;b2KVuU+LO)W< z%-k=wC#{Z)n20%Z&llgm&*$H8%#WWDE-sDDP$5?Hcsr?oEUv-E z(-R;B!luLBCO8w8yTr|1#)S>%!#SZ;s7lnr&22@gOw%1A%DB6PX3Tf#93@qTenZit zft#8K?^rF&HU@X*U6;<|V^4OK=zD4@RCUx+*iRLqTHQ{BqA(y#R2JV8H#^SH0-aPo z`e4uLW?`CVO6~C>Qlzl7N|`EuVemAU>^mVRb}kSJ%&pRSC^>&}sV=qP5xh@0FT`$( z8zY=1e2e&!sNVSM(RmgMosZBtYDtKQ5f$r#cpG7(4OdOY8{4{;Xc-~nyppow-5H5H z3LQz67&qV++pP-7;K?=7iAN;jk{REIQAl;BG{;tKH8!_ zSo%45m<8)|7xSq%v38QUiqnD?C_XUs-OogRbB3P(!9^PT?k_65%HJ^#Tg7ku;Ug>?6v&N*@v zrktpBM4bRnDTPD6!C!2D7**&$|LSImSq9{dIBU=+A$gSOU zUyT><S37JI8>c-t227 zmrrPOWHZbuN-N+)v;7x>b0&w0-a7T_1>Xx!BTpQ;lop*V0cSJ%!f`#Y26G9hwdh^UKIuVw|er;Watc9z4 z_xRH1-=^P=eE7i!h!5P|o(Rpj*sYs5rcLTlm zR9y@t;~JV8)8Y72tWkwD6?W%W&=P6s>9-Hjm8|yeqwn+VZo*YZnvNWoEe$x$i>*ys z;Q8$xi)LOwzoPe*Qp{1`#3Q1(VvO;nWu8B~VY->Qx_XuCC+{+h4p%dufAgyd@crl4 zcu{&iTDAm#kF>@Y#^-pQNu%&!R|suEz2hz|lt&A{`kQaU=`q#8!>fXeJ*R_%4%qhK zm9FYK%Jqa8ac)F{84r)Qh1|Cx=$ym*j*@1o7bFIzqAcA)w*z04L#s%OHs;3D zs0=a?24`c?yTpKl&6){PA#{ypDO559A-HPc-PJQOlnu!xx}elLF#CmGJY9_xQEH8- zMq(*{%)y~)VY>;;xgo_+#Mx!sXqsMXHqZ+dr&~(R2$gA4e9O>xOsyD%%X`!<$S$JG zU}n9}Xq8bbbR*-iP8Jtot`(xE-zcO)^+Ic&;2OU7IB|5*eSFAO$Smm|U zNN$eM7V_*-t*BJO7|3%a_=c;2#RaxwPZdX<8u82;6$DQfk4`hbH_d9D4tQ;-T5wYw z%+rx6+S=Q9J?ZilCWPRy!n>}fHeGwY?`13v?p}Vc*I$W;w-pPGU^<;8E`?wQF2{_M2c@p zO@I`-5Ye{ccD=>;kVt4^0V!wU9~4}FtoU4Mts%|)&ds*&D3#0m5BSyHhDVRS&!hLB zTE4IyjDGuCOt5&6oO-r?&07F5`L`75*rbDqdk!n=;$ zZs75gk9hj@Xuq2>(}j^nKC-3#WN ziM5fdjT!s6!HZ|;g(+1u*k=Lh=q?>`inQYJF|Mv|kB^Phl8K@4^}qZJzV@}>pzpgM z`v>j)_deu<58mgsS6^e??Z9t%{^SWv4Ob$^+h;s__kEN`=OT4!>`yZnyDhCkZH<61 zPYbtkk48_gp5v0JS}apis(to%?yGz!vrNW$}HN4EFR*o}qj?>}W6I%LyxycwzGZsi+PLf_%q4i~|> zfEOF@;+5s-d33Ym!;|v!pWD*h$n&WYo3hNAB~J(t$B4K+Qsl^i-sLMpxm=-1M8Y~#m&ozd=XK{s6As1(`pU#5D z4MCmlMPqd&ALyoq+H5t_qEeTP_(0B??1hb33rKxWZR_{1^FK3xSmlQfUZA96xg#Kc zhA(O{b{9>ps`u%Og#0Z(=eqtld}^ou=>vCGSf)&CZFPc#AF8^27C_ou%q!v@97<(M zN{}8mO{AtIEufiz!<_<+3D?7+I$YV{>Mfx}T5C8u_9f%WiAtj`jxZFULzco+3rggq z6Ru@OzXjKE$afZhXe|rU?HH@@i(lOGEC2I<%lDsN5pd4p_~!VtU&w6ZZYL|)#e;Z{ zmbR7#1@D#o;xT{m!qTO7_zOq`!P3)iMVmGdHN#_$l7{|Fj0dYQX;{S zq3hwNPF6__pD?a*LU62AENllPjvz|L{yh{EVbo^WQeE|bt%6cYBSfJlqm7BTpHH4M z&O3tIxCn2ETPKdz8s1xfzE$&k*JP3z6+skyv8jdnU}@ek;3Y#dC%hME(O#X}FqjUG z=7i7^VTio_rMKAa&Z#wXI4zu=U(%0}hp*h{qmOUUQt5`cdZR0S*x+JhPFBGgMpIq( z{SLioNb)>?fBu}iyAuwj%rnh-vO9t|G_7joWh27ja9vpKdxcq*7mpt?%`X^-x476` za&h*M+uLXK&M>5Nu>)nF$>62C|QTOsVnq!@$K^PivJWSN`??@jFNy zX(B8MhF#A;`K_<;fBlDV@$~K%Ggb>}u^Ofike0L}gh4837YSZ?xVt1o$IVCY5<1~< zntA=_zC(He;rpIzD>ZahC%ZXGgXV9O=bu6D8+(e$#mP_KtMe zBP~IH>^R(Z;4;2fG*y}`bbW_o7a4c=>4qNBOv#BnRqD{OkmxmkvNR=Chn9}2nXHv3PY*0<&zIkPofm)k zjE|n27-Hn<%@b~(-{G2(p5D+N`LY>dKHO11AD z73z{`C@B=Q^mI)PXrmsNE7KBCSr{%Ns)=iHSj61*SAqos06;D~GhvFm06U3^-jq$~U zcc{xYQ1;5W8-FsCY>UJttdWk-E|m4@{YElEksvgWHkTj@$IZDnsbv#9+9_>23I zAN#*$-;Ql%s2D#45qv*&AKLc`-%2ZHOBd|OaD zIxl2BB0iv9PdOZE#Zy8LL!?fP=4X63qohLXW@3Qo8-DQYkAloc0_Vtfhqfaf4!!i$ zMRD^?ET-BW2Z4>U!SU7Cw|qg)S|| zDcRHa8%i-PYt@FQ&?HcEMK%$Cg0rba1D{tVtrUC<6tOQ6jdmeuu0R!o^#@^IGOEJE zd-sTgr&KZGQ)--@U-0U~3m!kcB`-$yie2FB;+!B*YNJVGA=B_MzwB~WK6?5QkDtGw z^8uW}bFy0JzBZw`b#l{`Zs)C0;H()Ds^Cr&nhH-p{0_%_LY>3okths*v7-+g&UW`W zig32uv7aV}u%k91sxnVU>l=HM&3NCq-A|P2=zAfF<9OQhNB_@%+sBq4BFnZOV8yQnO=eg&3gBnGfGP zF_jsw2FG}br|?c$RM-B0wcvsgvK)?HJZG2pNc)Pr-#Fhz-ncjLl`n4T@BSki7YLZyFRnl&S%N9|sGktmakmtTbA0ZNhm`9N=|WF)o>~)KUpS>m&`5}lloK{; zGOuzzId1ljr`H|(WnlEma225II38x4FSO<^&iR^V_R`upIW>9q+ijytIW^ zuH=^qoevnvJM1GI^uof7k}Y%q&)NI|M|O=rSkm66P|y3jSIqN7;(WM8&4j+ zhyVP*b~{?yw>l($Dy|oUN@+(>2wGXR5)1SJX734pLoFxjY1OZa34Ml8DOGS}N*2`B zbsP`vq~?=w9ia=%J` zFZk-IV?_ps&xJ*2B3oN9%nRZ?Wxo&zxS`>OjZHUOBj?6{CXQwsEYSUgF}eGZopSgQ zj+^_`k27$SO$L-&p>d8E001BWNklwK zP1`zU^qhUlR2TW-nw@;=Li3aUnLm1{Pr%_c)5=82nI1@5EX){$mKVGPLg)y~#3?T{ zjg&gkQX@!zVG!Y{h2Um17>}e@TSfSjn75$_MY6R?N}>;*^gPkL&`Kq`o>NV90IWb$ zzg`%tBbP+K839jf5ImmdEL`AT8gtayNZSw%tH?#yk+qGhRf6rEo9)=edkem`)d=H_ zNaw{mh0U$iFEP|>%hjkzFZ+<9cnP*g#}PV*D3oG*b0^Vyf3>TE(f&2o*KFP<3Y`S1 zS4y+-yLYB8EY7S|Zrx9cv)A@YT{N(WVEDyS*UHt}pT_EHmeODBCLdR=>bkP1zTiv4 zwSX%&ooEOyTh+&h&R)UdXcXqwP_2Y&_Z#Xug>a546-S3e#b>*8WHtSvI!keTANb0b z-r@ek1Gy%Ke{p2fZ|TMk(LyT`-gse&EI^ZW&8b9 z5xjHMnwS+fVW9PuQ<=EDcc0jGvKa^F(?X*%%`;Wkb&xSh2%>C;p5tkvX(cppv(hZaz~zHWKKGy_ zxXML0@P$`yc<2+h_*oGigGy6QiU_elNSpYmm3CI zILQIsf50$+9|l@0lshwpois4iO4-j$OXeBU^_U>)HcPQeq*ng;2JGqCPTBmC<#`=unx_I2zfq7FtLwN6Qj*aa~c3 zp4}!eH)XDgvtAIfim^0L=sU)-`#T?qpFY4ojjQR_YI$na9%)|L4&f)hkpEsGIUuJ* z(`K%a&oEVA)K;-Ul=yc*#Qx}C4L@d0f54A~>lB!CqG+X7VOFT#+7;4-oC@_YQMJ*H z=TuoxdXPrGJ`&CY=XFC(LdOX|IEstZWnuQv=A${;hYf=&r&Xz&#S^Qexr}SVCTys6 zhLhrASS^#4a#BKdFSV)8#P4daaa~i7O+4bvwQjzawgz|BPPbEV<`VWela#awe@=+5 z86ZF#KCG3R)^Oq}uC82pTb_%vopfy(Czi@4*cjdLvbKY7G}3y|hX8f15F8aptIocd z0JO8+yEgLDY<0lPNkc;-M1-uCTJ7ckW9`jiElbbyyyyFewbtJI3^jE1SUqqiB~r9Z zCsHIzlqDrjWC;l%SaE;=)Qgv%&Z%?u`v32H-{)CKLE>;e z*iIZlYkjC3G>1A?p=(N}5uB%$iaO8S6fa5_J+2iSGxq@}5$7ACg_<2re+t9OU?x5~ zd={!SQ*18q9H~M-L~?1k+UR{mi;`SHRfzqHCk_T{ZoRSlPGz%f4+P42F$3Hx%B8hF@&B`CW;8Y?9Bm|40z$a!%vkd?YNxw zY{yHh9g)eq%shCCHtvikyz=&4;%Y?{;p}9~(Q)9}=Z{U3naw!pWgxi;j}j$-4`>nQ z)X<_P(m+vxRzpSTx`=cuHmf80;BX}|&oiMvB*sA2 zXopdaXmHSkmM6x^RIv9hE5G;qFD>>f<<8xASg#vD@~Id2QU4*n`r<3R{@NYZu0wE4 z)5Kf1Z}a4nPqSJ@ldjB_=!V5I=TY&5=Gkkue!DbUtE?oFe~JmGYBA*X9274d$vL`p zGz#Rd&;n>5X(@v`R6Q*>ysl_oNv)D=!YhQn;W{BUhcx4=GiRdP;3e29u6lI8W7P+A zKT~wTA9Q%9gt{V4ff5^Gv~^#I-4g0kR2przM$Zrx7p+aScJ^9G5X5!H8Tm`#r%$;e z%>vVL^}W0AfAAN4sF#8PyJ9dK$|HOH_{d{EKe7&ZFfw=VL&AQ~uZz-BrDetS@|UWL zeeki*^UTUAvxhn5MS#@EyFG4wNY0**^WjNVl4=Jt)32)T62y$!aTh^LA=F z&Sr2LR1xu*^U-#$ICGA-tZ1-GmUn?!0Kbe-n^JYzjW)$;qp6T;L4C0B%Hn^o)!z2t zJE*ioe^|KkPQa^xhg>aZKx^potzFez?jd+`RjYzjGrRdN5SpTrXu(m`LQdXUMXreu zu`r)F==$D*O2wubHLKNjxKaKo=qsBdsb|uN_m=LO~{W@OTMSr&P(*l$kCntK$P&Ys^!@cb4kxLdTpFrxzFO z#~mc4IU(;ebuOIGl~ycOoW>mmrIyThUVDqH#~WKGg#m4i+b3JrF`B|QH=GXy=Lk-4 ze?H(t$5;y0E0FV&JIu`Ly+2Cu5Q(WQw#bhtxDn=36>aK`CS2We{fXjz`B&`F?$Y;1kk zGpq)3i>N5Mc~keIPHgvR5Bp~0 zcNQ%n%PoEBwTd^ooL9dPf9Z^b=2*)8r4hU%V+)y%MN+Vg*qebis$?tm zIBztdR%uCy-dW<*TllP~64k0}>N46Kb-}gPCRQ`?&i*os-TtdCwmD(Z)-7FKHHk~B zwr-Hp@C(wmsg3V~H#$|tUI>TY@Ppnd#6Y9qB~nC@>Ilv)0YFnAf0}Vg=z}wvO;Wsg z>xes{7l$X3ypW|L0YWx`fI9F=jT9!HQZuXGrUofxZlBzvmdfG5z^WTqtp+Ynw@jt7 zTK8;@4*B>0qyLy6`PfHz<)uI7fB5hJJ}6o{d_)&J=6&X16A@Wr#-*(yI-UW!u?zKxps8S z!ODVR&PAGfMyW`FdCHV&wh)tx2BF9^xm8>R=>pz&h-QxZe}RvF;0o(-Nu4vteT8m~ zFG_vq3#9!UL)U-3|)t7N*NWM1Gy*~BI~rH`OKSlMy_2wtif4-+Qs|l(D-+9tJ;Y3&+UbSgTHac6$m4ky7Lm&C*b2n+#arg3q=nN|5 z#W4&6bvIE)pli^3LnlvLl8t&Sk*;P4F9G@zC^|FOOT1qhvtl8wi3^;Zj(qtKU*#8n z=?1zPxOMA3Z{0m3Urzj;zx@mRd;j*||9*PAx1G)vgGAn3;2QA#Wz_gzY zHdYpHhuUjgT@DL>UVM73P+K9ZJrBO$j{N%tuO11~P4DaKm-kI2w)>eh?rF_%mDM_MbbM%^ zYbpfiZ10IPK)zQ{9Bq-j+e6DLHEs#SNU&S5Y9l(^2V1g8QL?$#O~qn+dS^WIhNbAm ze=9W=rfTe6ElbVKiA@G-qlp1&To&RB21aLlE(7 z?_cu9J8v^(*zaaaE8M~YjjO)1gH{kqDtz{*f0keR`JVyc`DdR&r!)SO|MWkniKFC% z^PZt!G4vg!DIF^=FHZTVzxR2LR#({VGn=C$VqDS1z?CaEI68cuS_0eMJ$$NMe~w#X zx5Br8`bxwxrkRVgJzd{%b;x9(wI=~o>-*eh3ac8HX~(sPF1c_WiK zPwb8I<<-&D^O5JC<(YMlxRIuUe@>ZePu`&JFSvj2ZB#qfgF-H766+? zoXACCd!E?u1E2ii$NAkazs4WG*>Ig>?mABQ9mC)lyr*_Ot5wf>9XaZ5FxNt^Tf7$L zZGp>?x8J?P*=bMg3N9#&6TTKS4wQOIsn)h|R7%ZE^A1|UySPl+BE!0)f7HzO^prUC z)H+jgq3Z^&U%STjt5@kH@})oe0woojuq~^U8ig=Krd%0hgOf=1Y6{{p;Z~j9UNOvS zYlTS!^^Q6va)x;xk(!`ZBm~x*6>s0aceXrBWLM~`X-Z4pQT7Fu z4uWTriljn}5%s1$E(j%0_y8>pXtbU&KCrJ!R8Q{}QNO&_Wi(e>^n}n8yCcf}9wj<7 zS>`EGL{-*>ilEn-?~*Lkv7{{37bG&uC{O#oJ4f$2ZP z4LD`vA!uzD*8R)m&eTS&jkz|i^alKTa9DUh&g$?_$ryA$!2WicFv48U*6xaqvM;zK z^aE^LL0d;{h0D;;e|3bhuoF*dmykSpE_78$VEE$DVbWb;+F8rMM@MB((?Hr5yekw{ zoDOs{(Q2fHOq~O+3>*zgi1sm#r4UrDJC3uRBHpyCG*hyo%g)_AZa61sZWe^oLKYLY zAohEl2&q+^^ABrduyiq-`JG*}TfM5##B4lGunHOGU$4z0f4^p+uLjTkIAW+{DBKzf`J@xsy{Z4C`eSF$yt z3-kk|wtVhl>b=~cLvgX%uF{*+ITgEUyP`N3scI9C02CaWs|9H=y=QQalrkYeA0j~= zTbXgK(#J^7e`-P-1sUv%@#f3#aC%`-Bo_jbvdIo=Wj`&4oDgWvGp6}_Ln3xvGc0hm zkcpBgITFHw?RGk4dzskpb|iXko!=+tk**sUq~q-9Dl#jm0O~w(e|{^`tyesK{RVZM8Tu7_GGQ z)iqB)w&AzGe8RI&3ZML7C3YQ~$Dif=&2KR!#dnpF9+{z+f~P_Aw7K9m4jn3?2)--C zgTPC#e^%C4uJg=?Zt~pAFEKwAxmQ-C<~Z~nb*{8t*lavkuUz9wHy|`R-{IpG&hA~X zK2-J>N~ar;ks{z*q^b~N}GY3coMZeKqg5c&b|S zf2GDi6i+XPsnrHknem+v{EDiXPL&XPT(Ay#lS)bU@TxRQFpq=-B%F4LPpA}J9`HUw$dr=ss)Pea+FI+!?JBP85MN2oUNhIeH@H@Hq$q@F z*KhBD=omuxXWp5AkDcxPfiQ)d8!lO2fB#^J50m22?lKQ=uuZ=AA^!b}ZyDH5nOrmC zFlWGn)cRkrN3M%8g&zRRaevCM-S-L3Ibc{whN)I&1eHoy70Nhqu@{P0hN)4~ z1xMW)$sPM#Xmz4rJCXo7l4GHGB}Ap4GqVU@szHXl#|@E=HM^4?4EDWMbAmaNe?y_Q z9fLU1 zaRPW3tWyqVDsoHj)ck*#|Ha{&e?6RQvk+VttO}8HT}DgxP_Yx5B2A5x{YKGwzp=qUP!v)3n5ih|YGUAsNhtcjdTWVZIN!hA@ zr9x>SL_*6pB2!2u^UgbWaNfGwtu}HVd5^hXj(0BA*Gqi`2IpAC0 ze1)%l^_xs(=9#CT;R7Fdf1Zzi_ytyR#cn$jLeFlurCSZO2$%akwZaesz6%h@GR13Fd-oF>uKG&?ZYB{CbTm z3Evzs23qR){g)@sC&zB;dHJ1l_64f%z$xQ6GnYz>YJse2X53F)e~f#Enz?;)o74L{ z?q6QApJuv)1Lj=lT}4afbbF3E$M)=!%k3GT`t;NM*kAi7fAXz&8Rvxafb#_L*5m+F ztYSHr)+$*m$46Ir^6|%c;)$zdalCuy-jX2pI4K}dbueRK51n7xDrxBO!y(Rxhp!#l zVBH@gt|R+`Z$e9re{npw6gq_x1ZkdHGg>ToD<1CMKV`QadG47jy!!er{`fm@bNgh= zt$TNQ`l;(Y`S?wqd~(A)?YVclqqQB+JiB4FUNK$l(PoD;ua*HY`xVToKyN<-K3LE- zA>=HqLogRZP-vOfI;w9>WpDYNCeV4h&H|`ei-rGOph?B|e`}-_bFEiLX@SrM0*zG+ zgeVmCRwL~ky07%HFcu*@hi8D65xlJ<{Y(*aW5h#27cH(`#v3)5l&U?rlmM&M0XH7I z^6+)yK~78-vi5_u`1_OZ?S13#(^)ycdqK%F&cluC$846dzFWrN@<>h2eV>QrKX=>R zWv1O8amvxbe*p(eT7Q0|D)$h6^T>lWz3=_MAEZ+h?wyTX>~_@Jc;f1YgZ1VwbrNvr zV&wAfJ;rImQD{Zc$trYNI!ejxcIWubimZ*Sg1SQ7D0SzNQgMSP#1&ZwYC2!cbZQsL zjmP(%b~!UqXjKTcQ4@HHCLHsY@d`LXXiQZ(=pCDze^2xJ{3N%&^KC+1e!z|XVi1K^ zn%x+~l5;N&U4n1Mdy$77bf=BvJU$p@t(9uX7Y|Mqb)M9eAl_c6ot-X&Q<|2=hwBNx z(Xfh!S2Z;%jgrgKnK$T-h#AmC8+EDQIb8yJ-diQARijadq zBzO&Y^^3tQ7^$x5LJLx2@b+g`MKlS%u8L+QBq>uZqZt)<$~rMDNSgzpX{c# zUU5!Q@idficfo)8U;JnMumAJ^#P~_&q z(AJpK$YvPWv1gbP2=s>=avEt>sMRo@K6(x$a5h&`DY#gevvBv$p10mU!3E=ShoQsA zNEZWM3zIaQYm_N*^|3>K^;iE*Za(uk^L|7;cxU1f7lc*6=C^j|-^W3!=cf4Xs9piR~ES&In z-#%t_rEz?esoTO(F05iTtZaRSP@OVv_q=g8a5)|Du}^%Q+b8$AcPWUAtg0ifRt6&J zd)5a7+if94AsjgJ<(|`%9q03&k|S;tf5}v?9Ch4$;wImH>5n;|cDR;lBKRl_>&UlX ze3!rS!yo38pLm|%{mM6RmhPmg9Zp$5Qqthj1XDxnjHenZf3q%A zJvv@|={BN;PkiWE9=mppw{PF)TQ9v0?F)SN$Noh=@}ZA%v_9kuU;G9qCzrhS`n!De zV~?|qjhZJk1gHh^j zoB*k_o2K3bbKamk#|y$jW7dLucW)i)K85!)^(f_5e zr9h<7X`*CEZYBVk4o#6Vp4(-!4ETlC*n-1_0u5pf)KGEFQ3U$Vada$PdF}~D?-=8X zuy|CAC2m{aWt40PS0&)1e=*O^QYXs`fh;#V3!v3f@y+gqRNKjTFRFv6F`+b)XF36G;nAZsHo$kyBnt=fKw zU_EuG7 ziyfVV{YB;O$)4}NdXMNGL)Q_zKpY}RtLr$OXxX8)GP`QB9q+k!a=~*?KhE`QhYP4k zDK%4TW}1|@-+YUcliOUm-t&o1J;#$*ukhV(zl>B{GYH0*e{as26Wj%w1cF!ke$8&o z>~<$S@wkV0gJ}*N+<1;6FXD()=a@RrTesnfspFZ0Q_`qtZEV}jGYBMEaw|CLKq7d@5F;7~qzgFdSRGtr%rmMxniryURCVNHuMfFGoio#PLM;OMTUSlNALq$O=i>gYv%oqpq@T9#yUgo$jpR3oPuDl5X(FzAP$8-!v9}bvnGYhg8=xhow53KzNOlw%wIJdNE>id4yb@GN>XJErK8o;UuHYtXzQOsg&r^V+Ct$UYHWtU_w_xP`ccQyaSjwPmteSjtIV z@&b#-QH+w+v@NzPL7JmqMdmq~Xu*knf9D6=hD)wgFQk&`qFaDBp1SN=OVx!|XGS&e zBXu@DvF}VuGw00E3biiK93K%a57y3BR#Xwwb`0USq zmY@B}pCyfZ{-59Z9lrRb-$TfVHd;F4pZwP6`NHo%&CmS!r@8UOA@e*_lKGJD-9P6G zU;YNZi%e5vx+r|>-8a~$!VsKQe*r~k-r*IBII2?)W5o55M9D&T?Fo+AaXC%AS_W29x!5bWFEZQNljcU16|NI@<&<2``J+D> zIlX&g7OZ|?GxXG)*zFPrthl^Xjs|;RY`5kJ=%Yb-O0Mkk8L1RxAGw$>e;B7kXs|Dd zk{$ag@$BPQ`S8uB`1Z^9`RJ!U&Ig`*im!j;CDtoXZI$3V3QDV$THxsDItPav)|(^N z{fd?f1wn%&rN*2xj^!{A6m1!mKvZy5p{s-tal47)9p0}{G2e5QjCYYapL2Th3erYf z(=8ZJX@XOaR!hK#R;fh|e<0%`DSN*1jqmbPpZNqI{lJra<*P4oa&n({ZlCah=dbd) zPe0A|4?oGj`}{AX&GFT5zR1Tv{uoc)IOf%NwhXMyd$7n|T4@{%J(Ct{YN$8ylP{TE z8YM>BBxn%4cW9ev0iqw6HB*bj?-J5ATg*d^+&2~2f%8u)VBk69_~b;rfe5Aakjo%(&2ma<=~gwaha6$TJX*$0G+~7_ulO} zE^Ar`jAOC)D`I$GfBDM;&(sQYE=KZ;9m69#^+VuL-m}kDVC~-fnrxOKu6utHU*zF` z@6}PN>28xMEj5}K#*`RZLrNoPWLqzAIy1x#m&K~AWj~Y0J&}&quW&ugXXm8-4(FBZ z9OPzBb?0bKz(;)9Q00OpdIMZsVyGRxxske`jZ8A42rOlHR(I)0_cU zN;6%mxP=ql%93QY+p>Mq&K@Au#`P`8!(Md6kaxM-X%8H|_e=2Y!O+Ii^eWaP$JxWX zv7|0l7HES|TcfxN%^AB|O_6Cg(u!|FZi@HLs(9+Ct(v*TJ5+;F?JT{9ch(_p4-}KG zE`c#;$$l4&e|Qw^^cO{zJ)}aj)U>hfJw1_1p%#xu>+||Wl=I-5L!)*6=Q5$*`uQn2 zJVK~Ss#dM>Dx^HKAC=*7jf)Q73oYAiPiW?QZi<9xw~D50cO$hmT&w1VH@d*mN^oe+ zHY#tHaiBgRh*|K@E%8Zh*{VCuCNU)^@IoOY>&BF3e^v)qcwICvV>5 z^|xQ=?N?qwOXc>xa~{*c*}Yf!AK!Y3bv)p5cTP@)p*x`H#GU*1S+5Rg6<&SgE@$Uw zcsgpZf3-^IgsB!p9j<0lD(qUtg~)2|c=6>w;>xufT)%#ksVc9(dxvj+`!)I)xt#aJ zc*x^LSsh+yU$SUvMm%t=rKgt0T-7QGp148iI{H2sa3n^=TQ^&BA%;MaY!kZNjGEQk!O*Lx zwn$0Ura!SG#-4FMqCO$gv%5Uu^7hNLagXoB4)PEAvSwFo*lNhORyI}2V)VBu6~6Sf zf0uC57&dDT)(0FPZE(QtyJuWE3T$rN1!x-Z7>+{@9%`A3tn5xx;>%(6EQh{Fn{r@x8FU{6MQZjLYR((H`f1Lk5 z+SxyCGO+R{VBgnFb%KUK&XqbgCKo9+k<(pUui%)%Oy35^IZ;~xIiNU4yDVf@xVWIg zwG#47LahbTHPRNwai(uGM4N=~c6(a1XR6m3agnmWz&p=Dt(3HPR z2dc$>fR-J3YmL@~CiXxO9}%e*C{x9SKrI!gcIq#+fHxhZYalVA*~aglV46HJ=DWjw zh&l<>g)JY%Ft-)+@Va1TEfpbTMI{ghC6(p&+bpFn>e0?rlD<~7I&w2ee}#kqrP|>r zHHt5|7A(NC9HL6H8?uVSbq^BZm9t%?U0iZ_bVR>0{i~No91MgpIB&c2pyY94u8CTe z4)a{w2E%v)hPZ7uhF=1aq8TCBElHrJh6{dK!w7g!&W+%dE_iZFT;4rJRaqS!Qu0Vj ziKd<_$4_wmshiw-^Scb|eUp9$JMdmk z=V)^b!T1ezRuakTM%!}>RazVy)tOD_INyz|j(VPX?rHwy#W(ncpZ!t3`jsbn{oQ*o zRH}{`CD^lG4>onHe?pthvPSicIgu$y5M1-PTxqr9d^EbG^Au;*&|Z~1&B*EiCxuP) zOd*l>GyBWC+`IEKkXVO~S`?cDEXrl6)M^5ynk$aB*ci?KAgT;;#o2bx*T3@?zx27! z@R?72l%ve4S9H=m67PT9ZnF8$SO{OaHNW&Zwu`w#hpf3N-tKl-De%DW{5qs5Gb<)H<4&`2u^JU7=}RILz2qi2h*LZK+LFSv_xDJTJUsL(5g^+ zf>@2s(M+K#AZ~W#}WKD`MzLGNaihi(v?q zCgcVO!4$iHfApc)$tR4y7 z!dd7!9oM}0hH!HCj5a0wGtWHxcORkQ+pb9*5=`>J@?c(=G}iTXve5k&)t@sU{eyp; za|^Duf1*tZ%MGJ7Z?ci40%l$hON#pk)VU?~&O(Y)S?DxQ4CA?gajI5m24B(OS&(&h z|5rQpi#KVE6dTD$@2IUUPHlU;^NMrW4Zm~r-Yw2&w}@%%uhs=mvB| zty<@rfl`uIa!KZC?;Oj*0VmGBF5(DY2^3nle;|4r^xm=G?YMuo=i+k9_F`nb7&$xJ za0Sx1;9fyt!xaA z)oMfVkpKi0#CMGM?{R;-r4Jol9H^xl^knH9?=CMmy8bv_w4mZ zU8Z@Y3jx*2Za>o$VzAqUQ)donfoY$}I+MnU{j}r!a?7|+oLyXSa{oT~$YvM_y*(hu z{b)HCf_2DKA*agK<6}O2^Euvp_bvyAN4#3K+bgb7aBt|?+e-~Cn zADPlf^$qu6GLUAd4sp>YW1UC5x4%=jVciG%Zoo%R7kX+Hw%dE$yYo7`(>E!3wjI9n z_}DFN4g*;c)L0hH%yP|%anqYQB~%|Mk3ARXJ6dgg=F=bMM?QF+r=B@rwdoP*NG0>e z%Xhf(%+vhP4}XlWeEk*XwCBUme?QIZ?^>h7i$kM_9Pl|&eX!JbYe;8Z`pzw{KOxXG zqov>o;3D3eh{x4{Yigt~tv0zUk>*y+OvDbu!3HH|rM5r_1I1TZIb5=fOV=AM%sXMV z>XB@<+6{#{6(kij7TRJibYr4rn=Ih$(9n4ps!b);3Fp(q-TPZEFLqp3ho zPPuh<$=#DPZr?fQox2y@y>-EUJ9D|4IXRm-KikoAq2$8(<;2O|Gsba?X6RQPPu@7j z`|!_M%pOqM;v*0F?^h(dcTw1$pVPFk*{pc_vEzsDZzbRBE*~BVu`RB#hi|Wj`G5H5 z&cN-niT&9nbINqlbM5-EfB80m-2zP$c>qsaCK8Vj^d4;oC@dU#Jr59>Fa)M0=Bxl4M07lIw`>-0P%`9diINNnK8^LN2wAp?~oS3z! zsNG_nP^7SuxTr|&fAh7AM6{dVVx?0QDTUk`QUvdW*f}$>HE7-w>5bY~W?Edv|I3i6 z)WvY+I$ABvtup2gM`PVN#CJ3b63kS0|74FBJM;|w+EyW2==$qC{nP=u&CF?J-p{BO zYOR!MhF{{VmGofe-+v0Y`1*2m0a;{W>fU*{`d`2+C6y_36W zZL~IV^XX%%6yCjchY(h5x{f#Be1ki;U!xVz^`on7=N(#Re*Rzn3GUsw$M1jXJFKp( zacyO^x_N7Qf6?Yh`@Jv&6AJc;Gh$}@PGe04I%oDyZ0`*bAAfm z(c|&aarL-IMYwTr$dD3m-n+x`;UTJx?R<(0Hf5Ohi7FXInX;)$Q`*u}X3l0c)7H$8 z7ljZa(gk|o({DET81T-M(qzHUV1gjgj=9u@rS5p`fA%?#-+Y?&(PR8?zxfAj&$skl zhYNw|2m18^N~1I(iZE;jT7kJ`WUxkuD<1WVi}vtSx1g1Y1o03eeK(j0D1cYboE&Am z%jxa6xV(1@4Oq&(DYa&N=jp_7$tB9tPc_RTRHE3VEm?1s=pBVZ2m@UReDkGu_~KW- z$wxl)e_5!BvlAE&JTcne!;63X9X|OZKg{3w`M=Kp`5V8*@#Y;q_3@j0>%~*F7F09U zC+mkdXB~MGEjPNwj@7&|FkBpPMG4{uQ~jGS$mUa&9dt}@7dis=j(2lnU&RKWwod(KoG$qKuWYID-?7{5gyo~ zAE1eUgvS0O9(p2&N3tDO*rYAf6v!X}5MZGxq5AB*+kDMwcC)qz>tt3DrWkgFFse!v ze+rrRyZ4;E*LvUQdHqd{bxc=1Vq5h*#E47-+idl6HY6w`&vtuEP(zshIrT;*GgK#M zp=m1pe&A<6|B}_JBLc@w%h}P2rU@LfU`)j?1I9Y7{dx0uxX2?p%}7-L|J}g$n;r7s zG_HB{c`rF*(#*%0neuh+(tq=XeVC1Nf8G3RJApAnJ7)osz<7wPmyJH71p12$d=g@= zv`t|eGyC0ym84)c1Fl>#4HL`g(}d-S=+4<}7L*!D>% zaA*&`)Pi$%4woqhwpNds3+{D3RaH@{g8`Dvq#UOokEvC`GRh3Zx&Wmh7^($p3UjB8 zk~Kh3F|!U+6ZO?-@Ws!9h@1-6&9$w9TE?u?4yj~HnfLwkh|jy{w^Lr+vN4d8LF=}a zsYGmWs)d!Lu3QoPT%{|iAkHaAf81Clyw!{q0dKJ$jI9(I!FX!pp%h9=7_Ul4nbmu( z*P7p9C>(Z~DIQpKEyh*V@p%u8qf7n#jcPHmXV(wRIYzv-b3eRgaie3iK0;FF+4)oY z{y;8~m=h@_4L?dHQPm6VoIZ?9#aWAUUj5ZpLsF(f9HIh>eCF!>F&Lw&e@8J)smJ?< zFeixZ{BVn=(3ncl?=YMQCaa9XID?4=?`8=`iPY>7llc6LU$Y9Gz5w!sYbr-e&(DAI z3x1J)hWC1ds!ok}X422pt{uPspZyO1_yK|5KaQBL~SrUhXI+sQC1%?s| z4d{!<7%nf*F-^ZwG?S*t$|l1%t^rS;RMrPzSmv;^Bg>6pyK_Tn+y$DcADE(js0WwB}? z4H0Cj6t6$`x^}ZvTkyu=#85;7q{a%y8$Ik+^_GWjiNW*dKlzkfx32MzfA8;My{DZ9 z7Oms#WX;pN=Y0P8e;54j@4v&k_57Rv`QLK;&5qY@uX%LmDUDq+)n3VsB~kLogu#S> zO_}U6!FIadOO@a%#U@O#WMDC~BQhho8sg-zR`>0bj0DqQs7Ni?l5t`Y(=hCNLKna` zcnrBzq6`FA3GSG2JkXSeyjYN=&_t((z0wn=6{Yb?wVQ-ee=Nf`;Wm}L@O0TCRXDzW z#1G!OK?EM9Gp^4bi^~GLzH$@{gTP_T4BJ831tl}=26Y%%i%bza?DctR71mTr<$QPG zVmBfPPmSfX1Wl)bU@5TZlq+G4<7~Yo1W$Dyk<79SG~SV&;jlfYq@*i^S+Mn=!qQe} znw*+93(Lm-e~pa5k@=gu^0VJqw=XO#ny;q}qXoO_Xy$3bU|`G*MugC2VsEgA*|Zs! z$YP{iRSv^M$&S1b=reYlFlLX?&~yoz1UVFPm^IucQX^DX(6`_G?z0YZz-NmKnG`b? ztI#nSnW|1rnp|0&INIekon9Oi=H;bS9gS9l*I^RYe^{K;9gz!8z2xON#6-mp>TFRO zTzQ^0e_n}uJ|daN>9hArf3W9IAsB-M-S0>(FRFBt*y-WPO zpSFqswR2)#e+QyFg3;6v|)(XVoF@zOf}TR*|d4q2a2c%G1Ug1c<53 zbq|#%f7Fzy&gwxSREj{#`g?Yz(0Co;m71Zkr1^m?*&;3z@K~=S@=^^YdO~AJw790F zu@-`(qu~$-XgrQWj5@Mhtd>ZY7bEvE>PU8)2DVpMgm!^*Et}&G@2sj$jbRuMY%j0a z_dTU%-Q^oY;}v*Oo-b3J#YszpV>ce~%M~Z5e`hKYnKIrxV#yHgtl>q;NLYdkSl1y; zj83rLP@*2HmTfZ!EDaLM+?TavnXpEyP(v(;aoB1YCGp9xA25zdLsdh;+KJ63kVFqq zr54t!1=mhn{?|YH_x#KM=D+5@{qQaR)xY}hc(R=c%Z4;0rZi!l!HdHh(eI^m@vGnuJc1S%jdD1XZ z1Y)hUz9aZd75MVrIaMlcx6rjusWSpNf00UNnnr3>xDk@sY?icE!*8G}(~>kBBe~#0 zizVp8zXsNe4c>R!b&pTEd*@U3m-ncW=-P#Gx)CW5X5Pc{oa`SjNuEnB|*f1Ou3 zKl~nl^hbZrE4Oa2y1wG_vWH?xDEED3TDFpyBw>RZ)=Ev}d3A*inCw-XY6?^1VNhmA zEtO~r%O((0#oHsYAF=4fWtcKe&=*=T3rL3cG(gIbpmUyL0;Wb>DkOxE&T!>|Asg0o zj0TF`ViW4i_G|oLsEu+woP%U5f5E`nYV*R8eipvQptcT9H-`26_fHp|{$#^7tNrcA z<0%^hp@Ch2C-)9aUwuiPCNhrGYp1j~u9K5cwg)N^DUeZ3GS<*%Z3{u<&=)cVu~18) zGY&+Fk~NFwN*c$*rx%ozST0u>=V+W`y=?KplLf31+BUp^Bxwf2{70cSe<>w$i3&aP z|Nro_;cp@AE$rW{%V7-r7>TJcRb{J$MW8?Qn3ynSfeY6tHesicY%^vFOhP9?S>}G{h{nv~4T(M5~XwO4()u^J* zSbZU8GXrm`ATv3sNYxj)1?RAd9=iYlAOJ~3K~&6(gf>obvXEx{tV8NN{;s+gw)5J+ z7WJgtS~TEcf{yvBzJ!Cx7z|lJ>YRd~scj`yZ2MgJQV2d1QF%;qe_lgXA|zuK_A&E+ zjjPm2yY_BYKRQzo135d2wb-^|a+>LTbvCi7A3hY_0~;#K<5zKqo|s0Q4OrjcT*a9{ zoep?Yk*tT3T9ut|ZGDj%wc@cezyOgzZoi_4K%U5=hqm4-2R$?$Si|DzgwvZZ>ojFZ zU?SVg3;i66Y6Yi5WgQ$DA%79+{0YA8=p2|1+I9t@@bvye-7!jK8b(#@Qt51>pNaxF zoRD*-Vz~9{36CC}vl}KQfO&b*ovju^b)-@VMyOcEJSvc9R!vS*q-{LoBv_;BTXBY? zrsd~9{RQv7`yHBUIKR5!+L7ba&(86Spbr(JBgRrINrYg8W;RIWYJX{6hs4O^`xl&? zt})#SozIjw@x^DK@aW!GtQIF&rw7&0HMAknHkRQ~*!DYyab(&bsNOIQiEMOD<>$ll z?s7}c8S7^TLSwN6CKqU(C)kQ|K;C(M6HIS#ftT6$&eCH9zWyPUw%Pl!GCXkr}FpTe}gBF_Waoo z|ALp^cnw?euVHlR}lI%p^wFXsET)6b;Urq$*cu4Y?YmB-U-A zm&&22B*vMF4F+4HKFg{_t`gRoIosf|GLekO(I6%h`Yi_>)lT#{?P<-=*73Zs?liPa zFvMK(Qz5Lt(tpy~zg>-Le&eO(jMmsz^UJGm;pKTh{jvu+Y5DS=MJ%+{@ZOs*adNt% z2OjS>G*vLc(Z|fV9|&zAVla~+F>95y2-1&=N41V95!(+KTZqGekxDX-`{zAjH)$x_ z7!6~i?;~p~jk7e~Q7bGPN4sco)-q+Gv6aOl;GE+!W`A~<7up0WsvG`K`JV#RF_N;r zTuF%}1rWR|kZs!V8rT6LSEchoT~Tc zfLE$|OMh>S!>Ei>N1jG~=GH1sv6?#fo(&}nu9+3Ab5ILo=G$sUq!PSJS**-jSEFQ> zQu9o;o5$`|3osVxl!7q^Z!`~3Mb`$VT5^rbL&wdF7po5% zr>lf<%J|@BmwM5^w))62GQYfwD4@nxpiru%&VOP7T>&T_HWW|j^rxyyoxhQxxJr%* z?*hV-c5|Km)t6v8Ow%Dn$NSkN7HyzpD0ReHDCo|=u}-CLqBrbXwQsKUU8UFuEY<00 z*Az4Nl!a`1a;Z2UI9?rdxVj|PtT(L;sTQv4fo5N*MR#UHKPY|67*ec+&d+ci9l;ec z&VPD}g~ap=!ES}nNRPdt3OMI>trA{A;DimP+d))IqYB`}tRZHxvgOC%%2 zq)8Vuy8x)r1noS##xsnGv!he)e0ssZ`Qv}jHdVg$_uk;*V$b&KFw+6`<(kKc=`3#1 zQF5YML(P%Kw;Y`ubF^yc$Aa~mXQpeZMt_KDOWY+gg5Mf&meqQ}qB+5tmg(@6Nk-CG z6hvgTh8d&KE(6EQHT^JQ$;7OTf@t(Xk;PGB#spP*=5ZuV6H9Z1v%1KTnCQoeB+#15 zwd*&S9z0;Xdy1)!)q2g%8`qIixw<;X_>pH9k#5=IT}Nn_;Hqk9OUon^!|uS*`hSS( zD{0h3 z=yPPVy34=*pFZQC|KmU4pZ($Y*nbXJeE!u_UOBtY=TDz#%E}rJZooOgMTKh-DoyK2 z$zYd`T3e(FHATb}!eWW@p2|p=gR-?4Lfdg*q*jYJEzSzrIqEzWJd^>Gg*LPV-*K1{ zwJR72tb%8hk;Zwd$xwy1ZE&gMkViU{@sZNVwqzDzLA|v2%>v&T?Bs~vaDV?Q!%-zp znI=Z;*^1!dFh8H#&VdD=HOquEFP<6p8;;YOGIdU1FPgx~vLyh=fZ15qbFyN$2nDwcYjUDemZqEQUHII%6@xlcHeKL?O|a zN-qUlDmxKm8&$4Vg<1qxg?}-p7ne3lMu1;`^_cU^J&R>a!4X{Gc-3i@*BN5YELyKC zBBQ^*uJv=i;dvtb>&aG^y?!d6F`_Q;@h?KWttJzdPdCcH4$$INV~nrHh`E77=lTyDrBswlNiiT*P&xQL#59WvM9lozkp1YJthIgs`I zht$Z-VmD4tvrZ{$;Pr)W3_`(JG!Q3H$(qb|ZXVUEq#wnZ@X7psJjdZUkVry_#{mIU`x%w@Lchqdi#el2G9F%KXLr!}7 zv{nxu&Q!8dI+_(VcRBIoq*4~|Dw8zquAZ<^dNMl_i!nxU``Bo<9aTT4lmQYWg+lANp`d9VR;B8s78OV@ag+Ln9!$b&}@3Cqe= zA2>U^#fQKBK7U_+ai9O=|NbFEKh5;Oq~S;Fa5PLcstm^(ki;vmy~-=E-{x08{V``} zuX6L&>wNt4kJxS>LkMh6t`kMrU0iVfw*TKZC*b8DTBtEKF4y2)0yWj&#AYS+1GJiNiGFo!Z@` zW~u{k7k`>cry{P!`$j{Y`GAP9-A-Iyj(l6O56~>59(6 z?sC924Pm93hhev8y9%s3PjQCB#SU90O3XBiK=_79?Kk`E&mlApI5A&iR~x`Kuu$hF z1%LSEye5>KDc3|tV4%1FEOwRIj(tuh`+OWXyu(i%r-;4)>wZu}8QdupVnItNdT=6!sSa-MzS5x81 z(+j3P;bS5Dz%cF*6G_?97{`L_MH;>ek^y!_TR?!^^76V*68GRK9iP}RFS z2i=66>s$-ay*oyAtTMxMZFL}(g5FAPsWV@CMhH@7nwtVI+{_kNOPbRlnK57lYkwQ9 zk(;V@EK{*!)XHY9((0~Hpi)8#<)7yef0bxMsK4gWX!y)v))j| zBRb(H1WUzg|J@th^O0;38gD5S4KAeuPEVX-ba&)ucdw~>*f2IJFr*s15gpfLt4LD= zO#ysRQBD?e9Z5Oq&81sn9hfvC)_;KnrfH&@L=mCcoN@Wp1rHxR<+AJWq0^g@F$CY> zo0iklo0OOshl2*+f>Yz04HR!kuF_URObM9=%zB{*v{F>y5}XDatxjHC@Cb!|cTQ{? zT@5sjCaAnea%HvIaCW-k@<9(l?O~=CLP_ind&V@<6llDoRKw*s&0$ETlz(~aHPI>H ztXA`$6AZ1)Slpt)pkOVbag5ZNN02!>JLQlp+uca5@a!D=Lt?$!@a0#J`0r{XTx-c>4GWXGb?!9Cdu~-S4qI zKk)g-f6ZRH~oTWN@klLnciXDVn_yr7vN8))9LIBbA&prDTFL zbW2CKSYoR%luVk0e&`v-{ai0|grJ|lh`}|67$XlKUhvNAC#2G_T(AlyWtbg%3JxUShH6<(a z!P*&he-|n9L0%Ks6@#gsamZ{MXuAc`B+@kDO@kGuVjGKMmc3(nbV}z}Ow&$ZqWWLb zwmN}2h=z~u-aF^P{bzUz|NX!IxBQ=f`V+o&`%P90$D_-hw~t@qkXMvxOG%ZAC&fgy z2}eiDBfgFr@S7ry_kS2?s02(NX@i3(%8Q>dqHSYY1;eYAb#$;EyQ7o?<*PCrp>HW`T2Fu`D^OF%@kS>=R|4l-&+aPG^cBeySAUo16p4%}lS|=ZH_>id zN`iiz*epEW8uqcUaCWA${J()V&2RjDjTtKi=N+L7oU{$i{LeYB2ZrYx^KNNrX=!GP z-S)WS>>H-HLtV0*FVsEo=;?;@J6|GJ@D`3ydRCN)~Sp| zYEh4QHP{d^V&=M8QPrwdS&S+3E$zAd1c%tDH*N`9g{u`a>sLc(sKu!d-l#saR;|&5 z3MuC~72Yt`q$2*8w_rlie4!=4}DWc+o3Ni{I7@Vs_ zf$AM1LVt-9U1$h%H7EJ`>vbpu??~2=tFS1Ek_sjma;`kQ_bIQwbIN*sovGhrTTPi3 z(e&*!2uG_8L)`N0YKOI+lr{Ke%6tl)c>&L!KE!#)>gXmn&#pt+6I{!}X)JbZ6iic$ z&@B|vIvjT7S|MlLyvsBqG~EKKwiaTHh-D6#8Gq6=YHp%d8W+ghQTyV-VXC2!kpN9J z#Hx!FCzU)T#*}f^k&B_mLTL)6I8uq2plN&y6jyK}l%x=uQZq;00%slAh%*&$J=d>a z=i+>aWT6R$JNF)N*zTFK@Uvfj#M38F2~Nk?*63*2J4YK@a*ViAXxE;hk67=x_xUFb zQ-361?5JacWy6C=R-ULhC3=?Ss`AQpwa}nWC`U?pUuf;te)yAk&5gUE`5#we}(! zDwFxve|7nc;g#1}cGvmh!4*IFFwr(Tb$<(u$2JCQJu!( zKd5nUv6xZC1#t#n941!=lQ2d&IXdO!`YrB0xKEAfYRAqk3RJ6VtcN1=N=?^Y6=6H> z*eus{zM~8yPzlZvMH%f)yQEnj<3mTk+Y-ksL<-ha;;f4HbNbo1=M5Z%vfR0U$$#C) zd;a31&p2Hj@zV7Zd{;R;ZFq2B*HX@Bx>V^?qPRp?Rf#o~-ds$fcoHHDP)<~6nh-Pq{Mr2#3Pt}z%Xj72cD#}o+l znAUP^i%Fl+n^_ZmnJcS>K0gk?GFV=jt6RrFI_qdU zb<5PgfhXr2vVI-?vVl#*!NMgliQ!2$q+D^k%&K$jg65&dZQ-P~w5=Y%hq16)=+`F# zQ-5H{8OfP7hG6aA$N-q%AlxqU-hb=YY1%+V z)Bj$SS6?dhMP)oV$fc5!FzhB=*HFZeY9?LwxM`rPl{_ZsuV|W{^If4tC5E=PVHz{F zbI34It4&kl0 zrR6bdPtAf48CNRRE;u=B;|qtHEfl>bZb*_NvTebyG2> zkdwyQP0$p%nGXhH0>(BVs#UD>T-+F=`{z23MS|Ym75xg?nCF`e1i`sRQJA{ez=(qF zl>%oFtAV%YfWctl1w2lZbW~etMU(VW>x@FIs*x2nIVFv|&Ig0JJAZCwst;8&1I`lA zTVl0BDq78Q!C~^8rZ@U^EK;$-QcBgao(1PTu_T2>7)SQn6fmyA8;j(DyLZ3fowvTt z!nCxDKv*^$E-vX@OY0A~GI90n8N2;XZ!5Fp##=jEqV&L#rip$?td4KeZjOlKtbkp5 zOs=eokZdC0S*?zE`+wzY-1+3^RO7YAG4#3{vO)Lrb)o-XKF}>U>Id*1UtzzS!6wdf zIgTU|9czh>$X$EPd*6N&Q(!;#Oou)BptpkCAH2@d(TX4a`A>NK@F_39e9Go@&Hi$v z#pmwOnH*bL-vPym9*tyfmC1E%?iy{FF47d0L?l ztYG!C$Y`_Ruz&B>W$paTPWO}O!? zgRyvtH{N)aTd%)G1THQwxacpm+nb?~w0db(`I?*(DSu62p2$?j7;)@bF4ioT9VI5U zHM&CAbSyU~lxo->o|5|m*0}k`CK$=|2MEo)CKRv&-l=%TSxcyjx7}_Jj8o=~mydb( z?RR+c;7YN+Rfv)RhsT50r=5wOU_6-tlB1zAnL;du7X4iC246E%XJ6Furm4f!f&?X` zG|NCvLVvJ&v8k?NTA`%M!9<;a<&lymYSYq$iS}&Gq}OUv*{j$o_ta)Ztp<}O`hCT_ z2493wXPA%G>5p~r48wUv>rm@}$IwW{%hxrsUi4Y%7aE$|OJN*(q*glLvFa9_&b@Qf zf^8a39BhH7s|7b51gj(SVQop)&|BC?sL9Z^hJRFH>MQ9olCuUjOBBv82To5kT%A*4 zwQ#ex7lP@!4IIzzdGkW)>d41|<#V(xfk!6` zg4F}#uE683uGoG0D@;*`Mn8>MqoK#?&|_0ZN@AM~&WTF2vZbw=lCCtX;Vq>%Nc7Yu zA%D(M%LKNi`j%2AoEWej#tJ!)ARSgs4Wuz6Qs{ysk4`~h&hV={=j{K7|D8($ZUCv* z@I@kaCW;9LGh0>4JX9$~$Kz(+q1G%~ZPR)8%te2WeFVW`g2Bd0srvf#R>3nFy`4)H ztf-zfOPOnEZvNtDJxSErW-fEOoUH0rV}Dd1S@ zb#+jk!OtUK^E}+@b%*Lq%j>Vd%IA0PaX7rj>De`6zr#z%qFWJj!gdXde8s(cJAZN# zoY#t9(G-IosOHwM??AF_LL z#p4He)lyg|%2fEBKlpv#e*3$8^wS^n;LFdzs5`j}mVMuoMa^cC6A}}L{(r#cXvv4a z^V^)Aoq-fu7cinNi4VT_+nDv5kN)x}^oLOid!iLIWAv|$bBZhu8ln>lJ_H2)*}ZXc z%4@H_!b>+_W4YO|3;|oT@87>R;JO8$fAxgduis|XE-AUP9j}5a_!s}xe}Qk|^Z)UutbdnBPzHnQPKQ! z`Fu?%rIL*y%ZL|?cMVeoJ16=N!^l^6wtV;7mD6>{{in|~FiC^4dVdH_hz4b=P}?~V zlRW)&&`_OiD4nCT1~bCo1zRCmOXofNaa4Xo2`syYlp>7-TxJpvrJ=?HHtS>*Qwd$b zt_@{?Ts~N{VFBri*L7?txzxI6*7a9tZ*}|8=^4-5PGp zSF7`-cEXwN?1Y$mWPsKzspUX5Ekhb9F5zuQv-Xq(QyLUGTnlEblwuKIG5JdK168Ll z(HVR;YVBkoini?yLQ@T2TpYObS9fSk&l|6u=~S!MI^VYvv@cK}mEJOU)C;dJQ7YrAk{Y)obO=puTcdy3P{-qexX| zOo*)($%PQKPg`rn8&7qWA{7yfH;!V;T;|tXb20j|YmKECixI&TP1|ai!{eP&+w@^M zOJ=;KLhgAWZ52#rM! z(B%0W!V0DFII+}X`K@n%m#gzTOk=`XODsYzMJtTHVYNCU<&hL8jH#s5las~H6Pq?@ zgyzoO&wqJ(-qLu-_0wav`<`ZT#`pgI?~+YqyWi1YUGR9DS{Otv>j*HZV)Hn z$%qUCZndHb9dw2p#~a?e^(L$1j=%n^pK8+?FR3E`z=2GN0q)&5NeCCW}DpDe6CmTNez2D*HOE)m3l4!Kf zDB4e!WO(P+o17e<@aW+)e)Z!YGo%r*DjRy9A~bboN>JzUrMk;oyWp+2-sAlbJ|N3T zCV$h%%#AnR;0mip~d`uEpUAO~?5z z^X$pM2k*VdBK#SBe@-(y=VNSn)o-XFQ*y*fL#Ub8-g*~<4IVSj|;feQ3l| zz!a(&n&9T9fr^!O)1KfuL_AI7=|aaa9)B473-Y9B-7J-0GPYLrL^zML7CVP$Np<#2 z7qY7wN_7TA51)-|xc}rCpWnI1*~t-)c7ZxUutldc;z<&9g=Z>0Dg!<<;q5}rYmJAX zpEIsvZJ@!CY^E4T=USpn7|BdCQLMGcHAmARBQ;X6lnFtg{vuxMK1(VD?};?5I}kJzm}bq~%g8GXlPgg7|1+e?N~ zEqIsxK+Qd;XB)DC{^ANq45FTirT+#8U85lYTs?oeexoOzGno0GA1kcCAzJr!W>=U( zHi>St;GLtu0-Y#?&T;aMUVV4uzkgP}&O^j+001BWNklzy9)I)z>>4Z< znJcFf4|)+bmDgWibM2jfz_1sJ>?or$7_<>!ES9f1=`zcXH6SkY3sdHBjo!$8&>yHO zlm0VCS@C*7w^Y$YY?OgogNEab%y=5T?W<8u<`FN?({MOfH56BcI`8~lP>F=YQLFCK zy>;qhmqKG9N`VSa!1_u~m4DXhsaSGBT%gY5d`9*IKqa85E{C$pj)izmY!>8M})3r920#%%=+8;R_FA_V$eP2YJYRYt8cu`!+W1I zjFF{>RdDomLTcolTerCV>TCS*FMq`4c1PPTRKHuQel|wPWuzoMG-x(r7ChJ)wj+^h zVSDwE-8SI7<>s}P-PINE-hP)REGbt#i|T2Qu5)zVl7^9LBjq4aN6xQyJi7Z8zG=w4 zf>DZbRMQgc$R;egc7J@v=J*)8Q{Md6b-ZsF`yH#}4a>zT$7jL^-`eob?E}B~^)I=& z5^ST>A&i~Lgv#F51FB^jitgNSq&Tr&E;wFYXLmU8@Xn`v@4NqqH{W}krqR#9998Z< z{({5RNPMYs^3o0NU)?81ohErYOzDX^Az7ITufB1clhqk{EPvG2;&WAvto2wUOi7u~ zoojjN?1)bmODxc~L8m`i)t&PfpAZ7x1&pbLpirjmZcDBM+2|oLMZJ}sUcb)6dyjeJ z#%mm;VcYNcz3;tEk?UA1Tx_3m|NiGxudNPeA+&+rZs6y?{Dgn-kG{uSZ{OtSKYN5M zuXD6+xpow>!GD7DbSBWJ$coflPXFp`Oy};ItEv>!)jnVG82nGFl zFIBKjtGnxApl#Q*VZku%*-yP5eA0voZk|eMEwjOqt1iZv3f1bKwn)Vp_u}7Os{z*# zC^%OcN&N69pYrXuZn5-hw!@y#1P~$Ch+lYWvecNtCVzZr$=T3Zfv#2KV@^yt;o1(D zg<>*3H;B!&3r880z2SUA$a8gc^s06?h7v8N7HZ=#F2lj=*WVk`Fj0fYHHOX`Y%;_W zFz!GxQQa8_p$$vQ^Bwxqv0S%|2^L+;^&2hXU~etUw&l%JJ@|jV@jUgGxb|F)b*_Uo z><$i>5`XFZKpZ2*6c*m|_}M^pmx%FfhY7b{V%8nbRqR-x4NBpxy7qV>OOda=+B;h`qM#?igAr9BaK>` zOnLwo`meoy9JB0U~ERpbLol# zI%E#j)mru2!3C^0)SO6JYi_3MxE&mlG@+gZvRJJvP^f4EFjqy?YF)x0S*s()8JhXe zk+NXDhgvCF^!HQ?wbZ#HXVtx2HGI*?41dQlmV_P%8fU0tNluMy1Pwn-H4}6*6}4cmTTC_Urhoc%8I-~nu3KI5fZFR?y9aQDfMF;!d|^|P3FQqP@A&1%Kw z-7y@zjcc*AAH5qbrk6#8p3ixs0|C#Fs(;+hs=7hBDXDF z*HVv#I7Tc*A9S*yioq`gq37ANJ!w1Q8_Up72!&t&s>6qt)$u9+^bh|b$sG9cUw)+X zLTiZQIFk_duvqH65)mQSqIgaWhkt40_8T|3c6!2tJD+lN<0Y=2oYD_^(4bbn`1L33 zh8>&ZW4^qTDG4>4d5^1sVD;z4SxaaZeDV1geDdjMy!O(o{NTgi!r4L}9kvmsR7f@H zAtUNOKQsY586+mGZ7HFuSjcF&466bX=bY*cvL<><5=`S5hLJKxx)6Bz`hTnZ^}Qc) zF#2q>eneIOmm@Zt&rI?{Vi&&-Z@& zJFKMepZ~-6c`{c1^iO`tVZX!skq_Q_pZDK5 z7)M9fwKP6(x$F7pllxpdy@~aD%k=JuY6oJTu*TzCLv||JuqIHf!Q=@`J99lObx2h2 zh!r-$&<_P`BhIcsMi?szpy=eU@j?ku4g@RMJRe(8V8k2YYy=oi0OhT9Fp?Y1mPZCSR|ttypjNM+@mB$Es>7}FijuqQvP z6U>wV_Zt}`gK_UY=YQ-qeBbXAPfC@zi#C-=cG(k!gYYFgy`)O(lyw(q1MJ5I{%8s7 z0293EcchCm(p1rfvbuGL{qYf-eMTn73kiG?u>g~od&Yi2+ca#(fpNbhA9iGvUCgZ3 z4U2;Y9K>xR?Y4|@#5;%g#?_c(xXd@tmx*jT3+4EafMn&XQGc;DTN5gUJL@IOuZ-5$ z-Ipr-0vxR5)%VW8)R-6iX29GRxJ=Myn+Qw;T%7gn^FUQ^?EPXiN3DhIp(sWQ)y&wR zqkFUD;Xo&ABwdL(??__t<2v;W)gVQ+CW|4L22CamPQw;4-&kVsU>N_G~z8fL*%bwVS~RssrRv45gPoTH+6jd(GQLGX}^?PVM1 zP4PY?Tx;tHB~V;^WqWg~NE0Xy(m0ujB|xi6qux}yx!AuiLaz3J?r|*Jj`hN^Dh_Vh z1-ac?6z4crzIbuPwjZc<#HkfMucGfnI6S(=>#yBowOljwiGDv4*Aq`K9&zXRh}R#y z&0?8(|9_W%#jk($OFn=46m?d-2*tPp)u?q+iX}sdn0`P7KVLT@1ve9+YR;sr_~h`1 z2mIde`~hppZwB~9c6gAOJ>q|$T^Ap}AWv>pylJO}QO zb+blacQmbI+!wBQnxbYVr(fzUxeR%*@Un7}ELCQR2?O*C4a zeSaRa=*kFn!YD$n6N{Z^sA?p-npqwla&&mi>5DUNfBil$H-V?8&ndO=?6Yf5?!C$S z;E0R!QzSQZa||d=;Dh%c@&5ZC@}vLkxA@_Ye~WK@^8x?k|NOu4zx=B|r5{J$|LhBv zizD8A;~rO+BSX#%y9;!9&Ue544W4}VYk#h;Hgp8?6bWLQ7_`3f@Yh_v)bxm2;D=Q5 zG!mz2*4xZX2^^}~wh~~&~;))<;V(Kg64AbhCl^W-Op`59?VJHc=EaceINMkwLrBZi=8kDwca3wQcTrl+p zePWs)1!F~5Uml62R-72BbT<^neqeR5!VN~gPO)dIl^hH0(sBD_NmvVqOV8MPzJ6#; z^P}oG^M?#;xX#e;jde0*>yXEBPk%(w9H5B2MQBjg|_|s&{zEjzy9hJAk5Ennf>$#EL*tMhF2r_eSnuI zhwy9?_Z!+7fFZr4dC*2&wjjqC`nRB3F+unLDckS|Ich`pQ@pU&Peo-kW;1;O*g7 z)2w*+IA8Ft+TKKE&NZJbJxx5d+}u2N5U5dO5F#%geL>Y~=t=oXmF3MIW|g-cXcpvR zz!XuBIP*+rF%@-iLQONGHGj`bo0(KsBoj-aoeO}eBmz1|zFJ6&uZ~kZsthksnE*piC*TPm!Y5RmWWT%74p0L~Q5a-SHAU8||Wzs^Ptnl1vL8H)0AWA}g;NJZ= z`Q*{BS+yUr+l)MZvZ0S3b9u4nwbN6MkB>QfStwIPx&^T&MB(w%EB@8L`9Jut{>y*H z`O7W;^?&m}@PE@^e8g_k0h7uk_PYx%uROPI-=>O9=zmJhw9XS#B{i8=DpSsk+rmN{ zitG{ZY1#u^8tKPKO$8Se+JMA{b*XHy37{J*UMoH<7_K8VC&IBK?ab?}y27g|<(&Xi z#@YB1X_Qbw1|cWMUPovnnU=LK7;?r*VZX1WryHg?vThbU9|EBQ_z}6NcI39Me0n+F>Sg!C#OQx|x zNpyD?G>!d(^G#>SYFB905t}uiyE*XZDze**93HH22)q46T?G!7juwdf%yDZx0uh54 z*(BHQfoU8mX=EHD2aTs`-2ZPbdYQZP@DC8MUw{35nkNYI6%KqI6XOu+_XCxYNg+0h zi;3!cWSS^_OOk=s1rut=J=6iTBC$|OOu1!B(KJs*aG|0yl4pvg#7b3XX?EE`@l;LJ z;tc`r6=EQ$CEhJMVI714NO2%bCJ1<{`OCSn`c(7OQXS4$YObazkH+lIHwe8Xvq*i8 z?|+-4)k6r>T&!dCwj&pr^Tu(Y$wv0sS$!lXW7S-7_*s!rt*S1jXr~BS0i9O@6{E*F zv#Z2vjQUa&5obV$s)qCff*R|6a+RR=hNfa;JuPmi1TWKxoOUl7E^qdMu}sgZ98ZR zsqYQ?lk77YhMts18(GdH@myy)tC*FqYa7~y=jHRy`TWE85$8BKJY=;#V!b2KN0b`7Cj zfK+leo1<&ptcuUzgik+z%ok^;Fn=Y|FtNV#Cbw>#KxmoL$p8Bn|Bf6pP3R~&Q?(eP zw%-%8fpXG(s8p1y25Y*$+_Jgea(HmW7%EbfDMn-^1P5z>z&C#5+Ym=WvUQaN$8OuR zyV@XbjzFFrB01Y(kki1>7t0>VmaaBvwsnVZX%`DlFE8=QG2~#K<{F+qeSgI2@Q|hr zlo}bMGQ`oMB(>q=4=(v{|GPip(@)RXmdZhM$gS0i>XgNzAsnvhHxpOA@ac!w+&Vhq z4}brMoS*gl?hn4tum1K!K7aPq63j|PLPPE|B9T^=2uwBNl69VfU1vo+I76C92B&Ik z3h|}^nmH2A+oYnDN(hFtrhm$-HIh>UUon$1^Eja0ic%6~m^eRktdDNddShou>#3qN z0%;tW8oU2}Hmwo9v*_oND0!M+(|ii#j+lBZ-_nGr8fFA-KaoR0ohS8`QU?4YKpCmt z6ST0O5;X@<$I2I?W~Nx_n#1|NtQJ{Z619ym35VT++qdr{tGirZUVkF%j^R#6KUUI{ zi6<8up6(20G;OZ&?SkF*nl$tb(>a}vIPKW)d#0ghl6kMICIDtux*vW;Jr)f~Kfg}< zf-n-KF-5-$CqW1p97bcLj}zOJS*|*6-Cp6=Y9SJ^@~t7tEOrj@KSDMbw*&T*+x{V5GTWY+J$djTq(vrcUnNb34NkPt5$D< zw^>Fv=Qt~2zQ}Tdgxuu7pw4JKsHx(+YJxc9MbDgbHDx))LAA)u;H|J5z?w6 zOgQJPTPzi`lG;wy;&dIZ1|~^3t!5=Fh0Zq?nuFZbM&y*Nt8Y4^Ulp0bK#?{Ej@=Pw zFTddB)g=XJyM|ortje_qke^lbH!-ZDGD9>HT^sn`cYnXj@-Xn?#RaKG-g@|u)nduV zpM1toe)4l}-@3=ccfZ5w7ay7WxOK!S;le=QPmHV?`khN%*ABD8^03Z1qTU=f5`Mst|t!Y&Q0ngz9Fy2fBW zrBpP}q~=->5~6m$xuCWJkiujr2Zm|Gryu_caeoaG98J?wQY34pjG3uSJUe}C6Qi1u zsxPGJS?3It1kd_!>1g_e`oTi!T?>mq!5wd9~( zke3Vk{Yclgy!PgbO@(KV6I{S$QSv^~4?A`-k+#)}EzLan{5kT}CN~;d4)m5WIj$4S zQgEfQ0;(U`hdsG3OnpIX!{KajdRbw=kBnL8j4tAA%AL*1Y@XpXY@^(Rrrh+{j0#yT95}1xNs-Lz7T*( z1GZ6^{p2ZUqrPdju#7x+>`w3+j2u@B;=TFJi=|_!7;OwuQmJ?~Ok_=vvx!-9DY!W) z=0??Sol-$mX*A%}c=LX~d2c{5Ih*27{7q1c3A)l`lYm-;5-Q9p^g^PoN`KaB>UL)3 zKF0ZtDUn2IFjcN76ape9zG+a3Gc|ej_JH*wW*bxcKXMYh2c7w~UJGL^rou!K@s>~S zvO!Jew7HrKxQvEiTzfK392Q)dtm+hpYi-OrO%q8fp;&=5rICKSx1_n6tbh^$ucoZc ziN$h>dgb)#3$CuVXfRPnL4R2v9&&v#f-2qzROxVbMTI$Ow{qXfk62Wx>(ww|M)_yL|GqKjnI} zLDf{HNM)QXDemc`4{+L`P2in(e?<4-O*Z|8ea);7?huEBrU@;D!+-mC`SFjwN7_E+ zMz8Y5#m|LAVH_tmr>C^9KcvYmQ4)2WI6r&IE>9db zVa6aAa*j;>L`@mz8ZKX)vRp1XI5-CH4Ww~Bf^&phfo{3Ni7Bf=(a;j4+WRyOi1Wn$ zf`|9-ve^mm{pt%Yu3qr&TkrDw|LJe@{--ZVS1)<{ts~l|<$uoc3IFns{*);X1_4sV zwS_!pTvgI!qw`wlN|lOK`!gtbluVuNx8BwTK~eFfgjvP3kh9pe?I6WDOjrUrRzhox zfSiPvFU~kVxMe9=!IL$T;+85xBSMOXllHMP#SP8{QXY`TKtQ=vB%8I@OQCvCP9sGo zoI2Xt;D$g5Fn_w1+A6||oD)qu2PZk@aM>`{OpFo9wkFJzLuzJ{0Zo2J8+QzQCFh<+ zH~_UZVJn&2t+~*nQ9h{NsEkr7T@!e#HF(VRu_MSa{?>{*fj%v~e0s*q%}BE>+zLl5 zPF`nAVDs{fei}G^Y@u1>=7P2r+KaWJjko8l*1~k17=L5L*M{@Ol11mxSjf{Ar6h)_ zkh0l~x3l#v%${?ZMRH#M{^&e^rL&fqly~@*#JN<9t<6T80z5c5z*~+G{@Age6X7+Dso6Qm&|q*-NCpQkJ6v*;V=EKsu0cqP>v2ZdQ52GpkMWJouA}!@g%pX5r6jYYkm^dr%f2nu0y3@yz3#q$IHr zeSe}ROTC+NrB=Z^&s38MOOjQIMU995{KXm9S66m$dq&?c5Lnx$#U^iAu z%u%<_{E)?d9%{At)|{wW_~_G*`RwD*sJY@YoS(m-`Zq{ZPfhUb@y9INKj8a6{xP3@ z{)CH{Pe^@*nCOlj?|$tqmKyo1pZ=7Xi+>&d;&9Gvl|?F5Jq2OWcC-s+i04p}X|vTK z2>Y}pMbEv%yBr=K@v9Gi$uIxz11>igYBiVi$m|`L{Eo~R@ zK?zxq8_{Pj#5CfT0U}J-0~=rPu4T%Z7&E9c4n6&_V;Zdx7^g@nGhtC@@uwP1Eq~X- z>DhDMdia3Gjnt%!DbdOtQ(Oh74a=Z2eJi8O79Tp0MDfkcZcEsE`!wQ$2WS{l001BWNkl(;OoXI1l^7?pwOwyFtbcAfyvuz4#S^v@d}Di`<+|Zd{_NkfJUHgN-~A5f zPagA6|LG5Tes<1!eZuYIzvao}M9Hn`;(fg=+(G!bFp;{JoR?Mk$|eEOR&e z?+S4$2nWZfL%XI`!VoqVaHXU<4(nlH1`I}hQOe>EAvLp=%f1X8g7YutZ3hH+v` zqDJO`oegyw@UA0~NyC76*iF?Mp&*o)5Q$_uq$Z;S&RUUBJatSYZu1Gl(!$d|XvEYkTR4cW5oHJWjsS!yw?(&w>FlS{a z#4F+oX|NMdt3_Vcn*ayRwugVt0wqD)S=42j6S2gZ=hmLhW)muNnwu1)%t>+f%mU4L ztxVO>e(D@~X292y$>MMYN{KVj!vtS77b4ky{x}16)Pyij6;~{1rK+1d^tr1S1M~TL z#_x)$Xj3teq@qkDbbfE9nD8P*61fT;hOQNnS78l#PP(f>5ic~^6G?w_p-@dZ87;s@ zy<;pEmf>jAkJ+ zJg_%CLMb>W^Vh{D5;fY`M?FCS-?1A8u0Q?MtSHX9#^*1dbN1{7WhjVvE-oJP-YXQ zo5DWHP7j1!r{>& zi}jkAM?gs_q5&Elr6~P0F>QCY&rE{rGgiB1!)AK2|*Qc-`_i#1*%yJ@l&D+S4> zW>z(xw$#ei<%Z4mhUMKmHpK}6m#si-nnJA|Q=SMEY6CKhSnVb=^f3rU6`84AB9$>_ z&QG87+U?gF#>`L)i-SW}-HN>56Mdl{d;0xE7NzTiIx`0Pex!J%RZkTLqK3YCp7 zG>u1HN6~~&*))G7Q5l&y5l3Du`ROm8Q-Yx3=lmCc@HIaF{5elfKj4SI{ky#V;4ZJ- zdB`{4d6!R~JV9NyBBvA!j7qldsp978pQStIQmhbDA*$(M?3z(Z^@yuxmCKnajwaSD z2JpzW2Nk>o)LTMiDv4TWw+Ic{SAuxXE?&^A53Q^7<{^JhaWt~n9M9~^nwEWTzdM=@1_}%DClzbHp)$U4e9+ zSZGFaC5?X*(=;Gt>Xh(ng~riWVKYG4kEG&hS_8>cf!9~cs)4i76Q?8Eqn2g`V`#W_ z0(VbrpZ@vFLoUxcYF3t=;+JdAn>DcrI)L=b)r&+ZnL3RWR|&75pibyhW;-Ohqt;w^ zxtQK-R=AI|-lZ>@>cw1GuOQ>5x&G?He3zlAUv_`~wf=pP946c1jyHPV7Wlvk*CTAs zukhK@Kl7Y!n0A>G?Kw`ya^s6fq(P-2=Ygu3kw_j2E?=Y7G36~TEU1lA#~mpqG&n>8 zzK)a}m|UXf1Q|4VA|unhmerz^+H>3fQc5nb@Ujv>ir7Iq?=o(7 z-icye;XER(lkFkI&l$SKcI3GhD^R53G$1)y!2lM`j))mMja}TlcHtED9Fe znWtn4KR5gGQZv3)WU_}gRHkC~r69H!Ruz9zwLqK(W5lZpr3O@t*{jk}>OiiLlh{Me zq|o#GT4qsVAOslr^J-V$qq~r+qYj{ZTNrw@;#fpQ1CwU@vr}qH{XB$ z7A5XDx^tVMPpDJc^#O;=j=%ibPZ?w72S5BS_wJqWvtNF|+4GkyyCsXRW7}_-rirjR z#4Q3%(;_;OU7-x-%PpmHaOa5Q!;UXL|A=4w`q%8X18u7;+9gNp9iKhg*{(b|+GfGw zvZGrsS*{Pcb$ra-*Ny>C9__tOlZ}6Ji-4OM4#R#RPSLuek}P~76{a+Bc7DOrr!QD7 zTU^NOuLgq`1q?8e%UpDRNe?VBa(ecZHy*ymB#JL4HY`y|B@^9jW@;PE!0Q_E2>_)W|4$uTcC*GS4p8i}zG$Aku$`T(l;Ti*NZjQ#b*KT`N7zyI5`i;j~w4tVtBbMgeuV!=3V%>m;T;!Lq*7QBhh!XTZw z35hx<8Mf+4&Ym4)ONlH|=J7lG<6xP>us zIYHx~$(7VN+%0T`Jye>du$~2Hr#Z8mj3QWayD;((wY$ONF^E~Jw<A{Rr*suOAzGPVP9VmE3viLMn)I-^l4 zNMqfr6v3&IN26~^l`jtyOK-6tmRaHb)#%qy=A8FZP?ecHYZeXb`~_k(=6dxenN`yX zh{5Acom|YS=L&z+F;f=St>y~O7293Rb~tK6vy#=5YC_dU>oJ<;q9n7IHI2v3N_)vR zDe%r-UoM%H+-${>c~4o%Lm?|Pt!2mOnC&%qtgnEI_e#Bq=)lb;$27GAw&2N2=)6*-iE?)B1 z+Yk8dAODEqde0yK`JeOP;n(@i@BJ33Ozd|Tw7Mka%(kCs-I5|3{^C#mHKc2P{prW3 z8hq&G)j5B+j*j`>_rA~J!J31UHS6w(gT;cB6E3V6a?g}(669QmTO}5yvr)a8;<^*Z zakFL=@Z!mCgj#5tHRQx*xZ>*NIbGA?e8YeE_kYdf(=*F%PV)}?23#aU2!MEAoL{ls z3>>Z&OadZ~wiU*y(78tV~doe1jKZ?~um z?9*uD?4*m4mpnXh07SfvFmhJDs~6s~6PbSNdu>0R++TBRy`b?8aVi8HMKhF$^9?Z;yRSApAvJ# zQ@EcnekvnE5c@&I6&a2eMQD&DujiJrv<3v$bP@W z(Sjt@?+_}nR%)?pH&mfal_?j5NUnbwm4Yv3t)B&wBY)BOWuzpDMXpGEsXJQfhDL>s|+Ax)y@sI zNoN~PEHlud*kRkKsm*h$^Df+W-bE}!-4v@PDytgsMhl+d5K5M8Zmep4UrK*LYo@4B zOES)IH9EcRea$x>qXk`vR?1A=()nQ{wNi0ZuXx1@lx%i5b&B&IDap9eGJpTs{-UKY z&ZfrdXJ`d>0Lz@5C31rQ#afkvRlcvMCou2*IE%HXEo&$!N`pQ%jnYY&W*E zpSNPF_@-Hq@?-~h61;jmf;4}D*IvKPlSii%7v`~s`N@S!6B>|0b%y4UY{^x%=&K8S zKTJ&7)Ri{cHONmc*&dJrQVh>qYNkvXf*n33S@9t`Q+y#*kN0K`ER&@P1s}LN`#b*q zllREgadL8xTaRyZ{NV}g9`pI>3vkMI*R$z+;_Ck%7e%C|rgfFk54P(qn4M0dB*#3;>dTD z$CaTJ_M0n?+Dg1QVjz>!fL|X&Yd&-B4Rcy{h0sCUG_SnlxxiYjBOZV{6>cEn0xSep zU*@XtnzN|Yo8Xm&6NadiJdvvM&i&VT`|bf1*c2G2hPE|1@&F92 z$bkepC-i@%u)W+d9j|ce=y#dj^OtDMjN=ZiJL(Qb8Br2tP;!POJ$bU?QD7Z0tFkTTI|n#NmHtF`djI9^RRvyOc_v$L4|w9SWdx z>XC@xn>oFuU;q}eky=&0jCxfuj&7BCgzW6lp9>8s*bYuIA|5BjcJIYT+bNm2$siJH z%E(#BRAz`uQAevY$*LCHSI;%sT*^?Kfn_LV9*37%^k#=}K&V+!r&LLZDpP?X3Bfw& z;uL?aX2FZqLQ$MapviSkLTGjN+*k6@QM^U*l_`;eb@`q1I1f2xvQ$&3Hw~p$THoN* zx*F7!vR<7S$4farg!@WYA_uu;o-THuczxA8kzjvEeyI>^4 zyq|4FNc#=d%}^c%WI`M3=xTQOQt>6yOOLinPTrEEs>kPyw4Ol{%{*<&QB8PQ1F3(h zeX9G8-DfoAuEN zty{87J3jg3LtIdnzGaHjd|%mev)>Gy*Qe<6HO^j~61*d-1-h5JR9iy%JQ(KxWs-F`RKz>I6r+tkOggMnf6;eo-$9dRE4A& zMWrnKViP!Zp0Q7`^xzYk z0(I=E)g#>koF{H}IA3tC62;LKC|yN&R@;<1kKGBzyvRaESQp485@cdH8)=&k-%sdx zjcWr_%mi8BZvt2%Y=;SHdYgX~j+w>U+tdgMJxs%fwS!3`OYuBdE3|O(hVUu3IJ^%R zd+44Yv#zjy2=&@A#5?RmV(^YMKpGvtd?ENPxDl>TFDX;PjgD|oiTi=w{(utT`aE)H zA-KlVRoF}gzczon%)u?Mf>`(}0(+*tZ8K%+8DgSyfy1^nU--NmKk$Fr_I9T1$c^0Rluc1;4N31lcp$rL}3Ql`;{QZiG?G_H_}LqkK3 z6Jr`_nqV-oQt_^3A4h~pO^KQnr!CnBbjYumAhATGb-2km)@hswEYK#B;y{X~Tk5oO zyjW3l%dpuoU1b(Qk*I%ok!n8WI*Uq+9iXfiXUHeBvA8+AzDl8bvHiXjUb}mbgSO?vkN%FQr)Or( znRiL06k>#~vn+r0lH#nLkQp6oK{#!2sQ0EOj+T9{-o#HiWyT6!*RonJS-sw{SRXQu z1J5td`SkNgWcm5iZMqhi9BV-$uY*n<0p^VZvU8W*>QAo#Cm-Pa>I*H{+9JR z@zy){*j3Nh-+qT&iiPpi33ZhaIwpGRK9O7@RC~gyDB^!Tq9dbDPRWia3F&<1uyJ& zJFZ`zasS~PR3FeL6R%Cv(D*=%Js*Df3tqn5^4%YNoAb*vK7RiRh;`zzRwLH!wmkmi z3Fqf$eDi;sKQQlo-r=;PaUElvENqEFDuu>57QQ1nWf*!?ycP1!5n5;AL4HZ<5}WHC zH7jqt^EE#F_0O25iS?r6=+^73oM#$^R3~cOa&>h|tu0M(+&MlW))hbf`D1?c-G?k2 zN175bSDL0HX`-Z&gw*tD!OxsMi@The7G2^=xeIA%{ zWz2sAO$&7lrg>>$NIS#}A77sGM}PLGtd|G$(~jy3hh4=lTKqxf`q3e)TMg3{=y1iP zJ(?}>$=6x9q@XF|(!ljDGG%4$7q1S}-8uLk@*b8mNB*1l;b0B>CH(x-(XJdjf#5y2 z4;MUm$C5nH2Y7bc(kBHXq3O8Lj^}64DvW>6ckJbw(6*4FA2aFp3G2zDx!~i3EIXLT z@8v5?@Cx+fNEXXH$a!RkayoP4FJfg?>;Fg9oAg?eWmkIN>CEij`&w_pJv_Q>m`Nsk z5iAuUR!Kq;tU-+=Km!c~0r~}k{(*jo01Y*eP$+OBK@>!QqSzJ1rm|r&n~01EkMMu+ z=dZtwnVn{D4YoZ`(r1q6{^0)Zy>`xCd#!JAvSj2Yh3ionHjb6~+Stv?D#FkiK6Wo~ zwP{gWvv)W+VT1F&U^=g@^ZizIHcUCZzJT4oB zHJ65G$4tYEQV}~VA3O-s@SUeI;eCH3#XyTtvzan0EB0eW#ywFF)C#SNU0}VMAw!qj ze-$x=WiY0%#&}~bC&D+E*4kP;zELRw;0q#K>E4AX2 zr%RDm%=Fedhl`$4Y#o5Jic@vwfVB*@O&nJ3XPNsVh3JAs+!p_N6HjuHxfy@nw2$_K zl_p5w?R4&%nME`jXkSIq5D6h#OhpyvgghOr90cF6-t%Al^WWhIKX^q^r37mfoTcJ}P=cUrsk(omb`k1KmdSVw z&A>+5JKVt$q#(m$RPoh32&EE>Fp=3!6YKTH-mj_AIU`jpOECH%ZX4xVZVmMcC<`-$UXAgh6_`G$=06W{Ah%S4X<`*cAb*5{B zLM1GW>C$X>tlkqa-n`=Rops~RwGpG4^t>yCn26rvs-uV+``#}EJg>G>iHdK{+I$F% zCDRQ(f)HGy3zjptj$Dr+#W657VA0uweiIAOJ~3K~$Wrac=4VHqcDK zg}6L0Ev3Mc`IaVBQC87y3t}|>d`48y*bK_ zpB1@8lOH`7{0QbeWFlc;0GA1UtM zk-CU0o-PI+ojvC6?o&$=xJboWOz)v!L$5G%!`DM!t0AWf_I!9pYokw`E{a=b*S?U!>~YHs(mii-V3cX?(eVg zG13h^hr=GlQVpFq`H&b{yB@b$bA5MBce6sffp(bK?{7G4U-9_Kd#sO7kf5CG-|(}~ zD>qk{y!-4OPLIy%HY=VzK4y-I+TedM7WUnN58gXxINLDgJw+zg>yG{08JNTy%fZmz z_SuvNg+pYySh^)nV9`>rUUiX1RYw;D)nL#nr=-p=WhTMaRSr65gvpAdv`nW77aY@J z&$~~aQy%ZQ+1;|+-EnpGhR4sIahOMAS|kX5V7||U&f#LAm5Sim#1-SApl*L6&{Obq zsnXPwbD$^Fg4I&%Sa6+@_L?4`ISLJ_c6kv3DR$ISS@$a@7pPh3RB=fO8z|d`mrB$X zv^~xhq!jLD&;69RIUG~djMhvY7u6ESkK+}ob9f@PgTt6v6PQxtN1uPe*}p$#b++dI zF4M)rQFo4PJ>$00j;#kR2&{jDMIYlD_M;uBZqc{5Tgdl2E3t{f(I#@5e$H6;PB}hW z(+w-eka^@iA0FG+Z;s$c?S$P4Y&&pwjz=efu(FwPAFR@KU#o3sb;ZkVqW!dR6dn89 zJ5Gj)_V}C-J$F-qeL>S>#vTp=bvJS}^qej(uUK^%k`{SCFA0xUs7`vn$}rFFqnBTp;W1mt?sq&kIYyT2ZAa;`N4l+&NF|#>**R6b4m#*85bPG zu;Hj5*zLFEQfY0bN+x=5(KF{PwzaZq+*aD+t~67-ERc=u?&v>r6m z4TDW2wX)yu$@70iKXhafTJuB+)LN|>&pW1C3Er`i4ylcwd~(70=@XtGKc(-4sW{3k z)_$ZNu65+PgKY7{q4#9zIcUZ?i)U#N#P_xqX&Gq)mC4Lis>G#uq2y`+rDm`f=8Aex zb3#gvY2WCFgqub}NTk^FwdYTH{rXGhx=g*!OqB8v85Mtn|5OL_Jn_j-Kj$Z(eMKp< z;D?Pi*7e5a?z>3vfkT;)TJ7S!2$BEtx4+HV*(tM6RDq^}s)_sU6-uKKEHWm|TG4`| z*1}iJHSDn46P&O<>T%*34+pN^d_~uvQA9ZG?@7}5=>5dWqn_Q}NFP@` ze)5=`t4n`QkB@o(#V@jYe8zwF>(BZ85-x8tLE$zkFE29j_#BCW-FC~-qsJVtPr2J) zBf2o4)%KjFKwRKgZmC0d%M@Xu& zOd;Y)z31t(cbV#e>274`3g7V zsB|AN3BG94;-A{=67_YDIj;N85k@S8T5>V&;~XBRAy@Bg*gotN#+6Zn${)DHpqI z+CGzPGCbIuU$LL#-HG2p7;v(mf}QqS?x3bY|wxxTtY)w5o$Y;Pp6I^N(GdRR~;I&+<; z*fF=pczwmw(_>O<#3oS8r5}P-=%ShA64E)!+-M`H-{RXs$@3oX6SWpJg9}Qonb--{ zE3p7whjTrunYk1sTWx0FDXxE-df^eIg0u=Q5E6tcoIO6_iyMNAXfr>A_hB)m z*~;j2)lp>6?S4mX`E7g<^|%Vf71Tj42HId*k>#q(8pZR)7nf}F#Qk`|YJJK(@4dtJ zt2g|^kAKJz5+NGkDTavD2GQfIr_7bEgKlu_?VuCJtQ>un$O?%}CfRl7>@*IcZqhAnou|6+-H46{Ir=be*YlwM85apB@Z_hNo^z zZrnT2VwrVumW&9cFlm40&HfEd3hz9B#-k_i^7+lrxWCIBhsZnUkuP3n$VNcaB?c&T z;2lyk&~P4dtroG>MhiW2n@|}k5t;;|Otjn?@1o6Y_lhnxXt4^i^lpc#(uRsOhue!m zwxp-)6QO1#!{7!EZDi-ycoLdNI^Us877Nz3ksARig;|%^RULmr9~kq*R7N&^h4p~U zg`HPgi?pol$4sAktIQ3aPrkS$wT_%3ZqA&YCbEmTPoYHhR}UE!|nQ<({orWOrqS%F}Eq$fv@o8wQzq^ zsPly6Y%4|$#I*2HT185;Gsrb+ZRR(MjJz>8;3*mfO1r7>%VJ2Zc^Y>6Ur;+q~J-t zMO?z7MihT76b&#oqEp)`su}m9>+sPWw|z7cUe1lqd5X+-$#I4aR8i<6u6m}H>D`*C z2>bmTp1l7ZzVYHayuSRL@ZnP)&3Eh$JI0$Y+3oMxZtwZw5B?HDPd^O2`_6}SY2c%e zKH}u@3$%IeuU>OFyyWG}pK`a)#?waW!hnvR>;=t>Idru6hW9)1IW2saZ8@^pLVipBfw`XG7&Sh%r*4 zLz>NVDPm~=r=(<2sUXm%LUVzkKjOXTA8>Pdhk8?y0?s<#^#N_%*yjWL>5gabov_~> zxZjO$eJXQqv^g&gie}0~{E~8Li-A@7?k9h*`CvcMtvp{{TrwOT^YKrA%xX0tduQ$lW1=m+!a(sM-_XD|BKKb$A zb9~zI-t%uV*6;KAm!F~t$B$1K^}q+`Pr2S!d-xY&$d!XSwgKineDL9i+}^xlE_;7g z$B*fU4fl5=+JqS5LIN~;mpa4trWh@2u7ayZgcNCbAHW5Cw5@qVENS2jDeOY{c?>t0 zAIL6GChzAZ-Jl{|-&{dc#ysPF<@)-XCz~hy{(tu`_@h7mF@O9ge?_haiAw9vYLY9Y zV6|2<3qH+w-%)B{oVGLvN=MhMuDXBb9V!R2|HchSp&TZ<)tVXWkf@|mDJ4>CwLz$O+*lAC zWt;$|h!TR*unWH*dz$R&Rs(%=)Yv%eJy{1N7w+R8_xd%i6=E`WNAu99fxmx#^Ampf z@f$Y72{{U`+;egk=#N&kDY1Y5YrOZtIbHNzTo;;-g!>cH9Eg+Bo%|dXGiJzTv~*SP zIXNEw2~%O(7C1CSDgLaFx3GGNQ^Xf#OjDn7kG`uZ{~SIS|Y4AeCs>EM9EtYcO&zxFe@$# zEqS_=h5DpQ%Og1-*zbRC@C1gwr>W=Y_>{gM2q7|8k6S<8zTgtX6zNwRLP{W>{eGf9vsO8Ah66o$en$MEXBvO=+in0CJlD6kym)cW z<44E5y4rF2=+u%9y+dY}RnkPs$&jGCJ-+o2B2^X+LAA?C^hR-Wz2(zg?l`nY3p1OT zC|PJphytB}MguYRv!|{S&O>0PTP4a)kT&9?CpV$F$dl)fdHmHQ-dx|1Vzk#E!<4#a zO2If*u3qhU|AT)=y#M@+zyIk(ZO!V8{nAk&4;|qThOuJbYkAKFJlp-qv$IoDt9hpHk%DK4$4JhMI+Eu?o@dYv-Y2B(Y0X^QeimvAM3-2nHS6^em)F;f z(;HUn)nZar#_a(;69Y)KM%N8IJAIF%lM_?rdMNh}e8+#Rg*G=nc|CEr&#X=#vpGBC z{_d8e;W3-ln%yoe6~}(*9kD~ zTO?&6r4@gzc|vN;wSkA!Rr1m^5f$i+Q(^EayYP`R^S&79$Q$sdIiZdRqIzQA|+7q;P2Ws0P-@1Le?&M5=hi?=2ajj#(=~Cd3D8zYFFC zQrF{kHo9gVVF=W!R524=$t%1+*k!W{E*>GSp;dqAV`D5H;XswdVJzIb8%i6Ir+Bz#n26xMx@>jRySeEH&iPM@5zUiWYmFl->~u4G^rZ@2@_tc zMOcMk&1qTa&whR>r~>^z0?9kEJpVubb(oa>{hlfB5t(TLL?#=S7J6J!BTc$0s8&ji zG&+BjjFg#FJg#$$s~6P6m#FNiQzdkcf?rw)ZEYJws9>s!FH|i=W3gga+h}xGahwE4 z7mko3^a9c;yX_?_=S`^%i`lKI9lF82jg>!eb*O5<7nhvL>&yOFMA6xRE6ph}xMk{g zq+orX_*w7gnt}0CznLh?=t3#3M zm)=~%xjMI05I9H84xb`YO{NJxG0ijk!%S`W{N11bUwD7Y=7;aooqh}E%s+qp z>~Hwu^Pk!UB^a$vu=?8Il#-R)D!bhcPK7QF496$L!8+xGI($)Dti)jX1Rpw1jvsUX z)sLvH;gi8=RNbOb?KYdDNMx!s#6v-7 z8t`+a4)!zQkS({a)_T{i6Ll2kDN}OAM@NhUUiQeiCxpbW{_?N#(~p11m#=>>&1~vD zsNLp`yr0;O2h=^L+YEGlWZYVoRibHJF)ZaJ>MRnv5Xo@Hb0ENWs!Tt-F-hKUZ4IH$ z3|yrWgF&BSP_zqlGO#T|&J)tCAx&$e=8=+Ya&TCl-AD7os3@(@?DmBeBAfM^l0jmE z&Q?#4PET2%Z^$ih`Q-#mr0#!+sRUxNBE|dtNNd8TA9(la`+Wb^U$fg@u|9i5KO8gf zuPFo!vvh+v2eYMYU_`MM9<9*z#|Fyrh24HflnA{;$BH^fUH9lLly)F75M4*EiXSSI zWY*3RLdPCqoc0JKu~UDV&-fA{nj+;yDB=)y)ZEc}p=OU1&(Jw?>>pdId*qW!YWWq3nD> zJR}W>+SjUD`3O#yib+{WYoJ<9{_qj+?C(0iG{-q>bPFk>zEYMrRt%98DoyNA4y`bX z+6AD>QiW zzd7aEr>Dob6v+}9(tvl4M#G0SQb$_LIF0nZ zrC`#P@d!jMVQ_kMhSSD&+*23H^8ECSJnm>>4RTIx+HqZn z&c^LWm8*Yp%P=_Rsj*pYczk-o)#V+%tQg|J`gp_1=@B|Rv?kX5ik+KKgd&BnfAoa& z%@Kd}XMfG(cg{I``ktAd%EY=QwD+{wnc*uJoK$cLE#?m-GTJhfdPe@Mr_~Tb>_r>_- zBKXeYUlObhQDk|~_eM!nv3&e?x98;KglWp`_gmJh6`NthYQ5rif8c(5L(4Nc&#cx* z3`2iURhXuN_{?^n3BzD0==y*$6@2j2Tu@b_i-az)T6g5b%8=Tkx8iB!}82zXykm4Oh7up*FCzl{5g_c#==N$6H1oT-ms+JIcm*pw=;L!Yc5{> z)FMb>nHDUGW41+I^5-6l`H9i|LYHVu494Rq&f~j8-yQR#F~5o~p0X$N7RXC9rLaDLKpd3i_8nTm3}8aO*U;j`VXsW7788oje< z62Y-jxY^%vJ4U)Y#}_ZZ$NKaXq37)Al;9n2t|nF|BS+_%7!rNgaej8p)y*9-baY){ zzn{3h+wtc5fO7*!Ln41?p-VzsDPyj*LnC2;7x0K{cA)#7+zM{4_|B1+qMAye7Kdo1 zbAeoxDv`iUQ)gAU)ziC-_Z!4lk`LDSRWfr3)at2JVgqRf5B5;&8h6)k(79SpdU;n` zVUT$+sFmAo(BVkFMmiAVS9N?Kdd-RBddQ^$K7_K>l~}qK&}?? z1VMvU0ppZhjC2@-l|P&g!f*f9bH4k-mwf*5J?Ez3fC ze&}%urFo`(MjRX;KgNfS?bS8oJfco$V)ddM3LPE62eJxHD%vKlw--3COv~;%Z!^2x zn8w!}$sMz=tX6*m@4Wi~Kl}0DGu_`3!@%+J6KZYD^KRi^m}5QlmZF&2OwE<(J;VAD z_czysmUF;8B6lhe~b;p3nD1Hb<}zr%m~U;iuq?f>y-{NI0n{I~4qOdlQUW>NtcHj6oEYQoQz62Xg^E{(=E(M3Z}x4Br6$U$)F$k3)DlsZ!D#Ha-{;G1WbY^6;u z5z?ZXW@Ue7k2+7Nf)`T^d}-7vBhC}s9pW8ho~ROVX-$$Dot8chmpQmQQta_zWA)sU zne&#DK2hcjL8vhj%EYb-K@vW~u2f>}adk@4K>4yhFt=t9pv4YuyZnR;BTC6r`!%j)h(r8ZJ7LP%oI`e*&To?lU%GclJ zqhI+|w%@0Cz~SI$qjzk*Q-n``{0XmLeopKH zsqeYHxo5MEbiN~Y9alG7e(6_#jeq^*LpCP^F>UY-ijM3T`>2FUp5vkbIipaGR>K>5 zD79l6w}=n8zBA5yQCcnRmzqyuvfZjgLKS*{XVH~m6+s#`D=Aboc9iM}t=cWSH+g)n z;5AapmKcS(nm?n7U!*@lbz0EKp4=Q1Gs1m!bh&DiCZe5rGSG+ks{q3a!+)iGKpUOYYKw|@0M;eYy{{}2~DQtF6* zX@`?a*L6I5`Yy+ho{)S(w8LqpmXT>5jW3}v^d}7OcIUflNO*y5WQ}ZmCtR zoW+CC@MXqzf#bBHB+ve^{{t!L{PF+f(EOdR<+MuFuLYvudex?DxnoZzv3_{zEs?>!Y%2a7(LDyE$tK}EJo@d{yLwR%Q)`sD0?eAprRWxuZ2bmkT!nJNZwSq|jrj6mm>FM97x+QO!C z7AapA$c&E;my$^m&Zg4VY*Jyk@=GaCFoY7DRq6w_IGm;qLa5 zCPGlLVmNP(PxUq#&0}W2-!bkF#N_FQ$k6o!fg-~F-7R@MFy+c&KQd1v^Ei`pqfdb@ z8UuV*aIPBUNFjTFd)R2r_MTCt$V|%>nz>P}LnIqz(0NiP%f(R$Cmp2;(hBR&86|HP z>jDs4g>(^oF@xxCe`_TW&T;YPmN!@TW)gLd(&WKzx^#wDaK_dT5x)7&=e&A-!Jqx< z_n7t*5&}MX=2EHI);OiKB`p#R(Xy!t*zYEO_T?qd9&dQ{)iu|5 z6DLO-n#{bpxnjLO;mMLqa!KzV9nK?f><@b`zx)xWam&{~e9qC)5p!-FZg2Vc;~(439#gIy zu-o0z%19S~JL_q{vl_*;wvf1+dAY6>NASBl;iPP+|FWSt1yRT8F9l~(LrThc3`b7+m+ zZ1)`QKLyztA=CvLVsI=wEbKWfR(UO27FL0ODO|qA9ZA4$ZR^%0#@k3A1UV79m7Cl%3Nhx4PVa z?nNv^ooosD%+t*Mn3?AKc6HEoYl0tmbMc1lVX~;B8ZF8BfY(3>j#fvevEZB?ki%+4x9*vy zOf8n(t~HzNpB!Eyop*F3=2_XwOp2biYuw$N!+g`<(``CDc7P@C*{qLv_Ui{;W8DY8s71D-v74YnN<~ptvE%mjJ>UDuXT1FM zlGEcOzWMEUc>K-@&&Ct>cO$ibJrEQtRBJPIVF3k&B|%Udu?s}M;&?6GT8NU5(LKpB72q|!TxTkZ0;b_HXea^|#N4!X$!_CON-*Y(Jv77hgz0#^uYBBtA zXl#a#b^jP$pHl9(WSP02Z#k3q7-h@2-}2_-Gh)8t!|(hOM<)TPD~A4mz}b_h{K7YX ziNj&f_0<(6PaJK|I2w+*pC+=-bk32wj?_g$4TQDBHKFf&4*QW$e)?leoe)@`opAc} zDOZ=5H1+gd&uX=1-L1(ong^jS2e~?=S}~P6rPXQ|JFEA=hmK$V)-#SaE57%Gmo%+> z_4=@~EvI-VW)u1#9gdha5dP#MWoEyOzlOYU3h!!y}Igsd03Din|kOMA6I*f5nn~?-T z8=+KFMO>jZA$jALv<1HJzW#MOSY5K1uM$`&(xbW z$$DMsdC%Izmzg!3c?QnGOn}`ad$iP2NTG0qZXDqVU)jEY^k3mm@z1a?tdK*p+RY}- zRzsp3E=zUc>u7uVY*3S9CP@)B1QX({X5n z!)X*^8tQCMC$g)I@{y^NkP$mtk)~9M&RUKUz1rE*=_W)=H1$h5bf@aH?ob;>2O{eB zt7wk2l^`U41C2r^VX=FaEQuT=62d3~hKi{<4NMl1F#Cs*#1obp!&j+8)j#}>DJ6)G z_e?#o)k;nSOWT^qW{QgkyExbW%JL`CgH^mEj)dfe!ju!Se?PgXt;4iLM7eo$Vs~$s zhmt7LNZmNUyx{l0f63*h3~-8P&NCSDT?arYj0t{!%>RuwQE9dF{@@$V&)*HJlviUh zM9*%sNFN@2BzUwXfd{wlu(!X%;l(-gT*pN}VqPVZQlgiQuPao^DIh7c%_;!<@B6`^$F)kCnStgop{!2M{NN~sI9q1LgEPUFt(Q! zNlwdu5>+lXTTB)_e)Oe_0{fPo1Z$g^l8)E6ptjD^bC^7maSo(GFSJE1fKu?J^MFyh$^(^D;G16T_S9kh94`dPM zTKM_j{FdXBb3zDgN}-m{+1Z9S?@w5-3yYk8eD^j*T2p62NTi2A!d&gX$b9+5m#nv! zv|#L6V!b&T7AoHvYxUo&;?L-GV~?F_pT)F;s8B9vHkZd-UY-+(?5*yy4F%3OTr~BA zEk@R}&?($pEjd4`tT&h3nhU3Ar)*l~==g+kcEAT8JYqjDh||RSqF{4@Abj!Fj{xO= z@Ba30c=hr*v_ejqw6j93c`{uIEEZ7OOwxp8klAU4>$A(j+6JwWi;FdzG?J4 zVbXC(a==m~MPHLjzgmlS*7L>>lIY&*5SN&4eU(rnqU!5e0viLZO3;}m#n*^`LvPWw z4+@}jA({$N8>ED`?TE3S$g)RUU(jquqtSXHXmsa{87l6-4>6-G*={e9JVJ`<28o%} z0~#v5&D2n6=1!eZXF_J^6c{TuSEgeZbPcrgHgeEm%f^`;vmq1~$>U;sNIv~2g;{;N z64l)W5n&rpW288RddTtyt=SujBmyLkTPg{F3oErej2NTUcv<=GHUo^f1VD z1Ci+jpDPr!k3FX7xwIj=?_I#Vtq`u0T?%lhM z^~S~JmeL#De5)ZLI<#lIW;@UHT8Efv$!fLB;|KRhSvWkoWV21&x_!r2BXLPaD0AW2 zhoA5l|MD;Rqd))e`0BH-_~_Y3{P0JA%Dtx_bN}vR?mxK8t-Hd1@!^^&gzIN;u}Y|o zWG?N{0wEZ4ZI~(dA3kAjmy~`%>w#iE<%n@XL#cHJ6=rn-V~CwPH~$Q$g;V&3Cp->r za)^*MP=Ze?=F$m6U}fs!u%zy-E(Yt(Ij>(FaCE%k{PNN-^XQ~B9g~o*J{>Y#0}?`{ z*2=|Z>l3N$9R5XrP8_^Fqi!o7e|V4erud{m9K*b`T#`aYyHd2XTCDhkKmHS*Jo%8a zZJeE*@~40BkT0Iz<@wl-S?dBd0`8E2;=*XUCi#AG5hUXS1nn zOJUpA-GD z%l@u+Oq-LL(~}D>YbT-1bBA7u%LQ-Wy!2p;ykJ@^`TX-AFt2CM&d*7~EvdCOHrv8H zuPJ3sQ~wN{T&b+r=fsp)rWJ%toj1b<=f%3HJ3i7PvyCBxjv{j&dz573ra7PvSok&E)Q<+^5vHg`25fQE%)#2b8vjZ(cvjEbmk6= z=vfn?_y}5}vdBA*l-0m;nLYJT-C~OcEOug0BnNs6XsHfk5_P!B7)9G~sZ0y#wG(B+ zg8T4m1)(~0YZTr!1!6SR+;(ThspF+~gi6M)!7E}pYjf79(Iz%-;OJ2Tu&Dpj) zIZT`ysDqR2J3IdpH8pN5ce#1%COs6oW*-$s=-pR9Dg~1~7zVDAB?nS&gw}lB6nqr# zJSxW%w_d%tM6uSrD;Gm(NHn@d7d4tuy7J=nOE%}1ZoM)mm|Y80%qLXc+!7dnB)MJ8 z2ID!$5q#s9`uWA0)AKby`r(KC&;QfE<>t*@-o88b!!$(lA`@buw8m<8$yZT%RBE`44V$baKJB&yQJ1;KOIn0OjEDh%`-*5;1!!qp6EKx9!pcf7E|Y(@NiV zN6BjE!w)`Uwc6usyXO4xEr0NT^fv$I-~9{zumAX$ynOWnQpU=bM>kjOtX6Cg&db^_ z!mZJ)Qc9t=PHT;6f63X&CFkd7EEh}YaASXudw1{i_T5`|3z)FpY-scBlbqgtO(+8D zSrCX%)nXbm!;v^xdv^|cVQ|4} zXCkGE^=3owGhcl2fZjKJ^4X8LaqmlR-%!5!_AQquGb$0u>0JLK9_53s226Wf68^ zO7!j46AM>~91PfTrZ?(2-&#n^2~-IwGpTnNqT;#jL#xt)qO~KYv{p$WQ^owe3PS50 zjgeL=4R3&=*$9$KsLqssQQ*@8Jr%k(@9xz>E8R(6#MFt_kdP53=CVOe=&d4Jk=|(5 zkcB_%Sfdvk>r^F}LRU81wO`QMoe^TL@i8+dKy$z}68j~k%*=E1NvRrQ1*sKn1 zJT;UqbXBxN9vTi)B}7A7b4bt7co{O*L7fmBo`$+t9Rp3i2G{0AK%4?;kvw*LtlLQH zlj6CMp!ptP#CvL2hiFKojTH0mJIpbiMSX0nuF?*}iz&k3vJL3|_I+s3Rh-6ZLVn#DOq#;DN(~KgfT40KiV4e!sOg$=g z5q*5ry!sOx*J)K^Fj7c9+EpWFAEWjlT%4S8a=IQ#Q(+u`Itf`WT)3oHnBVd5LLlc% zvL&jOQf5p&zEN!+ak|lW$bxquHk=A(Ow+{8z5Nm9v88uE%tCa2xR}wzFTTB<1*@HX zUOs>0x(16ZmVqRRlj92(Y2v}%2b`askr&2%zUKJi92G@d<7~5ri*ruHArf9ve&e5& z1!0jF-1=XC{zty}_zCY0Pay_!UQ$~FH5Ub`cT`vE?+{m{DWcmmq$FBwl$v~s6Pr`# zWJ0;{5wt?QNc6=5iG`Hiswg5z-enR;&q@T6F;%68MyjA`N$f)JN~`l=D@@Gm4d*9k zq$xlxSjDMb!NZT-3DF7SD-tXW9)v$X=#}c*g=4jUbRIpt!R>py{M9eM=Iy&9Hk+AR z8zBZZ7aMX8?BCqwhd=lsw{G5Id%2;`h2<)-e`BA&{Mk#64v#Q1C!ERPE0|)<#XfoR zac>eqrwO(mOcW)!v!FFg`7R(;nn#eXBUk`*htdGY)OKltHS+`s>TgM+uM^>VD7 ze61!ivx?ah@}`VcNU5<9C;rXN?W{NMOzf|AxY(YvJ2gr%=W=(&8m!mCWi8~K2{F-n zz231)FLVj?03y+aR;|%%L8b}GiPr~5yg4aAF*4;qFG}e{lxLBqm$U{O8YaTy42FivVs(@*Bfns)UtFE60XH=j)--yaifhW7a1c3519zVa)mh$I9*ZM%v^BN zeFPsu^h>$B2&MJzUh*V}D$>P;A?o7??LMN9lY2$GHBb+XG4Y5%x!hpzRk37YLJxpEfAw%@%3T~lWAP1w1xCnwF z00|?WRDDt~4YFPjiB^rpB8<*2A?~0d_CBzRJ`D*WQd&b&Bus8!vlb|2&C8<$+TdP$ z1g*FbZ4BKR9kht=*1Lk$=7`*XA$aRey*PLki4x9M%m$>Dn>N76U{z_SmZ@#OJG78$@O=>}+rw zOhy1wFnae1nTdb4ckbMOB81E@|MnZ+zC9tN>{d(($a12!!n2P*=Ej}7)OmJMUV^zR z%e`9;rRhdFdPmiU)IhN8~b;;xwFgOjoZB6%s?eyYkmTk+cQEk=IzYw z{U!g~|N8H__vjADn(ZZM%m_2(a?QcpGycPW`We6a``^>!k~ri@$At}{w6hM0v0N!D-VL9(`o2D zQOuz@O&To3KZDsB<7QjDOj63WBVls2wA(@4jgx?&Xo)_e*W$VIle=@Mex5`cW(wC%lD_9YB=x;CO--#jX_c z;*(obL8`AH!Zf)PDk`ZbTHnw$5bxf*{Zk#Hrx3=n9~-;q5%(rGu%~i8`lb6XCVEG# zS3ntrxES`J#&t-H4d{mGu#0u~296)=f%4`TO%zvua@oMPN{En0{Hl3z!BA|L4&RFlEW@CyY3xd|Eq@87@U^_xQ=x>`NDo*^cuYe@*s z4KP=KQR=|t`qaeN1*Pjiy87?CTCWgfz-)%!S%jPWH`v|TXT8}_wbN?#^fS2{k;wG~ zUvzvfqe_e*~D_x~T? zz4#|i4&HKhe&#kYkum;K*HUPpRSzB^XOO^u-p)RY<&IlcdO_mE-mN?Aq=`HGxB0h! z{O3#~7I#`sSZI{ls5LtKAWo#x2b`rMnBz|?^sr@~XZq}@;FQ6%xMyE7lPyRnR;#aZ zLPE7;wR=)i>Reu&a&+{boWF-}O2MSj^*p zSyN2z6iFUkd3tuq>$m4#U!qM zqes+Qc=P&=kCUh91uFiTmpap1XPH){JXQ-B+qz{g8zcm#)r#HS9jbM<>ovJmKKx*p z=kGffZ}arYJ*K>at`?*=vs~??!Dw@T@y;T6DGDX=;)Nw%M+e{aF;*$;&VRu z>Qf#)`;bPk;P(vht_7F z`l)hxe#vro!O8l9qqhe#Q&HIRvRB7fB);9URU810&vtZ%fdQ(r;Y=)_ec-x?I8cG^xqB&R}yUMTV zK0S;>XSH08L`(@x$ycmKrJ2uvMSJu8d)I=_ifTrzA)!&V6S^{+V~S%)wBG3ALOw)X z^VHq8RR>@zm=3|U(26V7y#c6H^D#ZzT)Z8e{MTA@Yaebi)n2bz1HCkAZA2BvkZbda zGfKiIwPB#oB{`cwEYOELLaTe!E&B5ix=+@6bdgqYuiwzibhkm94f-N~zCL8EJ0%Ur z*ubQvM6iyKL3OP34C~!FZGIsx{Iy5>V%8RKn+ zKi%(p@6-pG)@@^EqY@fp_~1X`>Vj?RdB|z3U`JocAcbG=&N1;qVvLcKxM;>B zF4UWnL;A00@xg!5Sho&;<+@)Ms?K`W@p`<9cV@ds)1)lkY-QqBtoiES*SY!8Hk<6z54eVRYQC7_^b%6^QunEc2G%fA^YF z3MnPG38p}ZUdXsk!CeQ8Xk5Y3gATN5%=65)ctt58TqjedFgmP%?_>8^u9oB&>7}xr z=W(HXk(E+rktVm#Op(t%dCKF*_et4P{SMx~Wm^lMef}x8Z|}3an7DiACU4)q^Pr#T zqP*5;HWwFc))&{9JQ=B4RedzoTf@faD@b6uyU&xSAMo^(k9oLvkCcRITCxmFUcLL4 zv-6pc?|;tzoxtyZUjLpTnV3DZ+?ns5cOR}Zl0bt4g<5U&A+S_YkLc^pR)}Jxl)VEm zV|}r4d)DDQ)|(ACclKb)oL`)AdUnXGSBJcKeN2qPdc7ru#GRWfPg@%{LNnK=nEC4= z_!mF&ePB|IS4EENRdPzqbK~@Ejk@ZSS__7GfKBf}V!d5|bNlukrYWLXNQ*?YMu?G+ zGMA@kgr;0nKv7f zL~8G}F24SM36Y(}4mWmokpQQc7hI}we0o3vmOHo6-sojZ(?%9SHDKzAgWvq_Er0!s zU-Rv6eh-&t#J(n`z_c>~GmE`j{PCavAv*+q@ylP+)QF2Ey$uF{%V^N#QMf@|Y*wr> zEduNHhI!jrPCNYd&;N$DIp@cJ^b;OGeav^if6eQEmv0C$lSt!i^B}7hp|}7C+crwe zPzp^QN@Kl^;155%)u4GQkmF)|$7=O;L{(yn1o1PfH6sOO6(UU?LF(Eizj&s}1DI-4 zM2yxwKDl=#jpwwAja{!#kJ_*|hr!2>F%wcIWhK;#^o*Hbt{Q#q7p@#kfJqw(!Y&-^ zZH%pd1-iN)KgI0Npf&H-lRJ1?7v@^&wWGDVbE%ToLI{MEkr1h6OOC>ShaW%V!J|i*L}KWy(!||+cX;^t2_HOqNY2i8 z&dVKQ@DGh z@87?pY}d4T=KkHA#1a+YnbfklnZ3nv0bDNK#?Doq2bB!1?x&wCEhaKjP)vcbuG@advjh!O0Qt4la0qc*b&(c>HjmXU{(1 zhhKiorytzn#j8`ct&C8iM9984vFKRY7_Oj8Hl{gT3+qDm^uaQFhJv6JRRUfttNKMK z1WKLRyK|cxH+GTgdr|AbiyVP}X=lmy^q4Zw+}^**`Mlxq@BlSP%M~fE$T1K`OmVWn zR-Fmo<}Gupl=X&f*^u+f*H^uf5t=m?De=`09`L)D-?De(4k1Tc+d_{t6LK3CBsxhJ z^x0{KUTjBafotdR@Q|~MOV<!Hm7Hoe0+b8AO7Tr?A&@tV&)(I=^OXRljv2E zW%8`KE@(AU_mzzwT8-_0ytzIK9iriGo;oI*288C~Q5__`)*GVgdZ>0KNDgdUq4nbX z`k1^3Ak$4Lb?YPIt|WSI4qGzmMDvk;M@hS`cgPYQ zyA9+Nk(g+`yQop?n5g&S-ayml_R!=sMH8i`rBTZAvLa z;OQWbQP@Gyh%sM-%24<0hXDh^uEyO;vP3D35Iaq~pCuM)y^XWc?-eyi4x9P;YGEXp zijDitSJPe1pPLbH&X|Vl5a)6=?H!-3cRY?kH*;u>Y4_J0ys7n6N`}*+J2~*dgS$Ts zqeC{+q1M(RJ~AJF^VtYO2~JEC@H8v)3~b-a524+NGK?eS#YS~|^}ir^0F1g{Fl0}2 zGY!Nz#_ia!N%(l#w7Xz!kl$n!8b}-}?0&5lR$nt=*3l>Tm?w|#ar@Rj>v_X3fAt;jPtH6%2X|7~D3@F9K3*T14}h4i{(bNeA@NX_ z-mWY%=47#3fSdD?SLNK&#Tns&M>i^UC&PEVNULX1lej^1;Ad4ZZS zrA$tLnHcg&6&v{m1?IB#{jR#cWV2bbv%f=LEWnhUCZr1?8-Mo0XB6G>=}c(U5Lu<< zwo{;$dBiOTv>Q`!L24VTmmvPUzI*cqH6M%0ASY^Y>fT%n5`6+T&mL;jdm$#bN3~iA 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 z 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